Jump List Parser
Zurück zum Blog

Jump Lists vs ShellBags vs Prefetch: Welches Artefakt beantwortet was

2026-06-155 Min. Lesezeit

Der Fehler ist, zu fragen "was enthält dieses Artefakt" statt "welche Frage beantwortet dieses Artefakt". Container überschneiden sich. Fragen nicht. Wenn ein Fall auf Ihrem Schreibtisch landet, kommt er als Frage, meist als eine von drei: Hat dieser Benutzer diese Datei geöffnet, hat dieser Benutzer dieses Programm ausgeführt, ist dieser Benutzer durch diese Ordner gegangen. Verschiedene Artefakte, und nach dem falschen zu greifen, kostet Stunden.

Das ist die Karte, die ich im Kopf behalte. Sie hat eine klare Meinung dazu, wofür jede Quelle tatsächlich gut ist, sie ist keine Funktionscheckliste.

"Hat der Benutzer diese Datei geöffnet?"

Beginnen Sie mit Jump Lists. Sie zeichnen Dateien auf, die über eine teilnehmende Anwendung geöffnet wurden, und als einzige unter den gängigen Artefakten tragen sie den NetBIOS-Hostnamen der Maschine, die die Datei zum Zugriffszeitpunkt hielt, weshalb sie sich ihren Platz in der Arbeit zur lateralen Bewegung verdienen. Die Grenzen sind allerdings real: Ein DestList-Eintrag speichert nur den letzten Zugriff auf dieses Ziel, nicht die ganze Historie, und eine Jump List existiert nur für Anwendungen, die mit der Mechanik der zuletzt verwendeten Elemente der Shell sprechen. Viele Programme öffnen Dateien, ohne je eine zu erzeugen. Die DFIR-Anleitung behandelt den Feldsatz im Detail.

Der Recent-LNK-Ordner (%AppData%\Microsoft\Windows\Recent) überschneidet sich stark: einzelne Verknüpfungsdateien für kürzlich berührte Elemente, parsbar bis hinunter zum eingebetteten Zielpfad und den LNK-Header-Zeitstempeln. In manchen Fällen eine breitere Anwendungsabdeckung als Jump Lists, aber keine Gruppierung pro Anwendung und kein Zugriffszähler.

Dann die Bestätigung. UserAssist in NTUSER.DAT (lesen Sie es mit dem Registry-Parser) bestätigt, dass ein GUI-Start stattgefunden hat, und verfolgt die Fokuszeit. Das USN-Journal ist die dateisystemeigene Aufzeichnung, dass das Ziel existierte und zu einem bestimmten Zeitpunkt erstellt, geändert oder gelöscht wurde. Keine dieser Quellen allein bedeutet "der Benutzer hat diese Datei geöffnet". Aufeinandergestapelt sind sie schwer zu bestreiten.

"Hat der Benutzer dieses Programm ausgeführt?"

Das ist Prefetch-Gebiet, nicht Jump Lists. Prefetch zeichnet die Ausführung auf: dass eine Binärdatei lief, den Ausführungszähler, die ersten und letzten acht Ausführungszeiten unter modernem Windows und die Dateien und Verzeichnisse, die der Prozess beim Start berührte. Wenn die Frage die Ausführung ist, ist Prefetch die Hauptquelle und Jump Lists sind bestenfalls ein schwacher Bestätiger.

Leute verwechseln die beiden, weil eine Jump List impliziert, dass ihre besitzende Anwendung lief. Stimmt, aber indirekt, und Sie bekommen daraus keinen Ausführungszähler und keine saubere Ausführungszeitleiste. Für die Ausführungsgeschichte wollen Sie Prefetch plus UserAssist plus AmCache und ShimCache, wobei die letzten beiden belegen, dass eine Binärdatei vorhanden und dem System bekannt war, selbst wenn sie nie ausgeführt wurde, was eine andere und manchmal wichtigere Tatsache ist.

Eine praktische Feinheit: Prefetch kann deaktiviert sein, und ist es auf SSD-Ära-Images und auf Servern häufig. Wenn es aus ist, stützt sich die Ausführungsfrage stärker auf AmCache, die SRUM-Datenbank für den Ressourcenverbrauch von Anwendungen und die Startbelege in Jump Lists und UserAssist. Jump Lists rücken also genau dann in der Prioritätenliste nach oben, wenn Prefetch fehlt.

"Hat der Benutzer diese Ordner durchsucht?"

ShellBags, und nichts anderes erledigt diese Aufgabe gut. ShellBags persistieren den Anzeigezustand pro Ordner des Explorers, was bedeutet, dass sie aufzeichnen, dass ein Ordner im Explorer angesteuert wurde, einschließlich Name und Position, und sie überleben das Löschen des Ordners oder das Aushängen des Volumes. Ein ShellBag-Eintrag für einen Ordner, der nicht mehr existiert, ist einer der saubereren Belege dafür, dass etwas dort war und jemand es ansah. Sie liegen in UsrClass.dat und NTUSER.DAT, daher ist der Registry-Parser Ihr Werkzeug.

Was ShellBags nicht geben, ist Zugriff auf Dateiebene. Sie handeln von Ordnern und Navigation, nicht davon, welches Dokument im Ordner geöffnet wurde. Das ist die Übergabe zurück an Jump Lists und Recent-LNK.

Wo sie sich überschneiden, und wo sie Sie anlügen

Die Überschneidung ist real und nützlich: Ein eingestecktes Wechsellaufwerk, davon geöffnete Dateien und darauf durchsuchte Ordner hinterlassen Spuren in Jump Lists (Zielpfad plus Volume-Bezeichnung), ShellBags (die Ordner) und Prefetch (alles, was von dort ausgeführt wurde). Drei unabhängige Artefakte, die auf dieselbe Volume-GUID und dasselbe Zeitfenster zulaufen, sind eine starke Korrelation, und Korrelation über unabhängige Quellen hinweg ist das ganze Spiel.

Die blinden Flecken sind dort, wo Fälle schiefgehen:

  • Jump Lists behalten nur den letzten Zugriff pro Ziel, "einmal geöffnet" ist also eine Artefaktgrenze, keine Tatsache über den Benutzer.
  • Prefetch-Zähler können zurückgesetzt und das Artefakt deaktiviert werden, Abwesenheit beweist also nichts.
  • ShellBags können durch automatisierten oder programmatischen Ordnerzugriff erzeugt werden, nicht nur durch einen Menschen, der sich durch den Explorer klickt, "der Benutzer hat hier durchsucht" überzeichnet es also manchmal.
  • Alle sind in unterschiedlichem Maße vom Benutzer löschbar, und ein gelöschtes Artefakt hat sein eigenes Anzeichen. Für Jump Lists im Besonderen siehe den Beitrag zu Zeitleiste und Anti-Forensik.

Die Kurzfassung

Geht die Frage um Dateien, beginnen Sie mit Jump Lists und Recent-LNK, bestätigen Sie mit UserAssist und dem USN-Journal. Geht die Frage um Ausführung, beginnen Sie mit Prefetch, bestätigen Sie mit AmCache, ShimCache und SRUM. Geht die Frage um Navigation, ShellBags, und akzeptieren Sie, dass sie Ihnen nicht sagen, was geöffnet wurde. Die meisten echten Fälle sind alle drei Fragen zugleich, weshalb sich diese Artefakte eher als Satz lohnen, kennenzulernen, als isoliert.

Legen Sie eine Jump List auf der Startseite ab, um sie clientseitig zu parsen, und der Rest der forensischen Parser-Werkzeuge deckt die anderen Artefakte aus diesem Beitrag ab.