Skip to content

RDP-Lateral-Movement: Artefakte auf dem Quellsystem

Welche Artefakte auf dem RDP-Quellsystem zeigen, wohin und wann sich ein Benutzer verbunden hat, und wie Sie damit den Inhalt des Bitmap-Caches einordnen.

Veröffentlicht am 6 Min. Lesezeit

Kurz gesagt. Bei RDP-Lateral-Movement bewahrt der Rechner, von dem aus sich der Angreifer verbunden hat, viel auf: den Bitmap-Cache (was der entfernte Bildschirm zeigte), das Protokoll Microsoft-Windows-TerminalServices-RDPClient/Operational (Ereignis 1024 mit dem Namen des Ziels), die Registry-Schlüssel unter Terminal Server Client (Ziele, UsernameHint, MRU-Liste), Default.rdp und Ausführungsspuren von mstsc.exe. Der Cache hat keine Zeitstempel; über diese Artefakte datieren Sie ihn und ordnen ihn einem Ziel zu. Auf dem Ziel bestätigen das Security-Protokoll (4624 mit Anmeldetyp 10, 4778/4779) und RemoteConnectionManager 1149 die Gegenseite.

Dieser Artikel ergänzt den Leitfaden zur RDP-Bitmap-Cache-Forensik. Er beschränkt sich bewusst auf wenige, gut bekannte Ereignis-IDs und Schlüssel.

Quelle und Ziel: wer was enthält

FrageQuellsystem (Client)Zielhost (Server)
Was hat der Benutzer gesehen?Bitmap-CacheNicht aufgezeichnet
Welches Ziel wurde kontaktiert?Protokoll des RDP-Clients, Registry, Default.rdpSein eigener Name
Wann?Protokollereignisse, NTFS-Zeitstempel, AusführungsspurenSecurity- und Terminal-Services-Protokolle
Mit welchem Konto?UsernameHint in der RegistryAnmeldeereignisse
Wer hat den Client gestartet?Das Profil, dem Dateien und Schlüssel gehörenNicht aufgezeichnet

Oft ist es die Quellseite, die erhalten bleibt. Ein Angreifer, der auf dem Ziel aufräumt, lässt die clientseitigen Artefakte auf dem Rechner zurück, von dem er kam, sofern er nicht auch dort aufräumt.

Artefakte auf dem Quellsystem

Der Bitmap-Cache

C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\, pro Konto. Er zeigt Bildschirminhalte der entfernten Seite: Konsolen, Ordnerfenster, Werkzeuge. Wann und wo, sagt er nicht. Die Sicherung behandelt Speicherort und Sicherung des RDP-Bitmap-Caches.

NTFS-Zeitstempel der Cache-Dateien

Die Cache-Dateien sind gewöhnliche Dateien, das Dateisystem datiert sie also:

  • Zeitstempel aus $STANDARD_INFORMATION und $FILE_NAME in der $MFT: Erstellung und letzter Schreibzugriff jeder bcache*.bmc und Cache*.bin.
  • $UsnJrnl: Datensätze zu Erstellen, Schreiben und Schließen dieser Dateien, sofern das Journal den Zeitraum noch abdeckt.

Behandeln Sie diese Werte als Grenzen. Ein Zeitpunkt des letzten Schreibzugriffs besagt, dass der Client in diesem Moment in die Datei geschrieben hat; er sagt nicht, welche Kacheln damals geschrieben wurden, und eine über mehrere Sitzungen genutzte Datei behält nur ihre letzten Zeiten. Die Parser für MFT und USN-Journal lesen diese Daten.

Das Ereignisprotokoll des RDP-Clients

Das Protokoll RDPClient Operational, Microsoft-Windows-TerminalServices-RDPClient/Operational, liegt auf dem Quellsystem. Ereignis 1024 hält fest, dass der Client versucht, eine Verbindung zu einem Server herzustellen, und nennt den Namen des Ziels. Damit haben Sie eine Zeit und ein Ziel, die Sie neben den Cache stellen können.

