Où se trouve Amcache.hve sur le disque (et comment le collecter)
La première question pratique sur tout cas Amcache est où se trouve le fichier. Cette page est la réponse définitive pour toute version Windows que vous êtes susceptible de croiser, plus la bonne façon de collecter la ruche pour ne pas perdre en silence les données les plus récentes.
Pour le contexte plus large, voir la Référence Amcache complète.
La réponse courte#
Sur tout Windows desktop et serveur supporté depuis Windows 8 :
C:\Windows\AppCompat\Programs\Amcache.hve
C:\Windows\AppCompat\Programs\Amcache.hve.LOG1
C:\Windows\AppCompat\Programs\Amcache.hve.LOG2
Les trois. À chaque fois. .LOG1 et .LOG2 sont les journaux de transactions de la ruche du registre. Ne prendre que la ruche principale, c'est perdre en silence les écritures les plus récentes.
Par version Windows#
L'artefact s'est déplacé dans ses premiers jours. Histoire complète :
Windows 7 / Server 2008 R2#
Pas de Amcache.hve. Le prédécesseur est RecentFileCache.bcf :
C:\Windows\AppCompat\Programs\RecentFileCache.bcf
Binaire plat (pas une ruche) avec bien moins de métadonnées. AmcacheParser ne le gère pas. Utilisez RecentFileCacheParser ou l'un des scripts Python communautaires. Si vous lisez ceci en 2026, vous avez peu de chances de voir Windows 7 en production, mais cela apparaît dans des environnements legacy et de vieilles images de triage.
Windows 8 / 8.1 / Server 2012 / 2012 R2#
Amcache.hve existe au chemin moderne mais le schéma est legacy avec uniquement les clés Root\Programs et Root\File. AmcacheParser produit *_ProgramEntries.csv mais le détail par fichier est maigre.
Windows 10 / 11 (actuel)#
Même chemin que Windows 8, mais la ruche porte le schéma complet Inventory* (ajouté dans Windows 10 build 1709, octobre 2017). C'est ce que cible la majorité des analyses modernes.
Windows Server 2016 / 2019 / 2022 / 2025#
Chemin identique. Schéma identique. L'appraiser tourne moins souvent que sur les desktops (toutes les quelques jours plutôt que quotidiennement), donc la dernière écriture de la ruche tend à être plus ancienne. Voir Amcache sur Windows Server pour les particularités côté serveur.
Depuis une image disque forensique#
Quand vous travaillez une image plutôt qu'un système vivant, le fichier vit au même chemin à l'intérieur de la partition C: :
<image>\Windows\AppCompat\Programs\Amcache.hve
<image>\Windows\AppCompat\Programs\Amcache.hve.LOG1
<image>\Windows\AppCompat\Programs\Amcache.hve.LOG2
Montez en lecture seule (Arsenal Image Mounter, FTK Imager, losetup + mount -o ro sous Linux) et le chemin est littéralement celui du système de fichiers sous le point de montage. AmcacheParser prend un chemin de fichier normal et lit sans verrou. Pas de manipulation particulière nécessaire.
Volume Shadow Copies#
Sur une station de travail qui tourne depuis des mois, vous trouverez généralement plusieurs copies d'Amcache.hve dans les Volume Shadow Copies. Chaque cliché est un snapshot ponctuel du volume, et chacun contient son propre snapshot d'Amcache.hve et de ses journaux.
Pour les enquêtes où vous soupçonnez une altération anti-forensique de la ruche vivante, vérifiez toujours les clichés. Ils se montent sur des chemins comme :
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\AppCompat\Programs\Amcache.hve
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\Windows\AppCompat\Programs\Amcache.hve
Énumérez avec vssadmin list shadows sur un système vivant ou vshadowmount de libvshadow sur une image forensique. Chacun est une cible de parsing distincte. Faites un diff de leurs sorties si vous soupçonnez que la ruche vivante a été modifiée.
Sur un système vivant#
S'il vous faut absolument lire la ruche sur un hôte vivant (un triage sans le temps de faire une image complète) :
Ne parsez pas C:\Windows\AppCompat\Programs\Amcache.hve sur place. La ruche est tenue ouverte par l'appraiser. La lire directement est peu fiable et constitue une mauvaise pratique forensique.
Copiez d'abord la ruche + les deux journaux dans un répertoire de travail. Pattern PowerShell standard :
$target = 'C:\Triage\Amcache'
New-Item -ItemType Directory -Path $target -Force | Out-Null
# PowerShell élevé. Copier ruche + journaux ensemble.
Copy-Item 'C:\Windows\AppCompat\Programs\Amcache.hve' $target -Force
Copy-Item 'C:\Windows\AppCompat\Programs\Amcache.hve.LOG1' $target -Force
Copy-Item 'C:\Windows\AppCompat\Programs\Amcache.hve.LOG2' $target -Force
# Hash pour la chaîne de garde
Get-ChildItem $target -Filter Amcache.hve* |
ForEach-Object { Get-FileHash -Algorithm SHA256 $_.FullName }Si le système de fichiers refuse de copier parce que l'appraiser a le fichier ouvert, repliez-vous sur un lecteur de volume brut :
RawCopy.exe(suite Joakim Schicht). Lit le fichier en contournant les verrous du système de fichiers.Get-RawFileen PowerShell. Même idée viaCreateFileavecFILE_FLAG_BACKUP_SEMANTICS.- KAPE utilise la même technique en interne. Voir ci-dessous.
Collecte avec KAPE#
La cible Amcache de KAPE est la façon correcte la plus simple :
.\kape.exe `
--tsource C: `
--target Amcache `
--tdest .\out\HOST01\collectedCe que fait KAPE :
- Contourne les verrous du système de fichiers avec son lecteur de volume brut.
- Copie
Amcache.hve+.LOG1+.LOG2versout\HOST01\collected\C\Windows\AppCompat\Programs\. - Préserve les timestamps d'origine et écrit un log de ce qui a été collecté.
Combinez la cible Amcache avec le module AmcacheParser pour un pipeline collecter-puis-parser en une ligne. Voir le cheatsheet CLI AmcacheParser pour les patterns KAPE.
Collecte avec Velociraptor#
Pour collecter sur un parc, le Windows.Forensics.Amcache de Velociraptor le fait à distance :
artifacts:
- Windows.Forensics.Amcache
parameters:
- name: AmcacheGlob
value: 'C:\Windows\AppCompat\Programs\Amcache.hve*'Le * final est volontaire. Il matche la ruche et les deux journaux de transactions en une passe. L'artefact télécharge AmcacheParser si nécessaire, l'exécute côté serveur et téléverse la sortie CSV. Associez à un hunt planifié sur des milliers d'endpoints.
Erreurs courantes de collecte#
À peu près dans l'ordre de fréquence sur les cas réels :
- Copier uniquement
Amcache.hvesans.LOG1/.LOG2. Perd silencieusement les écritures les plus récentes. Toujours les trois. - Lire la ruche vivante sur place. Marche parfois, plante parfois, produit parfois un parse plausible mais faux. Copiez d'abord, toujours.
- Oublier les Volume Shadow Copies dans les cas d'altération. La ruche vivante peut avoir été effacée. Les clichés préservent l'historique.
- Hacher uniquement après le parsing. Hachez avant aussi, pour pouvoir prouver que le parsing n'a pas modifié le fichier.
- Ne pas préserver les timestamps sur les copies collectées. Utilisez
Copy-Item -Force(préserve) ou robocopy avec/COPY:DAT. LeLastWriteTimed'origine de la ruche est en soi une preuve utile.
Pour aller plus loin#
- Documentation KAPE, en particulier les cibles composées
!Acquisitionet!SANS_Triage. - Documentation Velociraptor pour
Windows.Forensics.Amcache. - libvshadow / vshadowmount sous Linux pour l'accès en lecture seule aux snapshots VSS depuis une image forensique.
Liens#
Articles liés
- Récupérer la preuve de binaires supprimés depuis Amcache
Amcache survit aux binaires qu'elle enregistre. Chemin, SHA-1, éditeur, link date et moment d'inventaire persistent des mois après que l'attaquant a effacé le fichier. Le workflow pratique.
- Amcache : la référence forensique complète de la ruche Windows .hve
Amcache est la ruche dans laquelle le Compatibility Appraiser inscrit chaque PE sur disque, avec SHA-1, chemin complet, éditeur, link date et un horodatage d'écriture de clé. La référence, du format à l'usage investigatif.
- FileId Amcache expliqué : le format de hash SHA-1 que Windows stocke
FileId est '0000' plus le SHA-1 des 31 premiers MiB. Retirez le préfixe ou vos lookups VirusTotal ne renvoient silencieusement rien. La référence complète, avec les pièges.
- 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.