Le ShimCache prouve-t-il qu'un programme a été exécuté ?

4 min de lecture

TL;DR. Non. Une entrée du ShimCache prouve que Windows a examiné le fichier, généralement mais pas toujours pour l'exécution. Windows 10/11 a totalement supprimé le flag d'exécution dans le cache. Confirme l'exécution avec Prefetch, AmCache ou des événements de création de processus (Security 4688 / Sysmon 1).

"Le ShimCache montre qu'il a tourné" est la seule phrase la plus coûteuse en réponse à incident Windows. Elle finit dans les rapports. Elle est attaquée par la partie adverse. Elle met l'analyste à la barre à expliquer pourquoi une mtime n'est pas un démarrage de processus, pendant que tout le monde dans la salle en apprend plus sur l'Application Compatibility Cache qu'il n'en a jamais voulu. Ne sois pas cet analyste.

Ce que le ShimCache enregistre réellement

Le cache, formellement l'Application Compatibility Cache stocké à HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache, capture les exécutables que Windows a examinés pour décider si un shim de compatibilité doit s'appliquer. Examiner n'est pas exécuter. Windows examine un binaire quand :

  • Un utilisateur double-clique dessus.
  • Explorer énumère un dossier et inspecte un en-tête PE pour des données d'icône.
  • Un AV, un indexeur ou un EDR parcourt le système de fichiers.
  • Un "Propriétés" sur clic droit récupère la ressource version.
  • Un appel système résout un chemin qui se termine en .exe.

La plupart se produisent en même temps qu'une exécution. Certaines non. Un binaire qu'un attaquant a déposé, renommé et supprimé sans jamais le lancer peut quand même se retrouver dans le cache parce que Defender l'a scanné à la volée.

Le flag que Windows 10 a retiré

Les anciennes versions (XP à Windows 8.1) intégraient un flag Executed dans chaque entrée. Beaucoup d'analystes ont appris à grep "yes" et à passer à autre chose. Windows 10 a retiré ce flag. Windows 11 ne l'a pas remis. Le cache moderne porte le chemin, une mtime et des métadonnées structurelles. Il n'y a aucun marqueur dans le cache qui dit "ceci a tourné".

Si tu t'es formé sur des hives legacy et que tu lis maintenant un SYSTEM de Windows 10/11, recalibre. La colonne "Executed" dont tu te souviens a disparu. Tout parser sérieux (AppCompatCacheParser d'Eric Zimmerman, Shim Cache Parser de Mandiant, cet outil) reflète honnêtement cette absence. Si tu vois un outil qui rapporte un flag d'exécution sur un hive moderne, cet outil l'invente.

Pour la disposition au niveau des champs, voir le guide du format binaire Windows 10/11.

Ce qui confirme l'exécution

Traite le hit du ShimCache comme une hypothèse. Puis va chercher des preuves qui enregistrent réellement la création de processus.

  • Prefetch. Les fichiers C:\Windows\Prefetch\*.pf sont écrits dans les ~10 secondes après chaque démarrage de processus sur les SKUs poste de travail. Compteur d'exécutions, huit dernières heures d'exécution, modules chargés. Si le fichier existe, le binaire a tourné. Le parser Prefetch explique le format et les cas de désactivation.
  • AmCache. Amcache.hve porte des hash SHA-1 et des horodatages explicites de première exécution, écrits en continu. Le parser AmCache a le guide des champs.
  • EVTX / Sysmon. Security 4688 (avec l'audit de ligne de commande activé) et Sysmon Event ID 1 sont les enregistrements de plus haute fidélité que tu obtiendras. Le parser EVTX couvre le workflow de triage.
  • BAM / DAM. Heures de dernière exécution par utilisateur sous HKLM\SYSTEM\CurrentControlSet\Services\bam\State. Pas chères à lire, criminellement sous-utilisées.
  • UserAssist. Uniquement les lancements Explorer interactifs, noms encodés en ROT13. Utile pour "l'utilisateur a-t-il double-cliqué dessus ?", pas pour "le binaire a-t-il jamais tourné ?".

Les schémas de recoupement sont dans la référence des artefacts d'exécution de programmes.

Comment le formuler dans un rapport

Mauvais : "Le ShimCache montre que mimikatz.exe a été exécuté à 14:33:21 UTC le 2026-04-11."

Meilleur : "Le ShimCache enregistre le fichier C:\Users\Public\mimikatz.exe avec une mtime $STANDARD_INFORMATION 2026-04-11 14:33:21 UTC. L'entrée Prefetch MIMIKATZ.EXE-A1B2C3D4.pf montre une exécution à 14:34:02 UTC. Le SHA-1 d'AmCache correspond au build connu de mimikatz 2.2.0."

La seconde phrase tient face à un contre-interrogatoire. La première pas.

Parser un hive sans quitter le navigateur

Dépose ton hive SYSTEM dans le Shimcache Parser. Tout s'exécute côté client. Pas de téléversement, ce qui compte quand le hive vient d'un environnement réglementé ou d'un engagement client.

Lectures complémentaires

Articles liés