Exécution
Amcache.hve
Fiche Amcache.hve : clés d'inventaire des fichiers et programmes, SHA-1, métadonnées PE, horodatages, et pourquoi une entrée ne prouve pas l'exécution.
- Emplacement
- C:\Windows\AppCompat\Programs\Amcache.hve
- Prouve
- Un binaire était présent (chemin, SHA-1, métadonnées PE) ; souvent, pas toujours, qu'il a tourné
- Horodatages
- LastWrite de la clé de chaque entrée en FILETIME, UTC ; LinkDate PE (compilation, UTC) ; InstallDate en chaîne au format variable selon le build
- Rétention
- Pas de limite fixe ; entrées purgées une fois le fichier absent et la ruche rafraîchie par un inventaire ; LastWrite modifiés en masse par des tâches planifiées
- Accès
- Administrateur ; ruche verrouillée à chaud : collecter avec ses fichiers .LOG via NTFS brut (KAPE) ou un cliché instantané
- Preuve de
- Exécution
- Type
- Registre
- Windows
- Vista / 78 / 8.11011
- Cible KAPE
- Amcache
- Velociraptor
- Windows.Triage.Targets:Amcache
Outils
Comparer tous les outilsPrésentation
Amcache.hve est une ruche de registre autonome tenue par les composants Application Experience (le Microsoft Compatibility Appraiser et les tâches d'inventaire associées). Elle conserve un inventaire des exécutables, programmes installés, pilotes, raccourcis et périphériques vus par Windows. Son atout majeur pour l'enquêteur est le SHA-1 de chaque exécutable inventorié, qui subsiste même après la suppression du binaire.
Elle a remplacé RecentFileCache.bcf : introduite avec Windows 8, elle a été ajoutée à Windows 7 par des mises à jour de compatibilité.
Emplacement
| Version de Windows | Chemin | Remarques |
|---|---|---|
| 7 (avec mises à jour de compatibilité) / 8 / 8.1 | C:\Windows\AppCompat\Programs\Amcache.hve | Ancienne structure : Root\File\{GUID du volume}\<référence de fichier> et Root\Programs |
| 10 / 11 | C:\Windows\AppCompat\Programs\Amcache.hve | Les versions récentes utilisent la structure Root\Inventory* |
| Toutes | Amcache.hve.LOG1, Amcache.hve.LOG2 | Journaux de transactions à rejouer pour obtenir une ruche cohérente |
La ruche est verrouillée pendant que Windows tourne : collectez-la par accès NTFS brut ou depuis un cliché instantané.
Ce que l'artefact prouve
- La présence d'un binaire précis à un chemin précis, avec son SHA-1, sa taille, ses informations de version et sa date de liaison (compilation) PE.
- Les programmes installés (
InventoryApplication) avec éditeur, date d'installation et commande de désinstallation, y compris des logiciels supprimés depuis. - Les pilotes (
InventoryDriverBinary) avec leur statut de signature : utile pour les rootkits et l'abus de pilotes vulnérables. - L'exécution, seulement avec corroboration. Les travaux publiés (notamment l'analyse d'Amcache de l'ANSSI en 2019) ont montré que des entrées sont aussi créées par les passes d'inventaire des logiciels installés : une entrée Amcache seule ne prouve pas que le fichier a été lancé. Associez-la au Prefetch, à BAM ou aux journaux d'événements.
Champs clés
Structure récente (Root\InventoryApplicationFile\<nom|id>) :
| Valeur | Signification |
|---|---|
LowerCaseLongPath | Chemin complet du fichier, en minuscules |
FileId | 0000 suivi du SHA-1 du fichier |
Name, OriginalFileName | Nom sur disque et nom issu des informations de version PE (les outils renommés ressortent) |
Publisher, Version, BinFileVersion, ProductName | Chaînes d'informations de version |
Size | Taille du fichier en octets |
LinkDate | Date de compilation de l'en-tête PE (modifiable par l'attaquant) |
ProgramId | Relie le fichier à une entrée InventoryApplication |
IsOsComponent | Indique si Windows le considère comme un composant du système |
Autres clés utiles : InventoryApplication (programmes installés), InventoryApplicationShortcut (raccourcis du menu Démarrer), InventoryDriverBinary et InventoryDriverPackage (pilotes), InventoryDevicePnp (périphériques Plug-and-Play, dont l'USB).
Ancienne structure (Root\File\...) : valeurs numérotées, par exemple 15 = chemin complet, 101 = SHA-1, 0 = nom du produit, 1 = société.
Horodatages
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
| LastWrite de la clé de chaque fichier | Création ou mise à jour de l'entrée lors d'un inventaire | FILETIME, UTC | Souvent proche de la première exécution, mais bouge aussi lors d'un nouvel inventaire : à lire comme « vu par Windows le » |
LinkDate | Date de compilation dans l'en-tête PE | Chaîne UTC | Falsifiable ou mise à zéro ; ce n'est pas une date du système de fichiers |
InstallDate (InventoryApplication) | Installation du programme enregistrée | Chaîne, format variable selon les versions | À recouper avec la clé Uninstall de la ruche SOFTWARE |
DriverLastWriteTime | Dernière modification du fichier pilote | UTC | Décrit le fichier pilote, pas un chargement |
Rétention et effacement
- Il n'y a pas de plafond fixe d'entrées ; les entrées disparaissent lorsque le fichier ou le programme correspondant n'existe plus et qu'un inventaire ultérieur rafraîchit la ruche. Les binaires supprimés peuvent donc subsister un temps, mais pas indéfiniment.
- La ruche est réécrite par des tâches planifiées de compatibilité, qui peuvent mettre à jour les LastWrite en masse.
- Le SHA-1 est calculé sur les 31 457 280 premiers octets (30 Mo) du fichier. Pour un fichier plus gros, il ne correspondra pas au SHA-1 du fichier complet.
- Supprimer ou remplacer
Amcache.hveest possible avec des droits administrateur ; cherchez des trous et la suppression dans le journal USN.
Collecte
- Cible KAPE :
Amcache(ruche, fichiers.LOG*et fichiers*.dbvoisins) - Velociraptor (
Windows.Triage.Targets) :Amcache - Commandes natives : le fichier est verrouillé, copiez-le depuis un cliché instantané.
vssadmin list shadows
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\AppCompat\Programs\Amcache.hve* E:\case\
Outils d'analyse
- AmcacheParser (Eric Zimmerman) :
AmcacheParser.exe -f Amcache.hve --csv E:\out -iexporte chaque clé d'inventaire en CSV ;-iinclut les entrées associées à des programmes. - Registry Explorer (Eric Zimmerman) : vue interactive avec rejeu des journaux de transactions.
- RegRipper : plugin
amcachepour un rapport texte rapide. - Velociraptor :
Windows.Forensics.AmcacheetWindows.Detection.Amcachesur les postes en direct.
Conseils d'investigation
- Pivotez sur le SHA-1 : cherchez le hash dans vos sources de renseignement et sur tout le parc ; le même hash sous un autre nom révèle un outil renommé.
- Comparez
NameetOriginalFileName: unsvchost.exedont le nom d'origine estprocdumpest une piste sérieuse. - Cherchez les exécutables dans des chemins accessibles en écriture (
\Users\Public\,\ProgramData\,\AppData\Local\Temp\) et les pilotes non signés dansInventoryDriverBinary. - Amcache n'attribue rien à un utilisateur : combinez-le avec BAM/DAM ou UserAssist pour identifier le compte.
- Quand le binaire a disparu, le SHA-1 et le chemin permettent encore de rattacher le dossier à un fichier récupéré ailleurs ($MFT, Corbeille).
Artefacts liés
- ShimCache (AppCompatCache)Fiche ShimCache (AppCompatCache) : emplacement dans SYSTEM, nombre d'entrées par version, ordre, sens de l'horodatage et limites comme preuve d'exécution.
- Fichiers Prefetch (.pf)Fiche Prefetch Windows : emplacement des .pf par version, nombre d'exécutions, huit dernières dates, fichiers référencés, rétention et analyse.
- RecentFileCache.bcfFiche RecentFileCache.bcf : l'artefact d'exécution de Windows 7 qui liste les exécutables lancés récemment, son emplacement, son format et son analyse.
- BAM / DAM (Background Activity Moderator)Fiche BAM et DAM : clés de la ruche SYSTEM selon la version de Windows 10, SID par utilisateur, dernière exécution en FILETIME, rétention de sept jours.
- Fichiers PE (exécutables Windows)Fiche de tri des fichiers PE : hash, imphash et en-tête Rich, limites de la date de compilation, sections et entropie, informations de version, signatures, PDB.
- Programmes installés (clés Uninstall, MSI, AppX)Fiche programmes installés : clés Uninstall, événements MSI 1033/11707, MSI en cache, paquets AppX, journaux winget et Amcache pour dater les installations.
- Pilotes noyau (.sys, services de pilote, BYOVD)Fiche pilotes noyau : services de pilote (Type 1/2), événement 7045, DriverStore, setupapi.dev.log, Amcache et journaux CodeIntegrity contre BYOVD et rootkits.
Termes du glossaire
- Preuve d'exécutionLes artefacts qui montrent qu'un programme s'est réellement exécuté sous Windows, et pas seulement qu'il était présent sur le disque.
- Ruche du RegistreUn fichier sur disque qui supporte une partie du Registre Windows, comme `SYSTEM`, `SOFTWARE` ou `NTUSER.DAT`.
- Journaux de transactions du Registre (.LOG1/.LOG2)Les fichiers .LOG1 et .LOG2 de chaque ruche consignent les écritures en attente ; depuis Windows 8.1, ils peuvent contenir des données absentes de la ruche.
- LastWrite d'une clé de RegistreL'unique FILETIME stocké dans chaque clé de Registre, qui indique en UTC la dernière modification de la clé ou de l'une de ses valeurs.