TL;DR. 解析 SYSTEM 配置单元 → 在用户可写区域(AppData、Temp)与异常的系统路径上过滤 → 用 AmCache 的哈希与 Prefetch 印证命中 → 文件已删除时以 SHA-1 为枢纽。ShimCache 把名字放上你的狩猎清单,并不能独自结案。
ShimCache 是 Windows 威胁狩猎中信号最强的支点之一:它记录了 Windows 检查过的可执行文件,连早已删除的也包含在内。本文给出一个具体的工作流,把一份 ShimCache 转储变成一份值得深入的主机与文件短名单。
五步工作流
- 采集 SYSTEM 配置单元。 从
C:\Windows\System32\config\SYSTEM(连同.LOG1/.LOG2)离线提取,或使用 Velociraptor 之类的在线采集器。关于 何时 真正写入,请见 ShimCache 存储在哪里。 - 解析为扁平列表。 把二进制 blob 解析为
(路径, mtime, 格式)的行。Shimcache Parser 在浏览器里完成;参考解析器 离线完成。 - 按可疑路径过滤。 狩猎从这里开始 —— 你要找的是模式,不是单一行。
- 印证执行。 一次 ShimCache 命中只能证明存在,不能证明执行。把每一行有意思的记录与 Prefetch、AmCache 或事件日志结合(参考)。
- 以哈希为枢纽。 磁盘上的文件已不在时,AmCache 的 SHA-1 是你查 VirusTotal/威胁情报的把手(为何要两者)。
值得过滤的模式
实际中狩猎人最看重的路径模式:
- 用户可写目录:
\AppData\Local\Temp\、\AppData\Roaming\、\Users\Public\、\ProgramData\—— 用户与服务无须管理员权限即可投放二进制文件的位置。 - 本不该可写的系统位置:
C:\Windows\Temp\、C:\PerfLogs\、C:\Recycler\$Recycle.Bin\—— 任何位于C:\Windows\下但不属于已知 Windows 路径的内容。 - 双扩展名 / 模仿系统二进制的命名:
\System32\之外的svchost.exe、出现在奇怪位置的lsass.exe、*.pdf.exe、*.docx.exe。 - 网络共享与可移动介质:
\\?\UNC\、非C:的盘符、\Device\HarddiskVolumeShadowCopy*。 - 一次性使用的工具:
psexec.exe、winrm.cmd、wmiexec.exe、cobaltstrike相关产物 —— 合法的管理员工具常被滥用。
第一遍别在正则上太花哨。按 mtime 排序后用眼睛扫近期条目 —— 这能发现启发式过滤漏掉的东西。
分诊经验
当一行看起来可疑时,几个快速检查就能区分信号与噪声:
- 它有对应的 Prefetch 吗? 那几乎就是执行证据。
- AmCache 是否带 SHA-1? 查一下。来自正规厂商签名的干净哈希,让你迅速降低优先级。
- mtime 是否可疑地接近已知事件时刻? 在告警发生前后几分钟内被修改的二进制,值得深入查看。
- 父目录在用户配置文件但用户本不该是管理员? 有可能,但要查看权限提升迹象(带提升令牌的 Sysmon 4688)。
这一工作流不会告诉你的
ShimCache 单独并不能告诉你是谁用什么参数何时启动了该二进制。要回答这些,需要 Sysmon、Security 日志,或 一份完整的程序执行时间线。ShimCache 的职责是把名字放上你的狩猎清单 —— 而不是独自结案。
延伸阅读
- Eric Zimmerman 的 AppCompatCacheParser —— 参考级离线解析器。
- Velociraptor 的
Windows.Registry.AppCompatCache—— 大规模采集。 - ShimCache & AmCache forensic analysis (Mehrnoush) —— 基于案例的实战解读。