ShellBags Forensik: der vollständige Leitfaden
Was ShellBags sind, wo Windows sie speichert, was BagMRU und Shell-Items beweisen, wie man ihre Zeitstempel liest und wo das Artefakt in die Irre führt.
TL;DR. ShellBags sind Registry-Schlüssel, in denen der Explorer speichert, wie jeder Ordner angezeigt wurde. Dafür führt er pro Benutzer einen Baum (BagMRU) mit einem Eintrag je besuchtem Ordner: lokale Ordner, USB-Laufwerke, Netzwerkfreigaben, das Innere von ZIP-Dateien, Ordner, die es nicht mehr gibt. Jeder Eintrag ist ein binäres Shell-Item, das den Ordnernamen, seine MFT-Eintrags- und Sequenznummer sowie Erstellungs-, Änderungs- und Zugriffszeiten enthalten kann. ShellBags belegen Navigation, keinen Dateizugriff. Ihre Zeitstempel erfordern Sorgfalt. Ab Windows 7 werten Sie UsrClass.dat und NTUSER.DAT gemeinsam aus.
ShellBags sind das Artefakt, zu dem ich greife, wenn die Frage lautet: „Hat diese Person jemals in diesen Ordner geschaut?“ Sie beantworten das für einen Wechseldatenträger, der nie sichergestellt wurde, für eine Freigabe, die der Verdächtige nie besucht haben will, und für ein Staging-Verzeichnis, das der Angreifer vor dem Rückzug gelöscht hat. Gleichzeitig gehören sie zu den Artefakten, die am leichtesten überinterpretiert werden. Dieser Leitfaden behandelt beide Seiten.
Was ShellBags sind und warum Windows sie aufbewahrt
Der Windows-Explorer merkt sich Ansichtseinstellungen pro Ordner: Symbolgröße, Sortierspalte, Details- oder Listenansicht, Fensterposition. Microsoft hat das Speicherformat nie öffentlich dokumentiert, der Mechanismus ist aber gründlich untersucht, beginnend mit Chad Tilburys SANS-Beitrag zu Windows-7-ShellBags (2011) und Vincent Los SANS-Whitepaper „Windows ShellBag Forensics in Depth“ (2014).
Um Einstellungen einem Ordner zuzuordnen, muss der Explorer den Ordner identifizieren. Das geschieht über eine Liste von Shell-Item-IDs, die Struktur, mit der die Shell überall Objekte adressiert (siehe Microsofts Dokumentation zu ITEMIDLIST und SHITEMID). Der Nebeneffekt macht das Artefakt wertvoll: Ein besuchter Ordner erhält einen Eintrag in der Registry des Benutzers, und dieser Eintrag bleibt bestehen, wenn Ordner, Laufwerk oder Freigabe längst verschwunden sind.
Zwei Strukturen arbeiten zusammen:
| Struktur | Inhalt | Forensischer Nutzen |
|---|---|---|
BagMRU | Ein Schlüsselbaum, der die Ordnerhierarchie abbildet. Jeder Schlüssel hat nummerierte Binärwerte (ein Shell-Item pro Unterordner), eine MRUListEx-Reihenfolge und einen NodeSlot. | Rekonstruiert besuchte Pfade, die Reihenfolge der letzten Nutzung und Zeitstempel. |
Bags | Nummerierte Schlüssel, einer pro NodeSlot, mit Ansichtseinstellungen (Unterschlüssel Shell / ComDlg). | Zeigt, dass für einen Ordner ein Ansichtszustand gespeichert wurde; zur Pfadrekonstruktion selten nötig. |
Wo sie liegen
Unter Windows 7, 10 und 11 liegt der Großteil der Daten in der UsrClass.dat des Benutzers, dazu kommt ein zweiter, kleinerer Baum in NTUSER.DAT:
| Hive | Datei auf dem Datenträger | Schlüssel |
|---|---|---|
| UsrClass.dat | C:\Users\<user>\AppData\Local\Microsoft\Windows\UsrClass.dat | Local Settings\Software\Microsoft\Windows\Shell\BagMRU und ...\Shell\Bags |
| NTUSER.DAT | C:\Users\<user>\NTUSER.DAT | Software\Microsoft\Windows\Shell\BagMRU und ...\Shell\Bags |
| NTUSER.DAT (Windows XP) | C:\Documents and Settings\<user>\NTUSER.DAT | Software\Microsoft\Windows\ShellNoRoam\BagMRU (und Shell\BagMRU) |
Die vollständige Aufschlüsselung nach Version, einschließlich der Wow6432Node-Variante und der Sicherung gesperrter Hives, finden Sie unter Speicherort der ShellBags und Sicherung.
Wie ein Pfad rekonstruiert wird
Der Schlüssel BagMRU ist die Wurzel. Seine Werte 0, 1, 2... sind Shell-Items für Objekte der obersten Namespace-Ebene: typischerweise Arbeitsplatz, Netzwerk, der Profilordner, der Papierkorb. Zu jedem nummerierten Wert gibt es einen gleichnamigen Unterschlüssel, der dessen Kinder beschreibt, und so weiter. Fügt man die Item-Namen entlang eines Zweigs zusammen, erhält man den absoluten Pfad. Beispiel aus dem synthetischen Sample der Website (fiktive Daten):
BagMRU\0 -> My Computer (root folder item, GUID 20D04FE0-...)
BagMRU\0\1 -> E: (volume item)
BagMRU\0\1\0 -> exfil (file entry item, directory)
BagMRU\0\1\0\0 -> finance_2026 (file entry item, directory)
=> My Computer\E:\exfil\finance_2026
Der Item-Typ ist entscheidend. Ein Root-Item wird über eine Known-Folder-GUID identifiziert, ein Volume-Item trägt einen Laufwerksbuchstaben, ein „File Entry“-Item den 8.3-Namen, den langen Namen und meist eine MFT-Dateireferenz. Ein Netzwerk-Item enthält eine UNC-Zeichenkette wie \\FILESRV01\Finance. Den Aufbau Byte für Byte beschreibt das Shell-Item-Format erklärt.
Was ein ShellBag-Eintrag verrät
Pro Ordner liefert ein guter Parser:
- Den absoluten Pfad zum Zeitpunkt der Navigation, mit Laufwerksbuchstabe oder UNC-Pfad.
- Den Shell-Item-Typ: Volume, Verzeichnis, Netzwerkort, Systemsteuerungselement, bekannter Ordner, Archivinhalt.
- Dateisystem-Metadaten aus dem Verzeichniseintrag (dem 0xBEEF0004-Erweiterungsblock): Erstellungs-, Änderungs- und Zugriffszeit als FAT-Zeitstempel mit 2 Sekunden Auflösung und unter NTFS die MFT-Eintrags- und Sequenznummer.
- Registry-Metadaten: den LastWrite des Schlüssels, die Position des Eintrags in der MRUListEx des Elternschlüssels, den NodeSlot und die Zahl der Unterordner.
Die eingebetteten Zeiten beschreiben den Ordner selbst, erfasst beim Anlegen des Shell-Items. Laut den Tests von 4n6k werden sie bei späteren Besuchen nicht aktualisiert. Die Registry-Zeiten beschreiben, wann sich die BagMRU-Schlüssel geändert haben. Beides zu verwechseln ist der häufigste Fehler in ShellBag-Berichten. Der Beitrag zu ShellBags-Zeitstempeln erklärt die Logik an einem konkreten Beispiel.
Was einen ShellBag erzeugt
Ordnernavigation über die Windows-Shell. Dazu zählen Explorer-Fenster und, laut den von 4n6k zusammengefassten Tests, gängige Öffnen-/Speichern-Dialoge. Dieselbe Quelle stellt fest, dass unter Windows 7 schon das Auswählen eines Ordners genügen kann; man muss ihn nicht immer betreten. Jeder übergeordnete Ordner eines besuchten Pfads erhält ebenfalls einen eigenen Eintrag, weil der Baum ihn enthalten muss.
Was keinen erzeugt: cd und dir in der Eingabeaufforderung, Get-ChildItem in PowerShell, Skripte, die meisten Dateimanager von Drittanbietern und Fernwartungswerkzeuge, die Dateien per API statt über die Shell aufzählen. Ein Angreifer, der Daten auf der Konsole vorbereitet, hinterlässt keine ShellBags. Ein Angreifer, der den Explorer auf einer Freigabe öffnet, schon.
Nutzen in Ermittlungen
Diese Fragen beantworten ShellBags gut:
- Wechseldatenträger. Ein Ordner unter
E:\oderF:\belegt die Navigation auf einem Volume, das womöglich längst verschwunden ist. Gleichen Sie den Laufwerksbuchstaben mit der USB-Gerätehistorie im SYSTEM-Hive und den Ereignisprotokollen ab (der EVTX-Parser und der Registry-Parser decken das ab). - Netzwerkfreigaben. Netzwerk-Items behalten
\\server\freigabe-Namen. Ein Dienstkonto, das\\FILESRV01\Finance\Payrolldurchsucht, ist für sich schon ein Befund. - Archive. Der Explorer durchsucht ZIP-Dateien wie Ordner, und das Navigieren darin hinterlässt Einträge unterhalb des Archiv-Items. Windows 11 öffnet seit dem Update KB5031455 vom Oktober 2023 auch RAR, 7z und tar-Varianten nativ; deren Spuren sind weniger dokumentiert, testen Sie also auf Ihrem Ziel-Build. Siehe ShellBags und ZIP-Dateien.
- Gelöschte Ordner. Der Eintrag überdauert das Verzeichnis. Mit MFT-Eintrags- und Sequenznummer lässt sich prüfen, ob der Datensatz wiederverwendet wurde. Siehe gelöschte Ordner mit ShellBags nachweisen.
- Kenntnis. In Insider-Fällen können ShellBags zeigen, dass ein Benutzer zu dem Ordner mit den strittigen Dateien navigiert ist, was relevant wird, wenn jemand behauptet, den Ordner nicht gekannt zu haben.
Wo ShellBags in die Irre führen
- Navigation ist kein Dateizugriff. Ein ShellBag belegt, dass der Ordner besucht oder ausgewählt wurde, nicht dass
payroll.xlsxdarin geöffnet wurde. Für geöffnete Dateien sehen Sie sich LNK-Dateien, Jump Lists und RecentDocs an. Der Vergleich steht in ShellBags vs. LNK-Dateien, Jump Lists und RecentDocs. - Der LastWrite eines Schlüssels ist nicht „zuletzt geöffnet“. Er ändert sich, wenn sich seine Kinder ändern. Nur das Kind an erster Stelle der MRUListEx des Elternschlüssels lässt sich dem LastWrite des Elternschlüssels zuordnen.
- Eingebettete Zeiten sind keine Zugriffszeiten des Benutzers. Es sind die Dateisystemzeiten des Ordners zum Zeitpunkt der ersten Aufzeichnung.
- Fehlen ist ein schwacher Beleg. Konsolenaktivität, Bereinigungstools, Profil-Resets und ohne Transaktionsprotokolle kopierte Hives entfernen oder verbergen Einträge. Siehe Grenzen und Anti-Forensik bei ShellBags.
Ein minimaler Workflow
- Sichern Sie
NTUSER.DATundUsrClass.datjedes Benutzers mit ihren.LOG1/.LOG2-Dateien per Rohkopie (KAPE, Velociraptor, FTK Imager oder Datenträgerabbild). - Spielen Sie die Transaktionsprotokolle ein, wenn der Hive dirty ist.
- Werten Sie beide Hives aus und behalten Sie die Kontozuordnung (SID aus dem UsrClass-Wurzelschlüssel, Benutzername aus NTUSER).
- Triage: andere Laufwerksbuchstaben, UNC-Pfade, Archivpfade, vom Benutzer beschreibbare Staging-Ordner (
ProgramData,AppData,Temp,Users\Public). - Bauen Sie eine Zeitachse aus den MRU-abgeleiteten Zeiten der „letzten Interaktion“ und gleichen Sie sie mit dem USN-Journal, LNK-Dateien und Ereignisprotokollen ab, bevor Sie etwas in einen Bericht schreiben.
Die Schritte 3 und 4 erledigen Sie im Browser mit dem ShellBags Parser: Hives, einen Ordner oder ein KAPE-ZIP ablegen, und das Tool rekonstruiert den Baum, markiert andere Laufwerke, Netzwerkorte, Archive und vom Benutzer beschreibbare Ordner und exportiert als CSV oder JSON. Es wird nichts hochgeladen. Die Schritt-für-Schritt-Anleitung führt durch eine Sitzung mit dem eingebauten Sample.
Weiterführende Literatur
- libyal libfwsi: Windows Shell Item format, die Referenzspezifikation für Shell-Items.
- Chad Tilbury, SANS: Windows 7 ShellBags.
- Vincent Lo, SANS-Whitepaper: Windows ShellBag Forensics in Depth.
- 4n6k: ShellBags forensics, addressing a misconception.
- Velociraptor: Windows.Forensics.Shellbags.
Häufige Fragen
Was beweisen ShellBags?
Dass ein bestimmtes Benutzerkonto im Explorer oder in einem Öffnen-/Speichern-Dialog zu einem Ordner navigiert ist oder ihn ausgewählt hat. Sie beweisen nicht, dass eine Datei in diesem Ordner geöffnet wurde.
Überleben ShellBags das Löschen des Ordners oder das Abziehen des USB-Sticks?
Ja. Der BagMRU-Eintrag bleibt im Hive des Benutzers, bis Windows oder ein Bereinigungstool ihn entfernt. Ordner auf abgezogenen Laufwerken, getrennten Freigaben und gelöschten Verzeichnissen bleiben sichtbar.
Welchen Hive sollte ich auswerten, NTUSER.DAT oder UsrClass.dat?
Beide. Seit Windows Vista und 7 liegen die meisten Einträge in UsrClass.dat, NTUSER.DAT führt aber einen eigenen, kleineren BagMRU-Baum. Werten Sie das Paar pro Benutzer gemeinsam aus.