Es dokumentiert einen Versuch, keine erfolgreiche Anmeldung. Kombinieren Sie es, wo möglich, mit den Protokollen des Ziels. Zum Auswerten von Ereignisprotokollen: EVTX-Parser.

Registry-Schlüssel von Terminal Server Client

In der NTUSER.DAT des Benutzers, unter Terminal Server Client:

SchlüsselInhalt
HKCU\Software\Microsoft\Terminal Server Client\Servers\<host>Ein Unterschlüssel pro Ziel; UsernameHint enthält den verwendeten Benutzernamen
HKCU\Software\Microsoft\Terminal Server Client\DefaultMRU0 bis MRU9, die zuletzt verwendeten Ziele, die der Client anzeigt

Sie liefern Ziele und Konten pro Benutzer. Die Zeitpunkte des letzten Schreibzugriffs auf Registry-Schlüssel können helfen, Ereignisse zu ordnen, spiegeln aber die letzte Änderung am Schlüssel wider, nicht jede einzelne Verbindung. Der Registry-Parser liest diese Hives.

Default.rdp

Default.rdp im Dokumente-Ordner des Benutzers enthält die Einstellungen der letzten Verbindung, die mit den Standardeinstellungen des Clients aufgebaut wurde. Unter anderem zeigt sie, ob die persistente Bitmap-Zwischenspeicherung aktiviert war (bitmapcachepersistenable:i:1), und damit, ob überhaupt ein Cache zu erwarten ist.

Ausführung von mstsc.exe

Ausführungsspuren von mstsc.exe bringen den Client auf die Zeitachse: die Prefetch-Datei für mstsc.exe (Prefetch-Parser) und die Jump List des Remotedesktop-Clients (Jump-List-Parser), die die letzten Ziele auflisten kann.

Artefakte auf dem Zielhost

Ist das Ziel verfügbar, bestätigen Sie die Gegenseite:

ProtokollEreignisBedeutung
Security4624, Anmeldetyp 10Interaktive Remote-Anmeldung
Security4778 / 4779Sitzung wieder verbunden / getrennt
Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational1149Netzwerkverbindung zum Remotedesktopdienst, mit dem Benutzer
Microsoft-Windows-TerminalServices-LocalSessionManager/OperationalSitzungsereignisseAnmeldung, Abmeldung und erneute Verbindung einer Sitzung

Diese Liste halten wir bewusst kurz. In RDP-Analysen tauchen viele weitere Ereignis-IDs auf; sie unterscheiden sich je nach Version und Konfiguration und werden zum Datieren eines Caches nicht gebraucht.

Alles zusammen: den Cache datieren

Eine praktikable Methode:

  1. Den Cache zuordnen. Notieren Sie das Konto aus dem Pfad (Users\<name>\). Dieses Konto hat den Client gestartet.
  2. Ziele für dieses Konto auflisten. Servers-Unterschlüssel und MRU-Liste in der Registry, Default.rdp, Jump List.
  3. Die Verbindungszeitachse aufbauen. Zeiten und Ziele aus Ereignis 1024 im Protokoll des RDP-Clients, Ausführungszeiten von mstsc.exe aus Prefetch.
  4. Den Cache eingrenzen. Erstellungs- und letzte Schreibzeit jeder Cache-Datei; USN-Datensätze, falls vorhanden.
  5. Die Kacheln lesen. Suchen Sie nach allem, was Inhalte mit einem Ziel oder einer Zeit verknüpft: Fenstertitel mit Hostnamen, eine Taskleistenuhr, Datumsangaben in Dateilisten, Übertragungsdauern.
  6. Auf dem Ziel gegenprüfen. 4624 Typ 10, 4778/4779, 1149 für dasselbe Konto und denselben Zeitraum.

Ein Beispiel mit den Beispieldaten

