false00/holoForensics
GitHub: false00/holoForensics
基于 Rust 的 Windows 取证工具,提供桌面 UI 和 CLI,支持从实时系统采集二十余类取证痕迹并离线解析为结构化 JSONL 输出。
Stars: 0 | Forks: 0
# Holo 取证
在同一个 Rust 代码库中实现一致的 Windows 取证收集与离线痕迹解析。
Holo Forensics 是一款以 Windows 优先的取证工作台,旨在完成调查人员反复执行的两项工作:将实时证据收集到一个稳定的包中,并将受支持的证据解析为可供审查的 JSONL。
大多数用户应该从桌面应用程序开始。UI 会引导用户完成源选择、证据范围审查、包目标位置、收集进度、解析计划和设置过程,而不会隐藏底层写入的运行时痕迹。
相同的 Rust 运行时也为用于实验室、自动化和验证的 CLI 提供支持,但其主要工作流是围绕桌面体验设计的。
## 从桌面应用程序开始
从 [最新发布页面](https://github.com/false00/holoForensics/releases/latest) 下载最新的 Windows 版本。
如果您正在评估 Holo Forensics 或将其用于案例工作,请从打包好的桌面构建版本开始,而不是从源代码构建。
然后遵循常规的操作流程:
1. 选择您要从中收集的源卷。
2. 在打包之前检查或自定义证据范围。
3. 选择目标文件夹并创建证据包。
4. 当您想要检查并解析现有的证据 zip 文件时,请在 UI 中使用解析模式 (Parse Mode)。
如果您需要关于源代码构建、CLI 或实验室验证的详细信息,请使用 [wiki 主页技术参考](holoForensics.wiki/Home.md#technical-reference)。
桌面 UI 为分析师提供专注的 Windows 收集工作流,包括源选择、范围审查、包目标位置、实时收集器状态以及痕迹级别的进度。
范围对话框会在您开始获取之前,明确指出当前可实时收集的证据组、计划中的证据组,以及存在可调整收集选项的位置。
## 桌面 UI 预览
收集视图专为 Windows 获取而构建:选择源卷、确认范围、设置包目标位置,并监视每个收集器从排队中转为暂存或完成状态。
该应用程序还包括用于现有证据存档的解析模式 (Parse Mode)、用于主题和搜索默认值的设置,以及针对早期收集运行创建的卷影副本的恢复提示。
## 为什么会有这个项目
- 采用单一语言实现 Windows 收集和解析,无需将 PowerShell 或批处理包装器链作为核心运行时
- 一致的收集归档,保留 Windows 路径、SHA-256 哈希值、集中式清单以及明确的收集器元数据
- 取证严谨的获取路径,包括在实时文件访问不可靠或不安全时采用基于 VSS 的收集
- 针对收集 zip 文件的离线优先解析,因此分析可以在远离源端点的环境下运行
- 内置于二进制文件中的原生 Rust 解析器系列,具有清晰的痕迹到解析器映射
- JSONL 输出,易于后处理、比较、审查或导入到搜索系统中
## 当前 Windows 覆盖范围
Holo Forensics 有两项独立的工作:**创建包 (Create Package)** 将 Windows 痕迹收集到一个保留的 zip 布局中,而**解析模式 (Parse Mode)** 将受支持的痕迹转换为 JSONL。即使 Holo 尚未解析某些收集到的痕迹,它们也会被保留以供日后分析。
当 Windows BITS、Windows Search、Outlook 存储、Shim 数据库、还原点日志和 Windows Timeline 的原始输入约定文件已经存在于证据包中时,解析模式也能识别这些仅限解析器的输入约定。
在下面的对等列中,`✅` 表示“创建包”和“解析模式”目前都涵盖了该 Windows 领域。`🕒` 表示目前已存在其中一侧,但配套的收集器或解析器仍然缺失。
### 目前可收集
| 对等状态 | 领域 | 收集内容 |
| :---: | --- | --- |
| ✅ | Windows 事件日志 | `C:\Windows\System32\winevt\Logs\*.evtx`,包括已归档的 EVTX 日志 |
| ✅ | 注册表配置单元 | 系统配置单元、用户配置单元、服务配置文件配置单元、AmCache、BCD 以及注册表事务日志 |
| ✅ | 预读取 | 来自 VSS 快照的 `C:\Windows\Prefetch\*.pf`、`Layout.ini` 和 `Ag*.db`,包含时间戳、文件属性和 SHA-256 元数据 |
| ✅ | 计划任务 | 来自 VSS 快照的 `C:\Windows\Tasks\**`、`C:\Windows\SchedLgU.txt` 和 `C:\Windows\System32\Tasks\**`,以原始格式保留,并附带目录元数据和 SHA-256 验证 |
| ✅ | WMI 仓库 | 来自 VSS 快照的 `C:\Windows\System32\wbem\Repository*\**`、`C:\Windows\System32\wbem\AutoRecover\**` 以及顶层 `C:\Windows\System32\wbem\*.mof` / `*.mfl`,以原始格式保留,并附带目录元数据、SHA-256 验证,且无注册表或 EVTX 重复 |
| 🕒 | PowerShell 活动 | 来自 VSS 快照中用户 PowerShell 根目录的 PSReadLine 历史记录、用户配置文件脚本、可能的记录文件以及选定的脚本/配置文件,带有跳过文件日志记录,且无注册表或 EVTX 重复 |
| ✅ | 浏览器痕迹 | Chrome、Edge、Firefox、旧版 Edge/WebCache、DPAPI 支持材料以及支持的配置单元 |
| ✅ | 跳转列表 | 每个用户的 AutomaticDestinations 和 CustomDestinations,以及 `jump_lists_manifest.jsonl` |
| ✅ | LNK 文件 | 来自 VSS 快照的最近、Office 最近、桌面和开始菜单的 `.lnk` 文件,以原始格式保留,附带 `lnk_manifest.jsonl` 且不进行快捷方式目标解析 |
| ✅ | 回收站 | `C:\$Recycle.Bin` 和旧版 `C:\Recycler` 的原始 VSS 快照副本,包括根级文件、SID 文件夹、`$I`、`$R`、`INFO2` 和 `recycle_bin_manifest.jsonl` |
| ✅ | SRUM | `C:\Windows\System32\sru\*` 加上 SOFTWARE 和 SYSTEM 配置单元 |
| ✅ | `$MFT` | 通过 VSS 原始 NTFS 提取的 NTFS `$MFT` |
| 🕒 | `$LogFile` | 通过 VSS 原始 NTFS 提取的 NTFS `$LogFile` |
| 🕒 | INDX 记录 | 来自目录记录的原始 NTFS `$I30` 索引属性 |
| ✅ | `$UsnJrnl` | `$Extend\$UsnJrnl:$J` 及附带文件或集中式收集器元数据 |
创建包在适用的地方保留原始 Windows 路径,使用 SHA-256 对收集的字节进行哈希处理,并将收集器元数据写入 `$metadata/collectors/
//` 下。回收站收集保留原始的现代和旧版磁盘结构;解析模式通过 `windows_recycle_bin` 覆盖现代 `$I*` 元数据,并通过 `windows_recycle_bin_info2` 覆盖 XP `INFO2`。
### 目前可解析
| 对等状态 | 解析器系列 | 痕迹支持 | 收集/输入约定 |
| :---: | --- | --- | --- |
| ✅ | `windows_browser_history` | Chrome、Edge 和 Firefox 本地浏览器历史数据库 | `windows_browser_artifacts_collection` |
| ✅ | `windows_event_logs` | 活动和已归档的 `.evtx` 事件日志 | `windows_evtx_collection` |
| ✅ | `windows_prefetch` | Windows 预读取 `.pf` 文件 | `windows_prefetch_collection` |
| 🕒 | `windows_bits` | BITS 作业数据库 `qmgr.db`、`qmgr0.dat` 和 `qmgr1.dat` | 仅限解析器的 `windows_bits_collection` |
| 🕒 | `windows_search` | Windows 搜索数据库 `Windows.edb` 和 `Windows.db` | 仅限解析器的 `windows_search_collection` |
| 🕒 | `windows_outlook` | Outlook `.ost` 和 `.pst` 存储库 | 仅限解析器的 `windows_outlook_collection` |
| 🕒 | `windows_shimdb` | 应用程序兼容性 `.sdb` 数据库 | 仅限解析器的 `windows_shimdb_collection` |
| ✅ | `windows_userassist` | 来自 `NTUSER.DAT` 的 UserAssist 注册表数据 | `windows_registry_collection` |
| ✅ | `windows_shimcache` | 来自 `SYSTEM` 的 ShimCache/AppCompatCache 数据 | `windows_registry_collection` |
| ✅ | `windows_shellbags` | 来自 `NTUSER.DAT` 和 `USRCLASS.DAT` 的 Shellbags | `windows_registry_collection` |
| ✅ | `windows_amcache` | `Amcache.hve` 执行和安装清单 | `windows_registry_collection` |
| ✅ | `windows_shortcuts` | Windows 快捷方式 `.lnk` 文件 | `windows_lnk_collection` |
| ✅ | `windows_srum` | `SRUDB.dat` SRUM 记录 | `windows_srum_collection` |
| ✅ | `windows_users` | 来自 `SAM` 的本地用户和 RID 数据 | `windows_registry_collection` |
| ✅ | `windows_services` | 来自 `SYSTEM` 的服务配置数据 | `windows_registry_collection` |
| ✅ | `windows_jump_lists` | AutomaticDestinations 和 CustomDestinations 跳转列表 | `windows_jump_lists_collection` |
| ✅ | `windows_recycle_bin` | 现代回收站 `$I*` 元数据文件 | `windows_recycle_bin_info2_collection` |
| ✅ | `windows_scheduled_tasks` | `System32\Tasks` 下的旧版 `.job` 任务和现代任务文件 | `windows_scheduled_tasks_collection` |
| ✅ | `windows_wmi_persistence` | 来自仓库 `OBJECTS.DATA` 的 WMI 持久化数据 | `windows_wmi_repository_collection` |
| ✅ | `windows_mft` | 原始 NTFS `$MFT` 证据 | `windows_mft_collection` |
| ✅ | `windows_usn_journal` | 原始 NTFS `$Extend\$UsnJrnl:$J` 流,包括针对 USN 记录版本 2 和 3 的附带文件感知稀疏范围解析 | `windows_usn_journal_collection` |
| ✅ | `windows_registry` | 离线 Windows 注册表配置单元,包括 `NTUSER.DAT`、`UsrClass.dat`、`Amcache.hve`、`SYSTEM`、`SOFTWARE`、`SAM`、`SECURITY`、`DEFAULT`、`COMPONENTS`、`settings.dat` 和 `drvindex.dat` | `windows_registry_collection` |
| 🕒 | `windows_restore_point_log` | Windows 还原点 `rp.log` | 仅限解析器的 `windows_restore_point_log_collection` |
| ✅ | `windows_recycle_bin_info2` | Windows XP 回收站 `INFO2` | `windows_recycle_bin_info2_collection` |
| 🕒 | `windows_timeline` | Windows Timeline `ActivitiesCache.db` | 仅限解析器的 `windows_timeline_collection` |
### 待解决的对等差距
存在收集器,但缺少对应的解析器:
- `windows_powershell_activity_collection`
- `windows_logfile_collection`
- `windows_indx_collection`
存在解析器,但缺少对应的实时收集器:
- `windows_bits` -> `windows_bits_collection`
- `windows_search` -> `windows_search_collection`
- `windows_outlook` -> `windows_outlook_collection`
- `windows_shimdb` -> `windows_shimdb_collection`
- `windows_restore_point_log` -> `windows_restore_point_log_collection`
- `windows_timeline` -> `windows_timeline_collection`
大多数额外的 Windows 解析器系列通过 `src/parsers/windows/artemis.rs` 中的共享适配器和 `third_party/artemis` 下的供应商 Artemis v0.16.0 工作区运行。该本地分支保留了现有的 Holo Forensics 计划、清单和 JSONL 输出约定,同时将 Windows 离线文件修复保留在仓库中。创建包 (Create Package) 尚未收集 BITS、Windows Search、Outlook 存储、Shim 数据库、还原点日志或 Windows Timeline 的仅限解析器的输入,并且解析模式 (Parse Mode) 尚未拥有针对 PowerShell 活动、`$LogFile` 或 INDX 收集器输出的匹配解析器系列。
## 开始使用
### 前置条件
- 带有 Cargo 的 Rust stable 版本
### 桌面应用程序支持的功能
桌面 UI 支持:
- 收集部分:UI 中公开了 `Full`、`Triage` 和 `Custom` 配置文件。收集选项卡展示了上面列出的 Windows 收集领域,并为事件日志、注册表、预读取、计划任务、WMI 仓库、PowerShell 活动、浏览器痕迹、跳转列表、LNK 文件、回收站、SRUM、`$MFT`、`$LogFile`、INDX 记录和UsnJrnl` 提供了可用的实时收集器。
- 收集工作流部分:当同一卷运行多个基于 VSS 的收集器时,包工作流会重用一个共享的时间点 VSS 快照,以保持相关痕迹的一致性。
- 解析模式部分:检查选定的 zip 文件,检测受支持的痕迹组,选择要运行的已检测组,并在不阻塞 UI 的情况下写入解析器结果。
- 设置部分:持久化主题和 Elasticsearch 目标默认值。密码仍保留在会话本地。
- 故障处理部分:收集和解析故障通过桌面错误对话框显示,在 Slint 准备就绪之前的启动故障会回退到带有技术日志路径的原生 Windows 错误对话框。
- 运行时安全部分:由 Holo Forensics 创建的 VSS 卷影副本在 `~/.holo-forensics/vss-shadow-copies.json` 中进行跟踪。如果应用程序启动时这些被跟踪的快照仍然存在,桌面 UI 会提示用户保留它们以供重用,或者在继续之前将其删除。
如果您需要高级 CLI 工作流、发布构建步骤或收集器命令的详细信息,请使用 [wiki 主页技术参考](holoForensics.wiki/Home.md#technical-reference)。
## 输出布局
每次运行都会写入:
```
output//
extracted/
results/
/
*.jsonl
*.log
manifest.json
```
`manifest.json` 记录已启用的解析器系列、绑定的收集、解析器计划、输出、日志以及每个计划的状态。
## 仓库布局
- `src/` -> 活跃的 Rust CLI 和运行时
- `src/collection_catalog.rs` -> 内置的收集目录和解析器到收集的验证
- `src/collections/windows/` -> 针对浏览器痕迹、EVTX、跳转列表、LNK 文件、PowerShell 活动、预读取、回收站、计划任务、WMI 仓库、注册表、`$MFT`、`$LogFile`、INDX 记录、SRUM 和 `$UsnJrnl` 的实时 Windows 收集器实现
- `src/parsers/windows/` -> 原生和基于供应商 Artemis 支持的 Windows 解析器实现,涵盖浏览器历史、EVTX、预读取、注册表派生痕迹、LNK 文件、跳转列表、SRUM、回收站、计划任务、WMI 持久化、`$MFT`、USN 日志、还原点日志、XP 回收站 `INFO2` 和 Windows Timeline
- `third_party/artemis/` -> 在仓库中维护的供应商 Artemis v0.16.0 工作区,用于 Windows 离线解析修复
- `src/parser_catalog.rs` -> 内置的解析器系列目录
- `holoForensics.wiki/` -> 解析器和收集文档
## 文档
- [用户和操作员指南,包括 CLI 参考](holoForensics.wiki/Home.md)
- [解析器 Wiki](holoForensics.wiki/parsers/README.md)
- [收集 Wiki](holoForensics.wiki/collections/README.md)
## 许可证
- 项目源代码:[Apache License 2.0](LICENSE)
- 供应商和捆绑的第三方软件:[第三方声明](THIRD_PARTY_NOTICES.md)
## 限制
- 仅限专注于 Windows 的收集和解析
- 仅限离线解析
- 部分 UI 收集领域尚在计划中,尚未实现
- 解析器和收集器的覆盖范围仅限于上面列出的系列标签:DAST, ESC漏洞, EVTX日志, GUI, HTTPS请求, HTTP工具, INDX属性, JSONL输出, MFT解析, Rust, SecList, Shell历史, SRUM数据库, USN日志, Windows取证, Windows时间线, 内存取证, 可视化界面, 合规调查, 域渗透, 子域名变形, 安全工具包, 库, 应急响应, 开源安全工具, 恶意软件分析, 数字取证, 数据恢复, 时序数据库, 桌面应用, 注册表解析, 浏览器取证, 电子数据取证, 磁盘取证, 离线解析, 端点检测, 系统分析, 网络分析, 网络安全审计, 网络流量审计, 自动化脚本, 证据打包, 证据收集, 逆向工程平台, 通知系统, 隔离区文件