如何获取 Windows SYSTEM 配置单元用于离线 ShimCache 分析

约 1 分钟阅读

TL;DR. Windows 运行时无法直接 copy C:\Windows\System32\config\SYSTEM —— 文件被锁定。请使用 FTK ImagerKAPErobocopy /BVSS 快照Velociraptor 在运行中的主机上获取取证副本,或者直接从挂载的离线磁盘读取。无论哪种方法,都要一并取走 SYSTEM.LOG1SYSTEM.LOG2 —— 没有它们,最近的写入会丢失。

为什么不能直接复制

Windows 内核在系统运行期间以独占方式打开 SYSTEM 配置单元。一个普通的 copycp 会返回 进程无法访问该文件,因为另一进程正在使用此文件。更糟糕的是:即便你绕过锁定并读出字节,运行中的 OS 也会把最近的注册表写入保留在内存里,直到下一次干净关机 —— 包括最有价值的 ShimCache 条目

因此你的目标只能是三者之一:

  1. 在运行中的主机上干净地绕过锁定(原始 NTFS / VSS / 取证副本)。
  2. 直接从挂载的离线磁盘镜像或暂停的 VM 中读取文件。
  3. 从内存镜像中恢复内存内副本(这是获取从未写入磁盘的条目的唯一办法)。

方法 1 —— 死盘 / 挂载的离线磁盘

如果可以关机或以只读方式挂载磁盘,这是最简单的路径:

<盘符>:\Windows\System32\config\SYSTEM
<盘符>:\Windows\System32\config\SYSTEM.LOG1
<盘符>:\Windows\System32\config\SYSTEM.LOG2

三个文件都要复制。.LOG1 / .LOG2事务日志;健壮的解析器会在读取主配置单元之前先重放它们,避免错过尚未合并的写入。

方法 2 —— 运行中系统:取证级复制

在运行中的主机上,多个工具可以在卷级别读取被锁定的文件:

  • FTK Imager —— 图形界面,免费。「Obtain Protected Files」→「Custom」→ 勾选 SYSTEMSYSTEM.LOG1SYSTEM.LOG2,输出到外置磁盘。
  • KAPE —— 命令行,可脚本化。RegistryHives 目标可一次性拉取所有相关配置单元和日志:
    kape.exe --tsource C: --target RegistryHives --tdest C:\out
    
  • /B 的 robocopy —— /B备份模式下打开文件,绕过用户态的锁定(仍需管理员和 SeBackupPrivilege)。手边没有 DFIR 工具时的快速方案:
    robocopy C:\Windows\System32\config C:\out SYSTEM SYSTEM.LOG1 SYSTEM.LOG2 /B
    
  • VSS 快照 —— vssadmin create shadow 产生一个时间点快照,可从中读取。需要一致视图但又不能关机时很有用。

方法 3 —— 内存镜像(对最新条目最有效)

磁盘上的 SYSTEM 配置单元只包含上次干净关机时持久化的条目。对于自事件以来没有干净重启过的主机,最新的条目只存在于内存中

捕获内存镜像(WinPmem、Magnet RAM Capture、AVML),然后用 Volatility 取出 SYSTEM 配置单元 —— 或者直接读取 ShimCache:

# 取出注册表配置单元
vol -f memory.raw windows.registry.hivelist
vol -f memory.raw windows.registry.hivedump --offset <addr>

# 或者直接从内存读取 ShimCache
vol -f memory.raw windows.shimcachemem

从内存转储中提取 ShimCache详细讲解了这一点。

方法 4 —— 大规模在线分诊(Velociraptor)

针对全网采集,Velociraptor 通过 NTFS 直接访问读取被锁定的配置单元,并返回供离线分析。使用 Windows.Forensics.AppCompatWindows.Registry.NTUser 系列工件,或者用 Generic.Forensic.LocalHashes 配合 accessor: ntfs 选项直接收集配置单元文件。

不要漏掉事务日志

最常见的失误就是只复制 SYSTEM 而忽略 SYSTEM.LOG1SYSTEM.LOG2。挂起的写入存活于日志中,直至下一个检查点 —— 而这部分增量往往正是你最关心的条目。健壮的解析器(Eric Zimmerman 的 AppCompatCacheParserShimCacheParser、本工具)会在读取配置单元前重放这些日志 —— 但前提是你把它们一起提交。

然后开始解析

把 SYSTEM 配置单元拖入 Shimcache Parser —— 全程在你的浏览器中运行,无需上传,支持从 XP 到 Windows 11 的所有版本。格式细节请见Windows 10 / 11 二进制格式参考

延伸阅读

相关文章