Was ist eine Windows-Jump-List? Eine Einführung für Einsteiger
Eine Windows-Jump-List ist ein pro Anwendung gepflegtes Menü zuletzt verwendeter, häufig verwendeter und angehefteter Elemente, das Windows über die Taskleiste und das Startmenü einblendet. Eingeführt mit Windows 7 und in der Form unverändert bis Windows 10 und Windows 11, ist jede Jump-List zugleich eine Datei auf der Festplatte, die festhält, was ein Benutzer mit welcher Anwendung, wann und von wo geöffnet hat.
Das UI-Konzept
Rechtsklick auf ein beliebiges Taskleisten-Symbol — Notepad, Word, Explorer, Chrome — und das erscheinende Flyout ist die Jump-List dieser Anwendung. Dasselbe Menü erscheint neben angehefteten Kacheln im Startmenü. Typische Abschnitte sind Angeheftet, Zuletzt, Häufig sowie anwendungsdefinierte Gruppen (zum Beispiel Chromes Meistbesucht oder Words Zuletzt verwendete Dokumente).
Der Mechanismus hat zwei Seiten. Windows selbst führt für jede registrierte
Anwendung die zuletzt und häufig verwendeten Elemente. Die Anwendung kann
zusätzlich eigene Kategorien über die Shell-API ICustomDestinationList
veröffentlichen. Beide landen im selben Ordner auf der Festplatte, jedoch in
zwei unterschiedlichen Dateiformaten.
Wie Windows sie erzeugt
Jede Anwendung, die eine Jump-List haben möchte, registriert eine AppID —
eine Hash-artige Kennung wie 1b4dd67f29cb1962. Sobald der Benutzer eine Datei
über diese Anwendung öffnet, schreibt die Windows-Shell einen Windows Shell
Link (.lnk) in die zugehörige Jump-List-Datei. Der LNK erfasst den
Zielpfad, die Größe, Zeitstempel, die Volume-Seriennummer und häufig auch den
NetBIOS-Hostnamen und die MAC-Adresse der Maschine, auf der die Datei
geöffnet wurde.
Zwei Dateitypen
Beide Dateitypen liegen unter
%AppData%\Microsoft\Windows\Recent\ und sind nach dem Schema <AppID>.<extension> benannt:
- AutomaticDestinations (
*.automaticDestinations-ms) — von Windows geschrieben. Der Container ist eine OLE Compound File (dasselbe Format wie das alte.doc). Jeder nummerierte Stream ist ein eingebetteter LNK, und ein speziellerDestList-Stream ordnet sie und speichert pro Eintrag Zugriffszeitstempel, Eintrags-IDs und den Quell-Hostnamen. - CustomDestinations (
*.customDestinations-ms) — von der Anwendung selbst geschrieben. Der Container ist ein flacher Binärblob: ein Header, dann eine Folge von LNK-Strukturen, gruppiert in benannte Kategorien, abgeschlossen durch einen0xBABFFBAB-Footer.
Praktisch gesehen: AutomaticDestinations ist dort, wo Windows mitteilt, was der Benutzer getan hat. CustomDestinations ist dort, wo die Anwendung mitteilt, was sie anzeigen wollte.
Was in einem Eintrag steckt
Das Decodieren eines einzelnen Jump-List-Eintrags liefert typischerweise:
- Den vollständigen Zielpfad der geöffneten Datei oder URL.
- Datei-Metadaten zum Zeitpunkt des Öffnens — Größe, MAC-Zeiten, Attribute.
- Die Volume-Seriennummer und den Laufwerkstyp, nützlich zum Fingerprinting von Wechselmedien.
- Einen
TrackerDataBlockmit dem NetBIOS-Namen der Maschine und einer aus der MAC-Adresse abgeleitetenObjectID. - Bei AutomaticDestinations einen Zugriffszeitstempel und einen
Zugriffszähler aus dem
DestList-Stream.
Zusammen machen diese Daten eine Jump-List zu einer benutzerspezifischen Zeitleiste der Dateiinteraktion, die selbst nach dem Löschen der Originaldatei bestehen bleibt.
Warum das für die Forensik relevant ist
Für DFIR-Analysten beantworten Jump Lists eine Frage, die nur wenige andere Artefakte sauber beantworten: welche Anwendung hat welche Datei auf welchem Host zu welcher Zeit geöffnet. Sie ergänzen ShellBags, Recent Items und Prefetch und bewahren häufig Verweise auf Dateien von USB-Laufwerken oder Netzwerkfreigaben, die nicht mehr existieren. Wer über die Einführung hinausgehen und die Bytes selbst parsen möchte, findet im Folgebeitrag Windows-Jump-Lists verstehen die Formate im Detail.