Amcache vs Prefetch : ce que chacun prouve vraiment
Amcache et Prefetch sont tous deux des artefacts Windows qui vous disent quels binaires ont été présents sur un hôte. Ils sont constamment confondus, et cette confusion produit des conclusions fausses. Cette page est le guide pratique sur ce que chacun prouve vraiment et quand utiliser lequel.
La différence phare, d'emblée :
Prefetch prouve l'exécution. Amcache prouve la présence.
Pour la référence Amcache plus large, voir la référence complète Amcache. Pour la structure de fichier, voir Structure du registre Amcache.
Ce que chacun enregistre#
Prefetch#
Un répertoire de fichiers .pf (C:\Windows\Prefetch\) maintenu par
le sous-système Prefetcher. Chaque fichier est créé la première
fois qu'un binaire est exécuté, et mis à jour lors des exécutions
suivantes. Chaque fichier .pf contient :
- Le nom et le hash de l'exécutable.
- Jusqu'à 8 horodatages d'exécution (10 sur Windows 11) — runs réels.
- Un compteur d'exécutions.
- Une liste des fichiers chargés par l'exécutable pendant ses 10 premières secondes d'exécution.
- Une liste des volumes référencés.
Prefetch existe parce que Windows utilise les données de fichiers
chargés pour pré-cacher ces fichiers avant la prochaine exécution
du binaire, accélérant le temps de lancement. La valeur forensique est
un effet de bord : l'existence d'un .pf est la preuve que le binaire
s'est exécuté.
Amcache#
Une seule ruche du registre
(C:\Windows\AppCompat\Programs\Amcache.hve) alimentée par la tâche
planifiée Compatibility Appraiser. L'appraiser parcourt le système
périodiquement (environ chaque jour sur les postes de travail) et
inventorie chaque binaire PE qu'il trouve, en enregistrant :
- Chemin complet, taille, hash SHA-1 des 31 premiers Mio.
- Métadonnées PE (éditeur, version, date de link, langue).
- Contexte par application (
ProgramId, date d'installation). - Contexte par pilote et par périphérique pour les catégories pertinentes.
Amcache existe pour soutenir l'infrastructure de télémétrie de compatibilité de Windows. La valeur forensique est, à nouveau, un effet de bord.
La différence fondamentale#
| Question | Prefetch | Amcache |
|---|---|---|
| « Ce binaire s'est-il exécuté sur cet hôte ? » | Oui — définitif. | Non. |
| « Ce binaire a-t-il jamais été sur disque ? » | Pas directement (seulement s'il a tourné). | Oui. |
| « Quand s'est-il exécuté ? » | Oui — jusqu'à 8/10 horodatages par binaire. | Non. |
| « Quel est son SHA-1 ? » | Hash existe mais c'est un Prefetch hash, pas SHA-1. | Oui — SHA-1 des 31 premiers Mio. |
| « Quel est son chemin complet ? » | Récupérable. | Oui — directement. |
| « Survit-il à la suppression ? » | Le .pf survit à la suppression du binaire. |
L'entrée de ruche survit à la suppression du binaire. |
| « Survit-il au reboot système ? » | Oui. | Oui. |
| « Survit-il à l'effacement direct de l'artefact ? » | Non — les fichiers .pf peuvent être supprimés. |
Non — la ruche peut être supprimée (mais les journaux de transactions et VSS préservent souvent). |
Les deux artefacts répondent à des questions différentes. Là où ils se recoupent (même fichier, même hôte, même fenêtre temporelle), ils se corroborent mutuellement. Là où ils divergent, la divergence est elle-même une information.
Comment ils se recoupent et divergent#
Les deux présents (le cas typique)#
Un binaire s'exécute, le Prefetcher crée un .pf, et l'appraiser
l'inventorie à son prochain passage. Vous voyez le binaire dans les
deux artefacts. Le Prefetch vous dit les heures d'exécution ;
l'Amcache vous dit le chemin, l'éditeur, le hash et les métadonnées.
Amcache seul — « présent mais jamais exécuté »#
Vous trouvez un binaire dans *_UnassociatedFileEntries.csv sans
.pf correspondant. Raisons possibles :
- Le binaire a été placé sur disque mais jamais exécuté.
- Le binaire a été exécuté mais Prefetch est désactivé (rare — la
clé du registre
PrefetchParameterscontrôle cela). - Le binaire a été exécuté une fois mais le
.pfa été supprimé (anti-forensique, nettoyage de disque, suppression intentionnelle).
La lecture « présent mais jamais exécuté » est la plus courante, et
c'est un constat très différent d'« exécuté ». Un outil
attaquant en place mais jamais lancé, une DLL déposée qui n'a été
chargée que par rundll32.exe (auquel cas le .pf de rundll32.exe
se met à jour à la place), un payload en attente d'un déclencheur qui
n'est jamais venu.
Prefetch seul — « exécuté mais pas d'inventaire »#
Vous trouvez un .pf pour un binaire, mais aucune ligne dans
Amcache. Raisons possibles :
- Le binaire s'est exécuté entre passages de l'appraiser et a été supprimé avant le passage suivant. Le Prefetch a survécu ; Amcache n'a jamais vu le fichier.
- Le binaire vit dans un chemin que l'appraiser ne scanne pas.
- L'appraiser est désactivé ou dysfonctionne.
La lecture « exécuté mais pas d'inventaire » est le signal plus fort d'un nettoyage délibéré. Le binaire a vécu assez longtemps pour s'exécuter, puis a disparu avant le passage d'inventaire suivant. Ce timing est caractéristique de :
- Stagers C2 Cobalt Strike / Sliver / similaires qui déposent, exécutent et s'auto-suppriment.
- Outillage en mémoire qui n'a écrit qu'un minuscule launcher sur disque très brièvement.
- Déploiement de wiper où l'opérateur a retiré le dropper après exécution réussie.
Les deux absents — « jamais vu »#
Un binaire n'apparaît ni dans Prefetch ni dans Amcache. Le cas le plus fort pour « cela n'est jamais arrivé sur cet hôte » — mais pas concluant :
- Les deux artefacts peuvent être effacés par un attaquant suffisamment capable.
- Un binaire qui ne s'est jamais exécuté et a été inventorié dans une brève fenêtre entre passages de l'appraiser peut être absent des deux même dans des circonstances bénignes.
- Sur les serveurs avec appraiser désactivé, Amcache peut être entièrement vide pendant certaines périodes.
Différences de hashing#
Un piège qui attrape les nouveaux analystes :
- Prefetch hash est un hash de chemin spécifique à Windows (pas
un hash de contenu). Il est dans le nom de fichier
.pf:NOTEPAD.EXE-1A2B3C4D.pf. Vous ne pouvez pas le soumettre à VirusTotal. - Amcache hash est un vrai SHA-1 des 31 premiers Mio. Vous pouvez le soumettre directement à VirusTotal. Voir FileId Amcache expliqué.
Pour obtenir un hash de contenu depuis Prefetch, vous avez besoin du
binaire lui-même — le fichier .pf ne contient ni le binaire ni un
hash de contenu.
Comment les combiner dans une timeline#
La bonne façon d'utiliser les deux :
- Analyser les deux. AmcacheParser pour Amcache ; PECmd (aussi Zimmerman) pour Prefetch.
- Charger les deux CSVs dans Timeline Explorer. Filtrer Prefetch
à la fenêtre temporelle d'intérêt du
*_UnassociatedFileEntries.csvde l'hôte. - Trier depuis Amcache. Appliquer le filtre « PE non signé dans chemin inscriptible par l'utilisateur » pour faire ressortir les binaires suspects.
- Confirmer l'exécution via Prefetch. Pour chaque ligne suspecte,
vérifier si un
.pfexiste. Si oui, vous avez la preuve d'exécution. Si non, vous n'avez que la présence. - Recroiser les horodatages. Prefetch donne des heures
d'exécution précises ; le
KeyLastWriteTimestampd'Amcache donne une heure d'inventaire qui borne le moment où le binaire est apparu pour la première fois. Le plus tôt entre « premier run Prefetch » et « premier inventaire Amcache » est votre meilleure estimation du moment où le binaire est arrivé.
Pour en savoir plus sur le pivot Amcache borné dans le temps, voir Horodatages Amcache expliqués.
Table de décision rapide#
| Votre question | Regardez… |
|---|---|
| Ce binaire s'est-il jamais exécuté sur cet hôte ? | Prefetch. |
| Quand ce binaire s'est-il exécuté ? | Prefetch (jusqu'à 8/10 fois). |
| Ce binaire était-il présent sur cet hôte ? | Amcache. |
| Quel est son hash SHA-1 ? | Hash Amcache. |
| Quel était son chemin complet ? | FullPath Amcache (ou récupérer depuis les métadonnées Prefetch). |
| S'est-il exécuté plusieurs fois ? | Compteur de runs Prefetch. |
| Quels autres fichiers a-t-il chargés à l'exécution ? | Liste des fichiers chargés Prefetch. |
| Le binaire est-il encore sur disque ? | Vérification système de fichiers ; Amcache ne le dit pas. |
| Le contenu du binaire a-t-il changé dans le temps ? | Amcache (lignes avec le même FullPath, Hash différent, KeyLastWriteTimestamp différent). |
| Ce binaire est-il présent sur d'autres hôtes ? | Hash et ProgramId Amcache à travers les ruches collectées. |
Implications anti-forensiques#
Les deux artefacts peuvent être manipulés, mais ils ont des faiblesses différentes :
- Prefetch est par-fichier. Un attaquant qui veut nettoyer après
un binaire spécifique n'a qu'à supprimer le
.pfde ce binaire. Facile et ciblé. - Amcache est monolithique. Nettoyer une entrée spécifique nécessite d'éditer la ruche en place — possible, mais plus impliquant que supprimer un fichier. Beaucoup d'attaquants se contentent de supprimer toute la ruche, ce qui est bruyant (l'appraiser la recrée) et forensiquement évident.
- Les journaux de transactions et VSS préservent l'historique Amcache que l'attaquant peut ne pas avoir pensé à nettoyer. Voir Où se trouve Amcache.hve sur disque pour le workflow de récupération VSS.
Dans une enquête où vous suspectez du sabotage, l'absence des entrées attendues dans les deux artefacts est elle-même le constat.
Voir aussi#
- Référence complète Amcache — l'artefact en intégralité.
- Amcache vs ShimCache — l'autre grand artefact « ce binaire a-t-il touché cet hôte ? ».
- Amcache vs SRUM — le troisième artefact de preuve d'exécution pour les questions à fenêtre longue.
- Horodatages Amcache expliqués — la bonne façon de borner un pivot Amcache dans le temps.
- Amcache pour l'investigation de malware — comment Amcache et Prefetch se combinent dans un playbook d'intrusion réel.
Vous voulez regarder une ruche en parallèle de vos données Prefetch ? Déposez la ruche sur la page d'accueil de l'analyseur — elle s'analyse entièrement dans votre navigateur et se marie bien avec la sortie CSV de PECmd.
Articles liés
- Qu'est-ce qu'un fichier .pf vs une entrée Amcache ?
Les fichiers .pf sont des enregistrements Windows Prefetch — preuve qu'un binaire s'est exécuté, avec horodatages d'exécution et listes de fichiers chargés. Les entrées Amcache enregistrent la présence, avec le hash SHA-1 et les métadonnées.
- Amcache vs SRUM : présence vs usage de ressources sur fenêtre longue
SRUM suit l'usage de ressources par application sur 30 jours et plus ; Amcache inventorie chaque binaire présent sur disque. Voici comment ils se complètent dans une timeline DFIR Windows.
- Amcache vs ShimCache : quand chaque artefact gagne
ShimCache et Amcache enregistrent tous deux les binaires ayant touché un hôte Windows. Ce sont des mécanismes différents avec des limites différentes — voici quand utiliser chacun, et ce que prouve réellement leur recoupement.
- Comparatif des analyseurs Amcache : AmcacheParser CLI, outil navigateur, Volatility, RegRipper
Comparaison côte à côte des quatre façons d'analyser une ruche Windows Amcache.hve en 2026 — AmcacheParser CLI d'Eric Zimmerman, outil navigateur, Volatility 3 et RegRipper.