AmcacheParser: der vollständige Leitfaden zu Eric Zimmermans Tool

AmcacheParser ist das De-facto-Open-Source-Tool zum Parsen der Windows-Registry-Hive Amcache.hve. Geschrieben wurde es von Eric Zimmerman, einem erfahrenen Praktiker der digitalen Forensik, dessen Tool-Suite (MFTECmd, RECmd, PECmd, EvtxECmd, …) das Rückgrat moderner Windows-Forensik-Workflows bildet. Wer jemals ein Windows-Endpoint triagiert hat, hat fast sicher AmcacheParser benutzt — direkt oder über einen Wrapper wie KAPE.

Dieser Leitfaden ist die kanonische Referenz zum Tool: was es parst, wie man es installiert, wie man die Ausgabe liest, wo es in einem DFIR-Workflow steht und wann es sinnvoll sein kann, dieselbe Parsing-Logik im Browser auszuführen, ohne irgendetwas zu installieren (genau das tut diese Website).

Anerkennung dort, wo sie hingehört. AmcacheParser ist Eric Zimmermans Werk. Der Browser-Parser auf amcacheparser.com ist ein unabhängiges Projekt, das den Lesepfad in Rust + WebAssembly für Triage und Lehre neu implementiert. Er ist weder mit Eric noch mit seinem Arbeitgeber verbunden.


Was ist AmcacheParser?#

AmcacheParser ist ein Kommandozeilenprogramm (AmcacheParser.exe), das:

  1. Eine Windows-Amcache.hve-Registry-Hive öffnet (oder eine Kopie inklusive Transaktionsprotokolle).
  2. Die relevanten Unterschlüssel Root\InventoryApplicationFile, Root\InventoryApplication, Root\InventoryDriverBinary, Root\InventoryDeviceContainer, Root\Programs, Root\File und die übrigen Inventory*-Schlüssel durchläuft.
  3. Die Werte (Windows-FILETIMEs, SHA-1-FileIds, Versionsstrings, GUIDs, ...) in lesbare Felder dekodiert.
  4. Eine CSV pro Kategorie schreibt, plus eine kombinierte Timeline.

Es ist bewusst ein reiner Leseparser mit einem Zweck: er interpretiert, bewertet oder alarmiert nicht. Die Ausgabe ist dafür gedacht, in Ihr Analystennotizbuch, SIEM, Timeline Explorer oder ein anderes Tool aus der Zimmerman-Suite zu fließen.

Warum Analysten sich für Amcache interessieren#

Amcache.hve ist eines der reichhaltigsten Artefakte für Programmpräsenz und -ausführung auf einem Windows-Host. Anders als Prefetch (das beweist, dass ein Binärprogramm tatsächlich ausgeführt wurde) zeichnet Amcache oft Binärprogramme auf, die lediglich auf der Festplatte vorhanden waren — einschließlich Binärprogramme, die vor Ihrer Ankunft gelöscht wurden. Für jede erfasste Datei erhalten Sie typischerweise:

  • Den vollständigen Pfad zum Zeitpunkt der Inventarisierung.
  • Einen SHA-1-Hash der ersten ~31 MiB der Datei (die FileId).
  • Das PE-Linkdatum und die Dateigröße.
  • Herausgeber, Version und Produktname aus dem PE-Ressourcenabschnitt.
  • Einen Zeitstempel, wann das Inventar erstellt wurde.

Diese Kombination — Pfad + Hash + Linkdatum + Inventarzeit — ist Gold wert für die Incident Response. Sie ermöglicht es, in Sekunden von „ein verdächtiges Binärprogramm lief auf einem benachbarten Host" auf „existierte dieses genaue Binärprogramm jemals auf diesem Host, auch nur kurz?" zu pivotieren.


Wer ist Eric Zimmerman?#

