MgnCoding2020/windows-triage-toolbox
GitHub: MgnCoding2020/windows-triage-toolbox
这是一个Windows系统安全分诊工具箱,通过PowerShell脚本实现只读证据收集和结构化报告,解决事件响应中的系统监控和数据获取问题。
Stars: 0 | Forks: 0
# Windows 分诊工具箱
用于安全优先的 Windows 分诊和
持续监控的 PowerShell 脚本及脱敏证据样本。是 [**Windows 分诊手册**](https://github.com/MgnCoding2020/windows-triage-playbooks) 的配套资源库。
**版本:** v4.1.1
**状态:** 只读脚本集,已在 Windows 10 Pro 上重新验证 · 2026年5月
**许可证:** MIT
## 这是什么
一个现场工具包,包含一组 PowerShell 脚本,用于对 Windows 端点运行只读收集
并向磁盘写入结构化报告。设计为以下两种方式运行:
- **便携模式** — 直接从 USB 挂载的 ToolBox 文件夹运行
- **安装模式** — 复制到 `C:\ProgramData\ToolBox` 并通过计划任务驱动
每个脚本:
- 从其自身位置 (`$PSScriptRoot`) 解析 ToolBox 根目录
- 将输出写入 `12_Reports\YYYY-MM\COMPUTERNAME\YYYYMMDD_HHMMSS_\` 目录下
- 生成一个 `ReportManifest.json` 文件,记录工具名称、参数、开始/结束时间、
提升上下文、输出文件列表以及警告/错误信息
- 声明一个安全级别:`ReadOnly`、`Caution`、`Administrative`、`Destructive`、`Recovery`
配套的 Playbook 集([Windows 分诊手册](https://github.com/MgnCoding2020/windows-triage-playbooks))
记录了如何在真实的分诊工作流中使用这些脚本的输出。
## 这不是什么
- 一个受管理的企业监控代理
- EDR(端点检测与响应)的替代品
- 运行这些脚本就一定能检测或移除恶意软件的保证
- 在情况需要时,专业事件响应团队的替代品
## 仓库结构
```
.
├── README.md ← this file
├── CHANGELOG.md ← version history (v4.1.1 patch notes)
├── CONTROL_MAPPING.md ← scripts → NIST 800-53 / 800-171 / CIS controls
├── LICENSE ← MIT
├── scripts/ ← 20 PowerShell scripts
└── samples/ ← redacted output from a real local run (May 2026)
└── README.md ← what each sample shows
```
## 脚本列表
| 脚本 | 安全级别 | 用途 |
|---|---|---|
| `ToolBox.Common.ps1` | — | 共享框架(文件夹解析、运行上下文、清单、日志记录) |
| `Initialize-ToolBoxFolders.ps1` | Administrative | 创建标准文件夹布局 |
| `HealthSnapshot-ToolBox.ps1` | ReadOnly | 操作系统 / BIOS / 磁盘 / Defender / 事件错误快照 |
| `Analyze-EventLogs-ToolBox.ps1` | ReadOnly | 精选的 Windows 事件日志审阅窗口 |
| `Audit-Network-ToolBox.ps1` | ReadOnly | TCP/UDP、防火墙、DNS 缓存、主机、路由 |
| `Audit-DefenderExclusions-ToolBox.ps1` | ReadOnly | Defender 排除项 + ASR 规则 + 配置漂移 |
| `Cert-ExpiryMonitor-ToolBox.ps1` | ReadOnly | 本地证书存储、过期时间 + 证书链状态 |
| `Get-BrowserExtensions-ToolBox.ps1` | ReadOnly | Chromium + Firefox 系列浏览器扩展清单 |
| `Get-PersistenceInventory-ToolBox.ps1` | ReadOnly | 计划任务、服务、Run 键、IFEO、WMI 订阅 |
| `Get-ToolBoxIntegrity.ps1` | ReadOnly | ToolBox 本身的 SHA256 基线 + 漂移检查 |
| `InstalledApps-Inventory-ToolBox.ps1` | ReadOnly | 注册表 + AppX 清单,带启发式审查建议 |
| `PrivGroups-DriftCheck-ToolBox.ps1` | ReadOnly | 本地特权组成员身份与基线的对比检查 |
| `Invoke-ToolBoxAudit.ps1` | ReadOnly | 包装器 — 运行只读审计捆绑包 |
| `Invoke-ToolBoxFastTriage.ps1` | ReadOnly | 用于初步分诊的快速子集 |
| `Get-FileHashWithVTNote-ToolBox.ps1` | Caution | 计算文件哈希;可选 VirusTotal 哈希查询(需要 API 密钥) |
| `Archive-EventLogs-Safe.ps1` | Administrative | 导出范围受限的 `.evtx` 存档 |
| `Install-SysmonToolBox.ps1` | Administrative | 可选的 Sysmon 安装/配置 |
| `Register-ToolBoxScheduledTasks.ps1` | Administrative | 注册计划任务(默认拒绝可移动路径) |
| `Unregister-ToolBoxScheduledTasks.ps1` | Administrative | 移除已注册的任务 |
| `Invoke-ToolBoxMonthlyMaintenance.ps1` | Administrative | 基于日历的存档轮换 |
## 快速开始(便携式 USB)
```
cd :\ToolBox\11_Scripts
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\Initialize-ToolBoxFolders.ps1
.\HealthSnapshot-ToolBox.ps1
.\Get-ToolBoxIntegrity.ps1 -CreateBaseline
.\PrivGroups-DriftCheck-ToolBox.ps1
```
报告将出现在 `..\12_Reports\YYYY-MM\COMPUTERNAME\_\` 目录下。
## 快速开始(已安装监控模式)
```
# 将 ToolBox 树复制到 C:\ProgramData\ToolBox 后
cd C:\ProgramData\ToolBox\11_Scripts
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\Initialize-ToolBoxFolders.ps1
.\Get-ToolBoxIntegrity.ps1 -CreateBaseline
.\PrivGroups-DriftCheck-ToolBox.ps1
.\Invoke-ToolBoxAudit.ps1 -All
.\Register-ToolBoxScheduledTasks.ps1
```
计划任务注册会拒绝可移动路径,除非传递 `-AllowRemovablePath` 参数。
这是有意为之——当 USB 盘符发生变化时,任务会静默失败。
## 操作原则
按这些原则行事。这是 Playbook 集建立的相同的四行准则:
以及不可违背的原则:
1. **只读优先。** 在更改任何东西之前先收集。
2. **清理之前先收集。** 清理会销毁你需要了解发生了什么的证据。
3. **不要为可疑机器建立基线。** 基线是对已知良好状态的声明。
4. **切勿随意清除日志。** 安全日志、Defender 日志、PowerShell 日志和 Sysmon 日志都是证据。
5. **VirusTotal 哈希优先。** 切勿上传包含机密信息的私有文件、配置或日志。
6. **假设未知主机可能脆弱。** 先检查驱动器健康状况、加密、备份和业务上下文。
## 证据样本
[`samples/`](./samples) 包含在我自己的工作站上运行(Windows 10 Pro, 2026年5月)后脱敏的输出。
所有主机名、用户名、BIOS 序列号、MAC 地址、SID 和网络配置文件 GUID 字段都已被替换为占位符。
包含的是精选子集——每个工具的 `ReportManifest.json`、摘要文件以及展示输出结构的小型 CSV。
完整的原始输出(事件日志转储、网络连接表、已安装应用清单)有意未予发布。
详见 [`samples/README.md`](./samples/README.md) 获取每个工具的详细说明。
## 授权与范围
这些脚本设计用于**你拥有或已获书面授权可操作**的系统。
它们默认是只读的,但会深入读取——注册表、事件日志、计划任务、服务、证书存储、特权组成员资格。
不要在你无权检查的机器上运行它们。
## 许可证
MIT — 详见 [`LICENSE`](./LICENSE)。
## 项目历史
此工具箱是个人 Windows 监控项目的第三次迭代:
- **第一阶段(2024 年 – 2025 年 9 月)** — 早期脚本开发和实验室工作。
- **第二阶段(2025 年 10 月 – 2026 年 2 月)** — 在我自己的日常主工作站上运行的持续监控操作。
计划任务每日/每周/每月执行,并存档报告输出;发布为
[HomeEDR-and-Governance-Security](https://github.com/MgnCoding2020/HomeEDR-and-Governance-Security)。
当 WGU 课程和生活优先事项占据主导时,于二月暂停。
- **第三阶段(2026 年 5 月 — 此仓库)** — 工具包的便携式 USB 挂载版本,
经过冒烟测试,在 v4.1.1 周期中修补并重新发布,附带脱敏的
证据样本和配套的
[Windows 分诊手册](https://github.com/MgnCoding2020/windows-triage-playbooks) 文档集。
这个仓库看起来是新的,因为它*确实*是新的——但底层的工作并非如此。
## 关于作者
由 **Michael Nault** ([MgnCoding2020](https://github.com/MgnCoding2020) 创作和维护——
一名入门级 GRC(治理、风险与合规)候选人,在 WGU(西部州长大学)攻读网络安全与信息保障学士学位的同时,
通过自学进行蓝队和合规性学习。
初稿和结构借助了 AI 辅助;此仓库中的每个脚本都经过手动编辑,
在真实的 Windows 10 Pro 工作站上进行了冒烟测试,
并在 [`CHANGELOG.md`](./CHANGELOG.md) 中记录的 v4.1.1 周期中完成了修补。
配套的 Playbook 集位于 [Windows 分诊手册](https://github.com/MgnCoding2020/windows-triage-playbooks)。
- GitHub: [@MgnCoding2020](https://github.com/MgnCoding2020)
- LinkedIn: [michael-nault-mgncoding2020](https://www.linkedin.com/in/michael-nault-mgncoding2020)
标签:AI合规, AMSI绕过, CIS控制, Conpot, Homebrew安装, Libemu, NIST 800-53, PowerShell脚本, Windows安全, 只读收集, 威胁检测, 安全分诊, 安全合规, 系统取证, 结构化报告, 网络代理, 自动化监控, 连续监控