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

4 min de lecture

TL;DR. Non. Une entrée ShimCache prouve que Windows a examiné le fichier — souvent mais pas toujours pour l'exécution. Windows 10/11 a supprimé entièrement le drapeau d'exécution dans le cache. Confirmez avec Prefetch, AmCache ou les événements de création de processus (Security 4688 / Sysmon 1).

« Le ShimCache montre qu'il a tourné » est l'un des raccourcis les plus fréquents en réponse à incident — et il est suffisamment souvent faux pour piéger les enquêteurs devant un tribunal. Voici une réponse soignée à la question « une entrée ShimCache prouve-t-elle qu'un programme a été exécuté ? », et ce qu'il faut faire à la place.

Ce que le ShimCache enregistre réellement

Le ShimCache (techniquement l'Application Compatibility Cache, ou AppCompatCache) stocke des entrées pour les exécutables que Windows a examinés, généralement pour décider d'appliquer un shim de compatibilité. Examiner n'est pas la même chose qu'exécuter. Windows peut examiner un fichier quand :

  • l'utilisateur double-clique dessus (souvent, mais pas toujours, suivi d'une exécution),
  • l'Explorateur énumère un répertoire et inspecte un binaire,
  • un outil scanne le système de fichiers (AV, indexeurs, agents de sécurité),
  • le fichier est ouvert via clic droit « Propriétés » ou un flux shell similaire.

La plupart de ces raisons coïncident avec l'exécution, mais le lien est statistique, pas logique. Un binaire qu'un attaquant a déposé et supprimé sans le lancer peut figurer dans le ShimCache simplement parce que quelque chose sur le système l'a touché.

Le changement Windows 10 / 11 qui compte

Sur les anciennes versions de Windows, les entrées ShimCache portaient un drapeau Executed positionné lorsque le binaire avait tourné. Ce drapeau était largement utilisé comme signal grossier « a-t-il tourné ? ».

Sur Windows 10 et 11, ce drapeau a été supprimé. Le ShimCache moderne n'a aucun marqueur interne disant qu'une exécution a eu lieu. Donc, même si vous faisiez confiance au drapeau legacy, vous devez cesser dès que vous passez sur du Windows moderne.

Pour voir exactement quels champs expose une entrée ShimCache moderne, la référence du format binaire détaille chaque offset.

Comment confirmer l'exécution

Traitez un résultat ShimCache comme une hypothèse, puis corroborez avec des artefacts qui enregistrent effectivement l'exécution :

  • Prefetch (C:\Windows\Prefetch\*.pf) — écrit au démarrage du processus et persiste entre les redémarrages. Un fichier Prefetch concordant est une preuve forte d'exécution.
  • AmCache (Amcache.hve) — ruche de registre distincte qui enregistre les programmes exécutés et installés, avec des hashs SHA-1 pour une identification sans ambiguïté. (Pourquoi les deux ? Voir ShimCache vs AmCache.)
  • Journaux Security et Sysmon — les événements de création de processus (4688, Sysmon 1) sont la preuve d'exécution la plus fiable disponible.
  • UserAssist, BAM/DAM, RecentApps — signaux d'exécution supplémentaires basés sur le registre.

La référence des artefacts d'exécution de programmes résume ce que chacun capture et leur fiabilité en pratique.

En résumé

Une entrée ShimCache vous dit que Windows a regardé un fichier particulier à un moment donné. C'est un excellent pivot pour prouver l'existence, pas l'exécution. Pour affirmer qu'un programme a tourné, couplez le ShimCache à Prefetch, AmCache ou aux journaux de création de processus — et écrivez votre conclusion dans un langage qui correspond aux preuves dont vous disposez réellement.

Pour analyser le ShimCache d'une ruche SYSTEM dès maintenant, déposez-la dans le Shimcache Parser. Tout s'exécute dans votre navigateur ; le fichier ne quitte jamais la page.

Pour aller plus loin

Articles connexes