RDP-Cache-Parser im Vergleich: bmc-tools und Alternativen
bmc-tools, RdpCacheStitcher und RDP Bitmap Cache Parser im Vergleich: was jedes Werkzeug kann, wo es in einen Fall passt und wo das Browser-Werkzeug endet.
Kurz gesagt. bmc-tools (ANSSI, Python) ist der Referenzdecoder für den RDP-Bitmap-Cache und das Werkzeug, das Sie zitieren sollten. RdpCacheStitcher (BSI) ist eine GUI, die hilft, von bmc-tools exportierte Kacheln zu Bildschirmen zusammenzusetzen. RDP Bitmap Cache Parser dekodiert dieselben Dateien im Browser, mit einem eigenen, unabhängig entwickelten Decoder, der gegen bmc-tools validiert wurde, dazu eine Galerie mit Triage-Hinweisen, eine Collage, eine Rekonstruktionsfläche und Exporte. Eine zweite Meinung ersetzt es nicht: Vergleichen Sie in echten Fällen wichtige Kacheln mit bmc-tools.
Wenn Sie ein Werkzeug suchen, weil Sie gerade einen Ordner Terminal Server Client\Cache gefunden haben, erklärt der Leitfaden zur RDP-Bitmap-Cache-Forensik, was Sie vor sich haben.
Die drei Werkzeuge im Überblick
| bmc-tools | RdpCacheStitcher | RDP Bitmap Cache Parser | |
|---|---|---|---|
| Betreuer | ANSSI (Frankreich) | BSI (Deutschland) | Unabhängig (diese Website) |
| Form | Python-Kommandozeilenskript | Desktop-GUI | Webseite, WebAssembly in einem Web Worker |
| Eingabe | bcache*.bmc, Cache*.bin | Von bmc-tools exportierte Kacheln | bcache*.bmc, Cache*.bin, Ordner, ZIPs |
| Dekodierung | Ja (Referenz) | Nein, nutzt exportierte Kacheln | Ja (unabhängig, gegen bmc-tools validiert) |
| Collage | Ja (-b, Breite -w) | Nicht ihr Zweck | Ja, einstellbar, zwei Anordnungen |
| Bildschirmrekonstruktion | Nein | Ja, ihr Zweck | Manuelle Fläche |
| Slot-Reste | Export mit -o | Arbeitet mit exportierten Kacheln | Angezeigt und markiert |
| Installation | Python | Download | Keine |
| Lizenz | CeCILL 2.1 | Siehe Repository | Kostenlos nutzbar |
RdpCacheStitcher beschreiben wir nur so weit, wie wir sicher sind; den vollen Funktionsumfang entnehmen Sie Repository und Handbuch.
bmc-tools
bmc-tools ist die Referenzimplementierung. Ein Großteil der öffentlichen Arbeit zu diesem Artefakt stützt sich auf das Reverse Engineering der Formate BMC und Cache*.bin durch bmc-tools. Unser eigener Decoder ist eine separate Implementierung: Er entstand auf Grundlage der von Microsoft veröffentlichten Protokollspezifikationen (MS-RDPBCGR und MS-RDPEGDI) und der öffentlichen Beschreibung der Dateien durch CERT-FR (Bulletin CERTFR-2016-ACT-017) und wurde Kachel für Kachel gegen bmc-tools validiert. Die Dekompression von Kacheln (Interleaved RLE) wird seit Version 3.00 aus dem Jahr 2022 unterstützt.
Optionen:
| Option | Zweck |
|---|---|
-s | Quelldatei oder -ordner |
-d | Zielordner |
-c | Anzahl der zu extrahierenden Kacheln |
-v | Ausführliche Ausgabe |
-o / --old | Auch alte Daten in Slots exportieren (Reste) |
-b | Eine Collage-Bitmap erzeugen |
-w | Breite der Collage in Kacheln pro Zeile (Standard 64) |
-k | Ausgabeordner im Stil von KAPE |
Ausgabe: eine BMP pro Kachel mit dem Namen <file>_<NNNN>.bmp und <file>_collage.bmp, wenn eine Collage angefordert wird.
Stärken: das Referenzverhalten, skriptfähig, einfach über viele Sammlungen hinweg auszuführen, zitierfähig. Abwägungen: eine Python-Umgebung auf dem Analyserechner, und anschließend blättern Sie Hunderte oder Tausende BMP-Dateien in einem Bildbetrachter durch.
RdpCacheStitcher
RdpCacheStitcher, veröffentlicht vom BSI, ist eine GUI, die hilft, exportierte Kacheln zu Bildschirmen zusammenzusetzen. Als Eingabe dienen die von bmc-tools exportierten Kacheln. Nutzen Sie es, wenn es darum geht, ganze Bildschirme wiederherzustellen, und Sie dafür eine eigene Desktop-Anwendung möchten.
Stärken: eigens für die Rekonstruktion gebaut. Abwägungen: ein zweiter Schritt nach bmc-tools und eine Desktop-Installation.
RDP Bitmap Cache Parser
Das Werkzeug auf dieser Website dekodiert beide Formate im Browser. Die Dateien verlassen den Rechner nie: Die Dekodierung läuft in Rust, kompiliert zu WebAssembly, in einem Web Worker.
Was es rund um den Decoder ergänzt:
- Einlesen von Dateien, Ordnern und ZIPs (KAPE, Velociraptor, gepackte Profile), wobei jede Datei dem Konto aus
Users\<name>\im Pfad zugeordnet wird. - Befunde: Konten, die den RDP-Client benutzt haben, konsolenartige Kacheln, Slot-Reste, nicht dekodierbare Kacheln und ein Hinweis, dass Kacheln keine Zeitstempel tragen.
- Galerie mit Kachelindex und Cache-Reihenfolge, Triage-Hinweisen (Konsolenartig, Textartig, Slot-Rest, Einfarbig, Duplikat, Nicht dekodiert), einem Filter Zuerst prüfen und Einfarbige Kacheln und Duplikate ausblenden.
- Collage mit einstellbaren Kacheln pro Zeile, in Cache-Reihenfolge oder bmc-tools-Anordnung, passend zur Anordnung von
_collage.bmpaus bmc-tools. - Rekonstruieren: eine Rasterfläche, um Kacheln von Hand zu platzieren, exportiert als PNG plus Layout-JSON.
- Kacheldetails: Schlüssel, Größe, Farbtiefe, Kompression, Datei-Offset.
- Exporte: CSV, JSON, eine ZIP der Kacheln als PNG oder als BMP mit Namen wie in der Ausgabe von bmc-tools (mit einer
tiles.csv), einzelne Kachel als PNG, Collage als PNG.
Ehrliche Grenzen
| Grenze | Was tun |
|---|---|
| Keine Texterkennung (OCR) | Text selbst lesen und in den Notizen abschreiben |
| Kein automatisches Zusammensetzen | Kacheln auf der Fläche Rekonstruieren von Hand platzieren oder RdpCacheStitcher nutzen |
| Heuristische Hinweise können etwas übersehen oder zu viel markieren | Als Lesereihenfolge behandeln, nicht als Befunde |
| 8-Bit-Farben nur näherungsweise | Die Palette liegt nicht im Cache; auf Formen und Text stützen |
| Schmale Kacheln mit eigener Breite als Stride dekodiert | bmc-tools nimmt 64 an; bei schmalen Kacheln beide vergleichen |
| Dekomprimierte 8- und 32-Bit-Kacheln in ihrer echten Farbtiefe angezeigt; planar komprimierte 32-Bit-Kacheln dekodiert | bmc-tools stellt dekomprimierte Kacheln mit 16 Bit dar und überspringt planar komprimierte; bei diesen Kacheln mit Unterschieden rechnen |
| Mit synthetischen und von Hand erstellten Dateien validiert | In echten Fällen wichtige Kacheln mit bmc-tools gegenprüfen |
| Läuft in einem Browser-Tab | Sehr große Sammlungen hängen vom Speicher des Browsers ab |
Das Werkzeug zeigt keinen Zeitraum an, weil der Cache keine Zeiten enthält. Die Datierung erfolgt über Artefakte auf dem Quellsystem.
Welches wann
| Situation | Empfohlenes Werkzeug |
|---|---|
| Schneller Blick auf einen Cache-Ordner auf einem Analyse-Laptop ohne Python | RDP Bitmap Cache Parser |
| Stapelverarbeitung vieler Sammlungen in einer Pipeline | bmc-tools |
| Ganze Bildschirme mit einem eigenen Desktop-Werkzeug wiederherstellen | bmc-tools, dann RdpCacheStitcher |
| Triage: Welche Kacheln soll ich zuerst lesen? | RDP Bitmap Cache Parser (Zuerst prüfen) |
| Ein Befund, der in einen Bericht geht | Mit zwei Werkzeugen dekodieren und vergleichen |
| Kacheln mit einem Kollegen teilen, der mit bmc-tools arbeitet | BMP-ZIP aus RDP Bitmap Cache Parser (Benennung wie bmc-tools) |
Die Werkzeuge ergänzen sich gut. Ein praktikabler Weg: im Browser sichten, die BMP-ZIP exportieren, dann in RdpCacheStitcher oder auf der Fläche Rekonstruieren wiederherstellen und bmc-tools für die Kacheln, die Sie zitieren, erneut auf die Originale anwenden.
Ein Werkzeug gegen ein anderes prüfen
Für eine Kachel, die Sie zitieren möchten:
- Notieren Sie Index und Datei-Offset aus dem Detailfenster der Kachel.
- Führen Sie bmc-tools auf derselben Datei aus und öffnen Sie die entsprechende BMP (Zuordnung über den Index, bei abweichender Nummerierung über den Inhalt).
- Vergleichen Sie die Bilder. Unterschiede sind am ehesten bei schmalen Kacheln (Stride), 8-Bit-Kacheln (Palette), dekomprimierten 8- und 32-Bit-Kacheln (bmc-tools stellt sie mit 16 Bit dar) und planar komprimierten 32-Bit-Kacheln zu erwarten, die bmc-tools überspringt.
- Halten Sie beides in Ihren Notizen fest.
Eine Schritt-für-Schritt-Anleitung für den Browser-Ablauf finden Sie unter den RDP-Bitmap-Cache im Browser analysieren.