Jump List Parser
Zurück zum Blog

Jump-List-Forensik: Eine praktische DFIR-Anleitung

2026-05-253 Min. Lesezeit

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

  1. Sicherstellen. Ziehen Sie %AppData%\Microsoft\Windows\Recent\AutomaticDestinations und den daneben liegenden CustomDestinations-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 funktioniert robocopy /b aus einer gemounteten Shadow Copy.
  2. Triagieren. Listen Sie die AppIDs (Dateinamen ohne Erweiterung) auf und ordnen Sie sie Anwendungen zu. Verwenden Sie die mit Eric Zimmermans JLECmd ausgelieferte AppID-Liste als Referenz; alles nicht Zugeordnete verdient einen genaueren Blick, da benutzerdefinierte und portable Anwendungen ihre eigenen AppIDs erzeugen.
  3. Parsen. Extrahieren Sie jeden nummerierten LNK-Stream und die DestList-Zeilen. JLECmd erzeugt CSV; Plaso/log2timeline gibt 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.
  4. Korrelieren. Gleichen Sie die DestList-Zugriffszeitstempel mit der interaktiven Sitzungs-Timeline des Benutzers ab: Security-Log 4624/4634 für Logon und Logoff, den UserAssist-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.
  5. Berichten. Belegen Sie jeden Befund mit Quelldatei, Streamnummer und DestList-Eintrags-ID — zum Beispiel 1b4dd67f29cb1962.automaticDestinations-ms, Stream 7, DestList-Eintrag 0x12. 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^7 das Abziehen von 11644473600 Sekunden; 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+ (Version 3 und 4). 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.