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.
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 faut | Pourquoi |
|---|---|
Le dossier Cache de chaque utilisateur, pris sur le poste source | C'est là que le client écrit le cache |
La partie Users\<name>\ du chemin | L'outil attribue chaque fichier à ce compte |
| Un navigateur de bureau récent | Le décodage tourne en WebAssembly dans un Web Worker |
| En option : bmc-tools | Pour 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ôle | Effet |
|---|---|
| Masquer les tuiles unies et les doublons | Retire les tuiles d'une seule couleur et celles identiques à une tuile précédente |
| À examiner d'abord | Ne garde que les tuiles de type console et de type texte |
Les indices de triage sont des heuristiques :
| Indice | Signification |
|---|---|
| Type console | Contenu textuel sur fond sombre ; des commandes peuvent être lisibles |
| Type texte | Fond uni avec de nombreux contours nets |
| Reste d'emplacement | Reste d'une tuile plus ancienne dans un emplacement .bmc |
| Uni | Une seule couleur |
| Doublon | Identique à une tuile précédente |
| Non décodée | La 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
| Export | Contenu |
|---|---|
| CSV / JSON | L'inventaire des tuiles avec leurs métadonnées |
| ZIP des tuiles | Chaque 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 collage | Pour le rapport |
| PNG de la reconstruction + JSON de disposition | L'é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.