Rootless-Ghost/EndpointTriage
GitHub: Rootless-Ghost/EndpointTriage
一款基于 PowerShell 的 Windows 端点自动化取证收集器,在事件响应中快速采集进程、网络、持久化、事件日志等关键痕迹并自动标记可疑指标,输出结构化取证包与 HTML 分诊报告。
Stars: 0 | Forks: 0
# EndpointTriage
**用于 Windows 端点事件响应的自动化取证痕迹收集器。**
基于 PowerShell 的分类脚本,用于从 Windows 端点收集易失性和非易失性取证痕迹,标记可疑指标,并输出结构化的分类包与 HTML 摘要报告。
专为 SOC 分析师和事件响应人员构建,他们需要快速、可重复的端点收集,而无需部署重量级的取证套件。
   
## 痕迹收集
| 阶段 | 类别 | 收集的痕迹 | ATT&CK 参考 |
|-------|----------|-------------------|------------------|
| 1 | 系统信息 | 操作系统版本、运行时间、安装日期、硬件、环境变量 | — |
| 2 | 进程 | 包含哈希、命令行、所有者和父子树状结构的运行中进程 | — |
| 3 | 网络 | TCP 连接、UDP 端点、DNS 缓存、ARP 表、网络适配器 | — |
| 4 | 计划任务 | 非 Microsoft 任务及其操作、触发器和运行身份上下文 | T1053.005 |
| 5 | 持久化 | 注册表 Run 键、服务、启动文件夹、WMI 订阅、IFEO、AppInit_DLLs | T1547.001, T1543.003, T1546.003, T1546.012, T1546.010 |
| 6 | 文件系统 | 关键目录中最近修改的文件,并带有可疑扩展名标记 | — |
| 7 | 事件日志 | Security、System、PowerShell、Sysmon、Defender — 已过滤至与事件响应相关的 Event ID | — |
| 8 | 用户 | 本地账户、特权组成员身份 | — |
| 9 | 其他 | 已加载的驱动程序、命名管道 (C2 指标)、防火墙规则 | — |
| 10 | 报告 | 汇总的 HTML 分类报告及收集摘要 | — |
## 可疑指标标记
该脚本会自动标记在系统入侵中常见的痕迹:
**进程:**
- `TEMP_EXEC` — 从 Temp/Downloads 目录运行的进程
- `PUBLIC_DIR` — 从 `C:\Users\Public\` 运行的进程
- `SUSPICIOUS_CLI` — 命令行中包含编码命令、`IEX`、`Invoke-Expression`
- `OFFICE_CHILD` — 由 Office 应用程序生成的 `cmd.exe`/`powershell.exe`
**命名管道:**
- 已知 C2 框架的管道名称模式 (Cobalt Strike、Meterpreter、PsExec)
**文件:**
- 可疑扩展名检测 (`.exe`、`.dll`、`.ps1`、`.bat`、`.hta`、`.iso` 等)
- 隐藏文件属性标记
## 快速入门
```
# 使用默认参数进行完整分诊 (24小时回溯,所有 artifacts)
.\Invoke-EndpointTriage.ps1
# 自定义回溯窗口和输出路径
.\Invoke-EndpointTriage.ps1 -HoursBack 48 -OutputPath "D:\IR\Cases"
# 快速模式 — 跳过 event logs 和进程 hashing
.\Invoke-EndpointTriage.ps1 -SkipEventLogs -SkipHashing
# 限制 event log 提取
.\Invoke-EndpointTriage.ps1 -EventLogLimit 500
```
**要求:** 需要以管理员身份运行以收集完整的痕迹。如果未经提权,脚本仍会尽可能进行收集,但事件日志、WMI 订阅以及某些进程所有者信息将不完整。
## 输出结构
```
TriageOutput/
└── HOSTNAME_20260330_141500/
├── triage_report.html # Consolidated HTML report
├── system/
│ ├── system_info.csv
│ ├── environment_variables.csv
│ ├── local_users.csv
│ ├── group_membership.csv
│ └── loaded_drivers.csv
├── processes/
│ ├── running_processes.csv # Full process listing with hashes
│ └── process_tree.txt # Parent-child relationship map
├── network/
│ ├── tcp_connections.csv
│ ├── udp_endpoints.csv
│ ├── dns_cache.csv
│ ├── arp_table.csv
│ ├── named_pipes.csv
│ ├── network_adapters.csv
│ └── firewall_rules.csv
├── persistence/
│ ├── persistence_items.csv # All persistence with ATT&CK mapping
│ └── scheduled_tasks.csv
├── eventlogs/
│ ├── Security.csv
│ ├── System.csv
│ ├── Microsoft-Windows-PowerShell_Operational.csv
│ ├── Microsoft-Windows-Sysmon_Operational.csv
│ └── Microsoft-Windows-Windows Defender_Operational.csv
└── filesystem/
└── recent_file_modifications.csv
```
## 事件日志覆盖范围
每个日志源针对与事件响应相关的特定 Event ID:
| 日志源 | Event ID | 目的 |
|-----------|-----------|---------|
| Security | 4624, 4625, 4648, 4672, 4688, 4697, 4698, 4720, 4728, 1102 | 登录、进程创建、特权使用、账户更改、日志清除 |
| System | 7045, 7040, 7034, 1001, 1014, 6005, 6006, 6008 | 服务安装、崩溃、DNS 故障、启动事件 |
| PowerShell | 4103, 4104, 4105, 4106 | 脚本块日志记录、模块日志记录 |
| Sysmon | 1, 3, 7, 8, 10, 11, 12, 13, 15, 22, 23, 25 | 进程创建、网络、映像加载、注册表、DNS、文件操作 |
| Defender | 1006–1009, 1116–1119 | 恶意软件检测与修复 |
## 参数
| 参数 | 类型 | 默认值 | 描述 |
|-----------|------|---------|-------------|
| `-OutputPath` | String | `.\TriageOutput` | 分类输出的基础目录 |
| `-HoursBack` | Int | `24` | 回溯时间窗口 (1–720 小时) |
| `-EventLogLimit` | Int | `200` | 每个日志源的最大事件数 (10–5000) |
| `-SkipEventLogs` | Switch | `$false` | 跳过事件日志收集以加快分类速度 |
| `-SkipHashing` | Switch | `$false` | 跳过对进程可执行文件的 SHA256 哈希处理 |
## 应用场景
- **SOC 分类:** 当端点上触发警报时进行首次响应的痕迹收集
- **紫队验证:** 在运行攻击模拟后,验证您的检测和遥测是否捕获了预期的痕迹
- **基线收集:** 捕获已知良好状态,以便在未来调查期间进行比较
- **取证保留:** 在易失性痕迹 (进程、连接、DNS 缓存) 消失之前将其收集
## 路线图
### v1.1 — Wazuh 集成
- [ ] `-WazuhExport` 开关,用于将分类结果以 JSON 格式发送至 Wazuh 服务器 (syslog/1514)
- [ ] 用于 EndpointTriage 警报摄取的自定义 Wazuh 解码器 + 规则集
- [ ] 主动响应模式 — Wazuh 在规则触发时自动启动分类
### v1.2 — 增强取证
- [ ] Prefetch 文件收集与解析
- [ ] Amcache / ShimCache 提取
- [ ] PowerShell ConsoleHost 历史记录捕获 (`ConsoleHost_history.txt`)
- [ ] 最近文件的备用数据流 (ADS) 检测
- [ ] 浏览器历史记录提取 (Chrome、Edge、Firefox)
### v1.3 — 报告与分析
- [ ] 针对已收集事件日志的 Sigma 规则匹配
- [ ] 对已标记的进程可执行文件进行 YARA 扫描 (与 YaraForge 搭配)
- [ ] 时间线生成 — 将所有痕迹合并到统一的按时间顺序排列的视图中
- [ ] 差异分类 — 比较两个分类包以突出变化 (基线与事件)
- [ ] 用于 SIEM 摄取的 JSON 导出格式
### 未来
- [ ] 远程收集模式 (通过 WinRM/PSRemoting 对多个端点进行分类)
- [ ] Linux 分类模块 (auditd、cron、systemd、/proc 枚举)
- [ ] 与 EndpointForge 集成,实现持续监控 + 按需分类工作流
- [ ] 针对已标记的进程可执行文件进行 VirusTotal 哈希查询
## 依赖项
- Windows PowerShell 5.1+ 或 PowerShell 7+
- 建议使用管理员权限
- 无需外部模块 — 仅使用 Windows 内置的 cmdlet
## 许可证
本项目基于 MIT 许可证授权 — 有关详细信息,请参见 [LICENSE](LICENSE)。
   
**RG-Nebula** — [github.com/Rootless-Ghost](https://github.com/Rootless-Ghost)
标签:AI合规, Cloudflare, DAST, HTML报告, IPv6, Libemu, MITRE ATT&CK, PowerShell, Windows端点, Windows 调试器, 事件日志, 多模态安全, 安全运营, 库, 应急响应, 恶意软件分析, 扫描框架, 数字取证, 注册表取证, 端点安全, 网络连接分析, 自动化收集, 自动化脚本, 补丁管理, 进程分析, 驻留机制分析