TL;DR. 横向移动工具——PsExec、wmic、at/schtasks、远程 PowerShell——会在目标主机(被投放的服务二进制)上、以及常常在源主机上留下 ShimCache 条目。在多台主机间对 AppCompatCache 做差分,会让攻击者走过的路径浮现出来。
ShimCache 通常被当作单主机工件。但它在 IR 中真正的威力是跨主机:同一工具在它触及的每台机器上都因兼容性被检查,留下可关联的痕迹。本文讲的就是如何读这条痕迹。
横向移动在 ShimCache 中是什么样子
远程执行技术会在目标上投放或调用一个可执行文件。每种都留下特征路径:
| 技术 | 目标端 ShimCache 线索 |
|---|---|
| PsExec / SMB 服务执行 | C:\Windows\PSEXESVC.exe,或 C:\Windows\ 中随机 8 字符的服务二进制 |
sc \\host create | 攻击者命名的服务二进制,常在 C:\Windows\ 或 \PerfLogs\ |
WMI(wmic process call create) | C:\Windows\Temp\ 或可写目录下的载荷路径 |
计划任务(schtasks /s) | 任务动作二进制,常为 C:\Users\Public\ |
| 远程 PowerShell | powershell.exe 加上它暂存的任何被投放 .exe |
C:\Windows\ 中随机命名的服务二进制,是现存信号最强的 ShimCache 发现之一——在用 ShimCache 狩猎恶意软件中作为分流规则讲解。
源主机一侧
发起主机常常显示攻击工具本身的 ShimCache 条目:PsExec.exe、交互使用的 wmic.exe、定制的横移器,或后渗透框架。在合理时间窗内把「主机 A 上的工具」与「主机 B 上的服务二进制」配对,是横向移动推断的核心。
跨主机差分工作流
- 采集范围内每台主机的 SYSTEM 蜂巢(见获取 SYSTEM 蜂巢)。
- 逐一解析并导出为 CSV。
- 规范化路径,对共享且异常的二进制做差分——在多台主机出现的同一随机服务名或同一暂存路径,就是移动路径。
- 按 ShimCache 的插入顺序排列主机(不是时间戳——它是文件 mtime,不是事件时间)。
- 用 Security 4624/4648、7045 服务安装事件和 AmCache 佐证每一跳。
这会自然地汇入一条完整的程序执行时间线。为报告将这些技术映射到 ATT&CK T1021(Remote Services)和 T1570(Lateral Tool Transfer)。
注意事项
ShimCache 仅在干净关机时落盘,所以仍在运行的主机可能尚未写入决定性条目——检查内存(从内存转储中提取)。而时间戳本身永远无法为各跳排序;要依赖插入顺序加事件日志。清除该值的攻击者会留下自己的线索——见ShimCache 反取证。
要快速差分蜂巢,用 Shimcache Parser 逐一解析、导出 CSV 再比较——全部在客户端。
延伸阅读
- MITRE ATT&CK: Remote Services (T1021) —— 目标端线索的技术参考。
- Mandiant: leveraging the ShimCache —— ShimCache 基础。