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

4 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 vidé qu'à l'arrêt propre. AmCache écrit en continu. Récupère les deux. Ce sont des co-témoins, pas des substituts.

Chaque analyste junior que j'ai onboardé a posé la même question la première semaine : "Si AmCache est meilleur, pourquoi continue-t-on de récupérer le ShimCache ?" La réponse, c'est qu'ils enregistrent des événements différents, à des moments différents, avec des modes de défaillance différents. Traite-les comme des substituts et tu écriras des rapports qui s'effondrent à la première revue technique.

Arbre de décision ShimCache vs AmCache

En un coup d'œil

ShimCacheAmCache
Emplacement registreHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\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 fichier, flag d'exécution (legacy)Chemin, SHA-1, taille, éditeur, date d'installation, beaucoup plus
Écrit quandUniquement à l'arrêt propreEn continu et à chaque exécution de la tâche Appraiser
Survit au reboot brutalNon, 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é et l'identifier par hash

Quand le ShimCache l'emporte

Le cache se déclenche à l'examen, pas à l'exécution. Cette sensibilité en fait le meilleur témoin pour des fichiers qu'un attaquant a déposés brièvement puis effacés. Un binaire posé à 14:33 dans C:\Users\Public\ et supprimé à 14:35 peut quand même apparaître dans le ShimCache si Windows l'a touché pour une raison quelconque pendant cette fenêtre de deux minutes.

Le cache porte aussi la mtime $STANDARD_INFORMATION du fichier. Cet horodatage n'est pas un temps d'exécution. C'est une propriété du fichier, ce qui signifie qu'il survit aux renommages et copies qui préservent les métadonnées. Utile pour regrouper des builds liés sur plusieurs hôtes. Inutile pour séquencer des événements sur une chronologie, comme couvert dans ce que signifie vraiment l'horodatage du ShimCache.

Quand AmCache l'emporte

Demande à AmCache "ce binaire a-t-il vraiment tourné, et lequel précisément ?" et tu obtiens une vraie réponse. Chaque entrée InventoryApplicationFile sous Amcache.hve porte un hash SHA-1, une taille de fichier, un éditeur, un statut de signature, et un LastWrite par fichier qui sert de proxy pour "quand Appraiser l'a remarqué". C'est suffisant pour pivoter vers VirusTotal, vers du threat intel, ou vers d'autres hôtes du parc même quand le fichier sur disque est parti depuis longtemps.

Le modèle de persistance gagne aussi. AmCache est vidé par compattelrunner.exe à intervalles planifiés et lors d'événements d'installation. Les reboots brutaux et les BSOD ne détruisent pas silencieusement l'activité récente comme c'est le cas pour le ShimCache. Récupère Amcache.hve plus Amcache.hve.LOG1 et Amcache.hve.LOG2 pour rejouer toute transaction en vol.

Les utiliser ensemble

Traite-les comme des co-témoins avec des angles morts différents.

  • Les deux présents, chemins concordants. Preuve forte d'exécution. Utilise AmCache pour l'identité par hash, le ShimCache pour confirmer que le fichier a vécu à ce chemin à un moment donné.
  • ShimCache uniquement. Le fichier a existé. L'exécution n'est pas prouvée. Cherche corroboration avec Prefetch, EVTX ou BAM/DAM.
  • AmCache uniquement. L'hôte n'a pas été arrêté proprement depuis l'activité. Le ShimCache n'a jamais été vidé. Prélève un dump RAM si la machine est encore debout ; le ShimCache en mémoire est là.
  • Aucun présent, mais tu soupçonnes une activité. Vérifie que la tâche Appraiser a tourné. Un Compatibility Appraiser désactivé produit des hives AmCache qui paraissent vides.

Pour les détails techniques de la disposition, voir le guide du format binaire Windows 10/11. Pour parser un hive tout de suite sans rien installer, dépose-le dans le Shimcache Parser. Il tourne entièrement dans le navigateur.

Lectures complémentaires

Articles liés