ShimCache vs AmCache : quel artefact Windows répond à quelle question

3 min de lecture

TL;DR. Le ShimCache prouve qu'un fichier a existé sur disque ; AmCache prouve qu'il a été exécuté et l'identifie par SHA-1. Le ShimCache n'est flushé qu'à l'arrêt propre — AmCache écrit en continu. Récupérez les deux ; ils sont co-témoins, pas substituts.

ShimCache et AmCache sont les deux artefacts basés sur le registre les plus cités dans les enquêtes d'exécution de programmes Windows. Ils se ressemblent. Ils ne sont pas interchangeables. Voici une référence rapide pour choisir lequel dégainer en fonction de la question que vous vous posez.

Arbre de décision ShimCache vs AmCache

Vue d'ensemble

ShimCacheAmCache
EmplacementHKLM\SYSTEM\…\AppCompatCacheC:\Windows\AppCompat\Programs\Amcache.hve
CapacitéJusqu'à 1 024 entréesDes milliers d'entrées, pas de plafond fixe
Données par entréeChemin, mtime, (legacy) drapeau d'exécutionChemin, SHA-1, taille, éditeur, date d'install, et bien plus
ÉcritUniquement à l'arrêtEn continu (et selon des intervalles planifiés)
Survit à un crashNon — les entrées récentes sont perduesOui — déjà sur disque
Idéal pourProuver qu'un fichier a existé sur disqueProuver qu'un fichier a tourné + l'identifier par hash

Quand le ShimCache l'emporte

Le ShimCache contient une entrée pour tout exécutable que Windows a simplement examiné pour des raisons de compatibilité. Cela le rend sensible : un binaire qu'un attaquant a déposé puis immédiatement supprimé peut encore laisser une trace ShimCache. Si votre question est « ce fichier a-t-il déjà existé sur cet hôte ? », le ShimCache est votre allié.

C'est aussi le seul des deux à capturer le mtime $STANDARD_INFORMATION du fichier. Cet horodatage n'est pas l'heure d'exécution (une confusion fréquente couverte dans un autre billet), mais il ancre l'identité du fichier dans le temps.

Quand l'AmCache l'emporte

AmCache est ce qu'il vous faut quand la question est « ce fichier a-t-il réellement été exécuté, et quel fichier exactement ? ». Chaque entrée AmCache transporte un hash SHA-1, la taille du fichier, l'éditeur, la date d'installation — assez pour identifier un binaire sans ambiguïté, même si le fichier sur disque a depuis été remplacé ou effacé.

AmCache persiste aussi. Parce que Windows l'écrit en continu plutôt qu'uniquement à l'arrêt, l'activité récente sur un système qui a planté ou qui a été redémarré brutalement a plus de chances de se retrouver dans AmCache que dans le ShimCache.

Comment les utiliser ensemble

En pratique, traitez-les comme des co-témoins :

  • Une entrée dans les deux, ShimCache et AmCache, avec des chemins concordants et un horodatage AmCache récent, est une preuve forte d'exécution.
  • Une entrée dans le ShimCache seul dit que le fichier était au moins sur disque à un moment donné. Cherchez des preuves corroborantes (Prefetch, AmCache, journaux d'événements) avant d'affirmer l'exécution.
  • Une entrée dans AmCache seul, sans Prefetch ni ShimCache, signifie typiquement que l'hôte n'a pas été arrêté proprement depuis l'activité — le ShimCache n'a jamais été écrit sur disque.

Pour les détails techniques du format binaire du ShimCache, voir Analyser le ShimCache : le format binaire Windows 10 et 11. Pour analyser une ruche dès maintenant sans rien installer, utilisez le Shimcache Parser — tout s'exécute dans votre navigateur.

Pour aller plus loin

Articles connexes