持久化点清单化排查
持久化排查的价值在于不遗漏:攻击者只要保住一个入口就能反复回到主机,而 Windows 的自启动位置分散在注册表、计划任务、服务与驱动、WMI 订阅、文件系统启动目录等多处,靠回忆逐项想必然漏项。可行做法是先按清单全量导出快照,再按时间窗筛出新增或变更项逐个深挖,用清单代替记忆。
基本信息
| 排查方法 | 全量导出快照 → 按时间窗筛新增项 → 逐项验证指向文件 |
|---|---|
| 主力工具 | Sysinternals Autoruns,命令行版 autorunsc 支持 CSV 输出 |
| 覆盖范围 | 注册表自启动、服务与驱动、计划任务、登录脚本、启动目录、WMI 订阅等 |
| 比对方式 | 与同版本基线主机或历史快照做差异,锁定非标准条目 |
| 留痕要求 | 快照文件记录主机名、采集时间、操作用户与工具版本 |
典型使用场景
- 应急响应的初步排查,一次性枚举主机上的全部自启动点
- 与同版本基准主机的快照做差异,快速定位非标准配置
- 入侵窗口已确定时,筛出写入时间落在窗口内的条目
- 清理完成后复扫一遍,确认持久化条目已彻底移除
- 作为报告附录,向接收方展示持久化面的排查范围与结果
导出与筛选
导出与筛选
autorunsc64.exe -accepteula -a * -s -h -c -o autoruns.csv # 全部类型、校验签名、计算哈希
Import-Csv .\autoruns.csv | Sort-Object Time | Select-Object -Last 15 Category, Entry, ImagePath
Get-ScheduledTask | Select-Object TaskPath, TaskName, @{n='Action';e={$_.Actions.Execute}} | Out-File tasks.txt
ls "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp" # 全局启动目录
ls "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\StartUp" # 当前用户启动目录清单核对范围
| 类别 | 典型位置 | 备注 |
|---|---|---|
| 注册表自启动 | Run、RunOnce、Winlogon、IFEO | 含 32 位与 64 位两套视图 |
| 服务与驱动 | 服务控制管理器、驱动注册表项 | 自动启动类型的条目优先看 |
| 计划任务 | 任务计划程序库、TaskCache 注册表 | 触发条件可为登录、空闲或定时 |
| WMI 订阅 | root\subscription 命名空间 | 无独立可执行文件,通用工具覆盖有限 |
| 启动目录与登录脚本 | StartUp 目录、组策略登录脚本 | 文件系统入口,最容易被忽略 |
通用工具不覆盖全部持久化点:COM 劫持、WMI 永久事件订阅、部分浏览器扩展与打印机端口监视器需要单独核对,清单式排查比依赖单一工具更可靠。
比对基线时先把系统更新、补丁安装带来的正常新增项圈出去,否则大量噪声会淹没真正的线索,也会浪费后续逐项验证的时间。