AmcacheParser-CLI-Spickzettel: jede Option, mit Praxisbeispielen

Dies ist die praktische, kopierbare Referenz für AmcacheParser.exe. Für den Hintergrund, was das Tool tut, siehe den vollständigen AmcacheParser-Leitfaden. Für Details zur produzierten CSV siehe AmcacheParser-Ausgabespalten erklärt.


Optionsreferenz#

Erforderlich (eines davon)#

Option Beschreibung
-f <pfad> Pfad zu einer einzelnen Amcache.hve-Datei.
-d <verz> Verzeichnis zum rekursiven Durchsuchen, in dem jede gefundene Amcache.hve geparst wird. Nützlich, wenn Sie Hives von vielen Hosts in einem Baum gesammelt haben.

Ausgabe#

Option Beschreibung
--csv <verz> Erforderlich. Ausgabeverzeichnis für die kategoriebezogenen CSVs.
--csvf <name> Optionaler Basis-Dateiname. Multi-Host-Triage: setzen Sie ihn auf <HOSTNAME>, damit die CSVs sauber sortieren.

Filter & Einschluss#

Option Beschreibung
-i Einträge mit IsOSComponent = true einschließen (Windows-mitgelieferte Binaries). Standardmäßig aus — Windows-Komponenten fügen Zehntausende Zeilen mit geringem Wert hinzu.
--mp Mehrfach-Durchgang. Re-walk, um verwaiste Einträge wiederherzustellen, die sonst weggeworfen würden. Fügt ein paar Sekunden hinzu; fast immer lohnenswert.
--nl Transaktionsprotokolle überspringen, auch wenn vorhanden (selten korrekt — siehe Warnung unten).

Logging & Debug#

Option Beschreibung
--debug Ausführliche Debug-Protokollierung an stderr. Verwenden Sie es, wenn ein Parse merkwürdig wirkt.
--trace Maximale Ausführlichkeit. Leiten Sie in eine Datei; die Ausgabe ist groß.

Gängige Kombinationen#

Die „gute Standard"-Invokation, auf die sich die meisten Analysten standardisieren:

AmcacheParser.exe -f <hive> --csv <ausgabeverz> --csvf <HOSTNAME>_amcache.csv --mp

Fügen Sie -i nur hinzu, wenn Sie speziell die OS-Komponenten-Zeilen benötigen (z. B. bei der Untersuchung einer entführten System-DLL).

Warnung zu Transaktionsprotokollen. Amcache.hve schreibt durch .LOG1 / .LOG2 wie jede Registry-Hive. Sammeln Sie die Protokolle immer neben der Hive und übergeben Sie niemals --nl, außer Sie haben einen bestimmten Grund, die Protokolle zu ignorieren — Sie können die jüngste Aktivität still verpassen.


Praxisbeispiele#

Beispiel 1 — ein Host, eine Hive#

AmcacheParser.exe `
  -f 'C:\Triage\HOST01\Windows\AppCompat\Programs\Amcache.hve' `
  --csv 'C:\Triage\HOST01\out' `
  --csvf 'HOST01_amcache.csv' `
  --mp

Produziert:

C:\Triage\HOST01\out\
├── HOST01_amcache_AssociatedFileEntries.csv
├── HOST01_amcache_UnassociatedFileEntries.csv
├── HOST01_amcache_ProgramEntries.csv
├── HOST01_amcache_ShortcutEntries.csv
├── HOST01_amcache_DriverBinaries.csv
├── HOST01_amcache_DevicePnps.csv
└── HOST01_amcache_DeviceContainers.csv

Beispiel 2 — viele Hives in PowerShell stapeln#

Wenn Sie Hives von 50 Hosts in einem einzigen Baum gesammelt haben:

$root    = 'C:\Cases\2026-INC-042\collected'
$outRoot = 'C:\Cases\2026-INC-042\parsed'
 
Get-ChildItem -Path $root -Filter Amcache.hve -Recurse | ForEach-Object {
    # Nimmt an, dass der Elternpfad den Hostnamen kodiert, z. B. ...\HOST01\Windows\AppCompat\Programs\Amcache.hve
    $hostName = ($_.FullName -split '\\')[-5]
    $hostOut  = Join-Path $outRoot $hostName
    New-Item -ItemType Directory -Path $hostOut -Force | Out-Null
 
    & 'C:\Tools\ZTools\net6\AmcacheParser\AmcacheParser.exe' `
        -f      $_.FullName `
        --csv   $hostOut `
        --csvf "${hostName}_amcache.csv" `
        --mp |
      Out-File (Join-Path $hostOut "${hostName}_amcache.log") -Encoding utf8
}

Die Pro-Host-Log-Erfassung ist das, was die meisten Pipelines vergessen; Sie wollen wissen, welche Parses vor fehlenden Protokollen oder Schema-Diskrepanzen gewarnt haben, ohne alles erneut auszuführen.

Beispiel 3 — Rekursionsmodus#

