Wo Windows Jump-List-Dateien speichert (Win 7, 10, 11)
Kurze Antwort. Zwei Pro-Benutzer-Ordner unter dem Roaming-Profil: %AppData%\Microsoft\Windows\Recent\AutomaticDestinations\ und %AppData%\Microsoft\Windows\Recent\CustomDestinations\. Diese Pfade sind unter Windows 7, 8, 10 und 11 identisch. Dasselbe Sammelskript hat anderthalb Jahrzehnte lang unverändert funktioniert.
AutomaticDestinations
Von der Shell selbst geschrieben, wenn ein Benutzer ein Dokument durch eine registrierte Anwendung öffnet:
%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\
Aufgelöst: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\. Jeder Dateiname lautet <AppID>.automaticDestinations-ms, wobei <AppID> eine 16 Zeichen lange Hex-Zeichenkette in Kleinbuchstaben ist. Die Datei ist eine OLE-Compound-Datei (MS-CFB), deren nummerierte Streams LNK-Strukturen sind, geordnet durch einen einzelnen DestList-Stream.
CustomDestinations
Von der Anwendung über die COM-API ICustomDestinationList für ihre eigenen angehefteten Elemente und benutzerdefinierten Kategorien (Tasks, Recent, app-benannte Gruppen) geschrieben:
%AppData%\Microsoft\Windows\Recent\CustomDestinations\
Gleiche Namenskonvention: <AppID>.customDestinations-ms. Das Format ist eine flache Sequenz von LNK-Strukturen, denen ein kleiner Header vorangeht, terminiert von 0xBABFFBAB. Kein OLE-Container.
Pro Benutzer, nicht pro Maschine
Beide Verzeichnisse liegen unter AppData\Roaming und roamen mit dem Profil. Es gibt keinen maschinenweiten Jump-List-Speicher. Auf einem Live-Host löst echo %AppData% zum aktuellen Benutzer auf; auf einem gemounteten Image durchlaufen Sie \Users\ und ordnen jeden Profilordner über HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<SID> in der Registry seiner SID zu, wenn Sie Aktivität auf ein Konto zurückführen müssen.
Auf einem forensischen Image
Ziehen Sie den gesamten Recent\-Baum pro Benutzer:
\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\
\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations\
\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\
Der übergeordnete Recent\-Ordner enthält auch klassische .lnk-Verknüpfungen, nützliche Bestätigung, aber ein separates Artefakt. Die beiden *Destinations-Unterordner existieren unverändert seit Windows 7, sodass ein Sammelskript jede unterstützte Version abdeckt. KAPE hat ein Ziel dafür, falls Sie kein eigenes schreiben möchten.
Auf einem Live-System erwarten Sie, dass explorer.exe offene Handles hält. Sammeln Sie aus einer Volume Shadow Copy (\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\…), aus einem forensischen Image oder indem Sie den Benutzer zuerst abmelden. Der Recent\-Ordner wird auch vom USN-Journal und vom MFT berührt, beide sind es wert, gleichzeitig gezogen zu werden, die Erstellungs- und Löschereignisse für Jump-List-Dateien überleben oft die Dateien selbst.
Was die AppID eigentlich ist
Das Dateinamen-Präfix ist eine 16 Zeichen lange Hex-Zeichenkette in Kleinbuchstaben, zum Beispiel 1b4dd67f29cb1962 (Quick Access unter modernem Windows). Es ist ein gekürzter CRC64-Hash, berechnet über den Pfad der ausführbaren Datei der Anwendung, manchmal mit zusätzlichen identifizierenden Daten eingemischt. Dieselbe Binärdatei am selben Pfad erzeugt auf jedem Rechner dieselbe AppID, weshalb veröffentlichte AppID-Listen funktionieren. Ausgelieferte AppID-Karten von JLECmd decken die meisten bekannten Anwendungen ab; für alles Nichtzugeordnete ist die AppID ein Hinweis, kein Rauschen.
Zwei Konsequenzen der AppID-Ableitung:
- Verschieben oder benennen Sie die ausführbare Datei um, und die AppID ändert sich. Die alte Jump-List-Datei bleibt im Ordner, verwaist, mit einer abgestandenen AppID, die zu keiner installierten Binärdatei mehr passt. Diese Waise ist selbst einen Blick wert.
- Dieselbe Anwendung, installiert am selben Pfad auf zwei Maschinen, erzeugt auf beiden dieselbe AppID, aber die Inhalte sind pro Benutzer. Die AppID allein attribuiert die Aktivität nicht, paaren Sie sie mit dem Benutzerprofilpfad.
Schnelle Beschaffungs-Checkliste
- Image oder mounten Sie das Volume; kopieren Sie nicht live mit einfachem
xcopy. - Durchlaufen Sie
\Users\und sammeln Sie beide*Destinations\-Ordner pro Benutzer. - Ziehen Sie den übergeordneten
Recent\-Ordner für die eigenständigen.lnk-Dateien. - Ziehen Sie
\Users\<user>\NTUSER.DATfür die passendenUserAssist- undRecentDocs-Schlüssel. - Notieren Sie unerwartete AppIDs und Ordner ohne ältere Dateien, beides sind Befunde.
Für das Byte-Layout dieser Dateien auf der Festplatte siehe die Aufschlüsselung des AutomaticDestinations-Dateiformats.
Weiterführende Literatur
- Eric Zimmerman, JLECmd und JumpListExplorer, Offline-Parsing und die kanonische AppID-Liste.
- Für korrelierende Artefakte: LNK-Parser, MFT-Parser, USN-Journal-Parser, Prefetch-Parser.