Le ShimCache enregistre-t-il les fichiers supprimés ?

3 min de lecture

TL;DR. Oui. Une entrée ShimCache persiste dans le registre, que le fichier existe encore sur disque ou non. Supprimer le binaire ne supprime pas son entrée ShimCache — c'est pour cela que l'artefact est si précieux pour attraper les outils qu'un attaquant a déposés, utilisés puis effacés.

« Le ShimCache montre-t-il encore un fichier après sa suppression ? » est l'une des questions les plus fréquentes en forensique d'exécution de programmes — et la réponse est la raison même de récupérer l'artefact.

Réponse courte : oui

Le ShimCache stocke un chemin + horodatage de dernière modification dans une valeur de registre. Cet enregistrement n'a aucun lien retour vers le système de fichiers. Quand l'exécutable est supprimé, NTFS libère le fichier — mais la valeur de registre reste intacte. L'entrée demeure jusqu'à être soit évincée par des entrées plus récentes (le cache contient jusqu'à 1 024), soit la valeur elle-même effacée.

Ainsi, un binaire qu'un attaquant a déposé dans C:\Users\Public\, exécuté puis supprimé dix minutes plus tard peut encore laisser une entrée ShimCache propre et lisible montrant le chemin complet qu'il occupait.

Pourquoi c'est puissant en forensique

Les entrées de fichiers supprimés sont souvent la seule preuve survivante de l'outillage de l'attaquant :

  • Un mimikatz.exe renommé supprimé après le vol d'identifiants.
  • Une archive de staging retirée après l'exfiltration.
  • Un dropper qui s'est auto-supprimé après avoir installé une charge utile.

Dans chaque cas le fichier a disparu, mais le chemin ShimCache vous dit qu'il a existé, où, et (via l'horodatage de dernière modification) le relie à un build. C'est l'ossature de la chasse au malware avec le ShimCache et des investigations sur les rançongiciels, où les attaquants effacent systématiquement leurs outils.

Combien de temps survit une entrée de fichier supprimé ?

Deux limites s'appliquent :

  • Éviction. Le cache est borné (jusqu'à 1 024 entrées). Sur un hôte chargé, une forte activité d'exécutables peut chasser les anciennes entrées. Sur un serveur calme, elle peut survivre des mois.
  • Moment du flush. Les nouvelles entrées ne persistent dans la ruche qu'à l'arrêt propre. Si l'hôte n'a pas été arrêté depuis la suppression, l'entrée survivante peut n'être encore qu'en mémoire — récupérez-la depuis une image mémoire (comment). Le modèle de stockage/flush est traité dans où le ShimCache est stocké.

Ce que cela ne prouve pas

Une entrée de fichier supprimé prouve que le fichier a existé et a été examiné sur cet hôte. Cela ne prouve pas en soi qu'il s'est exécuté, et ne vous dit pas quand il a été supprimé (l'horodatage est le mtime du fichier, pas une date de suppression). Traitez-la comme un fort témoin d'existence et corroborez l'exécution avec Prefetch/AmCache — voir le ShimCache prouve-t-il l'exécution.

Pour vérifier quelles entrées d'une ruche pointent vers des fichiers qui n'existent plus, analysez-la avec le Shimcache Parser et recoupez les chemins — tout s'exécute localement dans votre navigateur.

Pour aller plus loin

Articles connexes