Prefetch vs Amcache vs ShimCache
Windows enregistre des preuves d'exécution de programmes à au moins trois endroits. Ils se recoupent. Ils se contredisent. Chacun capture quelque chose que les autres ratent. L'erreur est de traiter l'un d'eux comme faisant autorité.
- Prefetch :
C:\Windows\Prefetch\*.pf. Cache de chronométrage par exécution. - AmCache :
C:\Windows\AppCompat\Programs\Amcache.hve. Hive de registre, inventaire de programmes. - Shimcache (AppCompatCache) :
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache. Cache de compatibilité adossé au registre.
Prefetch — l'histoire du tempo
Prefetch vous dit quand un binaire a tourné et combien de fois. Chaque .pf porte jusqu'à huit emplacements FILETIME de dernière exécution (en v26+), un compteur d'exécutions monotone, les informations de volume pour le volume de lancement et la liste de métriques de fichiers des chemins que le binaire a touchés durant ses dix premières secondes. Le nom embarque un hash du chemin de lancement, de sorte que deux copies du même binaire dans des répertoires différents produisent deux entrées .pf distinctes.
Ce que Prefetch ne donne pas : un historique complet. Le répertoire est plafonné (typiquement autour de 1024 entrées ; les anciennes expirent durant la maintenance, plus agressivement sur Win10 1709+ et sur Win11 22H2+ adossé SSD). Il ne tourne pas non plus sur Windows Server par défaut.
Commencez par Prefetch quand la question est « cela a-t-il tourné, quand et d'où ». Le parser de ce site ou PECmd sur le dossier l'expose en une passe.
AmCache — l'histoire de l'inventaire
AmCache est une hive de registre (Amcache.hve) peuplée par Application Experience et l'infrastructure de compatibilité associée. Il enregistre des métadonnées pour chaque binaire que le système a vu, c'est-à-dire catalogué par AppCompat, pas seulement exécuté. Hash SHA-1, taille, éditeur, version, statut de signature, date d'installation et une poignée d'autres champs.
Là où Prefetch dit « cela a tourné huit fois mardi dernier », AmCache dit « ce binaire existe à ce chemin avec ce SHA-1 et cet éditeur ». Les combiner donne « ce binaire exact, identifié par hash, a été exécuté N fois ». Cette combinaison est ce qui vous permet de défendre une affirmation d'exécution quand le binaire sur disque a été remplacé.
Pour une analyse offline d'AmCache, voir le parser AmCache. Sur les hôtes antérieurs à Win8, l'artefact analogue est RecentFileCache, beaucoup plus mince mais couvrant le même trou.
Shimcache — l'histoire de la compatibilité
Shimcache (AppCompatCache) vit dans la hive SYSTEM et existe pour alimenter le moteur de shimming de compatibilité d'applications, pas la DFIR. Il enregistre le chemin du fichier, l'horodatage de dernière modification d'après NTFS, et un drapeau d'exécution (dont le sens a évolué entre versions Windows, parfois de manière significative). Plafond dur autour de 1024 entrées sur Windows moderne.
Il est plus ancien et moins profond que les deux autres. Le drapeau d'exécution n'est pas fiable sur les versions modernes : sa présence ne prouve pas l'exécution, et son absence ne prouve pas la non-exécution. Traitez l'horodatage comme l'heure de modification NTFS du binaire à l'instant où Shimcache l'a observé, pas comme une heure d'exécution.
Shimcache gagne dans un scénario précis : quand Prefetch a été nettoyé et qu'AmCache est indisponible ou également touché, Shimcache détient souvent encore un enregistrement parce qu'il vit dans la hive SYSTEM, que les attaquants laissent plus souvent tranquille. Il est aussi utile comme troisième source de corroboration : si Prefetch, AmCache et Shimcache placent le binaire au même chemin avec des horodatages cohérents, la preuve est difficile à contester.
Lequel d'abord
Pour la plupart des questions « cela a-t-il tourné » :
- Prefetch. Fraîcheur et fréquence d'exécution.
- AmCache. Hash, signature et inventaire élargi.
- Shimcache. Corroboration de chemin et repli quand les deux premiers ont été touchés.
Pour le tableau plus large, aucun de ces trois n'est l'arrivée. Le journal USN vous dit quand le binaire est arrivé sur disque et quand il a été touché. SRUM vous dit l'usage des ressources par processus, avec des octets réseau par application sur les stations où SRUM est activé. Les fichiers LNK et les jump lists mettent l'utilisateur dans le tableau. L'EVTX Security/Sysmon vous donne lignes de commande, processus parents et contexte utilisateur qu'aucun des trois artefacts d'exécution ci-dessus ne fournit seul.
Chaque artefact de cette flotte couvre l'un de ces aspects. Ensemble, ils couvrent les trous que chacun laisse séparément.
Pour aller plus loin
- Yogesh Khatri, les billets originaux sur AmCache — toujours la description la plus claire de ce que contient réellement la hive.
- Mandiant, « Caching Out: The Value of Shimcache » — lecture obligatoire sur ce que signifie et ne signifie pas le drapeau d'exécution.
- Eric Zimmerman, le trio AppCompatCacheParser / AmcacheParser / PECmd pour l'analyse offline.