Prefetch, Amcache ou ShimCache
Windows enregistre les preuves d'exécution des programmes dans au moins trois endroits distincts, chacun avec son propre format, sa propre rétention et ses propres particularités :
- Prefetch (
C:\Windows\Prefetch\*.pf) — cache de timing par exécution - Amcache (
C:\Windows\AppCompat\Programs\Amcache.hve) — ruche de registre dressant l'inventaire des programmes - ShimCache / AppCompatCache (
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache) — cache de compatibilité stocké dans le registre
Ils se recoupent. Ils se contredisent. Chacun capture quelque chose que les autres manquent.
Prefetch — l'histoire du timing
Prefetch vous indique quand un programme a été exécuté et à quelle
fréquence. Chaque fichier .pf contient jusqu'à huit horodatages
d'exécution récents ainsi qu'un compteur d'exécutions. Il contient
également la liste des fichiers chargés par l'exécutable lors de sa
première exécution, ce qui est utile en analyse de malware.
Ce que Prefetch ne vous donne pas : la liste exhaustive de tous les programmes ayant été exécutés un jour. Les fichiers sont supprimés lorsque le cache est plein (généralement plafonné à 1024 fichiers), si bien qu'un poste de travail actif fera tourner ses entrées les plus anciennes. Prefetch est aussi régulièrement désactivé sur Windows Server.
Tournez-vous vers Prefetch lorsque vous avez besoin de la fréquence d'exécution, de la fraîcheur ou de l'empreinte de chargement d'un exécutable. Utilisez le parseur de ce site pour faire ressortir tous ces éléments en une seule passe.
Amcache — l'histoire de l'inventaire
Amcache est une ruche de registre (Amcache.hve) alimentée par
l'infrastructure Application Compatibility de Windows. Elle enregistre
des métadonnées pour chaque binaire que le système a vu, et pas
seulement ceux qu'il a exécutés. Cela fait d'Amcache l'inventaire le
plus large : hashes SHA-1, tailles de fichiers, éditeur, version,
horodatages d'installation et indication de signature du binaire.
Là où Prefetch vous dit qu'un programme s'est exécuté huit fois mardi dernier, Amcache vous dit que le programme existe, quel est son SHA-1 et approximativement à quel moment il est apparu sur le système. Les deux artefacts se combinent bien : le compteur d'exécutions de Prefetch combiné au hash d'Amcache suffit à affirmer « ce binaire précis a été exécuté N fois ».
Pour le parsing d'Amcache, voyez le parseur Amcache.
ShimCache — l'histoire de la compatibilité
ShimCache (également appelé AppCompatCache) est plus ancien et plus sommaire que les deux autres. Il enregistre le chemin du fichier, l'horodatage de dernière modification et un flag indiquant l'exécution, avec un plafond strict d'environ 1024 entrées sur les versions modernes de Windows. Il existe avant tout pour alimenter le moteur de shimming de compatibilité applicative, pas pour servir la forensique.
ShimCache prend l'avantage dans un cas bien précis : lorsque Prefetch a été désactivé ou effacé et qu'Amcache est indisponible, ShimCache peut encore receler une trace. Il est aussi utile comme source de corroboration : si les trois artefacts s'accordent sur un chemin et un horodatage, la preuve est solide.
Lequel consulter en premier ?
Pour la plupart des enquêtes du type « ce programme s'est-il exécuté ? », l'ordre est le suivant :
- Prefetch pour les preuves d'exécution et la fraîcheur
- Amcache pour le hash, la version et l'inventaire plus large
- ShimCache comme repli de corroboration lorsque les deux premiers sont incomplets ou suspects
Chaque parseur de cette suite traite l'un de ces artefacts. Ensemble, ils comblent les angles morts que chacun d'eux laisserait, pris séparément.