UnholyPresence/Offline-WinPersistTriage.ps1

GitHub: UnholyPresence/Offline-WinPersistTriage.ps1

一款用于应急响应场景的 PowerShell 离线取证甄别工具,对挂载的 Windows 磁盘执行只读持久化机制检查和 IOC 扫描。

Stars: 0 | Forks: 0

# Offline-WinPersistTriage.ps1 对已挂载为离线卷的 Windows 磁盘进行只读 PowerShell 甄别,用于检查常见的 Windows 持久化机制和实战失陷指标 (IOC)。 此脚本适用于蓝队应急响应、IR 甄别、恶意软件持久化审查、实验室分析以及 Windows 安装挂载为分析工作站离线卷的失陷后验证场景。 ## 快速开始 powershell # 基础表格输出至控制台 .\Offline-WinPersistTriage.ps1 -TargetPath E:\ -Format Table # 将 JSON 报告写入分析工作站 .\Offline-WinPersistTriage.ps1 -TargetPath E:\Windows -Format Json -OutFile C:\Cases\host01_triage.json # 包含事件日志解析的 CSV 报告 .\Offline-WinPersistTriage.ps1 -TargetPath E:\ -Format Csv -OutFile C:\Cases\host01_triage.csv -ParseEvents # 更广泛的文件 IOC 扫描 .\Offline-WinPersistTriage.ps1 -TargetPath E:\ -Format Json -OutFile C:\Cases\host01_deep_triage.json -ParseEvents -DeepFileScan ## 核心功能 * 检查离线 Windows 注册表 hive,无需加载原始证据 hive。 * 在加载注册表 hive 之前,将其复制到分析员的临时存储中。 * 检查常见的 HKLM 和 HKCU 持久化位置。 * 审查服务、驱动、计划任务、启动文件夹、PowerShell 产物、WMI 字符串、预读文件名、Amcache 条目、hosts 文件条目、端口代理 (PortProxy)、LSA 包、打印监视器以及 COM 劫持指标。 * 可选的离线 EVTX 解析。 * 可选的深度文件 IOC 扫描。 * 输出 Table、Json 或 Csv 格式。 * 拒绝将报告写入目标卷根目录下。 ## 重要取证说明 此脚本在设计上不会写入目标磁盘,但最安全的工作方式依然是只读挂载磁盘或使用取证写保护器。尽管脚本本身会避免对目标进行写入,但在涉及证据处理时,存储层应强制执行只读访问。 ## 参数 | 参数 | 必需 | 默认值 | 描述 | | ------------ | ----: | ------- | ---------------------------------------------------------------- | | `-TargetPath`| 是 | 无 | 已挂载的 Windows 卷根目录(例如 `E:\`)或 Windows 目录(例如 `E:\Windows`)。 | | `-Format` | 否 | `Table` | 输出格式:`Table`、`Json` 或 `Csv`。 | | `-OutFile` | 否 | 无 | 可选的报告路径。不能位于目标卷内。 | | `-ParseEvents`| 否 | 禁用 | 解析选定的离线 EVTX 日志,以查找与持久化相关的事件。 | | `-EventDaysBack`| 否 | `90` | 事件日志解析回溯的天数。 | | `-DeepFileScan`| 否 | 禁用 | 递归扫描常见的可写/暂存路径以查找可疑文件。 | | `-MaxFileResults`| 否 | `5000` | 深度扫描返回的最大文件结果数量。 | | `-KeepTemp` | 否 | 禁用 | 保留复制的临时注册表 hive 用于调试。 | ## 输出架构 每条结果包含: | 字段 | 描述 | | ---------- | ----------------------------------------------------------------- | | `TimeUtc` | 生成结果的时间。 | | `Target` | 解析出的离线 Windows 路径。 | | `Severity` | `Info`、`Low`、`Medium`、`High` 或 `Critical`。 | | `Category` | 结果类别。 | | `Artifact` | 特定的产物名称。 | | `Location` | 注册表路径、文件路径或事件日志路径。 | | `Value` | 相关的命令、值、文件名、事件消息或 IOC 文本。 | | `Notes` | 上下文、指标、哈希、签名、时间戳或解析说明。 | | `Source` | 来源上下文,通常为 `Offline disk`。 | ## 推荐工作流 1. 只读挂载目标 Windows 磁盘。 2. 在分析工作站上以管理员身份运行 PowerShell。 3. 将报告保存到由分析员控制的案例目录中。 4. 首先使用 JSON 输出进行保存和后续解析。 5. 优先审查 `High` 和 `Medium` 级别的结果。 6. 结合时间线、用户上下文、哈希、签名、路径和已知良好基线验证可疑项。 建议的首轮执行命令: powershell .\Offline-WinPersistTriage.ps1 -TargetPath E:\ -Format Json -OutFile C:\Cases\host01\offline-persistence-triage.json -ParseEvents 建议的扩展命令: powershell .\Offline-WinPersistTriage.ps1 -TargetPath E:\ -Format Json -OutFile C:\Cases\host01\offline-persistence-triage-deep.json -ParseEvents -EventDaysBack 180 -DeepFileScan -MaxFileResults 10000 ## 限制 这是一个甄别收集器,不是完整的取证重建工具。 已知限制: * WMI 存储库审查仅基于字符串。 * Prefetch 审查仅基于文件名。 * Amcache 结果因 Windows 版本和产物可用性而异。 * 事件日志解析取决于日志保留策略和审核策略。 * PowerShell 历史记录可能缺失、被清除、被禁用或特定于用户。 * 严重性判定是基于启发式的,不应视为最终结论。 * 某些机制需要使用专用的取证工具进行更深入的解析。 ## 安全提示 * 除非磁盘以只读方式挂载或受写保护器保护,否则不要针对原始证据运行。 * 不要将输出保存到目标磁盘。 * 将结果视为线索,而非最终证据。 * 在做出遏制、清除或正式报告决定之前,使用其他工具进行验证。
标签:AI合规, API接口, IPv6, Libemu, PowerShell, Windows运维, 安全, 库, 应急响应, 数字取证, 自动化脚本, 超时处理