Skip to content

Analyser le cache bitmap RDP dans votre navigateur

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.

Publié le 7 min de lecture

En bref. Collectez Terminal Server Client\Cache pour chaque utilisateur du poste source, déposez le dossier ou le ZIP sur RDP Bitmap Cache Parser, lisez le panneau Constats, puis parcourez les onglets : Galerie (avec À examiner d'abord et Masquer les tuiles unies et les doublons), Collage (réglez le nombre de tuiles par ligne), Reconstruire (placez les tuiles sur une grille) et Liste. Exportez en CSV, en JSON, en ZIP de tuiles PNG ou BMP façon bmc-tools, ou l'écran reconstruit. Le décodage s'exécute en WebAssembly dans votre navigateur ; les fichiers ne sont jamais envoyés.

Cet article est le compagnon pratique du guide de l'analyse forensique du cache bitmap RDP. Les exemples utilisent l'exemple intégré, qui est synthétique et fictif : il a été généré pour cet outil et ne provient pas d'un cas réel.

Avant de commencer

Il vous fautPourquoi
Le dossier Cache de chaque utilisateur, pris sur le poste sourceC'est là que le client écrit le cache
La partie Users\<name>\ du cheminL'outil attribue chaque fichier à ce compte
Un navigateur de bureau récentLe décodage tourne en WebAssembly dans un Web Worker
En option : bmc-toolsPour recouper les tuiles importantes

Étape 1 : collecter le dossier du cache

Fermez les sessions Bureau à distance ouvertes, puis copiez le dossier de chaque profil. Voici la boucle PowerShell proposée sur le site :

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

KAPE (--target RDPCache), Velociraptor (Windows.Triage.Targets avec la cible RDPCache) et une image montée conviennent aussi ; voir emplacement et acquisition du cache bitmap RDP. Hachez ce que vous avez collecté.

Étape 2 : charger les fichiers

Ouvrez la page d'accueil de l'outil. Vous pouvez déposer :

  • des fichiers isolés (bcache*.bmc, Cache*.bin) ;
  • un dossier, par exemple un profil copié ;
  • un ZIP : les collectes KAPE et Velociraptor ainsi que les profils zippés sont ouverts dans le navigateur.

Pour prendre l'interface en main d'abord, cliquez sur Essayer un exemple. L'espace de travail passe automatiquement en plein écran ; appuyez sur Échap pour en sortir.

L'exemple contient deux fichiers issus d'un profil fictif svc_backup : Cache0000.bin (32 bpp, 47 tuiles) et bcache22.bmc (16 bpp, 15 tuiles, dont 10 compressées en RLE).

Étape 3 : lire le panneau Constats

Avant de regarder la moindre tuile, lisez le résumé :

  • Les comptes qui ont utilisé le client RDP, déduits des chemins.
  • Les tuiles de type console : là où des commandes peuvent être lisibles.
  • Les restes d'emplacement : des fragments de tuiles plus anciennes dans les emplacements des .bmc (reste d'emplacement).
  • Les tuiles non décodées, s'il y en a.
  • Le rappel que les tuiles n'ont pas d'horodatage. L'outil n'affiche aucune plage horaire et n'en invente pas ; datez les sessions avec les artefacts du poste source.

Étape 4 : trier la galerie

L'onglet Galerie affiche chaque tuile avec son index dans l'ordre du cache. Deux contrôles font l'essentiel du travail :

ContrôleEffet
Masquer les tuiles unies et les doublonsRetire les tuiles d'une seule couleur et celles identiques à une tuile précédente
À examiner d'abordNe garde que les tuiles de type console et de type texte

Les indices de triage sont des heuristiques :

IndiceSignification
Type consoleContenu textuel sur fond sombre ; des commandes peuvent être lisibles
Type texteFond uni avec de nombreux contours nets
Reste d'emplacementReste d'une tuile plus ancienne dans un emplacement .bmc
UniUne seule couleur
DoublonIdentique à une tuile précédente
Non décodéeLa tuile n'a pas pu être décodée

