ochmunkh/Tatar-Triage

GitHub: ochmunkh/Tatar-Triage

一款轻量级跨平台 DFIR 取证与工件收集工具,以只读优先方式从 Windows 和 Linux 主机快速采集数字证据并生成结构化分析报告。

Stars: 0 | Forks: 0

TATAR Triage Toolkit

一个使用 PowerShell 编写的快速、单文件 Windows DFIR 取证与工件收集器。

v1.1 PowerShell 5.1+ Windows 10/11 30 modules read-only first MIT

当终端表现出被入侵的迹象(访问了恶意网站、运行了可疑文件、无法解释的卡顿)时,你需要*快速*保留证据——而无需安装或折腾一堆独立的工具。`Tatar.ps1` 通过单次只读优先的流程,从 Windows 主机收集重要的易失性和非易失性工件,并生成一份汇总报告、一份分析人员优先的**包含汇总发现的分类总结**、一份完整的**执行日志**,以及用于监管链的 SHA-256 清单。 ## 演示 使用单个命令运行所有操作:

TATAR Triage Toolkit run

每次运行都会生成一个独立且经过哈希校验的证据文件夹:

Output structure

v1.1 分类总结 (`summary.txt`) 为 IR 负责人提供了一页纸的起点:

Triage summary

汇总报告会在执行过程中标记可疑活动(示例):

Sample report

