cristianzsh/triager

GitHub: cristianzsh/triager

一款面向Windows取证证据的DFIR自动化编排工具,整合多种取证解析器并统一输出格式,加速事件响应和事后调查。

Stars: 22 | Forks: 1

# Triager:一款 DFIR 自动化脚本 `Triager` 是一款基于 Python 的 DFIR 自动化工具,旨在自动解析在事件响应和事后调查期间收集的 Windows 取证证据。无需手动运行数十种工具并解析异构输出,`Triager` 可以协调证据提取,调用知名的取证实用程序,将结果标准化为 CSV 格式,并以一致的易于调查的布局组织发现的结果。 该工具旨在针对 **取证收集包(triage collections)**(例如,通过 `KAPE` 或 `Velociraptor` 获取)进行工作。

# 动机 DFIR 调查依赖于大量的取证证据,每种证据都需要专门的工具、格式和解读方法。手动解析这些证据非常耗时。考虑到这一点,创建 `Triager` 的目的是: * 自动化重复的取证解析任务 * 减少分析员的调查时间 * 强制执行一致的证据处理和输出结构 * 支持在证据之间进行更快的跳转、搜索和关联 * 支持 AI 辅助后处理 该工具侧重于 **编排(orchestration)**,而不是重新发明解析器。只要可能,它会利用现有的取证工具并标准化其输出。 # 取证证据概览 以下是 `Triager` 处理的主要证据的高级摘要: * **Event Logs (EVTX)** - 用于重建系统、安全和应用程序活动时间线,包括身份验证事件、进程创建和安全警报。 * **Prefetch** - 提供程序执行的证据、执行次数以及可执行文件的最后运行时间戳。 * **Amcache** - 跟踪二进制文件和元数据,用于识别以前执行的恶意软件或可疑工具。 * **Shimcache (AppCompatCache)** - 记录历史执行痕迹,即使在 Prefetch 缺失的情况下也通常很有用。 * **BAM/DAM** - 与用户活动相关的执行证据。 * **SRUM** - 包含应用程序使用情况、网络活动和资源消耗数据。 * **Scheduled Tasks** - 合法软件和恶意软件常用的持久化机制。 * **WMI Repository** - 经常被滥用于隐蔽的持久化机制。 * **Windows Defender Logs** - 提供检测历史、判定结果和警报元数据。 * **WER (Windows Error Reporting)** - 可以揭示崩溃或异常的应用程序执行。 * **MFT, USN Journal, and $LogFile** - 用于重建文件创建、删除、重命名和修改活动的文件系统证据。 * **Registry (HKLM / HKCU / NTUSER / UsrClass)** - 大量用户活动、执行痕迹、持久化指标和配置数据的来源。 * **User Artifacts** - 包括 JumpLists、Recent Files、MRUs、Typed Paths、Browser History、PowerShell history、RDP 缓存、缩略图和时间线。 # 系统要求 * 建议使用 Python **3.10+** * 所需的 Python 包: pip install pyyaml python-registry requests ### 外部工具 Triager 依赖于多个外部取证工具,这些工具应放置在 `tools/` 目录下。示例包括(但不限于): * PECmd * MFTECmd * AppCompatCacheParser * SBECmd * JLECmd * EvtxECmd * Hayabusa * Chainsaw * APT-Hunter * SrumECmd * AmcacheParser * UserAssistReport # config.yml 您需要根据需要调整 `config.yml` 文件。它应指定目标目录或 ZIP 文件中取证证据的位置。默认值为: ``` root: "D:\\cases\\sample_001\\cape_triage" # 核心 Windows 路径(相对于 triage root) System32: "uploads\\auto\\C%3A\\Windows\\System32" EventLogs: "uploads\\auto\\C%3A\\Windows\\System32\\winevt\\Logs" ScheduledTasks: "uploads\\auto\\C%3A\\Windows\\System32\\Tasks" Prefetch: "uploads\\auto\\C%3A\\Windows\\Prefetch" AmCache: "uploads\\auto\\C%3A\\Windows\\AppCompat\\Programs\\Amcache.hve" PCA: "uploads\\auto\\C%3A\\Windows\\AppCompat\\pca" WER: "uploads\\auto\\C%3A\\ProgramData\\Microsoft\\Windows\\WER" WindowsDefenderLogs: "uploads\\auto\\C%3A\\ProgramData\\Microsoft\\Windows Defender\\Support" SRUM: "uploads\\auto\\C%3A\\Windows\\System32\\sru\\SRUDB.dat" WMI: "uploads\\auto\\C%3A\\Windows\\System32\\wbem\\Repository\\OBJECTS.DATA" # 如果存在于 triage 中(取决于收集方式) RecycleBin: "uploads\\auto\\C%3A\\$Recycle.Bin" USNJournal: "uploads\\ntfs\\%5C%5C.%5CC%3A\\$Extend\\$UsnJrnl%3A$J" MFT: "uploads\\ntfs\\%5C%5C.%5CC%3A\\$MFT" LogFile: "uploads\\ntfs\\%5C%5C.%5CC%3A\\$LogFile" # triage 中的 Users root Users: "uploads\\auto\\C%3A\\Users" # Registry hives RegistryHives: SYSTEM: "uploads\\auto\\C%3A\\Windows\\System32\\config\\SYSTEM" SOFTWARE: "uploads\\auto\\C%3A\\Windows\\System32\\config\\SOFTWARE" SAM: "uploads\\auto\\C%3A\\Windows\\System32\\config\\SAM" SECURITY: "uploads\\auto\\C%3A\\Windows\\System32\\config\\SECURITY" DEFAULT: "uploads\\auto\\C%3A\\Windows\\System32\\config\\DEFAULT" # Per-user hives 模式 UserHives: NTUSERGlob: "Users\\*\\NTUSER.DAT" USRCLASSGlob: "Users\\*\\AppData\\Local\\Microsoft\\Windows\\UsrClass.dat" ``` # 使用方法 基本处理: ``` python3 triager.py --root triage_collection.zip -o output_directory ``` 使用 ZIP 取证归档文件和自定义配置文件: ``` python3 triager.py \ --zip triage_collection.zip \ -c config.yml \ -o output_directory ``` 在解析后的输出中搜索: ``` python3 triager.py -d output_directory --search "PsExec" python3 triager.py -d output_directory --search "Invoke-WebRequest" --search-case-sensitive python3 triager.py -d output_directory --search "Mimikatz" --search-max-hits 50 ``` IOC 扫描,基本上是在文件中搜索常见的 IOC 名称(此仓库中包含 `iocs.txt`): ``` python3 triager.py -d output_directory --find-iocs iocs.txt python3 triager.py -d output_directory --find-iocs iocs.txt --save-iocs iocs_dir ``` 生成 AI 辅助的取证报告: ``` $env:OPENAI_API_KEY="your_api_key" # Windows export OPENAI_API_KEY="your_api_key" # Linux python3 triager.py -d output_directory --ai ``` 这会在输出目录中生成 `ai_forensic_report.md`。如果设置了 API key,`Triager` 将查询 OpenAI。如果没有,报告将仅包含可以粘贴到 LLM 中的数据。 **请谨慎使用,切勿暴露敏感信息。** 生成的报告包括: * 执行摘要 * 可疑活动时间线 * 可疑命令、二进制文件和路径 * 持久化机制 * 建议的调查后续步骤 ## 典型工作流程示例 ``` python3 triager.py --config config.yml --root /mnt/triage_dir --output out_dir python3 triager.py -d out_dir --search "schtasks" --search-max-hits 50 python3 triager.py -d out_dir --find-iocs iocs.txt ``` 在处理后的输出中搜索 PsExec 的结果:

