Amcache.hve von Live- und toten Systemen sichern
Der schnellste Weg, eine Amcache-Untersuchung zu ruinieren, ist die Hive falsch zu sichern. Ich habe Fälle übernommen, in denen der Collector Amcache.hve mit xcopy geschnappt, das Paar .LOG1 / .LOG2 ausgelassen und dem Analysten eine Hive übergeben hat, die mit Warnungen öffnet und der die letzte Woche an Inventar fehlt. Die Hive lag direkt da. Die Sicherungsmethode hat sie weggeworfen.
Dieser Beitrag ist die Version von "wie man die Datei korrekt erfasst", die ich mir für jedes IR-Runbook gewünscht hätte.
Die Datei ist gesperrt, und das ist das eigentliche Problem#
C:\Windows\AppCompat\Programs\Amcache.hve wird vom Kernel als Hive geöffnet. Der Handle bleibt offen, solange Windows läuft. Auf einem Live-Host:
- Ein normales
CopyFileaus dem User-Mode gegen den Live-Pfad schlägt mit einer Sharing-Violation fehl. xcopy/robocopygegen den Live-Pfad scheitern auf dieselbe Weise, oder schlimmer: Sie erzeugen auf manchen Windows-Builds in einer privilegierten Shell mit bestimmten Schaltern still eine Null-Byte-Datei.reg save HKLM\... Amcache.hvefunktioniert nicht, weil die Amcache eine eigenständige Hive ist und standardmäßig nicht unter HKLM gemountet wird. Sie können sie mitreg load HKLM\Amcache C:\Windows\AppCompat\Programs\Amcache.hvenur laden, wenn sie nicht gerade von einem anderen Prozess geöffnet ist, was sie auf einem Live-System aber ist.
Es gibt vier legitime Wege, die Datei zu lesen: das Volume snapshotten und vom Snapshot lesen, einen Raw-NTFS-Reader nutzen, der die Sperre umgeht, ein Tool einsetzen, das speziell mit der Hive umgehen kann, oder den Host herunterfahren und die Platte imagen.
Die ersten drei gelten für einen Live-Host. Die vierte gilt, wenn der Host bereits ausgeschaltet ist.
Live-Erfassung, die wirklich funktioniert#
Volume Shadow Copy#
Die langweiligste und zugleich zuverlässigste Methode. Schattenkopie erstellen, mounten, Datei herauskopieren.
vssadmin create shadow /for=C:
vssadmin gibt den Schattenkopie-Pfad zurück, meist so etwas wie \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1. Sie können nicht in diesen Pfad mit cd wechseln, weil die Win32-Pfadnormalisierung ihn nicht akzeptiert. Der Trick ist, einen symbolischen Link anzulegen oder ein Tool zu verwenden, das Raw-Pfade direkt verarbeitet. mklink /D C:\shadow \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\ und dann copy C:\shadow\Windows\AppCompat\Programs\Amcache.hve* C:\out\ funktioniert.
Zwei praktische Hinweise. Achten Sie auf das Wildcard, damit Sie Amcache.hve, Amcache.hve.LOG1 und Amcache.hve.LOG2 mitnehmen. Und räumen Sie die Schattenkopie hinterher auf, wenn Sie keinen Grund haben, sie zu behalten; nicht abgeräumte Schattenkopien sind der Grund, warum einer Workstation im ungünstigsten Moment der Plattenplatz ausgeht.
Velociraptor#
Wenn Velociraptor ausgerollt ist (und das sollte es bei den meisten Enterprise-IR-Einsätzen sein), ist das ein Einzeiler:
SELECT * FROM Artifact.Windows.Forensics.Amcache()
Das Artefakt umgeht die Dateisperre, indem es per Raw-NTFS-Zugriff über ntfs.sys liest, spielt die Transaktionslogs nach und liefert geparste Zeilen zurück. Wenn Sie statt der geparsten Ausgabe die rohe Hive haben wollen, liefert Windows.KapeFiles.Targets mit _AmcacheHive als Ziel die Datei samt Logs in einem Zip-Archiv.
Für Sweeps über viele Hosts ist das der Workflow. Im gesamten Bestand jagen, jede Hive einsammeln, zentral nachbearbeiten.
KAPE#
Eric Zimmermans KAPE handhabt das Amcache-Target out of the box. kape.exe --tsource C: --target Amcache --tdest .\out\ sammelt die Hive samt Logs und nutzt dabei seinen eingebauten Raw-NTFS-Reader. Es macht das Richtige im Umgang mit Sperren.
KAPE ist außerdem das richtige Tool, wenn Sie die Amcache zusammen mit allem anderen für ein Triage-Paket erfassen wollen. Das BasicCollection-Target plus gezielter Module liefert Ihnen Amcache, Prefetch, MFT, Ereignisprotokolle, USN-Journal, Registry-Hives und den Rest des Standardarsenals in einem Durchgang.
FTK Imager#
Wenn Sie nur FTK Imager zur Verfügung haben (weil der Responder vor Ort mit einem USB-Stick und ohne weitere Tools dasteht), funktioniert es. Add Evidence Item > Physical Drive > zu \Windows\AppCompat\Programs\ navigieren > Rechtsklick > Export Files. FTK Imager nutzt Raw-Disk-Reads, daher ist die Sperre irrelevant.
Diese Methode ist mein Standard, wenn ich mit begrenzter Zeit und begrenzter Bereitstellungsfreiheit vor dem Laptop eines Geschäftsführers sitze.
reg save nach vorherigem reg load#
Wird erwähnt, weil Leute es probieren. Auf der Live-Hive funktioniert es nicht, weil die Hive bereits geöffnet ist. Auf einer extrahierten Kopie kann es funktionieren: die Hive über eine der obigen Methoden herausziehen, lokal mit reg load HKLM\AmcacheTemp C:\path\to\Amcache.hve als Hive laden, abfragen, dann reg unload. Das ist für die Analyse, nicht für die Erfassung.
Das LOG1- / LOG2-Problem#
Amcache.hve.LOG1 und Amcache.hve.LOG2 sind die Dirty-Page-Transaktionslogs, die der Kernel schreibt, um die Hive konsistent zu halten. Sie sind aus zwei Gründen kritisch.
Erstens: Wenn die Hive zum Zeitpunkt der Erfassung gerade geschrieben wurde, ist die Primärdatei inkonsistent und die Logs enthalten die fehlenden Pages. Ohne sie verweigern Parser entweder das Öffnen der Hive oder öffnen sie mit veralteten Daten. Prüfen Sie die Parser-Ausgabe immer auf Meldungen wie "log replay" oder Warnungen "primary sequence != secondary".
Zweitens: Kürzlich gelöschte Subkeys existieren oft noch als nicht-gelöschte Zellen in den Log-Pages. Ich habe schon Einträge aus .LOG1 wiederhergestellt, die ein Angreifer wenige Minuten vor der Erfassung aus der Haupt-Hive entfernt hatte. Wenn Sie nur die .hve mitnehmen, werfen Sie diese Wiederherstellung weg.
Die Regel lautet: niemals die Hive ohne die Logs erfassen. Bei jeder Sammlung Amcache.hve* per Wildcard matchen. Velociraptor und KAPE tun das automatisch; ad-hoc copy-Befehle nur, wenn Sie sie dazu zwingen.
Ein separater Fehlermodus: die Logs sammeln, sie aber nicht nachspielen. Manche Parser spielen automatisch nach (AmcacheParser, yarp), andere nicht (ältere RegRipper-Builds). Wenn Sie unsicher sind, öffnen Sie die geborgene Hive in zwei Parsern und vergleichen Sie die Zeilenzahlen. Eine spürbare Differenz bedeutet, dass einer von ihnen nicht nachgespielt hat.
Tot-Disk-Erfassung#
Wenn Sie ein Datenträger-Image (E01, raw, VHDX) oder eine ausgeschaltete Platte vor sich haben:
- Mounten Sie das Image schreibgeschützt mit FTK Imager, Arsenal Image Mounter oder
losetupplusntfs-3gunter Linux. - Navigieren Sie auf dem gemounteten Dateisystem zu
\Windows\AppCompat\Programs\. - Kopieren Sie
Amcache.hve,Amcache.hve.LOG1,Amcache.hve.LOG2auf die Analyse-Maschine heraus. - Parsen Sie wie gewohnt.
Bei einem toten Image gibt es keine Dateisperrenproblematik. Worauf Sie achten müssen, sind die Volume-Schattenkopien auf dem Image, die ältere Amcache-Hives enthalten können. Wenn die Live-Hive manipuliert wurde, kann eine ältere Kopie aus \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\Windows\AppCompat\Programs\Amcache.hve jene Einträge tragen, die der Angreifer entfernt hat. Tools wie vshadowmount (libvshadow) unter Linux oder ShadowExplorer unter Windows legen diese Snapshots sauber offen.
Ich rekonstruiere historische Amcache-Zeilen aus Schattenkopien etwa in jedem fünften Fall, in dem die Hive auf der Platte Spuren von Pruning zeigt.
Wie gute IR-Skripte aussehen#
Ein funktionierendes IR-Sammelskript für Amcache, grob in Pseudocode:
- Einen VSS-Snapshot von
C:erstellen (oder direkt Raw-NTFS-Reads nutzen). Amcache.hve,Amcache.hve.LOG1,Amcache.hve.LOG2vom Snapshot-Pfad lesen.- SHA-256 jeder erfassten Datei berechnen. In den Chain-of-Custody-Eintrag protokollieren.
- Die drei Dateien zusammen mit einem zeitgestempelten Namen komprimieren (
<hostname>_<UTC-timestamp>_amcache.zip). - Den Snapshot abbauen.
- An den zentralen Speicher schicken.
Wenn Ihr Skript nicht alle sechs Schritte erledigt, reparieren Sie es. Konkret: Wenn es die erfassten Dateien nicht hasht, haben Sie keine Integritätsgeschichte. Wenn es die Logs nicht mitnimmt, fehlen Daten. Wenn es Snapshots stehen lässt, legen Sie irgendwann einen Produktionshost lahm.
Velociraptors Artefakt Windows.KapeFiles.Targets erledigt all das und mehr. Wenn Sie etwas Eigenes von Grund auf schreiben, fragen Sie sich warum.
Fallstricke von xcopy und anderen Ad-hoc-Methoden#
xcopy "C:\Windows\AppCompat\Programs\Amcache.hve" "C:\out\" auf einem Live-Host scheitert in den meisten Fällen an einer Sharing-Violation. Manche Windows-Builds erzeugen mit manchen Privilegienkombinationen stattdessen eine Null-Byte-Datei. Beide Fehlerarten sind laut, wenn man prüft; beide sind still, wenn man es nicht tut.
copy hat dasselbe Problem. robocopy /B (Backup-Modus) funktioniert manchmal auf der Live-Hive, weil Backup-Modus-Öffnungen SeBackupPrivilege nutzen, aber die Ergebnisse sind über Windows-Builds hinweg inkonsistent, und ich vertraue ihnen nicht. PowerShells Copy-Item ist darunter nur CopyFile.
certutil -urlcache -split ist hier nicht relevant, nein, aber ich habe Leute gesehen, die es probiert haben.
Die einzigen verlässlichen Regeln: Volume snapshotten, ein Tool mit Raw-NTFS-Zugriff nutzen oder den Host herunterfahren. Alles andere ist Glück.
Die Erfassung verifizieren#
Bevor Sie sich von einem Host verabschieden, verifizieren Sie, dass die erfasste Datei parsebar ist.
- Öffnen Sie sie mit
yarp-print(Maxim Suhanovs CLI). Sie meldet Sequence-Mismatches und nicht nachgespielte Logs. - Lassen Sie AmcacheParser gegen die erfassten Dateien laufen. Stellen Sie sicher, dass die Zeilenzahlen unter
InventoryApplicationFileungleich null sind. - Stichproben: Der jüngste
KeyLastWritesollte nahe an "jetzt" liegen (innerhalb der Appraiser-Scan-Kadenz, meist Stunden). Wenn der jüngste Eintrag auf einem angeblich normal laufenden Host Tage alt ist, ist möglicherweise die Appraiser-Task deaktiviert, die Hive wurde beschnitten oder Ihr Erfassungspfad war falsch.
Wenn etwas merkwürdig aussieht, sammeln Sie neu, bevor sich der Zustand des Hosts ändert. Verifikation vor Ort erspart einen langen Rückflug.
Weiterführende Quellen#
- Eric Zimmermans KAPE-Dokumentation und der Quellcode des
Amcache-Targets. - Velociraptors Artefaktreferenz Windows.Forensics.Amcache.
- Maxim Suhanovs yarp, insbesondere der Code zum Transaction-Log-Replay.
- Microsofts Dokumentation zum Volume Shadow Copy Service, für den VSS-basierten Erfassungsweg.
Verwandte Beiträge
- Was die Amcache in einer DFIR-Untersuchung tatsächlich sagt
Ein Praktiker-Blick auf die Hive Amcache.hve: was jeder Eintrag wirklich beweist, wo die Zeitstempel Sie belügen, und die Fehler, die in Incident-Berichten immer wieder auftauchen.
- Die Amcache-Zeitstempel, dekodiert
Jedes FILETIME- und DateTime-als-String-Feld über die Amcache-Keys, was jedes wirklich verfolgt, und wie sich Win7, Win10 und Win11 über dasselbe Artefakt streiten.
- SHA-1 in der Amcache: von der Platte zum Threat Intel pivotieren
Wie das Amcache-FileId-Feld zum nützlichsten Pivot in einer DFIR-Untersuchung wird, warum Hashes Pfade schlagen und der Workflow für Hash-Pivoting im großen Maßstab.
- Einen realen Vorfall mit der Amcache untersuchen: Walkthrough
Eine fiktive, aber realistische Ransomware-Untersuchung, durch die Amcache-Beweise von Anfang bis Ende geführt: der SHA-1-Pivot, die Korroboration und die Grenzen der Hive.