Was ist der RDP-Bitmap-Cache?
Damit dieselben Bildschirmteile nicht erneut übertragen werden müssen, führt der Remotedesktop-Client (mstsc.exe) einen persistenten Cache kleiner Bitmaps — meist Kacheln von 64×64 Pixeln —, die der entfernte Rechner sendet. Die Dateien verbleiben im Profil des Benutzers, der den Client ausgeführt hat.
Wieder zusammengesetzt zeigen die Kacheln Fragmente dessen, was dieser Benutzer auf dem entfernten Bildschirm sah: Konsolen und die darin eingegebenen Befehle, Ordnerfenster, Tools, Dokumente. Für Ermittler ist das ein seltener, visueller Nachweis von Lateral Movement, gesichert auf dem Quellsystem.
Speicherort
- C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ auf dem Rechner, von dem aus die Verbindung hergestellt wurde.
- Cache0000.bin, Cache0001.bin…: neueres Format, ein "RDP8bmp"-Header, gefolgt von unkomprimierten 32-Bit-Kacheln.
- bcache2.bmc, bcache22.bmc, bcache24.bmc: älteres Format, feste 64×64-Slots mit 8, 16 oder 32 Bit pro Pixel, Kacheln oft mit dem Interleaved-RLE-Codec von RDP komprimiert.
Warum er für Ermittlungen wichtig ist
- Zeigt, was ein Angreifer oder Administrator auf dem entfernten Host tatsächlich gesehen hat — selbst wenn dieser Host gelöscht oder nie forensisch gesichert wurde.
- Konsolenkacheln können Befehle, Pfade und Tool-Namen offenlegen; Explorer-Kacheln zeigen Ordner- und Dateinamen.
- Schon sein Vorhandensein beweist, dass das Konto auf diesem Rechner den Remotedesktop-Client verwendet hat; korrelieren Sie mit dem Ereignisprotokoll des Clients und der Registry, um das Ziel zu benennen und die Sitzungen zu datieren.
- Ältere Slots können Fragmente früherer Kacheln enthalten (Slot-Reste).
Einschränkungen
- Kacheln haben weder Zeitstempel noch Bildschirmposition: Die Reihenfolge ist die Cache-Reihenfolge, und identische Kacheln werden nur einmal gespeichert.
- Zwischengespeichert wird nur, was der Server als Bitmaps gesendet hat; manche Sitzungen hinterlassen wenige verwertbare Kacheln, und der Cache ist in der Größe begrenzt und wird wiederverwendet.
- Älteren 8-Bit-Kacheln fehlt ihre Palette, daher sind die Farben angenähert. Es gibt keine OCR: Kacheln müssen von einem Menschen gelesen werden.
- Heuristische Hinweise (konsolenartig, textartig) können Kacheln übersehen oder harmlose markieren.
So erhalten Sie die Dateien
- Sichern Sie den gesamten Cache-Ordner jedes Profils mit KAPE (Target RDPCache), Velociraptor (Windows.Triage.Targets, RDPCache) oder aus einem Datenträgerabbild.
- Dokumentieren Sie die Zeitstempel der Dateien: Sie sind der wichtigste Hinweis darauf, wann Sitzungen stattfanden.
- Behalten Sie die Ordnerstruktur Users\<name>\ bei, damit jeder Cache seinem Konto zugeordnet wird.
FAQ
Werden meine Cache-Dateien irgendwo hochgeladen?
Nein. Der Decoder ist nach WebAssembly kompiliertes Rust und läuft in einem Web Worker in Ihrem Browser. Es gibt keinen Upload-Endpunkt; Kacheln, Collagen und Exporte werden lokal erstellt.
Worin unterscheidet sich das Tool von bmc-tools?
Es hat einen eigenen Decoder, unabhängig nach den Spezifikationen von Microsoft geschrieben und gegen bmc-tools validiert, und ergänzt, was auf der Kommandozeile mühsam ist: eine durchsuchbare Galerie, sofort änderbare Collage-Einstellungen, eine Drag-and-drop-Arbeitsfläche zur Rekonstruktion, Triage-Hinweise und Exporte (PNG, BMP mit bmc-tools-Namen, CSV, JSON). bmc-tools bleibt die Referenz, um wichtige Befunde gegenzuprüfen.
Kann das Tool zeigen, wann eine Kachel angezeigt wurde?
Nein — der Cache speichert keine Zeit pro Kachel, und dieses Tool erfindet keine. Datieren Sie die Sitzungen anhand der Zeitstempel der Cache-Dateien, des Ereignisprotokolls RDPClient/Operational (Ereignis 1024) und der Registry-Schlüssel des Terminal Server Client.
Auf welchem Rechner liegt der Cache?
Auf dem Client: dem Rechner, auf dem die Remotedesktopverbindung lief, im Profil des Benutzers, der sie gestartet hat. Er zeigt den entfernten Bildschirm — wechselt ein Angreifer von Host A zu Host B, bleiben Bildschirmfragmente von B auf A zurück.
Warum passen die Zeilen meiner Collage nicht zusammen?
Kacheln werden in der Reihenfolge gespeichert, in der sie zwischengespeichert wurden, identische nur einmal, und Randkacheln sind kleiner. Probieren Sie andere Breiten aus und schließen Sie die Arbeit dann in der Ansicht Rekonstruieren von Hand ab.
Über den Decoder
Der Decoder ist eine eigenständige Rust-Implementierung, geschrieben nach den offenen Spezifikationen von Microsoft ([MS-RDPBCGR] für Interleaved RLE, [MS-RDPEGDI] für den planaren RDP-6.0-Codec) und öffentlichen Arbeiten wie dem CERT-FR-Bulletin CERTFR-2016-ACT-017. bmc-tools der ANSSI (github.com/ANSSI-FR/bmc-tools), das Referenzwerkzeug für dieses Artefakt, diente dazu, die Ausgabe Kachel für Kachel zu validieren; Code daraus wird nicht verwendet. Dokumentierte Abweichungen: Kacheln unter 64 px Breite behalten ihre tatsächliche Breite, dekomprimierte Kacheln mit 8 und 32 bpp behalten ihre tatsächliche Farbtiefe, planare RDP-6.0-Kacheln werden dekodiert, und beschädigte Dateien werden so weit wie möglich dekodiert. Gleichen Sie wichtige Fälle mit bmc-tools ab.