Les colonnes de sortie d'AmcacheParser expliquées : chaque champ CSV décodé

AmcacheParser écrit un CSV différent par catégorie Inventory*. La plupart des analystes passent 90 % de leur temps dans deux de ces fichiers — *_UnassociatedFileEntries.csv et *_AssociatedFileEntries.csv — mais chaque colonne de chaque fichier est potentiellement utile. Voici la référence sur ce que signifie chacune.

Pour le contexte plus large sur l'outil, voir le guide complet d'AmcacheParser.


Les sept fichiers CSV#

Après une exécution typique avec --csv .\out, vous verrez :

Fichier Clé source Volume typique
*_AssociatedFileEntries.csv Root\InventoryApplicationFile lié à une InventoryApplication centaines à milliers
*_UnassociatedFileEntries.csv Root\InventoryApplicationFile sans application parente centaines à milliers
*_ProgramEntries.csv Root\Programs (ancienne liste logiciels installés) centaines
*_ShortcutEntries.csv Root\InventoryApplicationShortcut dizaines
*_DriverBinaries.csv Root\InventoryDriverBinary centaines
*_DevicePnps.csv Root\InventoryDevicePnp centaines
*_DeviceContainers.csv Root\InventoryDeviceContainer dizaines

Le fichier Unassociated est celui sur lequel la plupart des analystes pivotent en premier : c'est là qu'atterrissent typiquement les binaires téléchargés à la volée, les outils d'attaquant et les scripts ponctuels, car ils n'ont jamais été installés via un produit enregistré.


Colonnes des entrées de fichier (Associated / Unassociated)#

Les deux CSVs d'entrées de fichier partagent le même schéma. Colonnes que vous utiliserez sur presque tous les cas :

Identité & chemin#

Colonne Signification Notes
ApplicationName Nom d'affichage résolu par Windows Souvent vide pour les entrées non associées.
ProgramId Empreinte d'identité programme Windows sur 44 caractères Pivotez vers Root\InventoryApplication pour trouver l'enregistrement du produit installé.
FileId "0000" + SHA-1 hex des 31 premiers Mio du fichier Retirez le préfixe 0000 pour obtenir un SHA-1 que vous pouvez soumettre à VirusTotal / aux flux TI.
Hash Copie pratique du SHA-1 sans préfixe Utilisez cette colonne, pas FileId, pour joindre avec des flux d'empreintes externes.
Name Nom de fichier uniquement kernel32.dll, mimikatz.exe, etc.
FullPath Chemin complet au moment de l'inventaire Si le chemin contient \Users\ ou \AppData\ et que Publisher est vide, regardez de près.
Publisher Chaîne éditeur depuis la signature PE / les ressources Vide pour les binaires non signés.
PublisherName Nom d'affichage plus convivial Parfois rempli quand Publisher est le CN X.509.
BinaryType Architecture / nature (pe32, pe64, pe32_arm, ...) Utile pour filtrer PE natif vs managé.

Horodatages#

Amcache est une mine d'horodatages, mais ils signifient des choses différentes. Faites cette distinction correctement ou vous daterez mal vos constats.

Colonne De quoi il s'agit À ne pas confondre avec
KeyLastWriteTimestamp Last-write registre de la clé contenante « Quand le fichier a été inventorié. » Le plus proche d'une vraie « heure Amcache. »
LinkDate TimeDateStamp de l'en-tête PE fixé à la compilation/édition de liens « Quand le fichier a été créé » — c'est fixé par le compilateur, contrôlé par l'attaquant et souvent falsifié.
BinFileVersion / ProductVersion Chaînes de version depuis la ressource PE Ce ne sont pas des horodatages.
LastModified Certains schémas Amcache exposent un FILETIME de dernière modification Pas présent dans toutes les versions de schéma ; à traiter comme un effort raisonnable.

