Amcache : la référence forensique complète de la ruche Windows .hve
TL;DR — Amcache en un paragraphe. Amcache est une ruche du registre Windows (
Amcache.hve) maintenue par le Microsoft Compatibility Appraiser. Elle enregistre chaque binaire PE inventorié sur l'hôte, avec hash SHA-1, chemin complet, éditeur, date de link PE et horodatage d'inventaire. Les analystes l'utilisent pour prouver la présence d'un binaire (pas nécessairement son exécution), pivoter sur le hash entre hôtes, et récupérer les preuves d'outils d'attaquants supprimés.
Amcache.hve est la ruche du registre Windows qui enregistre quels
programmes ont été présents ou exécutés sur une machine, avec des
métadonnées riches : chemin complet, hash SHA-1, date de link PE,
éditeur, version et heure d'inventaire. Pour l'investigation numérique
et la réponse à incident, c'est l'un des quatre artefacts que tout
analyste Windows apprend en premier — aux côtés de Prefetch, ShimCache
et du journal d'événements de sécurité.
Cette page est la référence canonique sur l'artefact lui-même : ce qu'il est, où il se trouve, comment Windows le produit, ce que chaque clé de premier niveau contient, comment l'utiliser dans une enquête et comment il se positionne par rapport aux sources de preuve d'exécution voisines. Pour la couverture des outils d'analyse, voir le guide complet d'AmcacheParser ; pour l'introduction courte d'origine, voir Comprendre Amcache pour l'analyse forensique Windows.
Amcache en un coup d'œil face aux artefacts voisins#
La question la plus fréquente des nouveaux analystes Amcache est « en quoi est-ce différent de ShimCache / Prefetch / SRUM ? » Référence rapide :
| Artefact | Ce qu'il prouve | Hash ? | Chemin ? | Capacité | Source |
|---|---|---|---|---|---|
| Amcache.hve | Binaire présent sur l'hôte | ✅ SHA-1 (31 premiers MiB) | ✅ Complet | Milliers d'entrées | Compatibility Appraiser |
| ShimCache (AppCompatCache) | Binaire vu par le loader | ❌ | ✅ Complet | ~1 024 entrées (LRU) | Loader Application Compatibility |
| Prefetch | Binaire exécuté | ❌ | ✅ Complet | ~1 024 fichiers .pf |
Prefetcher Windows (service Pf) |
| SRUM | Binaire consomme des ressources sur 30+ jours | ❌ | ✅ Complet | Agrégats par app | System Resource Usage Monitor |
| Security 4688 | Processus créé (temps réel) | ❌ | ✅ Complet | Borné par la rotation du journal | Sous-système d'audit |
Règle de pivot : Amcache pour la présence et le hash ; ShimCache pour la liste vue par le loader ; Prefetch pour l'exécution ; SRUM pour l'usage sur le temps ; 4688 pour l'événement temps-réel. Détails sur chaque pairage : Amcache vs ShimCache, Amcache vs Prefetch, Amcache vs SRUM, Amcache vs AppCompatCache.
Ce qu'est réellement Amcache#
Amcache est une ruche du registre — le même format binaire que
SYSTEM, SOFTWARE, SAM, SECURITY et NTUSER.DAT. Ce n'est ni un
fichier journal, ni une base de données, ni une liste à plat. C'est un
arbre clés/valeurs avec des valeurs typées, et c'est cette structure
qui le rend à la fois riche et un peu pénible à lire à la main.
La ruche est alimentée par le Microsoft Compatibility Appraiser,
une tâche planifiée livrée avec Windows sous
\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser.
L'appraiser scanne le système à la recherche de logiciels installés et
présents, collecte les métadonnées d'en-tête PE pour chaque fichier et
écrit des enregistrements d'inventaire structurés dans la ruche. Sur
les builds Windows 10 et 11 récents, l'appraiser s'exécute environ une
fois par jour ; sur les builds Windows Server, la cadence varie mais
est généralement de plusieurs fois par semaine.
L'appraiser faisait à l'origine partie de l'infrastructure du Customer Experience Improvement Program (CEIP) — le mécanisme de Microsoft pour envoyer de la télémétrie de compatibilité vers ses serveurs avant les mises à niveau majeures de Windows. La valeur forensique d'Amcache est, en un sens, un accident de ce pipeline de télémétrie : l'appraiser devait tenir un inventaire local pour savoir quoi envoyer, et c'est cet inventaire local que les analystes exploitent désormais.
Pourquoi les analystes s'y intéressent#
Amcache répond à une question qu'aucun autre artefact Windows ne résout aussi proprement :
« Cet exécutable a-t-il déjà été présent sur cet hôte, et si oui, avec quel SHA-1, à quel chemin et à peu près quand ? »
Trois éléments rendent cette question précieuse en DFIR :
- Elle survit à la suppression. Un wiper peut effacer le binaire du disque ; le snapshot d'inventaire dans la ruche persiste jusqu'au prochain passage de l'appraiser — et même alors, le run précédent reste souvent dans les journaux de transactions.
- Elle pré-hashe le binaire. Amcache stocke le SHA-1 des ~31 premiers Mio du fichier au moment de l'inventaire. Même si vous n'avez plus le binaire, vous pouvez soumettre ce hash à VirusTotal, à des flux de threat intel, ou à votre base d'allowlist interne.
- Elle enregistre le chemin. L'endroit où vivait le binaire sur
disque est souvent toute l'histoire —
\Users\<name>\AppData\Local\Temp\svchost.exeest sa propre accusation.
Où se trouve Amcache#
Sur un système Windows actif :
C:\Windows\AppCompat\Programs\Amcache.hve
C:\Windows\AppCompat\Programs\Amcache.hve.LOG1
C:\Windows\AppCompat\Programs\Amcache.hve.LOG2
Les fichiers .LOG1 et .LOG2 sont les journaux de transactions
de la ruche — le même mécanisme de write-ahead log qu'utilise toute
ruche du registre. Collectez toujours les trois ensemble. Si vous
ne récupérez qu'Amcache.hve, vous pouvez silencieusement manquer les
écritures les plus récentes, car les derniers changements peuvent
encore se trouver dans les journaux en attente de flush.
Pour l'ensemble complet des questions liées à l'emplacement (chemins Windows plus anciens, où il se trouve dans une image forensique, comment KAPE / Velociraptor le collectent), voir Où se trouve Amcache.hve sur disque.
Historique entre versions Windows#
La ruche a une histoire courte mais brouillonne :
- Windows 7 / Server 2008 R2 a introduit l'artefact sous le nom
RecentFileCache.bcf— un fichier binaire à plat, pas une ruche, et bien plus pauvre en métadonnées. Il n'est pas directement comparable à l'Amcache moderne. - Windows 8 / 8.1 a introduit
Amcache.hvesous sa forme de ruche avec les clésRoot\FileetRoot\Programs(le schéma « legacy »). - Windows 10 build 1709 (Fall Creators Update) a ajouté
Root\InventoryApplicationFileet les clésInventory*apparentées — le schéma moderne. Les clés legacy sont restées pour la compatibilité sur certains builds mais sont devenues plus éparses avec le temps. - Windows 11 poursuit le schéma de Windows 10 avec des ajouts mineurs, notamment des enregistrements de pilotes et de device-containers plus granulaires.
Quand vous analysez une ruche, vous travaillez généralement avec le
schéma moderne Inventory*. Les clés legacy Root\Programs et
Root\File méritent encore d'être vérifiées sur les anciens systèmes
et sur les builds où l'appraiser a été désactivé — elles capturent
parfois des données que les clés modernes manquent. Nous couvrons les
spécificités par version Windows dans
Amcache sur Windows 11 et 10 et
Amcache sur Windows Server.
La structure de la ruche#
Au niveau supérieur, la ruche possède une unique clé Root avec ces
sous-clés notables (sur un système Windows 11 moderne) :
Root\
├── InventoryApplication
├── InventoryApplicationDriver
├── InventoryApplicationFile
├── InventoryApplicationFramework
├── InventoryApplicationShortcut
├── InventoryDeviceContainer
├── InventoryDeviceInterface
├── InventoryDevicePnp
├── InventoryDriverBinary
├── InventoryDriverPackage
├── InventoryMiscellaneousUUPInfo
├── File (legacy)
└── Programs (legacy)
Les cinq que les analystes DFIR touchent sur pratiquement chaque cas :
| Clé | Enregistre |
|---|---|
InventoryApplicationFile |
Chaque fichier PE que l'appraiser a inventorié, avec chemin complet, SHA-1, date de link, éditeur, version. La source unique la plus riche. |
InventoryApplication |
Applications installées (entrées MSI / Ajout-Suppression de programmes). Parents des enregistrements de fichiers via ProgramId. |
InventoryDriverBinary |
Chaque binaire de pilote chargé par le système, avec drapeaux signé/kernel-mode. Critique pour les enquêtes BYOVD. |
InventoryDeviceContainer |
Enregistrements de périphériques avec nom convivial : imprimantes, écrans, contrôleurs amovibles. |
InventoryDevicePnp |
Enregistrements d'énumération PnP, un par interface de périphérique. Se joint à InventoryDeviceContainer via InstanceId. |
Pour une décomposition clé par clé — chaque sous-clé, chaque valeur notable et sa signification — voir Structure du registre Amcache et clés.
Versionnage de schéma#
Le schéma d'Amcache a évolué plusieurs fois au cours de la vie de Windows 10. De nouveaux noms de valeurs apparaissent ; d'anciens disparaissent ou changent de type. C'est pourquoi un visualiseur de registre générique est un mauvais outil pour Amcache — les valeurs qu'il montre sont correctes mais non étiquetées, et vous passez plus de temps à corréler contre des billets de blog qu'à analyser. Utilisez un analyseur dédié (AmcacheParser, l'analyseur dans le navigateur de ce site, ou le plugin amcache de RegRipper) et laissez l'outil suivre le schéma pour vous.
Les champs que les analystes utilisent réellement#
Une poignée de valeurs par entrée d'inventaire porte 90 % du poids investigatif :
FileId#
La chaîne de 41 caractères "0000" + sha1_hex qui identifie de
manière unique un fichier par son contenu. Le 0000 initial est une
étiquette de type historique ; les 40 caractères hexadécimaux restants
sont le SHA-1 des 31 premiers Mio du fichier. Retirez le préfixe et
vous avez un hash que vous pouvez soumettre directement à VirusTotal,
à des flux IOC ou à votre base de hash-allowlist.
Quelques pièges :
- Le hash couvre uniquement les 31 premiers Mio, pas le fichier entier. Pour les installeurs et les gros binaires, il reste distinctif, mais c'est techniquement un prefix hash, pas un hash de contenu complet.
- Les fichiers de moins de 31 Mio sont entièrement hashés, donc le résultat correspond à un SHA-1 standard.
Couverture complète : FileId Amcache expliqué.
ProgramId#
Un hash d'identité de 44 caractères que Windows attribue à une
application logique — une combinaison de nom, éditeur, version et
langue. Le même ProgramId lie un fichier dans
InventoryApplicationFile à l'enregistrement applicatif parent dans
InventoryApplication. Il est également stable entre hôtes : deux
machines avec la même application installée partagent généralement le
même ProgramId pour celle-ci, ce qui en fait un pivot utile pour des
hunts cross-hôtes.
Couverture complète : ProgramId Amcache expliqué.
Horodatages#
Amcache expose plusieurs horodatages différents, et les confondre est l'erreur n°1 des nouveaux analystes Amcache :
| Champ | Ce qu'il représente |
|---|---|
KeyLastWriteTimestamp |
Last-write registre de la clé contenant cette entrée. Ce qui ressemble le plus à « quand Amcache a enregistré ce fichier ». |
LinkDate |
TimeDateStamp de l'en-tête PE — quand le binaire a été compilé / lié. Contrôlable par l'attaquant ; ne pas traiter comme preuve d'heure de présence. |
LastModified (quand présent) |
Marqueur de dernière modification côté inventaire ; pas présent dans chaque version de schéma. |
MsiInstallDate |
Quand le MSI parent a été installé (si le fichier en provient). |
Le bon pivot pour « quand ce binaire est-il apparu sur cet hôte ? »
est KeyLastWriteTimestamp. Couverture complète :
Horodatages Amcache expliqués.
Path, publisher, IsPeFile#
Le filtre de triage « est-ce suspect ? » sur lequel la plupart des analystes se standardisent :
IsPeFile = TrueETPublisherest vide ETFullPathest sous\Users\,\AppData\,\ProgramData\ou\Temp\.
Ce seul filtre, appliqué à InventoryApplicationFile, fait remonter
la grande majorité des artefacts de malware grand public sur un hôte
typiquement infecté. Il génère également beaucoup de faux positifs —
logiciels piratés, scripts développeur personnalisés, applications
portables — c'est pourquoi c'est un filtre de triage, pas une règle
de détection.
Ce qu'Amcache n'est pas#
Trois idées reçues persistantes méritent d'être corrigées d'emblée, car elles produisent régulièrement des conclusions fausses :
Amcache n'est pas « une preuve d'exécution »#
Un binaire apparaissant dans Amcache signifie que l'appraiser a vu le fichier sur disque au moment de l'inventaire. L'appraiser inventorie les fichiers en fonction de leur emplacement (Program Files, ProgramData, le menu Démarrer, les chemins récemment touchés) — pas selon qu'ils se soient exécutés ou non. Un binaire peut apparaître dans Amcache sans avoir jamais été exécuté.
Pour l'exécution, vous avez besoin de Prefetch (le signal le plus fort), des événements de création de processus (4688 / Sysmon 1), de ShimCache comme signal corroborant, ou de SRUM pour une corrélation sur une fenêtre plus longue. Voir Amcache vs Prefetch et Amcache vs ShimCache pour les distinctions canoniques, et Amcache vs SRUM pour l'appariement sur fenêtre plus longue.
Amcache n'est pas exhaustif#
L'appraiser manque des choses :
- Les fichiers hors des chemins qu'il scanne.
- Les fichiers qui sont apparus et disparus entre deux passages de l'appraiser.
- Les fichiers sur un hôte où l'appraiser a été désactivé (certains endpoints durcis).
- Sur les anciens builds Windows, les fichiers hors du périmètre
legacy
Programs/File.
L'absence dans Amcache n'est pas la preuve qu'un binaire n'a jamais été présent. C'est seulement la preuve que l'appraiser ne l'a pas vu.
Amcache n'est pas inviolable#
La ruche vit sur disque à un emplacement connu. Un attaquant avec des privilèges admin peut la modifier, la supprimer, ou — plus subtilement — modifier la planification de l'appraiser pour qu'il arrête d'enregistrer. Rien de tout cela n'est courant dans les intrusions grand public (la valeur de nettoyer Amcache vaut rarement le bruit que cela génère) mais c'est possible, et vous devriez traiter Amcache comme un signal parmi d'autres, pas comme une vérité absolue.
Utiliser Amcache dans une enquête#
La boucle d'investigation standard sur une intrusion Windows-only :
- Collecter. Récupérer
Amcache.hve+Amcache.hve.LOG1+Amcache.hve.LOG2. Le targetAmcachede KAPE fait cela en une commande ; l'artefactWindows.Forensics.Amcachede Velociraptor le fait à distance. - Analyser. Exécuter
AmcacheParser avec
--mppour récupérer les entrées orphelines. Vous obtiendrez un CSV par catégorie. - Filtre de triage. Appliquer le filtre « PE non signé dans
chemin utilisateur inscriptible » à
*_UnassociatedFileEntries.csv. Cela produit une liste gérable — typiquement quelques dizaines de lignes sur un hôte typiquement infecté. - Pivoter. Pour chaque ligne survivante, prendre le hash SHA-1 et
le vérifier contre VirusTotal, votre flux TI et vos détections
historiques. Pour chaque ligne, vérifier aussi le
FullPathcontre votre timeline système de fichiers et votre CSV Prefetch — Prefetch montre-t-il le même binaire en exécution ? Le fichier existe-t-il encore sur disque ? - Corroborer l'exécution. Croiser les correspondances avec
Prefetch (exécution définitive), Sysmon
1/7(processus et chargement d'image) et Security 4688 (création de processus) si activé. - Borner dans le temps. Prendre
KeyLastWriteTimestampdes lignes suspectes et construire une fenêtre temporelle serrée autour. Récupérer tous les événements, changements système de fichiers et écritures registre de cette fenêtre pour le tableau complet.
Pour des scénarios spécifiques, les billets cas d'usage couvrent le playbook en détail :
- Récupérer la preuve de binaires supprimés depuis Amcache
- Chasser les malwares grand public avec Amcache
- Historique des périphériques USB et amovibles depuis Amcache
- Pivot de mouvement latéral avec le
ProgramIdAmcache
Paysage des outils#
Vous avez plusieurs choix raisonnables pour analyser réellement la ruche :
| Outil | Idéal pour |
|---|---|
| AmcacheParser d'Eric Zimmerman | DFIR de production sur un poste analyste Windows. L'implémentation canonique. |
| Analyseur dans le navigateur (ce site) | Triage, formation, analystes non Windows, hôtes verrouillés. S'exécute en WebAssembly, le fichier ne quitte jamais le navigateur. |
| Plugin amcache de RegRipper | Analyse interactive rapide dans le cadre d'un balayage RegRipper plus large. |
| Plugins Volatility | Extraire la ruche d'une image mémoire, puis la passer à AmcacheParser. |
Pour la question pratique « lequel utiliser maintenant », la
réponse est presque toujours : AmcacheParser.exe d'Eric pour
l'enquête, l'analyseur navigateur de ce site pour le triage ou un
coup d'œil rapide sans rien installer. Les chemins RegRipper et
Volatility existent pour des contextes spécifiques — balayages
RegRipper interactifs et acquisitions uniquement mémoire,
respectivement.
Questions fréquentes#
Quelle est la taille typique d'Amcache.hve ?#
Sur un poste de travail Windows 11 typique, Amcache.hve varie de
2 Mo à 25 Mo. Les postes de développeurs très utilisés et les
serveurs avec beaucoup de binaires éphémères peuvent dépasser
50 Mo. Les journaux de transactions sont petits (généralement
<1 Mo chacun).
Jusqu'où Amcache remonte-t-il ?#
La ruche n'est pas bornée par le temps mais par le comportement de
rétention propre à Windows. Sur un poste de travail de longue durée,
vous pouvez voir des entrées d'inventaire vieilles de mois ou
d'années, surtout pour les enregistrements Inventory* où le binaire
est encore présent sur disque. Une fois qu'un binaire est supprimé
et que l'appraiser a eu plusieurs passages pour s'en apercevoir,
l'entrée correspondante vieillit généralement (mais pas toujours).
Amcache enregistre-t-il les DLLs ?#
Oui, dans les schémas modernes. InventoryApplicationFile enregistre
à la fois les EXEs et les DLLs (filtré aux fichiers PE en général).
Les ruches antérieures à Windows 10 1709 peuvent ne pas le faire,
selon le build.
Amcache enregistre-t-il les scripts ?#
En général non pour .ps1, .bat, .vbs, .js, etc. — Amcache se
concentre sur les binaires PE. La preuve d'exécution de scripts vient
des journaux opérationnels PowerShell, d'AMSI, de Sysmon, ou de
Prefetch (pour les invocations de cscript.exe / wscript.exe
elles-mêmes).
Quelle est la relation entre Amcache et ShimCache ?#
Ce sont des artefacts différents bien que tous deux impliquent la
compatibilité applicative. ShimCache (AppCompatCache dans la ruche
SYSTEM) est maintenu par le loader à des fins de compatibilité
applicative et enregistre jusqu'à 1024 entrées par hôte avec des
métadonnées limitées. Amcache est maintenu par l'appraiser à des fins
de télémétrie de compatibilité et enregistre des milliers d'entrées
avec des métadonnées riches. Voir
Amcache vs ShimCache pour la
comparaison complète.
Puis-je lire Amcache.hve sur Linux ou macOS ?#
Oui. Utilisez dotnet AmcacheParser.dll sur un hôte avec le runtime
.NET, ou utilisez l'analyseur dans le navigateur de ce site qui
s'exécute en WebAssembly et fonctionne dans tout navigateur moderne
quel que soit l'OS hôte. Le format de ruche est portable.
Amcache est-il une preuve recevable en justice ?#
Cela dépend de la juridiction et de la façon dont la preuve a été collectée. Amcache lui-même est bien documenté et largement utilisé en DFIR, ce qui aide. Les règles habituelles s'appliquent : préserver la ruche (et ses journaux de transactions) avec une chaîne de custody documentée, la hasher avant et après, et utiliser un analyseur documenté dont vous pouvez défendre le comportement.
Où aller ensuite#
Si vous êtes arrivé ici en cherchant…
- « C'est quoi cette ruche ? » — vous êtes au bon endroit. Continuez avec Structure du registre Amcache et clés pour la couche de détail suivante.
- « Comment l'analyser ? » — voir le guide complet d'AmcacheParser.
- « Je dois enquêter sur un scénario spécifique » — commencez par les billets cas d'usage : fichiers supprimés, malware, historique USB / périphériques, mouvement latéral.
- « Comment cela se compare-t-il à Prefetch / ShimCache / SRUM ? » — les trois billets de comparaison : vs Prefetch, vs ShimCache, vs SRUM.
- « Je veux regarder une ruche tout de suite » — déposez le fichier sur la page d'accueil de l'analyseur. Il s'exécute entièrement dans votre navigateur.
Articles liés
- Structure du registre Amcache : chaque clé expliquée
Un tour clé par clé de la ruche du registre Amcache.hve — Root\\InventoryApplicationFile, InventoryApplication, InventoryDriverBinary, les clés legacy Programs et File, et ce que signifie chaque valeur notable.
- Où se trouve la clé de registre Amcache ?
Amcache est sa propre ruche située à C:\Windows\AppCompat\Programs\Amcache.hve — pas une clé sous HKLM. Quand elle est chargée par des outils ou par Windows lui-même, elle est montée comme HKLM\Amcache.
- Volatility et Amcache : extraire la ruche depuis des images mémoire
Un guide pratique pour récupérer Amcache depuis une image mémoire Windows en utilisant Volatility — quand la récupération côté mémoire est la seule option, quels plugins utiliser, et comment passer le relais à AmcacheParser.
- Plugin amcache de RegRipper : ce qu'il fait et quand l'utiliser
Un guide pratique sur le plugin amcache de RegRipper — ce qu'il analyse, comment sa sortie texte diffère du CSV d'AmcacheParser, et quand l'utiliser à la place (ou en complément) de l'outil Zimmerman.