Wenn Ihre Sammlung bereits in einem Baum lebt, den AmcacheParser selbst durchlaufen kann:

AmcacheParser.exe `
  -d 'C:\Cases\2026-INC-042\collected' `
  --csv 'C:\Cases\2026-INC-042\parsed' `
  --mp

--csvf wird im -d-Modus ignoriert — die Ausgabe-Dateinamen werden aus dem Quellpfad jeder Hive abgeleitet.

Beispiel 4 — Nicht-Windows-Analystenhost#

Auf Linux oder macOS mit installiertem .NET-Runtime:

dotnet /opt/ztools/net6/AmcacheParser/AmcacheParser.dll \
  -f   /cases/inc-042/HOST01/Amcache.hve \
  --csv /cases/inc-042/HOST01/out \
  --csvf HOST01_amcache.csv \
  --mp

Gleiche Optionen, gleiche Ausgabe. Wenn Ihr Team komplett Nicht-Windows ist und Sie nur Triage benötigen, entfernt der browserbasierte Parser auf dieser Seite die .NET-Abhängigkeit komplett — legen Sie eine Hive ab und lesen Sie die Kategorien, ohne irgendetwas zu installieren.


KAPE-Integration#

KAPE behandelt sowohl Sammlung als auch Parsing. Das kanonische Muster:

# Hive + Transaktionsprotokolle sammeln
.\kape.exe `
  --tsource C: `
  --target Amcache `
  --tdest .\out\HOST01\collected
 
# Die gesammelte Hive mit AmcacheParser parsen
.\kape.exe `
  --msource .\out\HOST01\collected `
  --module AmcacheParser `
  --mdest .\out\HOST01\parsed

KAPEs AmcacheParser-Modul kapselt die obigen CLI-Optionen und schreibt die CSVs in mdest mit sinnvollen Dateinamen. Das zweistufige --tsource → --msource-Muster hält Sammlung und Parsing auditierbar — die Ausgabe der Sammlungsschritte ist unveränderte Beweismittel; der Parse-Schritt ist davon reproduzierbar.

Für One-Shot-Triage können Sie alles in einen einzigen Aufruf zusammenfassen, indem Sie --tsource und --mdest in einem Aufruf kombinieren, aber die meisten Engagement-Playbooks bevorzugen die zweistufige Variante.


Velociraptor-Integration#

Das Artefakt Windows.Forensics.Amcache sammelt die Hive, lädt AmcacheParser herunter, falls noch nicht im Cache, führt es aus und lädt die CSV auf den Server hoch. Typische Hunt-Konfiguration:

artifacts:
  - Windows.Forensics.Amcache
  parameters:
    - name: AmcacheGlob
      value: 'C:\Windows\AppCompat\Programs\Amcache.hve*'

Der Glob mit * ist beabsichtigt — er zieht die Hive und beide Transaktionsprotokolle in einem Durchgang. Das Artefakt erledigt den Rest serverseitig.

Für flottenweites Hunting planen Sie das Artefakt in regelmäßiger Kadenz (wöchentlich ist typisch) und leiten Sie die resultierenden UnassociatedFileEntries-Zeilen in Ihr SIEM. Detektionen, die auf KeyLastWriteTimestamp > now - 7d AND Publisher = '' AND IsPeFile = true pivotieren, sind laut, aber günstig und haben sehr hohe Präzision für „etwas Neues ist diese Woche auf einem Host erschienen".


Operative Tipps#

Eine Handvoll Muster, die bei echten Engagements immer wieder auftauchen:

  • Sammeln Sie immer die Transaktionsprotokolle. AmcacheParser warnt, fährt aber fort, wenn sie fehlen; Sie verlieren die jüngsten Schreibvorgänge still.
  • Verwenden Sie --csvf <HOSTNAME>. Wenn Sie CSVs von 50 Hosts in einem Ordner stapeln für Cross-Host-Pivots, retten Sie Hostnamen in Dateinamen.
  • Führen Sie --mp standardmäßig aus. Die Kosten sind Sekunden; die wiederhergestellten Zeilen sind manchmal die interessantesten.
  • Führen Sie AmcacheParser niemals gegen die Live-Hive auf einem verdächtigen Host aus. Kopieren Sie immer zuerst die Hive + .LOG1 + .LOG2. Auch wenn der Parser nur lesend öffnet, wollen Sie beweisrechtlich eine gehashte Kopie.
  • Hashen Sie die Eingabe-Hive vor dem Parsen und speichern Sie den Hash neben der CSV-Ausgabe. Dieser winzige zusätzliche Schritt hält die Chain of Custody sauber, falls der Fall vor Gericht geht.

Siehe auch#

Möchten Sie eine Hive sofort lesen, ohne irgendetwas einzurichten? Legen Sie eine auf die Startseite des Parsers — vollständig in Ihrem Browser, nichts wird hochgeladen.

Verwandte Beiträge

Zurück zu allen Beiträgen