Skip to content

Cache bitmap RDP : emplacement et acquisition

Où est stocké le cache bitmap RDP de chaque utilisateur, et comment le collecter avec PowerShell, KAPE RDPCache, Velociraptor ou une image disque sans piège.

Publié le 6 min de lecture

En bref. Le cache bitmap RDP se trouve dans C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ sur la machine depuis laquelle l'utilisateur s'est connecté, avec un dossier par compte. Collectez le dossier entier pour chaque utilisateur, conservez la partie Users\<name>\ du chemin pour que chaque fichier reste rattaché à son compte, et fermez d'abord les sessions Bureau à distance ouvertes, car les fichiers peuvent être en cours d'utilisation. La cible RDPCache de KAPE et Windows.Triage.Targets de Velociraptor s'en chargent pour vous ; une courte boucle PowerShell ou un find sur une image montée font aussi l'affaire.

Pour savoir ce que contient le cache et pourquoi il compte, commencez par le guide forensique du cache bitmap RDP.

Où se trouve le cache

Le cache bitmap RDP est écrit par le client Connexion Bureau à distance, mstsc, dans le dossier AppData local (non itinérant) de l'utilisateur qui l'a lancé.

SystèmeChemin
Windows actuelC:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\
Windows XPC:\Documents and Settings\<user>\Local Settings\Application Data\Microsoft\Terminal Server Client\Cache\
Après une mise à niveau sur placeC:\Windows.old\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\

Ce dossier peut contenir deux familles de fichiers :

FichiersFormat
bcache2.bmc, bcache22.bmc, bcache24.bmcCache BMC historique, emplacements fixes, 8/16/32 bpp
Cache0000.bin, Cache0001.bin, ...Cache persistant RDP 8, tuiles 32 bits

Les deux familles peuvent cohabiter dans le même dossier. Collectez tout son contenu, sans filtrer par extension.

Quelle machine, quel utilisateur

Deux erreurs font perdre le plus de temps :

  • La mauvaise machine. Le cache enregistre ce que le client a affiché : il se trouve donc sur le poste source. Si un attaquant a rebondi de WKS-A vers SRV-B, les preuves de la session sur SRV-B sont dans le cache de WKS-A. Il vaut la peine de collecter aussi sur la cible, mais pour les sessions lancées depuis la cible.
  • Le mauvais compte. Le cache appartient au compte qui a exécuté mstsc, pas au compte utilisé pour ouvrir la session sur l'hôte distant. Un profil local svc_backup sur le poste source peut contenir les écrans d'une session ouverte avec des identifiants de domaine sur la cible.

C'est pour cela que le chemin compte : RDP Bitmap Cache Parser rattache chaque fichier au compte tiré de Users\<name>\ dans le chemin. Supprimez le chemin et vous perdez ce rattachement.

Option 1 : PowerShell sur un système en fonctionnement

À exécuter en tant qu'administrateur. Fermez d'abord les sessions Bureau à distance ouvertes.

Get-ChildItem C:\Users -Directory | ForEach-Object {
  $rel = "Users\$($_.Name)\AppData\Local\Microsoft\Terminal Server Client\Cache"
  if (Test-Path "C:\$rel") { robocopy "C:\$rel" "C:\triage\$rel" /E /B /R:0 /W:0 /NP /NDL /NFL | Out-Null }
}
tar -a -c -f C:\triage\rdpcache.zip -C C:\triage Users

Ce que fait ce script : pour chaque dossier de profil, il copie le dossier Cache avec robocopy en mode sauvegarde (/B), sans nouvelle tentative et sans sortie verbeuse, en conservant l'arborescence Users\<name>\... sous C:\triage. Ensuite, tar -a construit un ZIP à partir de cette arborescence. Le ZIP peut être déposé tel quel dans l'outil.

Cette boucle ne parcourt que C:\Users. Elle ne couvre ni Windows.old ni les chemins XP : pour ceux-là, utilisez KAPE ou une image montée.

Option 2 : KAPE

KapeFiles fournit une cible RDPCache (source). Elle collecte le dossier de cache de chaque utilisateur, ainsi que les emplacements Windows.old et Windows XP.

kape.exe --tsource C: --tdest C:\triage\kape --target RDPCache

KAPE conserve l'arborescence d'origine sous la destination : le rattachement aux comptes est donc préservé. Compressez le dossier de destination en ZIP, ou déposez-le directement en tant que dossier.

Option 3 : Velociraptor