Das Werkzeug liefert einen synthetischen, fiktiven Fall (FIN-WKS-07, 2026-09-14) mit, der diesem Muster folgt. Der vom Quellsystem gesicherte Cache, Profil svc_backup, enthält:

  • in Cache0000.bin eine Konsole mit dem Titel FIN-WKS-07 - console (svc_backup) und dem Befehl rclone.exe copy C:\Users\Public\data E:\exfil, ein Ordnerfenster auf E:\exfil und eine Taskleistenuhr mit 10:52;
  • in bcache22.bmc eine frühere Ansicht (etwa 10:14 laut Uhr) mit tar -xf tools.zip -C C:\ProgramData\Intel und einem Slot-Rest der Titelleiste eines Editorfensters mit creds.txt.

Der Fenstertitel nennt das Ziel; die Uhren liefern Zeiten des entfernten Bildschirms. In einem echten Fall würden Sie dann nach Einträgen zu Ereignis 1024 suchen, die diesen Host um diese Zeiten nennen, nach einem Schlüssel Servers\FIN-WKS-07 im Hive von svc_backup und nach Anmeldungen 4624 Typ 10 für das Konto auf dem Ziel. Berichten Sie die Uhrzeiten als das, was der Bildschirm anzeigte, und die Protokollzeiten als Zeitachse.

Was in den Bericht gehört

AussageGestützt durch
Konto X hat den RDP-Client auf Host A ausgeführtCache und Registry im Profil von X, Prefetch
X hat zum Zeitpunkt T eine Verbindung zu Host B versuchtProtokoll des RDP-Clients, Ereignis 1024
Eine Sitzung auf B kam zustandeProtokolle des Ziels (4624 Typ 10, 1149)
Während einer Sitzung zeigte der Bildschirm von B YCache-Kacheln, mit Rekonstruktionsmethode
Y geschah zum Zeitpunkt TNur wenn über Protokolle, Zeitstempel oder sichtbare Uhren verknüpft, und als solches benannt

Halten Sie die Triage-Hinweise des Werkzeugs aus den Schlussfolgerungen heraus: „Konsolenartig“ ist ein Grund, eine Kachel zuerst zu lesen, kein Befund.

FAQ

Welcher Host enthält die Spuren einer ausgehenden RDP-Verbindung?

Das Quellsystem, also der Rechner, auf dem der Remotedesktop-Client lief. Dort liegen der Bitmap-Cache, das Ereignisprotokoll des RDP-Clients, die Registry-Schlüssel von Terminal Server Client und Ausführungsspuren von mstsc.exe. Der Zielhost enthält die Anmelde- und Sitzungsdatensätze.

Verrät mir der Bitmap-Cache, von welchem Server eine Kachel stammt?

Nein. Kacheln tragen weder Hostnamen noch Zeit. Ordnen Sie sie über das Protokoll des RDP-Clients, die Registry-Schlüssel von Terminal Server Client und die Protokolle des Zielhosts einem Ziel zu, außerdem über alles, was in den Kacheln selbst sichtbar ist, etwa einen Fenstertitel.

Beweist Ereignis 1024, dass eine Sitzung zustande kam?

Nein. Ereignis 1024 im Protokoll RDPClient Operational hält fest, dass der Client versucht hat, eine Verbindung zu einem Server herzustellen, mit dem Namen des Ziels. Bestätigen Sie die Anmeldung auf dem Ziel (Security 4624 mit Anmeldetyp 10 oder RemoteConnectionManager 1149), sofern diese Protokolle vorhanden sind.

Verwandte Artikel

Verwandte Artikel

Was der RDP-Bitmap-Cache ist, wo er liegt, was seine Kacheln zeigen, wie Sie ihn datieren und wie Sie bcache*.bmc- und Cache*.bin-Dateien auswerten.
Schritt für Schritt: bcache*.bmc und Cache*.bin im kostenlosen Browser-Parser laden, Kacheln sichten, Collage und Bildschirm aufbauen, Beweise exportieren.
Warum eine RDP-Cache-Collage stellenweise passt und stellenweise verrutscht, wie Sie die Breite wählen und einen Bildschirm Kachel für Kachel neu aufbauen.