TL;DR. Du kannst C:\Windows\System32\config\SYSTEM nicht copy-en, während Windows läuft. Die Datei ist gesperrt. Nutze FTK Imager, KAPE, reg save, einen VSS-Snapshot oder Velociraptor auf einem Live-Host. Lies sie für Dead-Box-Arbeit direkt von einer gemounteten Offline-Platte. Wenn du die Rohdatei kopierst, greif immer SYSTEM.LOG1 und SYSTEM.LOG2 mit ab. Ohne sie liest du veraltete Daten. reg save braucht sie nicht.
Der mit Abstand häufigste Erfassungsfehler, den ich in eingehenden Beweisen sehe, ist der Analyst, der SYSTEM kopiert und die Transaktionsprotokolle übersprungen hat. Der zweithäufigste ist der Analyst, der xcopy auf einem Live-Host versucht hat, "The process cannot access the file because it is being used by another process" bekam und nach einer von EDR gesammelten Kopie suchte, die drei Tage alt war. Keines davon muss passieren. Wähle eine Methode, wende sie richtig an und mach weiter.
Warum du es nicht einfach kopieren kannst
Der Kernel hält den SYSTEM-Hive mit exklusivem Zugriff offen, solange Windows läuft. Ein einfaches copy gibt den Access-Denied-Fehler zurück. Selbst wenn du den Lock umgehst und die Bytes liest, hält das laufende OS aktuelle Registry-Schreibvorgänge im Speicher, bis zum nächsten sauberen Shutdown, was bedeutet, dass die nützlichsten ShimCache-Einträge nicht in der Datei sind, die du gerade gegriffen hast. Das Speicher- und Flush-Modell ist lesenswert, bevor du entscheidest, welche Methode du benutzt.
Dein Ziel ist eines von:
- Den Lock auf dem laufenden Host sauber umgehen (rohes NTFS, VSS oder forensische Kopie).
- Die Datei direkt von einem gemounteten Offline-Disk-Image oder einer pausierten VM lesen.
- Die In-Memory-Kopie aus einem RAM-Dump wiederherstellen. Der einzige Weg, Einträge aus der aktiven Sitzung zu bekommen.
Methode 1: tote Kiste oder gemountete Offline-Platte
Der einfachste Weg. Herunterfahren oder schreibgeschützt mounten und kopieren:
<DriveLetter>:\Windows\System32\config\SYSTEM
<DriveLetter>:\Windows\System32\config\SYSTEM.LOG1
<DriveLetter>:\Windows\System32\config\SYSTEM.LOG2
Alle drei Dateien. Ein robuster Parser spielt .LOG1 und .LOG2 vor dem Lesen des Haupt-Hives ab, sodass du keine noch nicht gemergten Schreibvorgänge verpasst. Lass sie weg, und du liest eine veraltete Sicht.
Methode 2: Live-System, forensische Kopie
Mehrere Tools umgehen die Sperre, jedes auf seine Art: FTK Imager und KAPE lesen die Datei auf Volume-Ebene, reg save geht über die Registry-API, und esentutl /vss oder ein VSS-Snapshot lesen aus einer Schattenkopie:
- FTK Imager. GUI, kostenlos. "Obtain Protected Files" → "Custom" → wähle
SYSTEM,SYSTEM.LOG1,SYSTEM.LOG2. Ausgabe auf ein externes Laufwerk. - KAPE. Kommandozeile, skriptfähig. Das Target
RegistryHiveszieht alle relevanten Hives plus Logs:kape.exe --tsource C: --target RegistryHives --tdest C:\out reg save. In Windows eingebaut, braucht eine erhöhte Eingabeaufforderung. Es lässt den Kernel den geladenen Hive herausschreiben, das Ergebnis ist also sauber und konsistent und braucht keine Transaktionslogs. Willst du stattdessen die Rohdatei, kopiertesentutl /y /vsssie aus einer temporären Schattenkopie (fürSYSTEM.LOG1undSYSTEM.LOG2erneut ausführen):
Nutzereg save HKLM\SYSTEM C:\out\SYSTEM.hiv /y esentutl /y C:\Windows\System32\config\SYSTEM /vss /d C:\out\SYSTEMrobocopy /Bnicht auf dem laufenden System. Der Backup-Modus umgeht Datei-ACLs, aber nicht die exklusive Sperre des Kernels auf einem geladenen Hive, die Kopie scheitert also mit einer Freigabeverletzung. Heb es dir für ein gemountetes Image oder eine Schattenkopie auf, z. B.robocopy E:\Windows\System32\config C:\out SYSTEM SYSTEM.LOG1 SYSTEM.LOG2 /Bmit dem Image alsE:.- VSS-Snapshot. Eine Point-in-Time-Schattenkopie, aus der du lesen kannst. Nützlich, wenn du eine konsistente Sicht brauchst und das System nicht herunterfahren kannst.
vssadmin create shadowfunktioniert nur unter Windows Server; auf einem Client erstellt und entferntesentutl /y ... /vss(siehe oben) sie für dich, oder du erstellst sie in einer erhöhten PowerShell mitInvoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{Volume='C:\'}.
Alle vier Methoden erzeugen eine verwertbare Kopie. FTK Imager und KAPE sind das, was Reviewer im Methodenteil eines Berichts erwartet zu sehen. reg save funktioniert im Notfall ohne Installation; vermerke im Bericht, dass es den aktuellen Inhalt des Hives herausschreibt statt einer bitgenauen Kopie der Datei, gelöschte Zellen und Slack-Space bleiben also nicht erhalten.
Methode 3: Speicherabbild
Der On-Disk-Hive enthält nur die beim letzten sauberen Shutdown persistierten Einträge. Auf einem Host, der seit dem Vorfall nicht sauber neu gestartet wurde, sind die aktuellsten Einträge im Speicher und nirgendwo sonst.
Erfasse Speicher mit WinPmem, Magnet RAM Capture oder AVML. Dann extrahiere entweder den SYSTEM-Hive oder zieh den ShimCache direkt mit Volatility 3:
# Den Registry-Hive extrahieren
vol -f memory.raw windows.registry.hivelist
vol -f memory.raw windows.registry.hivedump --offset <addr>
# Oder den Hive überspringen und den ShimCache direkt aus dem Speicher lesen
vol -f memory.raw windows.shimcachemem
Den ShimCache aus einem Memory-Dump extrahieren behandelt das ausführlich, einschließlich des Velociraptor-Live-Sammelpfads.
Methode 4: Live-Triage in großem Maßstab
Velociraptor liest den gesperrten Hive über direkten NTFS-Zugriff und gibt ihn für die Offline-Analyse zurück. Für flottenweite Sammlung sammle Windows.Triage.Targets mit dem Target RegistryHivesSystem (ältere Server: Windows.KapeFiles.Targets mit RegistryHives). Das holt den SYSTEM-Hive zusammen mit seinen Transaktionslogs; lade das Collection-ZIP herunter und analysiere es offline.
Für breitere Registry-Triage jenseits des ShimCache siehe den registry parser.
Überspring die Transaktionsprotokolle nicht
Ausstehende Schreibvorgänge liegen in SYSTEM.LOG1 und SYSTEM.LOG2 bis zum nächsten Checkpoint. Die Delta kann genau die Einträge enthalten, die dir am wichtigsten sind. Eric Zimmermans AppCompatCacheParser spielt die Logs automatisch ab, aber nur, wenn sie neben dem Hive liegen. Mandiants Shim Cache Parser und dieses Tool spielen nichts ab: Sie lesen die primäre Hive-Datei so, wie sie ist. Für diese spielst du die Logs vorher mit Eric Zimmermans rla.exe (Registry Log Applier) oder Registry Explorer ein und parst den bereinigten Hive.
Wenn du einen Hive vor Monaten ohne die Logs gesammelt hast und wissen musst, was fehlt: Die Antwort ist "das interessanteste Stück". Re-akquiriere, wenn möglich.
Dann parsen
Leg den SYSTEM-Hive in den Shimcache Parser. Er nimmt genau diese eine Datei; ist der Hive dirty, spiele seine .LOG1 und .LOG2 vorher mit rla.exe oder Registry Explorer ein. Er läuft komplett im Browser, ohne Upload-Schritt, und beherrscht jede Windows-Version von XP bis Windows 11. Für die Formatdetails siehe die Windows-10/11-Binärformat-Referenz.
Weiterführende Lektüre
- Microsoft Learn: Registry-Hives. offizielle Referenz für Hive-Dateien und Transaktionsprotokolle.
- Eric Zimmermans KapeFiles. Targets und Modules für systematische Akquisition.
- Velociraptor
Windows.Registry.AppCompatCache. Live-In-Memory-Erfassung. - Volatility 3 documentation. speicherseitige Hive-Extraktion.