Skip to content

Reconstruire des écrans RDP à partir du 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.

Publié le 8 min de lecture

En bref. Les tuiles du cache RDP n'ont pas de coordonnées à l'écran, et les morceaux identiques ne sont mis en cache qu'une seule fois. Un collage avec le bon nombre de tuiles par ligne aligne les parties d'une fenêtre mises en cache ligne par ligne, mais chaque tuile dédupliquée décale d'un cran tout ce qui suit : les bords dérivent. Servez-vous du collage pour repérer la zone, puis reconstruisez l'écran à la main sur une grille : glissez les tuiles à leur place, réutilisez une même tuile là où elle se répète, et exportez le résultat en PNG avec un JSON de disposition qui documente ce que vous avez placé et où. RDP Bitmap Cache Parser le fait dans l'onglet Reconstruire ; RdpCacheStitcher, du BSI, est l'alternative de bureau.

Cet article fait partie de la série sur les enquêtes. Pour les détails de format qui l'expliquent, voir le format des fichiers bcache*.bmc et Cache*.bin.

Le problème : des tuiles sans coordonnées

Chaque tuile bitmap du cache est stockée avec une clé, une largeur, une hauteur et des pixels. Rien n'indique où elle se trouvait à l'écran. Ce dont vous disposez :

  • L'ordre du cache. Les tuiles sont stockées dans l'ordre où le cache les conserve. Pour une zone que le client a reçue d'un seul tenant, par exemple une fenêtre en cours d'affichage, cet ordre peut suivre les lignes de la zone.
  • La taille des tuiles. La plupart font 64×64. Les tuiles plus étroites ou moins hautes viennent souvent du bord droit ou du bord inférieur d'une zone.
  • Le contenu. Du texte qui se poursuit d'une tuile à l'autre, des bordures de fenêtre, des barres de titre et des barres de défilement : ce sont les pièces du puzzle.

Ce qui casse l'ordre :

  • La déduplication. Un morceau déjà présent dans le cache n'est pas stocké à nouveau. Un segment de barre de titre uni, une zone noire vide de console ou un fond de bureau uni n'existe qu'une fois, quel que soit le nombre de fois où il est apparu à l'écran.
  • Le mélange des sessions et des vues. Un même fichier accumule des tuiles de moments, de fenêtres et de sessions différents.
  • La réutilisation des emplacements dans les fichiers .bmc, qui peut laisser des restes d'emplacement d'un contenu plus ancien.

Le collage : rapide, utile, et un peu faux

Un collage dispose toutes les tuiles dans une seule image, N tuiles par ligne, dans l'ordre du cache. bmc-tools en produit un avec -b, le nombre de tuiles par ligne étant fixé par -w (64 par défaut). RDP Bitmap Cache Parser offre la même vue dans l'onglet Collage, avec un nombre de tuiles par ligne réglable et deux dispositions :

DispositionAgencement
Ordre du cacheTuile 0 en haut à gauche, puis de gauche à droite, ligne par ligne
Disposition bmc-toolsReproduit l'agencement du _collage.bmp de bmc-tools, pour comparer les images directement

Choisir la largeur

Si une fenêtre a été mise en cache ligne par ligne et fait W tuiles de large, un collage à W tuiles par ligne aligne verticalement les lignes de cette fenêtre. Pour trouver W :

  1. Repérez une tuile avec un élément vertical évident (une bordure de fenêtre, une barre de défilement, une colonne de texte).
  2. Modifiez le nombre de tuiles par ligne jusqu'à ce que cet élément forme une ligne verticale droite sur plusieurs rangées.
  3. Confirmez avec le texte : un mot coupé au bord d'une tuile doit se poursuivre sur la tuile de droite.

La valeur par défaut de 64 tuiles par ligne correspond rarement à la largeur de quoi que ce soit à l'écran. C'est une vue d'ensemble raisonnable, pas une reconstruction.

Pourquoi ça se décale : un exemple concret

L'exemple fictif fourni avec l'outil (un cas synthétique, pas un incident réel) rend le phénomène visible. Son Cache0000.bin contient 47 tuiles :

  • La tuile 0 est le fond de bureau uni, stocké une seule fois.
  • Les tuiles 1 à 25 forment une fenêtre de console, dans l'ordre des lignes, sur 7 tuiles de large.

