TL;DR. Windows 运行时无法直接 copy C:\Windows\System32\config\SYSTEM —— 文件被锁定。请使用 FTK Imager、KAPE、robocopy /B、VSS 快照 或 Velociraptor 在运行中的主机上获取取证副本,或者直接从挂载的离线磁盘读取。无论哪种方法,都要一并取走 SYSTEM.LOG1 与 SYSTEM.LOG2 —— 没有它们,最近的写入会丢失。
为什么不能直接复制
Windows 内核在系统运行期间以独占方式打开 SYSTEM 配置单元。一个普通的 copy 或 cp 会返回 进程无法访问该文件,因为另一进程正在使用此文件。更糟糕的是:即便你绕过锁定并读出字节,运行中的 OS 也会把最近的注册表写入保留在内存里,直到下一次干净关机 —— 包括最有价值的 ShimCache 条目。
因此你的目标只能是三者之一:
- 在运行中的主机上干净地绕过锁定(原始 NTFS / VSS / 取证副本)。
- 直接从挂载的离线磁盘镜像或暂停的 VM 中读取文件。
- 从内存镜像中恢复内存内副本(这是获取从未写入磁盘的条目的唯一办法)。
方法 1 —— 死盘 / 挂载的离线磁盘
如果可以关机或以只读方式挂载磁盘,这是最简单的路径:
<盘符>:\Windows\System32\config\SYSTEM
<盘符>:\Windows\System32\config\SYSTEM.LOG1
<盘符>:\Windows\System32\config\SYSTEM.LOG2
三个文件都要复制。.LOG1 / .LOG2 是事务日志;健壮的解析器会在读取主配置单元之前先重放它们,避免错过尚未合并的写入。
方法 2 —— 运行中系统:取证级复制
在运行中的主机上,多个工具可以在卷级别读取被锁定的文件:
- FTK Imager —— 图形界面,免费。「Obtain Protected Files」→「Custom」→ 勾选
SYSTEM、SYSTEM.LOG1、SYSTEM.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.AppCompat 或 Windows.Registry.NTUser 系列工件,或者用 Generic.Forensic.LocalHashes 配合 accessor: ntfs 选项直接收集配置单元文件。
不要漏掉事务日志
最常见的失误就是只复制 SYSTEM 而忽略 SYSTEM.LOG1 与 SYSTEM.LOG2。挂起的写入存活于日志中,直至下一个检查点 —— 而这部分增量往往正是你最关心的条目。健壮的解析器(Eric Zimmerman 的 AppCompatCacheParser、ShimCacheParser、本工具)会在读取配置单元前重放这些日志 —— 但前提是你把它们一起提交。
然后开始解析
把 SYSTEM 配置单元拖入 Shimcache Parser —— 全程在你的浏览器中运行,无需上传,支持从 XP 到 Windows 11 的所有版本。格式细节请见Windows 10 / 11 二进制格式参考。
延伸阅读
- Microsoft Learn — Registry hives —— 配置单元文件与事务日志的官方参考。
- Eric Zimmerman 的 KAPE —— 用于系统化采集的
Targets与Modules。 - Velociraptor
Windows.Registry.AppCompatCache—— 在线内存采集。 - Volatility 3 文档 —— 内存侧的配置单元抽取。