Le bon pivot « quand » pour Amcache est KeyLastWriteTimestamp. LinkDate est fantastique pour grouper les binaires (tous les binaires compilés le même jour par l'attaquant se regroupent) mais ce n'est pas un signal « ce binaire a été placé sur cet hôte à cette heure ».

Version / métadonnées#

Colonne Signification
BinFileVersion PE VS_FIXEDFILEINFO.dwFileVersion
BinProductVersion PE VS_FIXEDFILEINFO.dwProductVersion
ProductName Ressource PE ProductName
ProductVersion Ressource PE ProductVersion (forme chaîne)
FileVersionString Ressource PE FileVersion
Language ID de langue de la ressource PE
Size Taille du fichier en octets

Drapeaux#

Colonne Signification Filtre par défaut
IsPeFile Vrai si Amcache a classé le fichier comme PE Filtrez sur True pour chasser les artefacts exécutables.
IsOsComponent Vrai si le fichier appartient à Windows lui-même Filtrez sur False sauf si -i a été passé ; les composants OS sont bruyants.

Cycle de vie / métadonnées d'inventaire#

Colonne Signification
Usn Entrée journal USN associée au fichier au moment de l'inventaire
Description Description libre, souvent issue de la ressource PE
LongPathHash Empreinte qu'Amcache utilise pour la déduplication des chemins
MsiInstallDate Date d'installation du MSI parent (le cas échéant)
MsiPackageCode GUID du package MSI

ProgramEntries.csv (ancienne clé Programs)#

L'ancienne clé Root\Programs précède le schéma Inventory* et est plus pauvre. Colonnes les plus utilisées :

Colonne Signification
ProgramId Même identité 44 caractères utilisée dans les CSVs d'entrées de fichier
LastWriteTimestamp Last-write registre de l'entrée
Name Nom d'affichage du programme
Version Version du programme
Publisher Chaîne éditeur
InstallDate Date d'installation (FILETIME → ISO-8601)
LanguageCode LCID
InstallSource Chemin source (CD, partage réseau, dossier téléchargements)
UninstallString Ligne de commande qui désinstallerait le programme
RootDirPath Répertoire d'installation
Source MSI, AddRemoveProgram, etc.

InstallSource est l'arme secrète ici : il enregistre parfois le partage réseau ou l'URL de téléchargement depuis lequel l'installeur a été récupéré, ce qui est inestimable pour enquêter sur des intrusions par chaîne d'approvisionnement ou ingénierie sociale.


DriverBinaries.csv#

Pour les artefacts en mode noyau. Colonnes :

Colonne Signification
KeyLastWriteTimestamp Heure d'inventaire
DriverName Nom du fichier pilote
Inf .inf source
DriverVersion Chaîne de version du pilote
Product Nom de produit depuis la ressource PE du pilote
ProductVersion Version du produit
WdfVersion Version Windows Driver Framework, le cas échéant
DriverCompany Chaîne entreprise
DriverPackageStrongName Strong name
Service Nom de service associé
DriverSigned Si le pilote prétendait être signé
DriverIsKernelMode Vrai pour les pilotes mode noyau
DriverType legacy, pnp, service, ...
DriverTimeStamp Date de link PE du pilote
Hash SHA-1 du binaire du pilote

Pour les enquêtes BYOVD (bring-your-own-vulnerable-driver), triez par DriverTimeStamp et cherchez les pilotes anciens-mais-signés récemment apparus sur l'hôte.


DeviceContainers.csv#

Historique des périphériques connectés. Colonnes les plus pertinentes :

Colonne Signification
KeyLastWriteTimestamp Quand l'enregistrement du périphérique a été touché en dernier
Categories Catégories de périphérique (imprimante, écran, réseau, ...)
DiscoveryMethod Comment Windows a énuméré le périphérique
FriendlyName « Brother HL-L2350DW », « Logitech BRIO », ...
Manufacturer Chaîne fabricant
ModelName / ModelNumber Identifiants modèle
IsConnected Drapeau actuellement connecté à l'inventaire
IsPaired Apparié (Bluetooth, etc.)
Icon Chemin vers la ressource icône du périphérique

Ce fichier répond souvent à « ce périphérique X s'est-il déjà connecté à cet hôte ? » sans avoir à éplucher les journaux de Setup.


DevicePnps.csv#

Enregistrements d'énumération PnP — une ligne par interface périphérique. Colonnes les plus utiles en DFIR :

Colonne Signification
KeyLastWriteTimestamp Quand l'enregistrement PnP a été touché en dernier
BusReportedDescription Ce que le périphérique a dit à Windows être
DeviceClass GUID de classe pilote
DeviceId / InstanceId Identifiant d'instance PnP
Manufacturer Chaîne fabricant
Service Service pilote
DriverName Fichier pilote derrière le périphérique

Couplez l'InstanceId ici avec la ligne correspondante dans DeviceContainers.csv pour obtenir à la fois le nom face utilisateur et les IDs techniques.


ShortcutEntries.csv#

Chaque raccourci du menu Démarrer / épinglé que Windows connaît, avec le ProgramId correspondant et l'horodatage d'inventaire. Moins utilisé pour la réponse à incident, mais pratique pour « qu'avait épinglé l'utilisateur le $DATE ? ».


Pivots qui gagnent leur pain#

Quelques schémas inter-colonnes qui reviennent sans cesse :

  1. Hash partout. Prenez Hash depuis *_UnassociatedFileEntries.csv et cherchez-le dans *_AssociatedFileEntries.csv, le CSV Prefetch de l'hôte et les événements Sysmon 1/7. Un binaire qui apparaît dans Amcache mais jamais dans Prefetch est « présent mais jamais exécuté » — un constat très différent de « exécuté ».

  2. Publisher vide + chemin sous \Users\. C'est le filtre de triage le plus productif sur une enquête malware commodity typique.

  3. Regroupement par LinkDate. Triez toutes les entrées PE non associées par LinkDate et cherchez les groupes serrés de 3 à 10 binaires avec le même jour de compilation. C'est souvent un unique drop d'outils attaquant.

  4. URLs InstallSource dans ProgramEntries. Pour tout programme suspect, regardez son InstallSource — il pointe souvent directement vers le vecteur de livraison.

  5. Jointure fenêtre KeyLastWriteTimestamp. Joignez tous les CSVs sur une fenêtre d'une heure autour de l'heure d'accès initial suspectée et vous obtenez l'image complète de ce que Windows a inventorié pendant l'intrusion.


Voir aussi#

Vous voulez voir ces colonnes sur votre propre ruche sans rien installer ? Déposez le fichier sur la page d'accueil de l'analyseur — il s'analyse entièrement dans votre navigateur.

Articles liés

Retour à tous les articles