Cheatsheet CLI AmcacheParser : chaque option, avec des exemples concrets

Voici la référence pratique et copiable pour AmcacheParser.exe. Pour le contexte sur ce que fait l'outil, voir le guide complet d'AmcacheParser. Pour les détails sur le CSV qu'il produit, voir Les colonnes de sortie d'AmcacheParser expliquées.


Référence des options#

Obligatoire (l'une des deux)#

Option Description
-f <chemin> Chemin vers un unique fichier Amcache.hve.
-d <rép> Répertoire à parcourir récursivement, en analysant chaque Amcache.hve trouvé. Utile quand vous avez collecté des ruches de plusieurs hôtes dans une seule arborescence.

Sortie#

Option Description
--csv <rép> Obligatoire. Répertoire de sortie pour les CSVs par catégorie.
--csvf <nom> Nom de fichier de base optionnel. Triage multi-hôtes : mettez <HOSTNAME> pour que les CSVs trient proprement.

Filtres & inclusion#

Option Description
-i Inclure les entrées avec IsOSComponent = true (binaires livrés avec Windows). Désactivé par défaut — les composants Windows ajoutent des dizaines de milliers de lignes peu utiles.
--mp Multi-passe. Reparcourt pour récupérer les entrées orphelines qui seraient sinon ignorées. Quelques secondes de plus ; presque toujours utile.
--nl Ignorer les journaux de transactions même s'ils sont présents (rarement correct — voir avertissement ci-dessous).

Journalisation & débogage#

Option Description
--debug Journalisation debug verbeuse sur stderr. À utiliser quand un parsing semble incorrect.
--trace Verbosité maximale. Redirigez vers un fichier ; la sortie est volumineuse.

Combinaisons courantes#

L'invocation « bons défauts » sur laquelle la plupart des analystes se standardisent :

AmcacheParser.exe -f <ruche> --csv <répsortie> --csvf <HOSTNAME>_amcache.csv --mp

Ajoutez -i uniquement quand vous avez spécifiquement besoin des lignes de composants OS (par ex. enquête sur une DLL système détournée).

Avertissement sur les journaux de transactions. Amcache.hve écrit à travers .LOG1 / .LOG2 comme toute ruche du registre. Collectez toujours les journaux avec la ruche, et ne passez jamais --nl sauf raison spécifique d'ignorer les journaux — vous pouvez silencieusement manquer l'activité la plus récente.


Exemples concrets#

Exemple 1 — un hôte, une ruche#

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

Produit :

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

Exemple 2 — traiter beaucoup de ruches en batch avec PowerShell#

Quand vous avez collecté des ruches de 50 hôtes dans une seule arborescence :

$root    = 'C:\Cases\2026-INC-042\collected'
$outRoot = 'C:\Cases\2026-INC-042\parsed'
 
Get-ChildItem -Path $root -Filter Amcache.hve -Recurse | ForEach-Object {
    # Suppose que le chemin parent encode le nom d'hôte, par ex. ...\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
}

La capture du log par hôte est ce que la plupart des pipelines oublient ; vous voulez savoir quels parsings ont émis des avertissements sur des journaux manquants ou des écarts de schéma sans tout relancer.

Exemple 3 — mode récursif#

Si votre collecte vit déjà dans une arborescence qu'AmcacheParser peut parcourir lui-même :

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

--csvf est ignoré en mode -d — les noms de fichier de sortie sont dérivés du chemin source de chaque ruche.

Exemple 4 — poste analyste non Windows#

Sur Linux ou macOS avec le runtime .NET installé :

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

Mêmes options, même sortie. Si votre équipe est entièrement non Windows et qu'il vous faut juste du triage, l'analyseur dans le navigateur sur ce site supprime entièrement la dépendance à .NET — déposez une ruche et lisez les catégories sans rien installer.


Intégration KAPE#

KAPE gère à la fois la collecte et le parsing. Le schéma canonique :

# Collecter la ruche + les journaux de transactions
.\kape.exe `
  --tsource C: `
  --target Amcache `
  --tdest .\out\HOST01\collected
 
# Analyser la ruche collectée avec AmcacheParser
.\kape.exe `
  --msource .\out\HOST01\collected `
  --module AmcacheParser `
  --mdest .\out\HOST01\parsed

Le module AmcacheParser de KAPE encapsule les options CLI ci-dessus et écrit les CSVs dans mdest avec des noms de fichier sensés. Le schéma deux étapes --tsource → --msource garde la collecte et le parsing auditables — la sortie de l'étape de collecte est une preuve intacte ; l'étape de parsing est reproductible à partir d'elle.

Pour du triage one-shot vous pouvez tout collapser en un seul appel en combinant --tsource et --mdest, mais la plupart des playbooks d'engagement préfèrent la variante deux étapes.


Intégration Velociraptor#

L'artefact Windows.Forensics.Amcache collecte la ruche, télécharge AmcacheParser s'il n'est pas déjà en cache, l'exécute et téléverse le CSV au serveur. Config de hunt typique :

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

Le glob avec * est intentionnel — il récupère la ruche et les deux journaux de transactions en une seule fois. L'artefact gère le reste côté serveur.

Pour la chasse sur l'ensemble du parc, planifiez l'artefact à cadence régulière (hebdomadaire est typique) et acheminez les lignes UnassociatedFileEntries résultantes vers votre SIEM. Les détections qui pivotent sur KeyLastWriteTimestamp > now - 7d AND Publisher = '' AND IsPeFile = true sont bruyantes mais peu chères et ont une très haute précision pour « quelque chose de nouveau est apparu sur un hôte cette semaine ».


Conseils opérationnels#

Une poignée de schémas qui reviennent sur les engagements réels :

  • Collectez toujours les journaux de transactions. AmcacheParser avertira mais continuera s'ils manquent ; vous perdez les écritures les plus récentes silencieusement.
  • Utilisez --csvf <HOSTNAME>. Quand vous empilez les CSVs de 50 hôtes dans un même dossier pour des pivots inter-hôtes, les noms d'hôte dans les noms de fichier vous sauvent.
  • Exécutez --mp par défaut. Le coût est en secondes ; les lignes récupérées sont parfois les plus intéressantes.
  • N'exécutez jamais AmcacheParser sur la ruche vivante d'un hôte suspect. Copiez toujours la ruche + .LOG1 + .LOG2 d'abord. Même si l'analyseur ouvre en lecture seule, vous voulez en preuve une copie hachée.
  • Hachez la ruche en entrée avant analyse et stockez l'empreinte à côté de la sortie CSV. Cette infime étape supplémentaire garde la chaîne de garde propre si le dossier va devant un tribunal.

Voir aussi#

Vous voulez lire une ruche tout de suite sans rien monter ? Déposez-en une sur la page d'accueil de l'analyseur — entièrement dans votre navigateur, rien n'est téléversé.

Articles liés

Retour à tous les articles