## 亮点 - **一个脚本,无需安装。** 将其拷贝到主机(或 USB)上,运行即可。 - **30 个模块**,按 **RFC 3227 易失性顺序**执行(内存 → 网络 → 进程 → …… → 磁盘 / 注册表 / 日志)。 - **分析人员优先的总结。** 每次运行都会写入 `summary.txt` + `summary.json`:主机/操作系统/案件元数据、快速统计,以及汇总的**可疑发现**列表——这些是供审查的线索,*而不是*最终定论。JSON 可直接输入到 SIEM / SOAR 流水线中。 - **执行日志。** `Tatar.log` 记录每个模块的时间戳以及 `START / OK / WARN / FAILED` 状态——清晰的审计追踪,便于排查问题。 - **支持自动化。** `-Silent` 会抑制所有控制台输出(适用于 WinRM / 计划任务 / 远程运行),并且脚本会返回有意义的**退出代码**(见下文)。 - **只读优先。** 破坏性/繁重的操作(内存转储、注册表配置单元保存、完整 EVTX)默认**关闭**,需要通过显式开关启用。 - **监管链。** 包含每次运行的元数据、审查员/案件 ID,以及每个收集文件的 SHA-256 清单。 - **设计透明。** 没有代码混淆,没有绕过 AMSI/AV。旨在在取证主机上进行代码签名并加入白名单。 - **不会提取或解密密码。** - **跨平台。** 输出通用的 [`summary.schema.json`](schema/summary.schema.json) 契约;[Linux 版本](linux/) (`tatar-linux.sh`) 生成完全相同的 `summary.json` 输出。 ## 环境要求 - Windows 10 / 11(Windows Server 2016+ 也可以) - PowerShell 5.1+(支持 PowerShell 7) - 推荐**管理员权限**(如果没有,某些工件将不完整) ## 使用方法 ``` # 允许当前会话的脚本 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force # 运行所有内容(单破折号或双破折号均可) .\Tatar.ps1 -All .\Tatar.ps1 --all # 列出可用模块(无 collection,未创建文件夹) .\Tatar.ps1 -List # 仅运行特定模块 .\Tatar.ps1 -Modules network,process,rdp,lateral,timeline # 完整运行至外部驱动器,包含 case metadata,已压缩 + 已计算哈希 .\Tatar.ps1 -All -OutputPath E:\Evidence -CaseId IR-2026-014 -Examiner "Enkhbat.O" -Compress # 自动化/远程运行:无控制台输出,检查 exit code .\Tatar.ps1 -All -Silent -OutputPath E:\Evidence -CaseId IR-2026-014 if ($LASTEXITCODE -ne 0) { Write-Warning "TATAR finished with issues - check Tatar.log" } ``` ### 选项 | 选项 | 描述 | |--------|-------------| | `-All` / `--all` | 运行所有模块 | | `-Modules a,b,c` | 仅运行指定的模块 | | `-List` | 列出模块并退出 | | `-Help` | 显示帮助并退出 | | `-OutputPath ` | 输出基础目录(默认为 `C:\Forensic`;**建议使用外部驱动器**) | | `-CaseId ` | 用于监管链的案件/事件 ID | | `-Examiner ` | 用于监管链的审查员姓名 | | `-Compress` | 最后对输出进行压缩并计算 SHA-256 | | `-CollectHives` | 保存 SAM/SECURITY/SYSTEM/SOFTWARE + NTUSER(凭据材料;可能触发 EDR) | | `-ExportEvtx` | 导出完整的 `.evtx` 日志 | | `-MemoryDump` | 通过 `tools\winpmem.exe` 获取原始内存镜像(可能触发 EDR) | | `-Silent` / `-Quiet` | 抑制**所有**控制台输出(横幅、进度、状态)。文件(包括 `Tatar.log`)仍会被写入。适用于 WinRM / 计划任务 / 自动化运行 | ### 退出代码 | 代码 | 含义 | |------|---------| | `0` | 收集成功完成 | | `1` | 致命/使用错误(未选择任何内容、无法创建输出目录、没有有效模块) | | `2` | 收集完成,但有一个或多个步骤记录了错误——请检查 `Tatar.log` | ## 模块 按易失性从高到低排序: `memory` · `network` · `process` · `sessions` · `services` · `sysinfo` · `users` · `persistence` · `autoruns` · `shares` · `firewall` · `drivers` · `apps` · `prefetch` · `usb` · `pshistory` · `obfscan` · `rdp` · `lateral` · `privesc` · `browser` · `fsartifacts` · `deleted` · `shadow` · `eventlogs` · `hives` · `mft` · `indicators` · `hashes` · `timeline` 覆盖范围包括:系统/用户/网络状态,带有 LOLBAS 模式标记的运行进程,服务和驱动程序,启动项/Run键/计划任务等持久化机制,RDP 活动,横向移动工件(SMB 会话、映射驱动器、WMI 持久化、PsExec),权限提升指标(未加引号的服务路径、`AlwaysInstallElevated`、令牌权限),混淆脚本扫描,浏览器工件元数据(所有配置文件,不解密),Recent/Amcache/Prefetch,回收站,卷影副本,关键 Windows 事件 ID,可选的注册表配置单元和 EVTX 导出,NTFS/MFT 信息,用于 IOC 匹配的文件哈希,以及轻量级的超级时间线 CSV。 ## 分类总结与发现 每次运行都会在结束时生成一份以分析人员为中心的单页报告,让 IR 负责人知道**首先应该查看什么**: - **`summary.txt`** —— 主机/操作系统/案件元数据、快速统计(进程数、TCP 连接数、本地用户数、已哈希的二进制文件等),以及按严重程度排序的汇总**可疑发现**列表。 - **`summary.json`** —— 与上述相同数据的结构化 JSON 格式(包含 `Severity/Category/Message/Detail` 的 `stats` 和 `findings[]`),可直接供 SIEM 摄取或脚本化后处理。 发现来自于收集器本身:LOLBAS 风格的命令行、混淆脚本匹配、PsExec 工件、WMI 事件订阅消费者、未加引号/用户可写的服务路径、`AlwaysInstallElevated`、安全日志被清除 (1102) 事件、最近放入临时位置的可执行文件等。 ## 执行日志 (`Tatar.log`) 每次运行都会在证据旁边生成一个带有时间戳的执行日志: ``` [2026-07-10 22:26:16.693] [START ] module sysinfo (1/30) [2026-07-10 22:26:17.721] [OK ] module sysinfo finished in 1s [2026-07-10 22:26:17.751] [START ] module hives (26/30) [2026-07-10 22:26:17.995] [ERROR ] Hives failed: Access denied [2026-07-10 22:26:17.996] [WARN ] module hives finished in 0.2s with 1 error(s) ``` `Tatar.log` 是一个*操作*日志(在清单计算哈希后它还会继续增长),因此特意将其**排除在 `manifest_sha256.csv` 之外**。证据文件仍会照常进行哈希计算。 ## MITRE ATT&CK 映射 每个收集器都映射到它有助于**检测/调查**的对手技术。详见 [`docs/MITRE_ATTACK.md`](docs/MITRE_ATTACK.md)。 | 模块/工件 | ATT&CK 技术 | 策略 | |---|---|---| | `process` (LOLBAS 命令行) | T1059 · T1059.001 (PowerShell) | 执行 | | `persistence` (Run 键) | T1547.001 | 持久化 | | `persistence` (计划任务) | T1053.005 | 持久化 | | `services` | T1543.003 | 持久化 / 提权 | | `rdp` | T1021.001 (RDP) | 横向移动 | | `lateral` (SMB 共享/会话) | T1021.002 | 横向移动 | | `lateral` (WMI 事件订阅) | T1546.003 · T1047 | 持久化 / 执行 | | `lateral` (PsExec) | T1569.002 | 执行 | | `hives` (SAM / SECURITY / LSASS) | T1003.002 · T1003.001 | 凭据获取 | | `privesc` (未加引号的服务路径) | T1574.009 | 持久化 / 提权 | | `privesc` (AlwaysInstallElevated) | T1548 | 权限提升 | | `obfscan` | T1027 · T1140 | 防御规避 | | `usb` | T1091 · T1200 | 初始访问 / 数据外传 | | `eventlogs` (ID 1102) | T1070.001 (清除事件日志) | 防御规避 | | `shadow` | T1490 (抑制恢复) | 影响 | | `network` / `hosts` | T1071 · T1565.001 | 命令与控制 / 防御规避 | | `browser` | T1555.003 · T1539 | 凭据获取 | ## 输出 ``` C:\Forensic\_\ ├─ TATAR_Report__.txt # consolidated human-readable report ├─ summary.txt # analyst-first triage summary + findings (NEW v1.1) ├─ summary.json # same, machine-readable (SIEM/automation) (NEW v1.1) ├─ findings.json # findings-only feed for SOAR / SIEM (NEW) ├─ Tatar.log # execution log: START/OK/WARN/FAILED (NEW v1.1) ├─ chain_of_custody.txt # case/examiner/times/script hash ├─ manifest_sha256.csv # SHA-256 of every collected file (Tatar.log excluded) ├─ timeline.csv # process / prefetch / recent / installs ├─ binary_hashes.csv # SHA-256 of running/service binaries (VT/IOC) ├─ recyclebin.csv ├─ arp.txt / routes.txt / dns_cache.txt / ipconfig.txt / hosts.txt ├─ firewall_rules.txt ├─ BrowserArtifacts\ · EventLogs\ · FsArtifacts\ · RDP\ · RegistryHives\ · MFT\ └─ (optional) ..\TATAR__.zip (+ .sha256.txt) ``` ## 处理与操作注意事项 - **建议使用外部驱动器**(`-OutputPath E:\Evidence`)。写入系统驱动器可能会覆盖已删除文件的证据。 - 在收集完成之前,请**不要重启/关闭**主机。 - 输出可能包含**敏感数据**(注册表配置单元、浏览器元数据)。请加密存档并安全传输。 - 已知某些模块(`hives`、`memorydump`、`exportevtx`)会触发 EDR/AV。这是预期之中的——**请提前与您的 SOC 协调并将该工具加入白名单**,而不是禁用 EDR。 ### 在不绕过 AV 的情况下通过 AV 检查 该工具是刻意**透明**的(没有代码混淆 / AMSI 绕过)。要以正确、可审计的方式在不干扰 AV 的情况下运行它: 1. 对脚本进行**代码签名** (`Set-AuthenticodeSignature`)。 2. **发布其 SHA-256**,以便响应人员进行验证并将其加入白名单。 3. 在取证主机上,为该工具添加**有作用域限制的 Defender/EDR 排除项**,并在事后将其移除。 `SHA-256 (Tatar.ps1): A69F953AFCE102190DA9928869D380528F6E2BB7E203C66CF46E97187709219B` ## 已知局限性 - **不会**提取或解密已保存的密码。 - 完整的 `$MFT` 解析需要离线工具(例如 MFTECmd / RawCopy);脚本仅记录 NTFS/MFT 元数据。 - 浏览器工件**仅包含元数据**(不执行数据库查询,不进行解密)。 - 如果没有管理员权限,某些工件(事件日志、配置单元、受保护的进程)将不完整。 - `summary.txt` / `summary.json` 中的发现属于启发式模式匹配——合法软件可能会导致误报;请务必进行验证。 - PowerShell 5.1 上的 `Compress-Archive` 在处理非常大的输出(例如内存镜像)时可能会遇到困难;对于这些大文件,请使用 7-Zip。 ## 可选的外部工具 (`tools\`) - `winpmem.exe` —— 内存镜像(用于 `-MemoryDump`) - `autoruns64.exe` —— Sysinternals Autoruns(用于 `autoruns` 模块) 如果它们存在于 `tools\` 子文件夹中,将会被自动调用;否则将跳过这些步骤。 ## 更新日志 ### Tier 1 加固(当前版本) - **持久化 ASEP**:IFEO Debugger 劫持、AppInit_DLLs、AppCertDlls、Winlogon Shell/Userinit、LSA 包、打印监视器(只读注册表)。 - **进程族谱**:父 -> 子进程树以及可疑血缘发现(Office/脚本宿主生成 shell)。 - **更多事件 ID**:4698/4699(任务)、4719(审核策略)、4648(显式凭据)、4768/4769/4776(Kerberos/NTLM)、5140(共享)、4627。 - **`findings.json`** 专为 SOAR/SIEM 输出的仅包含发现的结果。 - 映射器中加入 **MITRE 子技术**(例如 T105.001 对比 T1059.003,T1218.x LOLBINs,T1546.x ASEPs)。 - **健壮性**:winpmem HVCI/空镜像检测;清单哈希处理容忍锁定的文件 (`-ErrorAction SilentlyContinue`)。 - **退出代码准确性**:预期的活动系统锁定(Amcache.hve、活动的 NTUSER.DAT)现在记录为 NOTE/WARN(而不是错误),因此干净的运行将返回退出代码 0 而不是 2。 ### Schema 1.1 —— 跨平台(当前版本) - **统一的 `summary.json` 架构** ([`schema/summary.schema.json`](schema/summary.schema.json)) 现已与 Linux 版本共享;消费者依赖 `schemaVersion` 进行适配。 - 发现包含 **MITRE ATT&CK `technique[]`** 数组(集中映射);总结会内联显示这些 ID。 - 新增 **`environment`** 块:虚拟化、容器、安全模块。 - 跨平台统一字段名称:`privileged`(原为 `administrator`)、`durationSeconds`(原为 `durationMinutes`);发现键名已转为小写。 - 新增配套的 **[`linux/tatar-linux.sh`](linux/)** —— 包含 16 个模块,提供相同的以分析人员为优先的输出。 ### v1.1 - **分类总结** (`summary.txt` + `summary.json`):元数据、快速统计、汇总的*可疑发现*(供审查的线索,而非最终定论);专供 SIEM/自动化使用的 JSON。 - **执行日志** (`Tatar.log`):每个模块的时间戳为 `START/OK/WARN/FAILED`,错误信息及原因被同步镜像;出于设计考虑,已从证据清单中排除。 - 用于 WinRM / 计划任务 / 远程运行的 **`-Silent` / `-Quiet`** 模式 + **退出代码**(`0` 正常,`1` 致命错误,`2` 已完成但包含错误)。 - 误报修复:混淆扫描跳过脚本本身;对 `nc.exe` / `ncat` / `iex` 模式进行单词边界匹配(不再出现 `AdobeCollabSync.exe` 的误报命中)。 - 当未设置 `$env:COMPUTERNAME` 时使用主机名回退。 ### v1.0 - 初始发布:包含 30 个收集器,按 RFC 3227 易失性顺序排列,具有监管链、SHA-256 清单、可选的 ZIP 压缩,以及配置单元/EVTX/内存转储开关。 ## 法律声明 仅供**授权**使用——仅限您拥有或获得明确书面许可进行检查的系统。您有责任遵守适用的法律和组织政策。 ## 作者 **Enkhbat.O** —— 安全分析师 ## 许可证 MIT(详见 `LICENSE`)。
标签:AI合规, Bash, Homebrew安装, IPv6, Libemu, PB级数据处理, PowerShell, 安全运维, 库, 应急响应, 应用安全, 数字取证, 自动化脚本, 自动收集