用 ShimCache 检测横向移动

约 1 分钟阅读

TL;DR. 横向移动工具——PsExec、wmicat/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 createC:\Windows\Temp\ 或可写目录下的载荷路径
计划任务(schtasks /s任务动作二进制,常为 C:\Users\Public\
远程 PowerShellpowershell.exe 加上它暂存的任何被投放 .exe

C:\Windows\ 中随机命名的服务二进制,是现存信号最强的 ShimCache 发现之一——在用 ShimCache 狩猎恶意软件中作为分流规则讲解。

源主机一侧

发起主机常常显示攻击工具本身的 ShimCache 条目:PsExec.exe、交互使用的 wmic.exe、定制的横移器,或后渗透框架。在合理时间窗内把「主机 A 上的工具」与「主机 B 上的服务二进制」配对,是横向移动推断的核心。

跨主机差分工作流

  1. 采集范围内每台主机的 SYSTEM 蜂巢(见获取 SYSTEM 蜂巢)。
  2. 逐一解析并导出为 CSV。
  3. 规范化路径,对共享且异常的二进制做差分——在多台主机出现的同一随机服务名或同一暂存路径,就是移动路径。
  4. 按 ShimCache 的插入顺序排列主机(不是时间戳——它是文件 mtime,不是事件时间)。
  5. 用 Security 4624/4648、7045 服务安装事件和 AmCache 佐证每一跳。

这会自然地汇入一条完整的程序执行时间线。为报告将这些技术映射到 ATT&CK T1021(Remote Services)和 T1570(Lateral Tool Transfer)。

注意事项

ShimCache 仅在干净关机时落盘,所以仍在运行的主机可能尚未写入决定性条目——检查内存(从内存转储中提取)。而时间戳本身永远无法为各跳排序;要依赖插入顺序加事件日志。清除该值的攻击者会留下自己的线索——见ShimCache 反取证

要快速差分蜂巢,用 Shimcache Parser 逐一解析、导出 CSV 再比较——全部在客户端。

延伸阅读

相关文章