Jump-List-Forensik: Eine praktische DFIR-Anleitung
Jump Lists liefern einem DFIR-Analysten eine pro Anwendung und pro Benutzer geführte Aufzeichnung von Dateizugriffen: den vollständigen Zielpfad jedes geöffneten Elements, den FILETIME des letzten Zugriffs und einen monoton steigenden Zugriffszähler, den NetBIOS-Hostnamen des Rechners, auf dem die Datei ursprünglich lag, den Pin-Status, die Anwendungsidentität über ihre AppID sowie eine Volume-ID, die einen Eintrag einem bestimmten Wechsellaufwerk zuordnen kann. Alles Folgende ist der Workflow, um diese Daten herauszuholen und in einen Bericht zu überführen.
Welche Beweise Jump Lists liefern
- Zielpfad des geöffneten Elements (lokal, UNC oder Wechselmedium).
- Zeitstempel des letzten Zugriffs (FILETIME, UTC) und Zugriffszähler pro Eintrag.
- Ursprünglicher NetBIOS-Hostname, erfasst zum Zeitpunkt des Zugriffs.
- Pin-Status — wurde dieses Element vom Benutzer an die Jump List angeheftet.
- AppID, die die startende Anwendung deterministisch identifiziert.
- Volume-ID und Volume-Label aus dem eingebetteten LNK, nützlich für die Korrelation mit Wechselmedien.
- MAC-Zeiten und Dateigröße des Ziels, wie sie beim Schreiben des LNK beobachtet wurden.
Ein 5-Schritte-DFIR-Workflow
- Sicherstellen. Ziehen Sie
%AppData%\Microsoft\Windows\Recent\AutomaticDestinationsund den daneben liegendenCustomDestinations-Ordner für jedes Benutzerprofil. Arbeiten Sie aus einem forensischen Image oder einer VSS-Kopie — die Live-Dateien sind in der Regel durch Explorer gesperrt. KAPE hat dafür ein Target; andernfalls funktioniertrobocopy /baus einer gemounteten Shadow Copy. - Triagieren. Listen Sie die AppIDs (Dateinamen ohne Erweiterung) auf und
ordnen Sie sie Anwendungen zu. Verwenden Sie die mit Eric Zimmermans
JLECmdausgelieferte AppID-Liste als Referenz; alles nicht Zugeordnete verdient einen genaueren Blick, da benutzerdefinierte und portable Anwendungen ihre eigenen AppIDs erzeugen. - Parsen. Extrahieren Sie jeden nummerierten LNK-Stream und die
DestList-Zeilen.JLECmderzeugt CSV; Plaso/log2timelinegibt Timeline-Events aus; Autopsy zeigt sie in den Ingest-Ergebnissen an. Für eine einmalige Sichtung, ohne das Artefakt vom Analystenrechner zu bewegen, legen Sie die Datei auf dem In-Browser-Parser ab — er läuft clientseitig und lädt niemals hoch. - Korrelieren. Gleichen Sie die DestList-Zugriffszeitstempel mit der
interaktiven Sitzungs-Timeline des Benutzers ab: Security-Log
4624/4634für Logon und Logoff, denUserAssist-Registry-Schlüssel für GUI-Starts und Prefetch für die Prozessausführung. Memory-Artefakte über Volatility können bestätigen, dass die Anwendung zu diesem Zeitpunkt tatsächlich resident war. - Berichten. Belegen Sie jeden Befund mit Quelldatei, Streamnummer und
DestList-Eintrags-ID — zum Beispiel
1b4dd67f29cb1962.automaticDestinations-ms, Stream7, DestList-Eintrag0x12. Reproduzierbarkeit ist das, was den Befund tragfähig macht.
Host-übergreifende Beweise: das Hostname-Feld
Jede DestList-Zeile trägt den NetBIOS-Hostnamen des Rechners, von dem aus die Zieldatei geöffnet wurde. Auf einer Workstation, die Freigaben von mehreren Servern einbindet, zeigt dieses Feld, welcher Server jedes geöffnete Dokument bereitgestellt hat — ohne die Logs des Servers selbst zu benötigen. Bei Lateral-Movement-Ermittlungen enthält eine Jump List auf einem kompromittierten Host häufig den Namen des Staging-Servers des Angreifers, lange nachdem die Freigabe abgehängt wurde.
Häufige Fallstricke
- FILETIME zählt 100-Nanosekunden-Intervalle seit 1601-01-01 UTC. Die
Umrechnung in die Unix-Epoche erfordert nach der Division durch
10^7das Abziehen von11644473600Sekunden; Off-by-one-Day-Fehler hier sind die häufigste Ursache falscher Timelines. - DestList-Versionen unterscheiden sich zwischen Windows 7 (Version
1) und Windows 10+ (Version3und4). Zeilengrößen und Feld-Offsets ändern sich — ältere Parser laufen auf neueren Hosts stillschweigend aus dem Tritt. - Manche Anwendungen (Office, Explorer) heften Elemente aggressiv an und erhöhen Zugriffszähler bei Hintergrundindexierung, sodass ein hoher Zählwert für sich allein noch kein Beweis für wiederholte Benutzerinteraktion ist.
- Die Taskleisteneinstellungen haben einen Schalter „Zuletzt geöffnete Elemente anzeigen". Wird er deaktiviert, kürzt das die jeweiligen AppID-Dateien. Die Dateien werden bei der nächsten Nutzung neu erzeugt, daher sind unerwartet kurze DestLists ein erwähnenswerter Indikator.
Legen Sie eine Jump-List-Datei auf der Parser-Startseite ab, um all das zu sehen, ohne Daten irgendwohin zu senden.