Investigation numérique du thumbcache : les preuves
Ce que prouvent les fichiers thumbcache_*.db dans une enquête, comment récupérer des miniatures supprimées, et les réserves à formuler avant un rapport.
Les caches de miniatures sont l'un des rares artefacts Windows à conserver le contenu d'un fichier plutôt que de simples métadonnées à son sujet. Images, images extraites de vidéos, premières pages de PDF et de documents Office : si l'Explorateur a généré un aperçu, une petite copie reste souvent dans le cache de miniatures de l'utilisateur longtemps après que l'original a été supprimé, effacé ou déplacé sur une clé USB jamais retrouvée. Dans les affaires à contenu d'image (CSAM, vol de données, harcèlement), c'est souvent la preuve la plus importante présente sur le disque.
Ce guide décrit ce que contiennent les caches, ce qu'ils prouvent ou non, et comment les extraire et les documenter. Vous pouvez suivre les explications avec Thumbcache Parser, qui ouvre dans le navigateur tous les fichiers mentionnés ici.
Où se trouvent les caches
Depuis Windows Vista, les caches sont propres à chaque utilisateur et centralisés :
%LOCALAPPDATA%\Microsoft\Windows\Explorer\
thumbcache_16.db thumbcache_32.db thumbcache_48.db thumbcache_96.db
thumbcache_256.db thumbcache_768.db thumbcache_1280.db thumbcache_1920.db
thumbcache_2560.db thumbcache_sr.db thumbcache_wide.db thumbcache_exif.db
thumbcache_wide_alternate.db thumbcache_custom_stream.db thumbcache_idx.db
iconcache_16.db … iconcache_2560.db
L'ensemble exact dépend de la version de Windows (Vista et 7 n'ont que
32, 96, 256, 1024 et sr). Chaque taille est une base distincte, donc
la même image peut apparaître plusieurs fois, et une taille peut encore la
contenir après qu'une autre a été purgée. Collectez toujours toutes les
bases, ainsi que thumbcache_idx.db et les fichiers iconcache_*.db.
Avant Vista, l'Explorateur écrivait un Thumbs.db caché dans chaque
dossier affiché en miniatures. Les versions modernes de Windows écrivent
toujours un Thumbs.db sur les partages réseau, sauf si une stratégie le
désactive : les serveurs de fichiers méritent donc aussi d'être examinés.
Consultez le guide Thumbs.db pour ce format.
Ce que prouve une miniature (et ce qu'elle ne prouve pas)
Une entrée de cache existe parce que le shell Windows a produit une miniature pour un fichier sur ce profil utilisateur. En pratique, cela se produit lorsque :
- un dossier est affiché dans une vue en icônes suffisamment grande pour des miniatures ;
- un fichier est sélectionné avec le volet d'aperçu ou de détails ouvert ;
- une boîte de dialogue d'ouverture ou d'enregistrement affiche le dossier en vue miniatures ;
- une application demande une miniature au shell via
IThumbnailCache.
Une miniature est donc une preuve solide que le fichier a existé sur un volume parcouru par ce profil, et que son contenu correspondait à l'image. C'est en revanche une preuve faible que l'utilisateur a regardé ce fichier en particulier : il a pu simplement faire défiler un dossier de plusieurs centaines d'éléments. Indiquez-le clairement dans vos rapports ; les experts de la défense ne manqueront pas de le faire.
Deux autres limites :
- Pas d'horodatage par entrée. Les entrées modernes du thumbcache ne
portent aucune date. Utilisez les horodatages
$MFTdu fichier.dblui-même comme borne, et corrélez avec les jump lists, les fichiers LNK, les ShellBags et l'index de recherche. - Pas de nom de fichier. Les entrées sont indexées par un ID de cache
64 bits (voir plus bas). Seul le Catalog de l'ancien
Thumbs.dbstocke les noms d'origine.
Récupérer des miniatures supprimées
Supprimer le fichier source ne touche pas à sa miniature. L'Explorateur ne nettoie les caches que lorsque l'option Miniatures du Nettoyage de disque est exécutée, lorsque la maintenance automatique le décide, ou lors d'une reconstruction du cache. Même dans ce cas, une entrée libérée est généralement simplement laissée en place : la base suit un offset « disponible », et l'espace au-delà n'est réutilisé que paresseusement.
Chaque entrée commence par les quatre octets CMMM, suivis de sa taille,
ce qui rend les anciennes entrées faciles à carver. Le parseur parcourt
d'abord la chaîne d'entrées active, puis balaie par signature l'ensemble du
fichier. Les correspondances situées après l'offset « disponible » de l'en-tête
sont signalées comme Slack ; les autres (par exemple après une entrée
corrompue) sont signalées comme Carved. Les deux apparaissent avec une
bordure rouge dans la galerie et sont signalées dans chaque export.
Deux conseils pratiques :
- Vérifiez aussi les clichés instantanés (Volume Shadow Copies). D'anciennes copies des fichiers de cache peuvent contenir des miniatures purgées des fichiers actifs.
- Carvez l'espace non alloué à la recherche de
CMMM. Lorsque la base de cache elle-même a été supprimée, ses entrées peuvent encore être carvées dans les clusters libres, puis chargées ici comme un bloc brut.
Relier une miniature au fichier d'origine
L'ID de cache de chaque entrée est la même valeur que celle stockée par
Windows Search dans System_ThumbnailCacheId pour le fichier indexé. Si le
fichier se trouvait dans un emplacement indexé, la base de recherche fournit
son chemin et d'autres métadonnées :
- Windows Vista à 10 :
%ProgramData%\Microsoft\Search\Data\Applications\Windows\Windows.edb(ESE) - Windows 11 :
Windows.dbdans le même dossier (SQLite)
Collectez la base avec ses journaux de transactions. Une base ESE copiée
depuis un système en fonctionnement est généralement « dirty » (incohérente) et
nécessite esentutl /r ou /p sur une copie avant que les outils puissent
l'ouvrir. Déposez-la dans le Thumbcache Parser avec les fichiers de cache :
chaque miniature indexée est alors étiquetée avec son chemin, son nom, sa
taille et sa date de modification d'origine, dans l'inspecteur comme dans les
exports.
Caches d'icônes
Les fichiers iconcache_*.db utilisent le même format mais contiennent
des icônes d'applications et de types de fichiers. Ils constituent une source
discrète de contexte d'exécution de programmes. Un outil portable exécuté
depuis une clé USB, ou un installeur supprimé par la suite, peut y laisser son
icône.
Liste de collecte
- Tous les
thumbcache_*.db,thumbcache_idx.dbeticoncache_*.dbde chaque profil - Clichés instantanés (shadow copies) du même dossier
-
Windows.edb/Windows.dbainsi que les journaux (edb*.log,edb.chk) -
$MFTpour les horodatages des fichiers de cache eux-mêmes -
Thumbs.dbdes dossiers utilisateurs, des supports amovibles et des partages réseau
Les fichiers sont verrouillés tant que explorer.exe s'exécute : utilisez
la target ThumbCache de KAPE, FTK Imager, un cliché instantané, ou extrayez-les
d'une image avec Disk Image Parser et
déposez directement son export ZIP dans le parseur.
Rédaction du rapport
Pour chaque miniature utilisée, notez le fichier source et son SHA-256, l'offset de l'entrée, l'ID de cache, si elle était allouée ou récupérée, ainsi que le MD5/SHA-256 des octets d'image extraits. Le ZIP de preuves du parseur regroupe les images, un CSV, un export JSON et un rapport HTML autonome contenant toutes ces informations. Il hache l'image telle qu'elle est stockée dans la base, si bien que quiconque réextrait le même offset obtiendra le même hash.