Eric Zimmerman ist ein ehemaliger FBI Special Agent und derzeit Senior Director bei Kroll, wo er das Tooling für die Incident-Response-Praxis leitet. Er veröffentlicht seit über einem Jahrzehnt Open-Source-DFIR-Tools auf ericzimmerman.github.io. AmcacheParser gehört zur Get-ZimmermanTools-Familie neben:

  • MFTECmd — Parser für $MFT, $LogFile, $J, $Boot, $SDS
  • RECmd — Kommandozeilen- und Batch-Prozessor für Registry-Hives
  • RBCmd — Papierkorb-Parser
  • PECmd — Prefetch-Parser
  • EvtxECmd — Parser für Windows-Ereignisprotokolle
  • JLECmd — Jump-List-Parser
  • LECmd — LNK-Parser
  • SBECmd — Shellbag-Explorer-CLI

Wenn Sie nur ein einziges DFIR-Toolset lernen, ist die Zimmerman-Suite das, das die meisten Arbeitgeber erwarten.


Wie AmcacheParser intern funktioniert#

Amcache.hve ist eine standardmäßige Windows-Registry-Hive-Datei — dasselbe Binärformat wie SYSTEM, SOFTWARE, SAM oder NTUSER.DAT. AmcacheParser öffnet die Datei, durchläuft die Bins und Zellen der Hive, folgt dem Schlüssel-/Wertbaum und dekodiert typisierte Werte. Die Felder, die für Analysten am wichtigsten sind, sind auf drei leicht nervige Weisen kodiert:

  • Windows-FILETIMEs — 64-Bit-Werte, die 100-ns-Ticks seit 1601-01-01 UTC zählen. AmcacheParser konvertiert diese in ISO-8601 UTC.
  • PE-Linkdaten — 32-Bit-time_t-Werte aus dem PE-Header IMAGE_FILE_HEADER.TimeDateStamp. Das sind keine Dateisystem-Zeiten; sie werden zur Kompilier-/Linkzeit gesetzt und sind ein nützlicher Pivot.
  • SHA-1-FileId — 41-Zeichen-String "0000" + sha1_hex. Das führende 0000 ist ein historischer Typ-Tag; die hinteren 40 Hex-Zeichen sind der SHA-1 der ersten 31 MiB der Datei, wie Amcache sie sah.

Die Hive selbst wird vom geplanten Task Microsoft Compatibility Appraiser (\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser) geschrieben. Auf modernen Windows-10/11-Builds läuft er etwa täglich, weshalb Amcache.hve eines der besten Artefakte für „langfristige Präsenz" ist.

Transaktionsprotokolle sind wichtig#

Wie jede Registry-Hive hat Amcache.hve begleitende .LOG1-/.LOG2-Transaktionsprotokolle. Wenn Sie nur die Hive ohne ihre Protokolle kopieren, können Sie die jüngsten Schreibvorgänge verpassen. AmcacheParser behandelt Transaktionsprotokolle korrekt, wenn Sie es auf ein Verzeichnis zeigen oder die Protokolle neben der Hive übergeben — sammeln Sie sie immer zusammen.


AmcacheParser installieren#

Es gibt drei gängige Wege, das Tool zu bekommen. Alle produzieren dasselbe Binary; wählen Sie den, der zu Ihrer Umgebung passt.

Option 1 — Get-ZimmermanTools (empfohlen)#

Der offizielle Installer ist ein kleines PowerShell-Skript, das die gesamte Suite in einen Zielordner herunterlädt und aktuell hält.

# Tools-Ordner anlegen und die neuesten .NET-6-Builds holen
mkdir C:\Tools\ZTools
cd    C:\Tools\ZTools
Invoke-WebRequest `
  -Uri 'https://raw.githubusercontent.com/EricZimmerman/Get-ZimmermanTools/master/Get-ZimmermanTools.ps1' `
  -OutFile Get-ZimmermanTools.ps1
.\Get-ZimmermanTools.ps1 -Dest C:\Tools\ZTools -NetVersion 6

