Was ist der Windows-Search-Index?
Windows Search indiziert Dateien, Ordner, E-Mails und den Browserverlauf, damit Startmenü und Explorer sie sofort finden. Für jedes Element speichert er Dutzende Eigenschaften — vollständiger Pfad, Größe, Besitzer, Erstellungs-, Änderungs- und Zugriffszeit, Zeitpunkt der Indizierung — und bei Textdokumenten einen Auszug des Inhalts (System.Search.AutoSummary).
Der Index wird nicht in Echtzeit bereinigt: Vom Datenträger gelöschte Elemente bleiben oft mit Metadaten und Inhaltsauszug darin, bis der Indexer nachzieht. Er ist einer der wenigen Orte, an denen Spuren gelöschter Dateien — und Teile ihres Inhalts — überleben.
Wo er gespeichert ist
- Windows 11 (ab 22H2): C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.db — SQLite, mit Windows.db-wal — sowie Windows-gather.db, die Crawl-Liste des Gatherers. Der Eigenschaftenspeicher ist normalisiert: SystemIndex_1_PropertyStore enthält eine Zeile pro (WorkId, ColumnId, Value), SystemIndex_1_PropertyStore_Metadata ordnet ColumnId Eigenschaftsnamen wie System.ItemPathDisplay zu.
- Windows 10 und älter: Im selben Ordner liegt Windows.edb, eine ESE-Datenbank (JET Blue). SystemIndex_PropertyStore (ab Windows 8) bzw. SystemIndex_0A (Vista / 7) enthält eine breite Zeile pro Element mit Spalten wie 4447-System_ItemPathDisplay; SystemIndex_Gthr und SystemIndex_GthrPth enthalten die Gatherer-Einträge und den Ordnerbaum.
- Windows Search ist ein Systemdienst: Ein Index umfasst die indizierten Orte aller Benutzer des Rechners. Die Dateien MSS*.log, *.jrs und MSS.chk neben Windows.edb sind seine Transaktionsprotokolle.
Warum er für Ermittlungen wichtig ist
- Dateien, die es nicht mehr gibt: Pfade, Größen, Besitzer und Zeitstempel gelöschter Elemente. Elemente, die im Eigenschaftenspeicher, aber nicht in der Gather-Tabelle stehen, werden markiert — sie wurden womöglich gelöscht.
- Inhaltsauszüge (System.Search.AutoSummary): Teile des Textes von Dokumenten, Notizen und Skripten — auch Zugangsdaten, die ein Angreifer gespeichert und wieder gelöscht hat.
- Indizierte Wechseldatenträger und Netzwerkfreigaben sowie Einträge aus Browser- und Aktivitätsverlauf (URLs, Titel).
- Die Gather-Zeit (System.Search.GatherTime) zeigt, wann der Indexer das Element verarbeitet hat: Eine kurz vor der Sicherung indizierte Datei wurde kürzlich erstellt oder geändert.
- Unter Windows 11 enthält die -wal-Datei die jüngsten Indizierungstransaktionen: Elemente, die nur im WAL stehen oder dort geändert wurden, werden markiert.
Einschränkungen
- Die Unterstützung für Windows.edb (ESE) ist nur mit synthetischen Datenbanken validiert: Der Leser folgt der öffentlichen Formatdokumentation (libesedb, ESE-Quellcode von Microsoft), wurde aber noch nicht mit echten Windows.edb-Dateien geprüft. Wichtige Befunde mit einem zweiten Werkzeug gegenprüfen.
- Noch nicht unterstützt: mit XPRESS9 / XPRESS10 / LZ4 komprimierte ESE-Werte, die Wertkodierung von SystemIndex_0A unter Windows Vista / 7, das Nachspielen der MSS*.log-Protokolle einer Datenbank im Dirty-Shutdown-Zustand und die Wiederherstellung gelöschter Datensätze aus freien ESE- oder SQLite-Seiten (noch in ESE-Seiten markierte gelöschte Einträge werden gezählt, nicht angezeigt).
- Abgedeckt sind nur indizierte Orte (standardmäßig Benutzerprofile und Startmenü sowie jeder dem Index hinzugefügte Ort); der Index kann deaktiviert, neu aufgebaut oder bereinigt sein.
- Zeitstempel sind FILETIMEs (UTC). Die Eigenschaften unterscheiden sich je nach Dateityp und Windows-Version, daher werden auch alle Roheigenschaften aufgeführt.
- Aufbau und Wertkodierung unter Windows 11 stammen aus öffentlicher Forschung: Microsoft dokumentiert das genaue Schema nicht.
So kommen Sie an die Dateien
- Sichern Sie den ganzen Ordner C:\ProgramData\Microsoft\Search\Data\Applications\Windows mit KAPE, Velociraptor oder aus einem Datenträgerabbild und legen Sie den Ordner oder das ZIP unverändert ab.
- Auf einem laufenden System sperrt der Dienst WSearch die Dateien: Kopieren Sie sie aus einem VSS-Snapshot oder mit einem Raw-Copy-Werkzeug. Unter Windows 11 Windows.db und Windows.db-wal zum selben Zeitpunkt kopieren (ein nicht passendes WAL wird erkannt und ignoriert).
- Eine vom laufenden System kopierte Windows.edb ist meist im Dirty-Shutdown-Zustand. Sie wird trotzdem ausgewertet; für eine konsistente Kopie die Protokolle mit esentutl /r MSS auf einer Kopie des Ordners nachspielen — nie auf dem Originalbeweis.
FAQ
Wird meine Datenbank irgendwohin hochgeladen?
Nein. Der Parser — samt SQLite- und ESE-Leser — ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser. Es gibt keinen Upload-Endpunkt.
Liest er die Windows.edb von Windows 10?
Ja, mit einem eigenen, rein lesenden ESE-Leser (Katalog, B+-Bäume, feste / variable / getaggte Spalten, Long Values, 7-Bit- und XPRESS-Kompression). Bisher ist er nur mit synthetischen Datenbanken validiert: Behandeln Sie die Ergebnisse als Spur und bestätigen Sie wichtige Befunde mit einem anderen Werkzeug.
Kann er gelöschte Dateien zeigen?
Er zeigt Elemente, die nach dem Löschen der Datei noch im Index stehen — oft mit Größe, Besitzer, Zeitstempeln und Inhaltsauszug — und markiert Elemente, die in der Gather-Tabelle fehlen. Die Wiederherstellung bereits aus der Datenbank entfernter Datensätze (freie Seiten) ist geplant.
Warum Windows-gather.db und die -wal-Datei hinzufügen?
Unter Windows 11 enthält Windows.db-wal die jüngste Indizierungsarbeit, und Windows-gather.db listet, was der Gatherer durchsucht hat. Mit beiden markiert das Werkzeug Elemente, die nur im WAL stehen, und erkennt Elemente, die in einer Tabelle stehen, in der anderen aber nicht.
Was unterscheidet ihn von SIDR oder esedbexport?
Er deckt dieselben Tabellen ab, läuft aber ohne Installation im Browser, fasst alle Eigenschaften eines Elements in einer Zeile zusammen, wendet das WAL selbst an und markiert Löschkandidaten, Inhaltsauszüge, ausführbare Dateien und Pfade auf Wechseldatenträgern.