Skip to content

Parseurs de cache RDP comparés : bmc-tools et alternatives

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.

Publié le 7 min de lecture

En bref. bmc-tools (ANSSI, Python) est le décodeur de référence du cache bitmap RDP, et celui qu'il faut citer. RdpCacheStitcher (BSI) est une interface graphique qui vous aide à assembler en écrans les tuiles exportées par bmc-tools. RDP Bitmap Cache Parser décode les mêmes fichiers dans le navigateur, avec son propre décodeur, écrit indépendamment et validé par comparaison avec bmc-tools, et y ajoute une galerie avec indices de triage, un collage, un canevas de reconstruction et des exports. Il ne dispense pas d'un second avis : sur un cas réel, comparez les tuiles importantes avec bmc-tools.

Si vous choisissez un outil parce que vous venez de tomber sur un dossier Terminal Server Client\Cache, le guide d'analyse forensique du cache bitmap RDP explique ce que vous avez sous les yeux.

Les trois outils en un coup d'œil

bmc-toolsRdpCacheStitcherRDP Bitmap Cache Parser
MainteneurANSSI (France)BSI (Allemagne)Indépendant (ce site)
FormeScript Python en ligne de commandeInterface graphique de bureauPage web, WebAssembly dans un Web Worker
Entréebcache*.bmc, Cache*.binTuiles exportées par bmc-toolsbcache*.bmc, Cache*.bin, dossiers, ZIP
DécodageOui (référence)Non, utilise les tuiles exportéesOui (indépendant, validé face à bmc-tools)
CollageOui (-b, largeur -w)Ce n'est pas son rôleOui, paramétrable, deux dispositions
Reconstruction d'écranNonOui, c'est son rôleCanevas manuel
Restes d'emplacementExportés avec -oTravaille sur les tuiles exportéesAffichés et signalés
InstallationPythonTéléchargementAucune
LicenceCeCILL 2.1Voir son dépôtUtilisation gratuite

Nous ne décrivons RdpCacheStitcher que dans la mesure où nous en sommes sûrs ; consultez son dépôt et son manuel pour l'ensemble de ses fonctionnalités.

bmc-tools

bmc-tools est l'implémentation de référence. Une bonne partie des travaux publics sur cet artefact repose sur sa rétro-ingénierie des formats BMC et Cache*.bin. Notre propre décodeur est une implémentation distincte, écrite à partir des spécifications de protocole publiées par Microsoft (MS-RDPBCGR et MS-RDPEGDI) et de la description publique des fichiers par le CERT-FR (bulletin CERTFR-2016-ACT-017), puis validée tuile par tuile avec bmc-tools. La décompression des tuiles (RLE entrelacé) est prise en charge depuis la version 3.00, en 2022.

Options :

OptionRôle
-sFichier ou dossier source
-dDossier de destination
-cNombre de tuiles à extraire
-vSortie détaillée
-o / --oldExporter aussi les anciennes données des emplacements (restes)
-bConstruire un bitmap de collage
-wLargeur du collage en tuiles par ligne (64 par défaut)
-kDossiers de sortie au format KAPE

Sortie : un BMP par tuile nommé <file>_<NNNN>.bmp, et <file>_collage.bmp quand un collage est demandé.

Points forts : le comportement de référence, scriptable, facile à lancer sur de nombreuses collectes, citable. Contreparties : un environnement Python sur la machine d'analyse, puis des centaines voire des milliers de fichiers BMP à parcourir dans une visionneuse d'images.

RdpCacheStitcher

RdpCacheStitcher, publié par le BSI, est une interface graphique qui vous aide à assembler en écrans les tuiles exportées. Il prend en entrée les tuiles exportées par bmc-tools. Utilisez-le quand le travail consiste à reconstituer des écrans complets et que vous voulez une application de bureau dédiée à cette tâche.

Points forts : conçu spécifiquement pour la reconstruction. Contreparties : c'est une seconde étape après bmc-tools, et une installation sur le poste.

RDP Bitmap Cache Parser

L'outil de ce site décode les deux formats dans le navigateur. Les fichiers ne quittent jamais la machine : le décodage tourne en Rust compilé en WebAssembly, dans un Web Worker.