Nach Abschluss liegt AmcacheParser.exe unter C:\Tools\ZTools\net6\AmcacheParser\. Erneutes Ausführen des Skripts aktualisiert später jedes Tool an Ort und Stelle.

Option 2 — Direkter Download von ericzimmerman.github.io#

Die Startseite ericzimmerman.github.io verlinkt für jedes Tool ein ZIP. Das ist der richtige Weg, wenn PowerShell-Egress auf dem Analystenrechner blockiert ist.

Option 3 — In KAPE oder Velociraptor eingebettet#

Wenn Sie KAPE oder Velociraptor verwenden, ist AmcacheParser bereits in deren Modul-/Artefaktkatalogen enthalten. Sie installieren es normalerweise nicht separat — Sie rufen es über eine Target-/Moduldefinition auf, die auch die Hive für Sie sammelt.

Für eine vollständige Übersicht über Mirrors, Prüfsummen und Air-Gap-Installationsmuster siehe den AmcacheParser-Download-Leitfaden.


Schnellstart: eine Hive parsen#

Der minimale Aufruf besteht aus zwei Flags:

AmcacheParser.exe `
  -f "C:\Triage\Windows\AppCompat\Programs\Amcache.hve" `
  --csv "C:\Triage\Output\Amcache"

Das schreibt eine CSV pro Inventory*-Kategorie in den Ausgabeordner. Für einen echten Incident wollen Sie fast immer ein paar zusätzliche Flags:

