RDP-Bitmap-Cache: Speicherort und Sicherung
Wo der RDP-Bitmap-Cache je Benutzer liegt und wie Sie ihn mit PowerShell, dem KAPE-Target RDPCache, Velociraptor oder aus einem Abbild sauber sichern.
Kurz gesagt. Der RDP-Bitmap-Cache liegt unter C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ auf dem Rechner, von dem aus der Benutzer die Verbindung aufgebaut hat, ein Ordner pro Konto. Sichern Sie den kompletten Ordner für jeden Benutzer, behalten Sie den Pfadteil Users\<name>\ bei, damit jede Datei ihrem Konto zugeordnet bleibt, und schließen Sie vorher offene Remotedesktopsitzungen, weil die Dateien in Benutzung sein können. Das KAPE-Target RDPCache und Windows.Triage.Targets von Velociraptor erledigen das für Sie; eine kurze PowerShell-Schleife oder ein find auf einem eingebundenen Abbild funktionieren ebenfalls.
Was der Cache enthält und warum er zählt, erklärt der Leitfaden zur RDP-Bitmap-Cache-Forensik.
Wo der Cache liegt
Der RDP-Bitmap-Cache wird vom Client Remotedesktopverbindung, mstsc, in das lokale (nicht servergespeicherte) AppData des Benutzers geschrieben, der ihn gestartet hat.
| System | Pfad |
|---|---|
| Aktuelles Windows | C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ |
| Windows XP | C:\Documents and Settings\<user>\Local Settings\Application Data\Microsoft\Terminal Server Client\Cache\ |
| Nach einem In-Place-Upgrade | C:\Windows.old\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ |
In diesem Ordner finden Sie zwei Dateifamilien:
| Dateien | Format |
|---|---|
bcache2.bmc, bcache22.bmc, bcache24.bmc | Älterer BMC-Cache, feste Slots, 8/16/32 bpp |
Cache0000.bin, Cache0001.bin, ... | Persistenter RDP-8-Cache, 32-Bit-Kacheln |
Beide Familien können nebeneinander im selben Ordner liegen. Sichern Sie alles darin; filtern Sie nicht nach Dateiendung.
Welcher Host, welcher Benutzer
Zwei Fehler kosten am meisten Zeit:
- Falscher Host. Der Cache hält fest, was der Client angezeigt hat, er liegt also auf dem Quellsystem. Ist ein Angreifer von
WKS-AaufSRV-Bgesprungen, liegen die Spuren der Sitzung aufSRV-Bim Cache aufWKS-A. Auch auf dem Ziel lohnt sich die Sicherung, dann aber für Sitzungen, die vom Ziel aus gestartet wurden. - Falsches Konto. Der Cache gehört dem Konto, das
mstscausgeführt hat, nicht dem Konto, mit dem sich jemand am entfernten Host angemeldet hat. Ein lokales Profilsvc_backupauf dem Quellsystem kann die Bildschirme einer Sitzung enthalten, die auf dem Ziel mit Domänen-Anmeldedaten geöffnet wurde.
Deshalb zählt der Pfad: RDP Bitmap Cache Parser ordnet jede Datei dem Konto zu, das aus Users\<name>\ im Pfad stammt. Entfernen Sie den Pfad, verlieren Sie die Zuordnung.
Option 1: PowerShell auf einem laufenden System
Als Administrator ausführen. Schließen Sie vorher offene Remotedesktopsitzungen.
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
Was das Skript tut: Für jeden Profilordner kopiert es den Ordner Cache mit robocopy im Backup-Modus (/B), ohne Wiederholungen und mit knapper Ausgabe, und behält die Struktur Users\<name>\... unter C:\triage bei. Anschließend erzeugt tar -a aus dieser Struktur eine ZIP-Datei. Die ZIP lässt sich direkt im Werkzeug ablegen.
Diese Schleife betrachtet nur C:\Users. Pfade unter Windows.old oder von XP deckt sie nicht ab; nutzen Sie dafür KAPE oder ein eingebundenes Abbild.
Option 2: KAPE
KapeFiles liefert ein Target RDPCache mit (Quelle). Es sichert den Cache-Ordner jedes Benutzers sowie die Speicherorte unter Windows.old und von Windows XP.
kape.exe --tsource C: --tdest C:\triage\kape --target RDPCache
KAPE behält unter dem Ziel die ursprüngliche Verzeichnisstruktur bei, die Zuordnung zu Konten bleibt also erhalten. Packen Sie den Zielordner als ZIP oder legen Sie ihn als Ordner ab.
Option 3: Velociraptor
Sammeln Sie Windows.Triage.Targets (aus dem Velociraptor-Triage-Projekt) mit dem Target RDPCache, entweder über die GUI von einem laufenden Client oder mit einem Offline-Collector. Die entstehende Sammlungs-ZIP können Sie unverändert laden: Das Werkzeug liest ZIPs, auch solche von KAPE und Velociraptor, und findet die Cache-Dateien darin.
Option 4: ein eingebundenes Datenträgerabbild
Mit dem Windows-Volume schreibgeschützt eingebunden unter /mnt/win:
cd /mnt/win && find Users -ipath '*/Terminal Server Client/Cache/*' -type f | zip -@ ~/triage/rdpcache.zip
-ipath unterscheidet nicht zwischen Groß- und Kleinschreibung, was bei Abbildern mit unterschiedlich geschriebenen Ordnernamen wichtig ist. Passen Sie das Startverzeichnis für ältere Strukturen auf Windows.old/Users oder Documents and Settings an.
Stolperfallen
| Problem | Ursache | Lösung |
|---|---|---|
| Kopie schlägt fehl oder Dateien werden übersprungen | Eine Sitzung ist offen und der Client hält die Dateien | Sitzungen schließen oder Backup-Modus / Raw-Disk-Collector nutzen |
| Dateien keinem Konto zugeordnet | Pfade bei der Sicherung abgeflacht | Users\<name>\... im Archiv beibehalten |
| Nichts für das erwartete Konto | Falscher Host oder falsches Profil | Prüfen, welches Konto mstsc auf welchem Host ausgeführt hat |
| Upgrade-Historie übersehen | Windows.old nicht gesichert | Das KAPE-Target nutzen oder das Abbild durchsuchen |
| Großes Archiv | Cache-Dateien können Dutzende MB mit Tausenden Kacheln umfassen | Normal; das Werkzeug verarbeitet sie lokal |
Sichern Sie außerdem die NTFS-Metadaten ($MFT, $UsnJrnl) und die Artefakte, mit denen Sie die Sitzungen datieren, denn die Kacheln selbst tragen keine Zeit: das Ereignisprotokoll des RDP-Clients, die NTUSER.DAT des Benutzers für die Registry-Schlüssel von Terminal Server Client, Jump Lists und Prefetch. Die Liste und ihre Verwendung finden Sie in RDP-Lateral-Movement: Artefakte auf dem Quellsystem.
Eingrenzung: von welchen Hosts sichern
Sichern Sie von jedem Host, auf dem im relevanten Zeitraum jemand eine Remotedesktopsitzung gestartet haben könnte, nicht nur von den Servern, auf die zugegriffen wurde. Gute Kandidaten sind Admin-Workstations, Jump Hosts und jeder Rechner, auf dem das Ereignisprotokoll des RDP-Clients oder die Registry-Schlüssel von Terminal Server Client ein relevantes Ziel nennen. Ein Cache, der sich als leer oder alt herausstellt, kostet wenig; ein übersehenes Quellsystem kann die einzige Sicht auf das kosten, was auf dem Ziel geschah.
Integrität
Hashen Sie das Archiv oder die Dateien im gesicherten Zustand, dokumentieren Sie Werkzeug und Befehl und arbeiten Sie mit Kopien. Das Browser-Werkzeug liest nur die Bytes, die Sie ihm geben, und verändert oder lädt sie nicht hoch; gute Praxis hängt aber nicht vom Werkzeug ab.
Nächster Schritt
Laden Sie die ZIP oder den Ordner in RDP Bitmap Cache Parser oder folgen Sie Schritt für Schritt der Anleitung den RDP-Bitmap-Cache im Browser analysieren.
FAQ
Wo wird der RDP-Bitmap-Cache gespeichert?
Im Profil jedes Benutzers auf dem Rechner, auf dem der Remotedesktop-Client lief: C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\. Unter Windows XP liegt er unter Documents and Settings\<user>\Local Settings\Application Data. Prüfen Sie nach einem Upgrade zusätzlich C:\Windows.old\Users.
Warum schlägt meine Kopie des Caches fehl?
Die Dateien können in Benutzung sein, solange eine Remotedesktopsitzung offen ist. Schließen Sie zuerst die Sitzungen oder kopieren Sie im Backup-Modus (robocopy /B) bzw. mit einem Raw-Disk-Collector wie KAPE oder Velociraptor.
Gibt es ein KAPE-Target für den RDP-Bitmap-Cache?
Ja. Das KapeFiles-Target RDPCache sichert den Cache-Ordner jedes Benutzers, einschließlich der Pfade unter Windows.old und von Windows XP.