Cache bitmap RDP : le guide forensique complet
Ce qu'est le cache bitmap RDP, où il se trouve, ce que ses tuiles révèlent d'une session distante, comment la dater et analyser bcache*.bmc et Cache*.bin.
En bref. Le cache bitmap RDP est un ensemble de fichiers que le client Connexion Bureau à distance (mstsc.exe) écrit sur le poste source, dans le profil de l'utilisateur qui s'est connecté : C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\. Il contient des milliers de petits bitmaps, généralement de 64×64 pixels, de ce qu'affichait l'écran distant. Une fois décodées et disposées, ces tuiles peuvent montrer des consoles et les commandes tapées, des noms de dossiers, des outils. Elles ne portent ni horodatage ni position à l'écran : on date la session avec d'autres artefacts et on reconstruit les écrans à la main. RDP Bitmap Cache Parser décode les deux formats de fichiers dans votre navigateur, sans rien envoyer.
Ce guide est le point d'entrée de la série. Chaque section renvoie vers un article plus détaillé.
Qu'est-ce que le cache bitmap RDP ?
Le Bureau à distance transmet l'écran distant au client sous forme de bitmaps. Pour éviter de retélécharger les mêmes éléments (un cadre de fenêtre, une icône, un fond uni), le client garde en cache les bitmaps déjà reçus. Lorsque le cache bitmap persistant est activé, une partie de ce cache est écrite sur disque et survit à la session. Cette copie sur disque, c'est le cache bitmap RDP.
L'option « Persistent bitmap caching » se trouve dans l'onglet Experience de Connexion Bureau à distance ; dans les fichiers .rdp, elle est enregistrée sous la forme bitmapcachepersistenable:i:1. Elle est activée par défaut dans mstsc. Cette série traite du cache écrit par mstsc ; nous n'affirmons rien sur les autres clients RDP.
Pourquoi il compte dans une enquête
La plupart des traces RDP disent qu'une session a eu lieu. Le cache bitmap est l'un des rares artefacts capables de montrer ce que l'utilisateur a vu pendant cette session :
- des fenêtres de console, avec les commandes et leur sortie telles qu'elles s'affichaient ;
- des fenêtres de l'Explorateur de fichiers, avec des noms de dossiers et de fichiers ;
- des outils ouverts sur l'hôte distant, des boîtes de dialogue, des messages d'erreur ;
- parfois du texte saisi dans un éditeur.
Il se trouve sur la machine depuis laquelle la session a été ouverte. Dans un dossier de mouvement latéral, cela signifie que le cache d'un poste de travail compromis ou d'un serveur de rebond peut documenter l'activité sur une cible qui a ensuite été effacée ou dont les journaux ont été vidés. C'est la raison principale de le collecter sur chaque machine où mstsc a été utilisé.
Où il se trouve
| Système | Chemin |
|---|---|
| Windows actuel | C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ |
| Windows XP | C:\Documents and Settings\<user>\Local Settings\Application Data\Microsoft\Terminal Server Client\Cache\ |
| Après une mise à niveau sur place | Vérifier aussi C:\Windows.old\Users\... |
Le cache est propre à chaque utilisateur : les fichiers appartiennent à celui qui a lancé le client. La collecte avec PowerShell, KAPE, Velociraptor ou depuis une image montée est détaillée dans emplacement et acquisition du cache bitmap RDP.
Les deux formats de fichiers
| Format | Noms de fichiers | Écrit par | Stockage des tuiles |
|---|---|---|---|
| Cache BMC historique | bcache2.bmc, bcache22.bmc, bcache24.bmc (bmc-tools mentionne aussi bcache23.bmc) | Les anciens clients ; encore présent sur des systèmes actuels | Emplacements de taille fixe, 8, 16 ou 32 bpp, certaines tuiles compressées en RLE entrelacé (interleaved RLE) |
| Cache persistant RDP 8 | Cache0000.bin, Cache0001.bin, ... | Les versions plus récentes du client | En-tête RDP8bmp, puis tuiles 32 bits non compressées, les unes à la suite des autres |
Aucun de ces formats n'est documenté par Microsoft en tant que format de fichier. Ce que l'on en sait vient de la rétro-ingénierie, en premier lieu de bmc-tools de l'ANSSI. La compression des bitmaps dans les fichiers .bmc, elle, correspond au codec RLE entrelacé documenté du protocole RDP. Le détail octet par octet se trouve dans le format de fichier bcache*.bmc et Cache*.bin.
Ce qu'est une tuile, et ce qu'elle n'est pas
Une tuile bitmap est un petit rectangle de l'écran distant, généralement de 64×64 pixels, plus petit en bord d'écran. Chacune est stockée avec une clé de cache de 64 bits, une largeur et une hauteur. Rien de plus.
| Une tuile possède | Une tuile ne possède pas |
|---|---|
| Des pixels | D'horodatage |
| Une largeur et une hauteur | Sa position à l'écran |
| Une clé de cache | D'identifiant de session ou d'hôte cible |
| Une place dans l'ordre du cache | De garantie d'être récente |
Deux conséquences conditionnent toute l'analyse :
- Les tuiles sont rangées dans l'ordre du cache, pas dans l'ordre de l'écran. Des tuiles voisines dans le fichier sont parfois voisines à l'écran (une zone de fenêtre peut être mise en cache ligne par ligne), mais rien dans le format ne le garantit.
- Les éléments identiques ne sont stockés qu'une fois. Un fond de bureau uni ou une zone de console noire vide apparaît sous la forme d'une seule tuile, et non des dizaines d'endroits qu'elle recouvrait.
Dans les fichiers .bmc, un emplacement peut aussi conserver une partie d'une tuile plus ancienne lorsqu'une tuile plus petite est écrite par-dessus. Ce résidu est un reste d'emplacement et peut montrer un contenu écrasé par ailleurs.
Des tuiles aux écrans
L'analyse vous donne un tas de tuiles. Trois vues en font des éléments de preuve :
- Galerie : chaque tuile à une taille lisible, avec son index. Rapide pour repérer du texte.
- Collage : toutes les tuiles dans une seule image, N par ligne, comme le
_collage.bmpde bmc-tools. Quand une fenêtre a été mise en cache ligne par ligne, choisir la bonne largeur permet d'en aligner des parties. Voir collage de tuiles. - Reconstruction manuelle : placer les tuiles à l'œil sur une grille pour reconstituer un écran, comme le fait RdpCacheStitcher du BSI et comme le fait l'onglet Reconstruire de cet outil.
Reconstruire des écrans RDP à partir des tuiles du cache explique pourquoi un collage s'aligne au milieu et se décale sur les bords, et comment terminer le travail à la main.
Dater l'activité
Le cache fournit du contenu, pas du temps. La chronologie se construit à partir des artefacts qui l'entourent :
| Source | Emplacement | Ce qu'elle apporte |
|---|---|---|
| Horodatages NTFS des fichiers de cache | $MFT ($STANDARD_INFORMATION, $FILE_NAME), $UsnJrnl | Quand le client a créé et écrit les fichiers de cache |
| Journal du client RDP | Microsoft-Windows-TerminalServices-RDPClient/Operational, événement 1024 | Tentatives de connexion, avec le nom de la cible |
| Registre Terminal Server Client | HKCU\Software\Microsoft\Terminal Server Client\Servers\<host> et ...\Default | Cibles utilisées, UsernameHint, liste MRU |
Default.rdp, jump lists, Prefetch | Documents de l'utilisateur, profil, C:\Windows\Prefetch | Utilisation du client et connexions récentes |
| Journaux de l'hôte cible | Security 4624 (type d'ouverture de session 10), 4778/4779 ; RemoteConnectionManager 1149 | Ouvertures de session et reconnexions de l'autre côté |
Le contenu visible dans les tuiles aide aussi : l'horloge de la barre des tâches, une date dans une liste de fichiers, un bilan de transfert avec sa durée. Traitez-les comme ce que l'écran affichait, dans le fuseau horaire et selon l'horloge de l'hôte distant. Les détails sont dans mouvement latéral RDP : les artefacts du poste source.
Outils
| Outil | Ce qu'il fait |
|---|---|
| bmc-tools (ANSSI, Python) | Décodeur de référence : exporte les tuiles en BMP ainsi qu'un collage |
| RdpCacheStitcher (BSI) | Une interface graphique qui aide à assembler les tuiles exportées en écrans |
| RDP Bitmap Cache Parser | Décode les deux formats dans le navigateur, avec galerie, collage, canevas de reconstruction, indices de triage et exports |
Notre décodeur est une implémentation indépendante, écrite à partir des spécifications de Microsoft et de travaux publics ; nous citons bmc-tools comme implémentation de référence et avons validé notre sortie par comparaison avec lui. Une comparaison honnête, limites de notre outil comprises, se trouve dans comparatif des parseurs de cache RDP. Pour une prise en main pas à pas, voir comment analyser le cache bitmap RDP dans votre navigateur.
Pièges
- Collecter sur la mauvaise machine. Le cache est sur le poste source, pas sur la cible.
- Copier pendant qu'une session est ouverte. Les fichiers peuvent être en cours d'utilisation et la copie peut échouer. Fermez les sessions ou utilisez une copie en mode sauvegarde ou une copie brute.
- Lire une chronologie dans l'ordre des tuiles. L'ordre du cache n'est pas un ordre chronologique fiable.
- Surinterpréter les tuiles 8 bits. La palette n'est pas stockée : les couleurs sont approximatives.
- Prendre les indices pour des constats. « Type console » signifie « à lire en priorité », pas « malveillant ».
Questions fréquentes
Le cache bitmap RDP se trouve-t-il sur le client ou sur le serveur ?
Sur le client. Le client Connexion Bureau à distance (mstsc.exe) l'écrit dans le profil de l'utilisateur qui l'a lancé, sur la machine depuis laquelle il s'est connecté. L'hôte cible ne conserve pas ces fichiers pour cette session.
Le cache bitmap RDP contient-il des horodatages ?
Non. Les tuiles ne portent ni heure, ni position à l'écran, ni identifiant de session. Datez l'activité avec les horodatages NTFS des fichiers de cache, le journal d'événements du client RDP, les clés de registre Terminal Server Client et les journaux de l'hôte cible.
Peut-on voir ce que l'attaquant a tapé ?
Parfois. Si une console ou un éditeur était affiché, les tuiles qui le couvraient peuvent montrer la ligne de commande ou le texte tel qu'il apparaissait à l'écran. On le lit sur les images : le cache ne contient aucun journal de frappes.
Quel outil utiliser pour l'analyser ?
bmc-tools de l'ANSSI est le décodeur de référence. RDP Bitmap Cache Parser décode les mêmes fichiers dans le navigateur avec son propre décodeur, écrit indépendamment, et y ajoute une galerie, un collage et un canevas de reconstruction. Pour les constats importants, comparez la sortie de deux outils.