## 当前输出结构:

``` +---Event logs | +---APT-Hunter | +---Chainsaw | +---EvtxECmd | \---Hayabusa +---Evidence of execution | +---AmCache | | +---AmCache-EvilHunter | | \---AmcacheParser | +---Prefetch | +---SRUM | | \---SrumECmd | +---WER | \---WindowsDefenderDetection +---File system artifacts | +---LogFile | +---MFT | +---RecycleBin | \---USNJournal +---Meta +---Persistence | +---ScheduledTasks | \---WMI +---Registry | +---BamDam | +---Shimcache | \---USB \---User artifacts +---BrowserHistory +---Certutil +---JumpLists +---MUICache +---NotepadFiles +---NTUSER_Artifacts +---PSReadLine +---RDPCache +---RecentLnk +---Shellbags +---Thumbnails +---UserAssist \---Win10Timelines ``` # 构建可执行文件 提供了一个 `build.sh` 脚本,用于为 Linux 和 Windows(通过 Wine)生成独立的二进制文件。 ``` chmod +x build.sh ./build.sh ``` # 许可证 本项目根据 MIT 许可证授权。有关详细信息,请参阅 [LICENSE](LICENSE)。
标签:Amcache, BAM/DAM, CSV输出, DAST, EVFX, HTTPS请求, KAPE, Petitpotam, Prefetch, Python, Shimcache, SRUM, Triage, Velociraptor, Windows取证, 事件日志分析, 事件追踪, 二进制发布, 取证编排, 子域名变形, 安全调查, 库, 应急响应, 开源工具, 恶意软件分析, 数字取证, 数据规范化, 无后门, 日志解析, 用户态调试, 痕迹提取, 网络调试, 自动化, 自动化脚本, 证书伪造, 逆向工具