Volatility und Amcache: die Hive aus Speicherabbildern extrahieren
AmcacheParser.exe liest die On-Disk-Datei Amcache.hve. Aber was,
wenn Sie nur ein Speicherabbild haben — einen
Volatility-kompatiblen RAM-Dump eines Windows-Hosts, ohne
Festplatten-Akquisition?
Die Antwort ist Volatility mit seinen Registry-Hive-Plugins, verwendet, um die in-memory Live-Kopie der Amcache-Hive zu extrahieren und auf die Festplatte zu dumpen, wo AmcacheParser sie lesen kann. Diese Seite ist der praktische Leitfaden.
Für die breitere Amcache-Referenz siehe die vollständige Amcache-Referenz; für die Parser-Seite siehe den vollständigen Leitfaden zu AmcacheParser.
Wann Sie das brauchen#
Die festplattenseitige Hive ist normalerweise die richtige Quelle für die Amcache-Analyse. Der speicherseitige Workflow ist für die Fälle, in denen Sie die Festplatte nicht bekommen können:
- Memory-only-Akquisition. Eine Live-Response-Erfassung hat einen RAM-Dump gezogen und Triage-Artefakte ausgewählt, aber kein vollständiges Festplatten-Image ist verfügbar.
- Volatile-Evidence-First-Protokolle. Einige Incident-Response-Prozeduren schreiben RAM-Erfassung vor der Festplatte vor, und die Festplatten-Erfassung wird um Stunden oder Tage verzögert.
- Die festplattenseitige Hive wurde manipuliert und Sie vermuten, dass die In-Memory-Kopie frischere / andere Daten hat.
- Verschlüsselte Festplatte, entschlüsselter Speicher. Bitlocker- / Full-Disk-Encryption-Szenarien, in denen das Festplatten-Image noch nicht entschlüsselbar ist, aber der RAM-Dump entschlüsselte Hive-Inhalte enthält.
Für gewöhnliche Live-Host- oder Post-Incident-Festplattenforensik bevorzugen Sie den festplattenseitigen Workflow, der in Wo Amcache.hve auf der Festplatte liegt beschrieben ist.
Was Volatility extrahiert#
Windows hält jede geladene Registry-Hive — SYSTEM, SOFTWARE,
SAM, NTUSER.DAT pro Benutzer, und Amcache.hve, falls
geladen — im Kernel-Speicher in einer Struktur, die als
Hive-Liste bezeichnet wird. Der Appraiser lädt typischerweise
Amcache.hve während Inventardurchläufen und hält sie eine
Zeitlang danach geladen; ein Speicherabbild, das während oder
kurz nach einem Inventardurchlauf erfasst wurde, enthält die
vollständige Hive in-memory.
Die Registry-Plugins von Volatility wissen, wie man die Hive-Liste durchläuft und einzelne Hives extrahiert. Die relevanten Plugins:
| Volatility-Version | Plugin |
|---|---|
| Volatility 2 | hivelist, hivedump, printkey, dumpregistry |
| Volatility 3 | windows.registry.hivelist, windows.registry.printkey, windows.registry.hivedump, windows.registry.dumphive |
Der grundlegende Workflow ist über Versionen hinweg identisch, mit Unterschieden in der Befehlssyntax.
Schritt 1: geladene Hives aufzählen#
Schauen Sie zuerst, welche Hives in den Speicher geladen sind. Volatility 3:
vol -f memory.dmp windows.registry.hivelistVolatility 2:
vol.py -f memory.dmp --profile=Win10x64_19041 hivelistSie sollten eine Zeile für jede geladene Hive mit einer virtuellen Adresse und dem Dateipfad der Hive sehen. Wenn Amcache geladen war, sehen Sie:
Offset (V) FileFullPath
0xfffff8a0... \??\C:\Windows\AppCompat\Programs\Amcache.hve
Wenn Amcache nicht in der Hive-Liste ist, hielt der Appraiser sie zur Erfassungszeit nicht offen. Gehen Sie zur festplattenseitigen Akquisition oder Wiederherstellung über; memory-only Amcache ist für dieses Image nicht verfügbar.
Schritt 2: die Hive auf die Festplatte dumpen#
Sobald Sie die virtuelle Adresse haben, dumpen Sie die Hive:
# Volatility 3 — 0xfffff8a0... durch den realen Offset aus hivelist ersetzen
vol -f memory.dmp windows.registry.dumphive --offset 0xfffff8a0... > Amcache.hveVolatility 2:
vol.py -f memory.dmp --profile=Win10x64_19041 dumpregistry \
--offset 0xfffff8a0... --dump-dir ./dumpedDie Ausgabe ist ein Binär-Blob, das AmcacheParser lesen kann. Hinweis:
- Es gibt keine Transaktionsprotokolle. Die In-Memory-Hive-
Repräsentation trägt keine
.LOG1/.LOG2. AmcacheParser wird über fehlende Protokolle warnen; das ist zu erwarten. - Die Hive ist ein Point-in-Time-Snapshot dessen, was zur Akquisitionszeit im Speicher war. Sie spiegelt wider, was auch immer der Appraiser in die In-Memory-Hive-Struktur durchgeschrieben hatte.
Schritt 3: mit AmcacheParser parsen#
Übergeben Sie die gedumpte Hive wie üblich an AmcacheParser:
AmcacheParser.exe `
-f .\Amcache.hve `
--csv .\out `
--csvf MEMORY_amcache.csv `
--mpDie Ausgabe ist dasselbe pro-Kategorie-CSV-Set, das Sie aus einem
festplattenseitigen Parse bekämen — AssociatedFileEntries.csv,
UnassociatedFileEntries.csv und so weiter. Triage und Pivot wie
im Malware-Untersuchungs-Playbook.
Vorbehalte speziell zur speicherseitigen Wiederherstellung#
Eine Handvoll Dinge, die man beachten sollte, wenn man mit einer aus dem Speicher gedumpten Hive arbeitet:
Transaktionsprotokoll-Daten gehen verloren#
Die In-Memory-Repräsentation enthält keine nicht committeten
Schreibvorgänge, die zur Erfassungszeit noch in den
Transaktionsprotokollen waren. Bei einer Hive, die aktiv
geschrieben wurde, als der Speicher erfasst wurde, fehlen Ihnen
möglicherweise genau die neuesten Einträge. Festplattenseitige
Wiederherstellung von .LOG1 und .LOG2 würde sie einfangen.
Abdeckung hängt davon ab, was geladen war#
Einige Windows-Builds und Konfigurationen entladen Amcache nach jedem Appraiser-Lauf; andere halten sie geladen. Wenn Sie keine Amcache in der Hive-Liste finden, bedeutet das nicht, dass Amcache auf dem Host fehlt — es bedeutet, dass sie zur Erfassungszeit nicht geladen war.
Schema-Interpretation braucht möglicherweise das richtige Volatility-Profil#
Das Profil von Volatility 2 muss zum erfassten OS passen, damit der Registry-Walking-Code sauber funktioniert. Wenn Sie das falsche Profil bekommen, kann die gedumpte Hive unvollständig oder korrupt sein. Volatility 3 ist hier viel toleranter (es auto-detektiert), aber ein Dump mit falschem Profil ist immer noch möglich.
Die gedumpte Hive parst möglicherweise mit Warnungen#
AmcacheParser kann Warnungen über fehlende Transaktionsprotokolle, abgeschnittene Zellen oder unerwartetes Schema ausgeben. Diese sind beim Dumpen aus dem Speicher zu erwarten und bedeuten nicht zwangsläufig, dass die Daten schlecht sind — aber behandeln Sie Anomalien mit besonderer Sorgfalt und querverweisen Sie mit der Festplatte, wenn möglich.
Speicher- und Festplatten-Hives vergleichen#
Wenn Sie sowohl einen Memory-Dump als auch ein Festplatten-Image desselben Hosts haben (zu nahe beieinanderliegenden Zeiten erfasst), parsen Sie beide Amcache-Kopien und diffen Sie sie:
$disk = Import-Csv .\HOST01_disk_amcache_UnassociatedFileEntries.csv |
Select-Object Hash, FullPath, KeyLastWriteTimestamp
$memory = Import-Csv .\HOST01_memory_amcache_UnassociatedFileEntries.csv |
Select-Object Hash, FullPath, KeyLastWriteTimestamp
# Zeilen im Speicher, aber nicht auf der Festplatte
$memory | Where-Object { $h = $_.Hash; -not ($disk | Where-Object { $_.Hash -eq $h }) }
# Zeilen auf der Festplatte, aber nicht im Speicher
$disk | Where-Object { $h = $_.Hash; -not ($memory | Where-Object { $_.Hash -eq $h }) }Was jedes Delta bedeutet:
- Nur im Speicher: Der Appraiser hat es in die In-Memory-Hive geschrieben, aber die Änderung war noch nicht auf die Festplatte geflusht (und wäre bei einem sauberen Herunterfahren). Oft das frischeste Signal, das Sie haben.
- Nur auf der Festplatte: Der Eintrag war in der Festplatten- Hive, aber die In-Memory-Hive hatte ihn zur Erfassungszeit entladen / herausgealtert. Weniger interessant — Festplatte ist für diese maßgeblich.
Wenn die Festplatten-Hive manipuliert wurde, bewahrt die Speicher-Hive oft die ursprünglichen Einträge — was den speicherseitigen Workflow auch als Anti-Forensik-Gegenmaßnahme nützlich macht.
Wann das der falsche Workflow ist#
Drei Fälle, in denen Sie sich nicht mit speicherseitiger Amcache-Wiederherstellung beschäftigen sollten:
Sie haben die Festplatte#
Der festplattenseitige Workflow gibt Ihnen die Hive plus Transaktionsprotokolle plus Volume Shadow Copies. Speicherseitig gibt Ihnen einen einzelnen Snapshot. Bevorzugen Sie immer die Festplatte, falls verfügbar.
Die Akquisition liegt zu lange zurück#
Wenn der Memory-Dump Tage alt ist und Sie nach dem aktuellen Stand suchen, ist die On-Disk-Hive (die seit dem Dump aktualisiert wurde) nützlicher. Memory-Dumps sind Point-in-Time.
Die Hive war zur Erfassungszeit nicht geladen#
Wenn hivelist Amcache nicht zeigt, wird kein Plugin sie in die
Existenz zaubern. Wechseln Sie zur Festplatte oder zur
Pro-Eintrag-Wiederherstellung aus dem Prozessspeicher des
Appraisers (selten, fortgeschritten).
Siehe auch#
- Vollständige Amcache-Referenz — das Artefakt vollständig.
- Vollständiger Leitfaden zu AmcacheParser — was Sie tun, sobald Sie die gedumpte Hive haben.
- Wo Amcache.hve auf der Festplatte liegt — der festplattenseitige Workflow, den Sie normalerweise bevorzugen sollten.
- RegRipper amcache-Plugin — ein weiterer Parser, der die gedumpte Hive akzeptiert.
- Beweise gelöschter Binärprogramme aus Amcache wiederherstellen — nützliche Rahmung für speicherseitige Wiederherstellungs- Szenarien.
Wenn Sie eine Hive (aus dem Speicher gedumpt oder anderweitig) haben und einfach einen schnellen Blick wollen, legen Sie sie auf der Startseite des Parsers ab — er läuft vollständig in Ihrem Browser.
Verwandte Beiträge
- RegRipper amcache-Plugin: was es tut und wann man es verwendet
Ein praktischer Leitfaden zum amcache-Plugin von RegRipper — was es parst, wie sich seine Text-Ausgabe von AmcacheParsers CSV unterscheidet und wann man darauf zurückgreift statt (oder zusätzlich zum) Zimmerman-Tool.
- AmcacheParser-Ausgabespalten erklärt: jedes CSV-Feld dekodiert
Eine Feld-für-Feld-Referenz für die CSV-Ausgabe von AmcacheParser — FileId, PathHash, ProgramId, LinkDate, BinFileVersion, IsPeFile und jede andere Spalte, mit den Pivots, die in DFIR zählen.
- AmcacheParser-Download-Leitfaden: offizielle Quellen, Mirrors und Verifizierung
Alle Wege, AmcacheParser von Eric Zimmerman herunterzuladen — Get-ZimmermanTools, direkter Download, KAPE, Velociraptor — mit Prüfsummen-Verifizierung und Air-Gap-Installationsmustern.
- AmcacheParser: der vollständige Leitfaden zu Eric Zimmermans Tool
Der definitive Leitfaden zu AmcacheParser — was es tut, wie man Eric Zimmermans CLI installiert und ausführt, wie man die CSV-Ausgabe liest und wann die browserbasierte Alternative die bessere Wahl ist.