AmcacheParser.exe `
  -f "C:\Triage\Windows\AppCompat\Programs\Amcache.hve" `
  --csv "C:\Triage\Output\Amcache" `
  --csvf "HOSTNAME_amcache.csv" `
  -i `
  --mp
  • --csvf steuert den Basisdateinamen, damit Multi-Host-Triage navigierbar bleibt.
  • -i schließt Einträge mit IsOSComponent = true ein (standardmäßig aus, weil sie den Lärm aufblähen).
  • --mp („Multi-Pass") parst verwaiste / nicht zugeordnete Einträge, die sonst fallen gelassen würden.

Die vollständige Flag-Matrix steht im AmcacheParser-CLI-Spickzettel.

Die Ausgabe in Timeline Explorer laden#

Die CSVs sind für Erics Timeline Explorer gemacht. Ziehen Sie eine beliebige *_UnassociatedFileEntries.csv oder *_AssociatedFileEntries.csv in Timeline Explorer und Sie erhalten sortierbare, filterbare Spalten und eine sofortige „alle Aktivitäten in diesem Fenster"-Sicht.


Die CSV-Ausgabe lesen#

AmcacheParser schreibt ein unterschiedliches Schema pro Kategorie. Die vier, die Sie in fast jedem Fall anfassen werden:

Datei Inhalt
*_UnassociatedFileEntries.csv Dateien, die Amcache auf der Festplatte gesehen hat und die nicht an eine registrierte Inventory Application gebunden sind. Die reichhaltigste Pivottabelle für unbekannte Binärprogramme.
*_AssociatedFileEntries.csv Dateien, die mit einer InventoryApplication (installiertes Produkt) verknüpft sind.
*_DriverBinaries.csv Geladene Treiber-Binärdateien — kritisch für Kernel-Rootkit-Untersuchungen.
*_DeviceContainers.csv Historie verbundener Geräte (Drucker, Monitore, Wechseldatenträger-Controller).

Die Spalten, auf die Sie am häufigsten pivotieren:

  • ApplicationName / Name — Anzeigename, wie Windows ihn aufgelöst hat.
  • FullPath — vollständiger Pfad zur Inventarzeit.
  • FileExtension — praktisch zum Filtern auf .exe / .dll.
  • Hash (SHA-1) — die FileId ohne das "0000"-Präfix.
  • LinkDate — PE-Kompilierzeit.
  • FileVersionString, ProductName, Publisher, PublisherName.
  • Size — Dateigröße in Bytes zur Inventarzeit.
  • IsPeFile, IsOsComponent — schnelle Filter.
  • KeyLastWriteTimestamp — Registry-Last-Write des umschließenden Schlüssels. Behandeln Sie dies als den „Inventarzeit"-Pivot.

Jede Spalte, einschließlich der selteneren Inventory-Kategorien, ist in AmcacheParser-Ausgabespalten erklärt dokumentiert.

Praxisbeispiele#

Ein paar Abfragen, die ihr Geld auf echten Fällen verdienen:

Unsignierte PE-Dateien in benutzerbeschreibbaren Pfaden finden (Nachverarbeitung in PowerShell):

Import-Csv .\HOST_amcache_UnassociatedFileEntries.csv |
  Where-Object {
    $_.IsPeFile -eq 'True' -and
    -not $_.Publisher    -and
    $_.FullPath -match '\\Users\\|\\ProgramData\\|\\AppData\\'
  } |
  Select-Object KeyLastWriteTimestamp, FullPath, Hash, Size |
  Sort-Object KeyLastWriteTimestamp

Auf einen bekannt-bösartigen SHA-1 über viele Hosts pivotieren:

Get-ChildItem -Recurse -Filter *_UnassociatedFileEntries.csv |
  ForEach-Object {
    Import-Csv $_.FullName |
      Where-Object { $_.Hash -eq 'da39a3ee5e6b4b0d3255bfef95601890afd80709' } |
      Select-Object @{n='Host';e={$_.PSChildName.Split('_')[0]}}, FullPath, KeyLastWriteTimestamp
  }

Wo AmcacheParser in einem DFIR-Workflow steht#

Die meisten Ermittler greifen zu Amcache nach Prefetch und Ereignisprotokollen, weil es eine andere Frage beantwortet:

Artefakt Antwortet
Prefetch „Wurde dieses Binärprogramm auf diesem Host ausgeführt?"
Ereignisprotokoll (4688 / Sysmon 1) „Lief dieser Prozess, mit welcher Befehlszeile, von welchem Elternprozess?"
ShimCache (AppCompatCache) „Wurde dieses Binärprogramm kürzlich vom Loader berührt?"
Amcache „War dieses Binärprogramm jemals auf diesem Host vorhanden, mit welchem Hash und an welchem Pfad?"

Amcaches Killer-Feature ist die Wiederherstellung gelöschter Binärdateien: Ein Wiper kann die Datei von der Festplatte entfernen, aber der Inventar-Snapshot bleibt in der Hive bis zum nächsten Appraiser-Lauf bestehen — und selbst dann ist der vorherige Lauf oft noch in den Transaktionsprotokollen. Wir behandeln die Amcache-vs-Prefetch-vs-ShimCache-Unterscheidung ausführlich in Amcache für Windows-Forensik verstehen.

Pipeline-Muster#

Die zwei häufigsten Produktionsmuster:

  1. KAPE collect + KAPE parse. KAPEs Amcache-Target sammelt die Hive + Protokolle; sein AmcacheParser-Modul führt den Parser in einen Ausgabeordner pro Host aus. Ein Befehl, fertig für Timeline Explorer.

  2. Velociraptor Windows.Forensics.Amcache. Velociraptors Artefakt zieht die Hive, führt AmcacheParser serverseitig aus und lädt die CSV hoch. Mit einem Hunt kombinieren, um es über Tausende von Endpoints zu fächern.

Beide Muster werden mit kopierbaren Befehlen im CLI-Spickzettel behandelt.


Die browserbasierte Alternative#

Das auf dieser Seite gehostete Tool ist eine Neuimplementierung des Lesepfads in Rust + WebAssembly. Es existiert, weil es Situationen gibt, in denen die Windows-CLI im Moment das falsche Werkzeug ist:

  • Ein Nicht-Windows-Analyst öffnet eine .hve in seinem Browser, ohne das .NET-Runtime oder einen Zimmerman-Build zu installieren.
  • Ein Student möchte sehen, wie Amcache aussieht, bevor er für ein vollständiges DFIR-Labor bezahlt.
  • Triage auf einem gesperrten Host, wo das Bereitstellen neuer Binaries ein Change-Control-Ticket braucht.
  • Eine Hive einem Stakeholder per Bildschirmfreigabe zeigen, ohne sie einem Drittanbieter-Server auszusetzen.

Die Datei verlässt niemals Ihren Browser. Das Parsing erfolgt clientseitig in WebAssembly; kein Upload, keine serverseitige Verarbeitung, keine Telemetrie. Legen Sie eine Hive auf die Startseite, um es auszuprobieren.

Für vollständige Untersuchungen auf einem Windows-Analystenrechner bleibt Erics offizielle AmcacheParser.exe das richtige Tool — es behandelt jeden Grenzfall, integriert sich in den Rest der Suite und produziert das CSV-Format, das jedes nachgelagerte Tool erwartet. Die Browser-Version ist für Triage, Lehre und die Fälle, in denen das Installieren irgendetwas die falsche Antwort ist.


Häufig gestellte Fragen#

Ist AmcacheParser kostenlos?#

Ja. Es ist unter einer permissiven Lizenz von Eric Zimmerman veröffentlicht und für jeden Zweck frei, einschließlich kommerzieller DFIR-Einsätze.

Auf welchen Betriebssystemen läuft AmcacheParser?#

AmcacheParser.exe ist eine .NET-6-/.NET-9-Anwendung. Es läuft nativ unter Windows und auf Linux/macOS über das .NET-Runtime (dotnet AmcacheParser.dll auf Nicht-Windows-Hosts mit dem Framework-dependent-Build).

Verändert AmcacheParser die Hive?#

Nein. Es öffnet die Hive nur lesend und schreibt nur die CSV-Ausgabe in den mit --csv angegebenen Pfad.

Was ist der Unterschied zwischen AmcacheParser und dem#

amcache-Plugin von RegRipper?

Beide parsen dieselbe Hive. Das RegRipper-Plugin gibt einen lesbaren Textbericht aus; AmcacheParser gibt strukturiertes CSV mit einer Zeile pro Inventareintrag aus, was dramatisch einfacher in eine Tabellenkalkulation, ein SIEM oder Timeline Explorer zu laden ist. Die meisten modernen Playbooks verwenden AmcacheParser; RegRipper bleibt für die einmalige interaktive Analyse beliebt.

Zeichnet Amcache jedes ausgeführte Binärprogramm auf?#

Nein. Amcache zeichnet Präsenz und Inventar-Metadaten auf, nicht Ausführung. Ein Binärprogramm kann in Amcache erscheinen, ohne jemals gelaufen zu sein, und ein Binärprogramm kann laufen, ohne in Amcache zu erscheinen, wenn der Appraiser seitdem nicht nachgesweept hat. Koppeln Sie es mit Prefetch und Prozesserstellungs-Events, um Ausführung zu beweisen.

Wo befindet sich Amcache.hve auf einem Live-System?#

C:\Windows\AppCompat\Programs\Amcache.hve, mit den Transaktionsprotokollen Amcache.hve.LOG1 und Amcache.hve.LOG2 daneben. KAPEs Amcache-Target sammelt alle drei.

Kann ich AmcacheParser auf einem Speicherabbild verwenden?#

Nicht direkt. AmcacheParser parst das On-Disk-Hive-Format. Um Amcache aus dem Arbeitsspeicher zu analysieren, verwenden Sie Volatilitys Registry-Plugins, um die Hive zu extrahieren, und geben Sie sie dann an AmcacheParser weiter.


Weiterführende Literatur#

Bereit, sich jetzt eine Hive anzusehen? Legen Sie eine auf die Startseite des Parsers — sie verlässt niemals Ihren Browser.

Verwandte Beiträge

Zurück zu allen Beiträgen