Collectez Windows.Triage.Targets (issu du projet Velociraptor Triage) avec la cible RDPCache, soit depuis l'interface graphique sur un client connecté, soit au moyen d'un collecteur hors ligne. Le ZIP de collecte obtenu peut être chargé tel quel : l'outil lit les ZIP, y compris ceux produits par KAPE et Velociraptor, et y retrouve les fichiers de cache.

Option 4 : une image disque montée

Avec le volume Windows monté en lecture seule sur /mnt/win :

cd /mnt/win && find Users -ipath '*/Terminal Server Client/Cache/*' -type f | zip -@ ~/triage/rdpcache.zip

-ipath ne tient pas compte de la casse, ce qui compte sur les images où la casse des noms de dossiers varie. Adaptez le répertoire de départ à Windows.old/Users ou Documents and Settings pour les arborescences plus anciennes.

Pièges courants

ProblèmeCauseSolution
La copie échoue ou des fichiers sont ignorésUne session est ouverte et le client verrouille les fichiersFermer les sessions, ou utiliser le mode sauvegarde / un collecteur en accès disque brut
Fichiers rattachés à aucun compteChemins aplatis pendant la collecteConserver Users\<name>\... dans l'archive
Rien pour le compte attenduMauvaise machine ou mauvais profilVérifier quel compte a exécuté mstsc et sur quelle machine
Historique antérieur à la mise à niveau manquéWindows.old non collectéUtiliser la cible KAPE ou fouiller l'image
Archive volumineuseLes fichiers de cache peuvent peser des dizaines de Mo et contenir des milliers de tuilesNormal ; l'outil les traite localement

Collectez aussi les métadonnées NTFS ($MFT, $UsnJrnl) et les artefacts qui permettent de dater les sessions, puisque les tuiles elles-mêmes ne portent aucune heure : le journal d'événements du client RDP, le NTUSER.DAT de l'utilisateur pour les clés de registre Terminal Server Client, les jump lists et Prefetch. La liste et la façon de les exploiter se trouvent dans mouvement latéral RDP : les artefacts du poste source.

Périmètre : sur quelles machines collecter

Collectez sur chaque machine où quelqu'un a pu ouvrir une session Bureau à distance pendant la période étudiée, pas seulement sur les serveurs auxquels on a accédé. Les bons candidats sont les postes d'administration, les serveurs de rebond et toute machine dont le journal d'événements du client RDP ou les clés de registre Terminal Server Client mentionnent une cible dans le périmètre. Un cache qui se révèle vide ou ancien coûte peu ; un poste source oublié peut coûter la seule vue de ce qui s'est passé sur la cible.

Intégrité

Calculez l'empreinte de l'archive ou des fichiers tels que collectés, consignez l'outil et la commande utilisés, et travaillez sur des copies. L'outil dans le navigateur se contente de lire les octets que vous lui fournissez, sans les modifier ni les envoyer, mais les bonnes pratiques ne doivent pas dépendre de l'outil.

Étape suivante

Chargez le ZIP ou le dossier dans RDP Bitmap Cache Parser, ou suivez pas à pas comment analyser le cache bitmap RDP dans votre navigateur.

Questions fréquentes

Où est stocké le cache bitmap RDP ?

Dans le profil de chaque utilisateur, sur la machine qui a exécuté le client Bureau à distance : C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\. Sous Windows XP, il se trouve sous Documents and Settings\<user>\Local Settings\Application Data. Après une mise à niveau, vérifiez aussi C:\Windows.old\Users.

Pourquoi ma copie du cache échoue-t-elle ?

Les fichiers peuvent être en cours d'utilisation tant qu'une session Bureau à distance est ouverte. Fermez d'abord les sessions, ou copiez en mode sauvegarde (robocopy /B) ou avec un collecteur en accès disque brut comme KAPE ou Velociraptor.

KAPE dispose-t-il d'une cible pour le cache bitmap RDP ?

Oui. La cible KapeFiles RDPCache collecte le dossier Cache de chaque utilisateur, y compris les chemins Windows.old et Windows XP.

Articles liés

Articles liés

Pas à pas : charger bcache*.bmc et Cache*.bin dans un parseur gratuit, trier les tuiles, faire un collage, reconstruire un écran et exporter les preuves.
Quels artefacts du poste source RDP montrent où un utilisateur s'est connecté et quand, et comment s'en servir pour dater et attribuer le cache bitmap.
Pourquoi un collage du cache RDP s'aligne par endroits et se décale ailleurs, comment choisir sa largeur et reconstruire un écran tuile par tuile.