Ce qu'il ajoute autour du décodeur :

  • Chargement de fichiers, de dossiers et de ZIP (KAPE, Velociraptor, profils zippés), chaque fichier étant rattaché au compte déduit de Users\<name>\ dans le chemin.
  • Panneau Constats : comptes ayant utilisé le client RDP, tuiles de type console, restes d'emplacement, tuiles non décodables, et un rappel que les tuiles ne portent aucun horodatage.
  • Galerie avec index des tuiles et ordre du cache, indices de triage (Type console, Type texte, Reste d'emplacement, Uni, Doublon, Non décodée), un filtre À examiner d'abord et l'option Masquer les tuiles unies et les doublons.
  • Collage avec un nombre de tuiles par ligne paramétrable, en Ordre du cache ou en Disposition bmc-tools pour retrouver l'agencement du _collage.bmp de bmc-tools.
  • Reconstruire : un canevas en grille pour placer les tuiles à la main, exporté en PNG avec un JSON de disposition.
  • Détail d'une tuile : clé, taille, profondeur, compression, offset dans le fichier.
  • Exports : CSV, JSON, un ZIP des tuiles en PNG ou en BMP nommés comme la sortie de bmc-tools (avec un tiles.csv), PNG d'une tuile, PNG du collage.

Limites, en toute franchise

LimiteQue faire
Pas d'OCRLisez le texte vous-même ; retranscrivez-le dans vos notes
Pas d'assemblage automatiquePlacez les tuiles à la main sur le canevas Reconstruire, ou utilisez RdpCacheStitcher
Les indices heuristiques peuvent rater des tuiles ou en signaler à tortVoyez-les comme un ordre de lecture, pas comme des constats
Couleurs 8 bits approximativesLa palette n'est pas dans le cache ; fiez-vous aux formes et au texte
Tuiles étroites décodées avec leur propre largeur comme pas de lignebmc-tools suppose 64 ; comparez les deux sur les tuiles étroites
Tuiles 8 et 32 bits décompressées affichées dans leur profondeur réelle ; tuiles 32 bits en codec planar décodéesbmc-tools rend les tuiles décompressées en 16 bits et ignore les tuiles planar ; attendez-vous à des différences sur ces tuiles
Validé sur des fichiers synthétiques et construits à la mainRecoupez les tuiles importantes avec bmc-tools sur les cas réels
Tourne dans un onglet de navigateurLes très grosses collectes dépendent de la mémoire du navigateur

L'outil n'affiche aucune plage horaire, parce que le cache ne contient aucune heure. La datation se fait avec les artefacts du poste source.

Lequel choisir, et quand

SituationOutil suggéré
Coup d'œil rapide sur un dossier de cache depuis un portable d'analyse sans PythonRDP Bitmap Cache Parser
Traitement par lots de nombreuses collectes dans une chaîne automatiséebmc-tools
Reconstitution d'écrans complets avec un outil de bureau dédiébmc-tools, puis RdpCacheStitcher
Triage : quelles tuiles lire en premier ?RDP Bitmap Cache Parser (À examiner d'abord)
Un constat destiné à un rapportDécoder avec deux outils et comparer
Partager des tuiles avec un collègue qui travaille avec bmc-toolsZIP BMP de RDP Bitmap Cache Parser (nommage bmc-tools)

Les outils se combinent bien. Un parcours qui fonctionne : triage dans le navigateur, export du ZIP BMP, reconstruction dans RdpCacheStitcher ou sur le canevas Reconstruire, puis nouveau passage de bmc-tools sur les fichiers originaux pour les tuiles que vous citez.

Vérifier un outil avec un autre

Pour une tuile que vous comptez citer :

  1. Notez son index et son offset dans le fichier depuis le panneau de détail de la tuile.
  2. Lancez bmc-tools sur le même fichier et ouvrez le BMP correspondant (rapprochez par index, et par contenu si la numérotation diffère).
  3. Comparez les images. Les différences apparaissent le plus souvent sur les tuiles étroites (pas de ligne), les tuiles 8 bits (palette), les tuiles 8 et 32 bits décompressées (bmc-tools les rend en 16 bits) et les tuiles 32 bits en codec planar, que bmc-tools ignore.
  4. Consignez les deux dans vos notes.

Pour une prise en main pas à pas dans le navigateur, voir comment analyser le cache bitmap RDP dans votre navigateur.

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.