TL;DR. 攻击者主要通过避免 clean shutdown 来对付 ShimCache,让缓存永远不被刷新。直接的注册表编辑通常会让 blob 留下畸形痕迹。可以通过异常短的缓存、缺失的常驻 Windows 二进制、畸形的条目大小,或内存与磁盘之间的差异来发现篡改。
这个缓存比大多数 Windows 工件都更难篡改。也不是不可能。处理过几起事件后,你不再为攻击者的尝试感到惊讶,而是开始惊讶于他们留下指纹的频率。下面是我实际见过的技术清单,以及每一种留下的痕迹。
攻击者实际尝试的东西
1. 在 flush 之前硬重启。 对该缓存最干净的反取证手段是从不给 Windows 写入它的机会。强制断电,或在 hypervisor 层杀死 VM,那个会话的内存中 ShimCache 就直接消失了。磁盘上的 hive 仍然保留上一次 clean shutdown 时刷新下来的内容。这是勒索软件应对中迄今为止最常见的模式。机制详见 缓存何时被写入。
2. 对值 blob 的直接注册表编辑。 SYSTEM 级别的攻击者可以覆盖 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache。理论上这能移除特定条目。实际上 二进制布局 复杂到手工编辑通常会让 blob 变得畸形或让条目数变得无意义。
3. 离线 hive 替换。 如果攻击者能让系统下线,就可以整体替换 SYSTEM hive。在国家级行动之外很罕见,但确实发生过。registry parser 可以告诉你 SYSTEM hive 的时间戳和结构是否与主机上的其他工件保持一致。
4. 对二进制做 timestomping。 因为缓存存储的是文件的 $STANDARD_INFORMATION mtime,攻击者在 Windows 检查之前对该二进制做 timestomping,就会移位缓存里的时间戳。缓存没有说谎;它捕获到的文件元数据本身就已被篡改。请与 MFT 的 $FILE_NAME 属性进行交叉参照,那个属性更难被 timestomp。
5. 抹除佐证工件。 学会 ShimCache 作用的攻击者通常也会清除 AmCache、Prefetch、EVTX 和 回收站,让 ShimCache 成为孤立证人,并寄希望于它因 执行证明文章 里说的那些原因而被驳回。
检测线索
当你怀疑遭到篡改时,留意:
- 异常短的缓存。 在正常使用下,Windows 会把缓存填到大约 1,024 条。一台已经运行数天的系统上 blob 里却只有寥寥几条,这是强有力的篡改信号。
- 缺失始终存在的条目。 几个 Windows 二进制在几乎每份 ShimCache 中都可靠地出现,具体取决于版本:shell 组件、计划任务辅助程序、OS 更新工具。它们在已经被使用过的工作站上缺席就很可疑。
- 畸形的条目大小。 一个解析到中途失败、剩余缓冲区被清零或填充垃圾的 blob,是笨拙编辑的经典指标。Shimcache Parser 会把这个作为显式错误浮现出来。
- 内存与磁盘的不一致。 把从 RAM dump 中提取的缓存(提取指南)与磁盘上的 hive 对比。仅存在于内存而磁盘上没有的条目可能意味着硬重启。磁盘上存在但与内存矛盾的条目(同一槽位上有不同的路径或 mtime)表明有人写入了 hive。
- AmCache 与 ShimCache 不匹配。 AmCache 显示某个二进制被执行过,但 ShimCache 中该文件的位置是空的。问一句为什么。清除 ShimCache 的攻击者经常忘了 AmCache 的存在。
- 反取证工具的足迹。 在 Prefetch、Sysmon Event ID 1 和 USN journal 中寻找在相关时间窗口内运行了
reg.exe、PowerShellRemove-ItemProperty或第三方 hive 编辑器的证据。
这告诉调查人员什么
我在每份报告里都强制执行的几条务实规则:
- 把空或近乎空的 ShimCache 视为证据。 不是证据的缺失。明确写明。
- 能拉 RAM dump 就拉。 它经常能抓住 hive 失去的东西。
- 务必用 AmCache 和 Prefetch 佐证。 见 工件参考。三个工件比一个更难被一致地清除。
- 不要声称"攻击者清除了 ShimCache",除非你能说明被清除的是什么。指向条目数的缺口、缺失的基线二进制,或内存与磁盘的不一致。
延伸阅读
- Velociraptor 的
Windows.Registry.AppCompatCache:规模化采集以发现异常。 - Ø Security 的 Windows 10/11 AppCompatCache deep dive:有助于理解被篡改的 blob 必须伪造哪些字段。
- Mehrnoush 的 ShimCache & AmCache forensic analysis:包含篡改场景的案例研究。
- MITRE ATT&CK T1070 Indicator Removal:资源充足的攻击者会如何处理这类工件的背景。