Aller au contenu

Exécution

ShimCache (AppCompatCache)

Fiche ShimCache (AppCompatCache) : emplacement dans SYSTEM, nombre d'entrées par version, ordre, sens de l'horodatage et limites comme preuve d'exécution.

Emplacement
SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache
Prouve
Un chemin a été vu par le moteur de compatibilité ; sous 7/8, exécution probable
Horodatages
Date $SI de modification du fichier par entrée en FILETIME, UTC (pas une heure d'exécution) ; LastWrite de la clé SYSTEM = dernière écriture
Rétention
Écrit seulement à l'arrêt ou au redémarrage ; plafond de 1 024 entrées (96 sous XP, 512 sous 2003), anciennes évincées ; entrées récentes en RAM
Accès
Administrateur ; ruche SYSTEM verrouillée à chaud : NTFS brut (KAPE), VSS ou reg save ; une copie à chaud ne contient que le dernier cache écrit
Preuve de
Exécution
Type
Registre
Windows
XPVista / 78 / 8.11011
Cible KAPE
RegistryHivesSystem
Velociraptor
Windows.Triage.Targets:RegistryHivesSystem

Présentation

Le cache de compatibilité des applications, appelé couramment ShimCache, est tenu par le moteur de compatibilité de Windows pour décider rapidement si un exécutable a besoin d'un correctif (shim). Chaque entrée enregistre un chemin de fichier et la date de dernière modification de ce fichier. Le cache vit en mémoire noyau et est sérialisé dans la ruche SYSTEM, ce qui en fait une trace durable des exécutables rencontrés par le système, y compris de fichiers qui n'existent plus.

Emplacement

Version de WindowsClé (ruche SYSTEM)Entrées max.
XPControlSet00x\Control\Session Manager\AppCompatibility\AppCompatCache96
Server 2003ControlSet00x\Control\Session Manager\AppCompatCache\AppCompatCache512
Vista / 7 / 8 / 8.1ControlSet00x\Control\Session Manager\AppCompatCache\AppCompatCache1 024
10 / 11ControlSet00x\Control\Session Manager\AppCompatCache\AppCompatCache1 024

Sur un système en fonctionnement, le chemin commence par HKLM\SYSTEM\CurrentControlSet ; dans une ruche hors ligne, lisez la clé Select pour savoir quel ControlSet00x était actif (voir jeu de contrôle). Chaque jeu de contrôle peut contenir sa propre copie.

Ce que l'artefact prouve

  • La présence : un fichier existait à ce chemin, avec cette date de modification, lorsque le moteur de compatibilité l'a évalué.
  • L'exécution, selon la version : sous Windows 7 et 8, une entrée porte un indicateur positionné lors de la création effective du processus, que les parseurs affichent comme « Executed ». Sous Windows 10 et 11, les parseurs courants n'exposent pas cet indicateur, et des entrées sont aussi ajoutées quand l'Explorateur se contente d'afficher ou d'inspecter des exécutables. Lisez une entrée comme « vu », pas « lancé », sauf si un autre artefact confirme l'exécution.
  • L'ordre : les entrées sont stockées de la plus récente à la plus ancienne ; la position donne une séquence approximative, même sans date d'exécution.
  • Il n'enregistre ni l'utilisateur, ni le nombre d'exécutions, ni l'heure d'exécution.

Champs clés

ChampSignification
Position dans le cache0 = entrée insérée ou mise à jour le plus récemment
CheminChemin complet de l'exécutable (ou script / DLL selon les versions)
Dernière modificationDate de modification $STANDARD_INFORMATION du fichier au moment de la mise en cache
Indicateur d'exécutionWindows 7/8 uniquement : création de processus observée
Taille du fichierWindows XP uniquement
DonnéesOctets supplémentaires propres à la version (sous Windows 10+, informations sur les applications empaquetées)

Horodatages

HorodatagePositionné quandFormatPièges
Dernière modificationCopiée depuis la date de modification $SI du fichier à la création ou mise à jour de l'entréeFILETIME, UTCCe n'est pas une date d'exécution : c'est la date de modification du fichier lui-même, que le timestomping peut altérer
LastWrite de la ruche / de la cléÉcriture du cache dans le registreFILETIME, UTCEn général le dernier arrêt ou redémarrage propre, pas l'instant d'ajout d'une entrée

Rétention et effacement

  • Le cache est écrit dans le registre à l'arrêt ou au redémarrage. Sur un système non redémarré depuis l'incident, les entrées les plus récentes n'existent qu'en mémoire : acquérez la RAM (ou hiberfil.sys) pour les obtenir.
  • À la limite, les entrées les plus anciennes sont évincées.
  • Modifier un fichier (nouvelle date de modification) met à jour son entrée et la replace en tête.
  • Un cache vidé ou tronqué avec un LastWrite récent est suspect ; comparez les jeux de contrôle et les clichés instantanés de la ruche SYSTEM.

Collecte

  • Cible KAPE : RegistryHivesSystem (SYSTEM avec ses journaux de transactions)
  • Velociraptor (Windows.Triage.Targets) : RegistryHivesSystem
  • Commandes natives (administrateur) :
reg save HKLM\SYSTEM E:\case\SYSTEM.hiv

reg save exporte la ruche active, qui ne contient toujours que le dernier cache écrit.

Outils d'analyse

  • AppCompatCacheParser (Eric Zimmerman) : AppCompatCacheParser.exe -f SYSTEM --csv E:\out. Tous les jeux de contrôle sont extraits par défaut (-c en sélectionne un) ; sans -f, l'outil lit le registre actif ; --nl ignore les journaux de transactions.
  • ShimCacheParser (Mandiant, open source) : analyse les ruches, les exports .reg et les sorties mémoire.
  • RegRipper : plugin appcompatcache.
  • Velociraptor : Windows.Registry.AppCompatCache sur les postes en direct.
  • Volatility : les plugins shimcache lisent le cache en mémoire pas encore écrit sur disque.

Conseils d'investigation

  • Cherchez les outils et charges dans des emplacements accessibles en écriture et les noms de fichiers d'attaque connus ; ShimCache les conserve souvent bien après la disparition des fichiers et de leur Prefetch.
  • Servez-vous de la position d'un exécutable légitime dont l'heure de lancement est connue pour encadrer le moment d'ajout d'une entrée suspecte voisine.
  • Une date de modification antérieure à la création du fichier sur disque, ou une valeur ronde inhabituelle, peut signaler du timestomping.
  • Sous Windows 10/11, confirmez toujours l'exécution avec Amcache, BAM/DAM, le Prefetch ou les événements de création de processus.
  • Analysez chaque ControlSet00x et les ruches SYSTEM des clichés instantanés : les anciennes copies peuvent contenir des entrées évincées du cache actuel.

Artefacts liés

Termes du glossaire

Guides

Tous les artefacts sur une page : aide-mémoire