Une console de 7 tuiles de large et de plusieurs lignes de haut couvre plus de 25 cases. Les cases manquantes sont des morceaux identiques à d'autres déjà en cache : segments de barre de titre unis et zones noires vides de la console. Chaque fois que le client a évité de stocker un morceau répété, toutes les tuiles suivantes se sont décalées d'une case vers la gauche par rapport à leur vraie position à l'écran.

Avec 7 tuiles par ligne en ordre du cache :

Lignes du collageTuilesRésultat
Lignes du milieu7 à 20Alignées : la commande rclone.exe copy C:\Users\Public\data E:\exfil et son résumé de transfert se lisent d'un bout à l'autre
Première et dernière lignesAvant 7, après 20Décalées : la barre de titre et le bas de la console sont déplacés, car les morceaux dédupliqués manquent

Les lignes du milieu s'alignent parce que les lignes de console y sont toutes différentes : rien n'y a été dédupliqué. Les bords sont faits de morceaux répétitifs, ils s'effondrent donc. C'est le comportement normal du cache, pas une erreur de décodage, et aucune largeur de collage ne peut le corriger.

Reconstruire l'écran à la main

La reconstruction manuelle consiste à placer chaque tuile dans la case qui lui revient, y compris en réutilisant une tuile pour plusieurs cases lorsqu'elle a été dédupliquée.

Avec RDP Bitmap Cache Parser

L'onglet Reconstruire est une grille :

  1. Filtrez d'abord les tuiles. À examiner d'abord restreint la liste aux tuiles de type console et de type texte ; Masquer les tuiles unies et les doublons fait le ménage.
  2. Glissez une tuile sur une case, ou sélectionnez une tuile puis cliquez sur une case. Une tuile peut être placée dans autant de cases que nécessaire : c'est ainsi que vous complétez les barres de titre et les zones vides de console dédupliquées.
  3. Partez du point d'ancrage trouvé dans le collage (pour l'exemple : les lignes qui contiennent la ligne de commande) et avancez vers l'extérieur : la rangée du dessus doit prolonger les bordures et le texte de la rangée du dessous.
  4. Laissez une case vide quand vous ne savez pas. Un trou assumé vaut mieux qu'une tuile devinée.
  5. Exportez un PNG de la grille pour le rapport et un JSON de disposition qui consigne quelle tuile vous avez placée dans quelle case. Le JSON rend la reconstruction vérifiable et reproductible.

Il n'y a ni assemblage automatique ni OCR : c'est vous qui lisez l'écran, l'outil vous aide seulement à placer les pièces.

Avec RdpCacheStitcher

RdpCacheStitcher, publié par le BSI allemand, est une interface graphique qui aide à assembler des tuiles exportées en écrans. Il travaille sur les tuiles exportées par bmc-tools. Si votre équipe l'utilise déjà, l'export ZIP en BMP de RDP Bitmap Cache Parser nomme les tuiles comme la sortie de bmc-tools (<file>_<NNNN>.bmp), ce qui vous permet de garder ce flux de travail.

Lire ce que vous avez reconstruit

Un écran reconstruit est une interprétation. Rédigez-le comme tel :

  • Décrivez la méthode : « les tuiles 7 à 20 de Cache0000.bin s'alignent à 7 tuiles par ligne ; les rangées au-dessus et en dessous ont été placées manuellement ; voir le JSON de disposition ».
  • Distinguez l'observé du placé : dans l'exemple, la ligne de commande est visible sur des tuiles adjacentes dans l'ordre du cache ; la barre de titre au-dessus a été placée par l'analyste.
  • Ne tirez ni ordre ni heure de l'image. Une horloge visible sur une barre des tâches reconstruite (10:52 dans l'exemple) est ce que l'écran distant affichait à ce moment-là, dans son propre fuseau horaire. Rattachez-la à la chronologie grâce à d'autres artefacts, comme décrit dans mouvement latéral RDP : les artefacts du poste source.
  • Signalez les restes : un reste d'emplacement appartient à une tuile plus ancienne et peut dater d'un autre moment que les tuiles qui l'entourent.

Conseils pratiques

SituationConseil
Des milliers de tuilesMasquez les tuiles unies et les doublons, puis utilisez À examiner d'abord
Texte coupé entre plusieurs tuilesLisez les paires de tuiles dans la galerie avant de toucher à la grille
Tuiles étroites en bordureElles ferment généralement une rangée à droite ou en bas
Tuiles 8 bitsLes couleurs sont approximatives ; appuyez-vous sur les formes et le texte
Plusieurs fichiers de cacheReconstruisez fichier par fichier ; des fichiers différents peuvent venir de sessions différentes

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.
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.