WMI-Repository forensisch sichern: Schritt für Schritt
Wo das WMI-Repository liegt und wie Sie OBJECTS.DATA, INDEX.BTR und die MAPPING-Dateien sicher kopieren: Schattenkopie, KAPE, Velociraptor oder Image.
Kurz gesagt. Sichern Sie den gesamten Ordner C:\Windows\System32\wbem\Repository — OBJECTS.DATA, INDEX.BTR, MAPPING1.MAP, MAPPING2.MAP, MAPPING3.MAP — vom selben Zeitpunkt. Auf einem laufenden Host sind die Dateien vom WMI-Dienst gesperrt: Lesen Sie sie aus einer Schattenkopie, mit KAPE (Target WBEM) oder mit Velociraptor. Beenden Sie niemals den WMI-Dienst, um sie zu kopieren.
Wo die Dateien liegen
| Windows-Version | Ordner |
|---|---|
| Vista, 7, 8, 10, 11, Server 2008 und neuer | C:\Windows\System32\wbem\Repository\ |
| XP, Server 2003 | C:\WINDOWS\system32\wbem\Repository\FS\ |
| Nach einem In-Place-Upgrade | zusätzlich C:\Windows.old\Windows\System32\wbem\Repository\ |
OBJECTS.DATA allein genügt, um Subscriptions zu carven. INDEX.BTR und die MAPPING-Dateien liefern die Namespaces und unterscheiden aktive von gelöschten Objekten — sichern Sie daher alles.
Bevor Sie beginnen
- Beenden Sie
Winmgmtnicht und führen Sie vor der Sicherung wederwinmgmt /salvagerepositorynoch/resetrepositoryaus: Beide schreiben das Repository neu und können genau die gelöschten Datensätze zerstören, nach denen Sie suchen. - Halten Sie die Dateien zusammen. Eine
INDEX.BTRoder MAPPING-Datei von einem anderen Zeitpunkt verweist auf die falschen Seiten. Die strukturierte Ansicht funktioniert dann nicht mehr; Carving schon. - Sichern Sie früh. Gelöschte Subscriptions bleiben nur erhalten, bis WMI ihre Seiten wiederverwendet; Softwareinstallationen und Updates schreiben in das Repository.
Schritt 1: PowerShell mit erhöhten Rechten öffnen
Starten Sie auf dem Host Windows PowerShell mit Als Administrator ausführen. Ein einfaches copy von OBJECTS.DATA schlägt mit einer Freigabeverletzung fehl, solange der WMI-Dienst läuft.
Schritt 2: Schattenkopie erstellen und verlinken
Erstellen Sie im selben Fenster einen Snapshot von C: und stellen Sie ihn als Ordner bereit. Der Snapshot friert alle Repository-Dateien zum selben Zeitpunkt ein:
New-Item -ItemType Directory -Force -Path C:\triage | Out-Null
$sc = Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{ Volume = 'C:\' }
$vss = Get-CimInstance -ClassName Win32_ShadowCopy -Filter "ID='$($sc.ShadowID)'"
cmd /c mklink /d C:\triage\vss "$($vss.DeviceObject)\"
Schritt 3: Repository-Ordner kopieren
robocopy /B kopiert im Sicherungsmodus, sodass keine Datei übersprungen wird:
robocopy C:\triage\vss\Windows\System32\wbem\Repository C:\triage\Repository /E /B /R:0 /W:0 /NP /NDL
Schritt 4: Link und Snapshot entfernen
cmd /c rmdir C:\triage\vss
$vss | Remove-CimInstance
Sie haben jetzt C:\triage\Repository. Bilden Sie Hashes und packen Sie den Ordner, wenn Sie ihn anderswo analysieren (tar.exe ist ab Windows 10 1803 enthalten):
tar -a -c -f C:\triage\wmi-repository.zip -C C:\triage Repository
Dieselben vier Schritte finden Sie als einen einzigen Block zum Kopieren und Einfügen unter So erhalten Sie Ihre Daten auf der Startseite von WMI Parser.
Mit einem Triage-Tool
KAPE hat ein Target WBEM, das beide Repository-Ordner (den aktuellen und den unter Windows.old) per Raw-Zugriff auf den Datenträger kopiert. Es ist in den Compound-Targets KapeTriage und !SANS_Triage enthalten, eine vorhandene Triage-Sammlung enthält es also möglicherweise bereits:
kape.exe --tsource C: --tdest C:\triage\kape --target WBEM
Velociraptor: Sammeln Sie Windows.Triage.Targets (Velociraptor-Triage-Projekt) mit dem Target WBEM über die GUI, einen Hunt oder einen Offline-Collector. Über die Befehlszeile kann das integrierte Artefakt Windows.Search.FileFinder den Ordner hochladen:
velociraptor.exe artifacts collect Windows.Search.FileFinder --args SearchFilesGlob=C:\Windows\System32\wbem\Repository\* --args Upload_File=Y --output C:\triage\wmi.zip
Beide Ergebnisse können Sie unverändert in WMI Parser ablegen: Das Tool findet das Repository im Ordner oder in der ZIP-Datei, auch bei prozentkodierten Velociraptor-Pfaden.
Aus einem Datenträger-Image
Binden Sie das Image schreibgeschützt ein (zum Beispiel mit Arsenal Image Mounter als E:) und kopieren Sie den Ordner:
robocopy E:\Windows\System32\wbem\Repository C:\triage\Repository /E /R:0 /W:0 /NP /NDL
Unter Linux oder macOS mit dem Image unter /mnt/win:
mkdir -p ~/triage && cp -a /mnt/win/Windows/System32/wbem/Repository ~/triage/
Navigieren Sie in FTK Imager zu Windows\System32\wbem, klicken Sie mit der rechten Maustaste auf Repository und wählen Sie Export Files. Prüfen Sie auch die Schattenkopien des Images: Ein älteres Repository kann noch eine inzwischen entfernte Subscription enthalten.
Ein schneller Live-Blick (kein Ersatz)
Um zu sehen, was gerade aktiv ist, fragen Sie WMI selbst:
'__EventFilter','__EventConsumer','__FilterToConsumerBinding' | ForEach-Object { Get-CimInstance -Namespace root/subscription -ClassName $_ } | Format-List *
Das zeigt nur aktive Objekte eines einzigen Namespace, niemals gelöschte, und verlässt sich auf den WMI-Dienst eines möglicherweise kompromittierten Hosts. Nutzen Sie es zur Triage und parsen Sie danach die gesicherten Dateien. Die Checkliste für die Untersuchung zeigt, was als Nächstes zu prüfen ist.