Ils peuvent rater des tuiles et en signaler d'anodines. Ils indiquent ce qui mérite d'être lu en premier, rien de plus. Dans l'exemple, À examiner d'abord fait remonter les tuiles de console avec la commande rclone.exe copy et la vue antérieure avec tar -xf tools.zip -C C:\ProgramData\Intel.

Étape 5 : examiner une tuile

Cliquez sur une tuile pour ouvrir son détail : clé de cache, largeur et hauteur, profondeur de couleur, compression (RLE entrelacé ou aucune), offset dans le fichier et indice de triage. L'offset permet de vérifier la tuile dans un éditeur hexadécimal. Une tuile peut être exportée seule en PNG pour vos notes.

Pour les tuiles 8 bits, gardez en tête que les couleurs sont approximatives : la palette n'est pas stockée dans le cache.

Étape 6 : construire un collage

L'onglet Collage dispose toutes les tuiles dans une seule image. Réglez le nombre de tuiles par ligne et choisissez une disposition : Ordre du cache (tuile 0 en haut à gauche) ou Disposition bmc-tools (la même disposition que le collage de bmc-tools, pour comparer côte à côte).

Dans l'exemple, réglez 7 tuiles par ligne. Les lignes du milieu (tuiles 7 à 20) s'alignent et la commande rclone se lit d'un bout à l'autre ; la première et la dernière ligne se décalent, parce que les morceaux identiques n'ont été mis en cache qu'une fois. L'article reconstruire des écrans RDP à partir des tuiles du cache explique ce phénomène. Exportez le collage en PNG.

Étape 7 : reconstruire un écran

L'onglet Reconstruire est une grille. Glissez une tuile sur une case, ou sélectionnez une tuile puis cliquez sur une case. Placez d'abord les lignes qui s'alignent, puis complétez la barre de titre et les zones vides de la console en réutilisant la même tuile dans plusieurs cases. Laissez une case vide quand vous n'êtes pas sûr.

Exportez la grille en PNG ainsi que le JSON de disposition, qui consigne quelle tuile a été placée où. Versez les deux au dossier pour qu'un relecteur puisse vérifier vos placements.

Étape 8 : exporter les preuves

ExportContenu
CSV / JSONL'inventaire des tuiles avec leurs métadonnées
ZIP des tuilesChaque tuile en PNG, ou en BMP nommé comme la sortie de bmc-tools (<file>_<NNNN>.bmp), avec un tiles.csv à l'intérieur
PNG d'une tuile, PNG du collagePour le rapport
PNG de la reconstruction + JSON de dispositionL'écran reconstruit et la façon dont il a été construit

Le nommage BMP permet de donner les tuiles aux outils conçus autour de la sortie de bmc-tools, comme RdpCacheStitcher. L'onglet Liste présente les tuiles sous forme de liste.

Limites à garder en tête

  • Pas d'OCR ni d'assemblage automatique : c'est vous qui lisez et placez les tuiles.
  • Les tuiles de moins de 64 pixels de large utilisent leur propre largeur comme pas de ligne ; bmc-tools suppose 64, donc les tuiles étroites peuvent différer d'un outil à l'autre.
  • Le décodeur est une implémentation indépendante (spécifications MS-RDPBCGR et MS-RDPEGDI de Microsoft, travaux publics), validée tuile par tuile avec bmc-tools de l'ANSSI sur des fichiers synthétiques et construits à la main. Sur un cas réel, comparez les tuiles importantes avec bmc-tools ; voir le comparatif des parseurs de cache RDP.

RDP Bitmap Cache Parser est un projet indépendant, ni affilié à Microsoft ni approuvé par Microsoft.

Articles liés

Articles liés

bmc-tools, RdpCacheStitcher et RDP Bitmap Cache Parser côte à côte : rôle de chacun, place dans une enquête et limites assumées de l'outil navigateur.
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.