¿Qué es el índice de Windows Search?
Windows Search indexa archivos, carpetas, correos y el historial de navegación para que el menú Inicio y el Explorador los encuentren al instante. Para cada elemento guarda decenas de propiedades — ruta completa, tamaño, propietario, fechas de creación / modificación / acceso, cuándo se indexó — y, para documentos de texto, un extracto de su contenido (System.Search.AutoSummary).
El índice no se limpia en tiempo real: los elementos eliminados del disco suelen permanecer en él, con sus metadatos y su fragmento de contenido, hasta que el indexador se pone al día. Es uno de los pocos lugares donde sobreviven rastros de archivos eliminados — y parte de su contenido.
Dónde se almacena
- Windows 11 (22H2 y posteriores): C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.db — SQLite, con Windows.db-wal — más Windows-gather.db, la lista de rastreo del recopilador. El almacén de propiedades está normalizado: SystemIndex_1_PropertyStore tiene una fila por (WorkId, ColumnId, Value) y SystemIndex_1_PropertyStore_Metadata asocia ColumnId con nombres de propiedad como System.ItemPathDisplay.
- Windows 10 y anteriores: la misma carpeta contiene Windows.edb, una base ESE (JET Blue). SystemIndex_PropertyStore (Windows 8 y posteriores) o SystemIndex_0A (Vista / 7) tiene una fila ancha por elemento, con columnas llamadas como 4447-System_ItemPathDisplay; SystemIndex_Gthr y SystemIndex_GthrPth contienen los registros del recopilador y el árbol de carpetas.
- Windows Search es un servicio del sistema: un único índice cubre las ubicaciones indexadas de todos los usuarios del equipo. Los archivos MSS*.log, *.jrs y MSS.chk junto a Windows.edb son sus registros de transacciones.
Por qué importa en una investigación
- Archivos que ya no existen: rutas, tamaños, propietarios y marcas de tiempo de elementos eliminados. Los elementos presentes en el almacén de propiedades pero ausentes de la tabla gather se señalan — pueden haber sido eliminados.
- Fragmentos de contenido (System.Search.AutoSummary): parte del texto de documentos, notas y scripts — incluidas credenciales que un atacante guardó y luego borró.
- Unidades extraíbles y recursos de red indexados, y elementos del historial de navegación / actividad (URL, títulos).
- La hora de recopilación (System.Search.GatherTime) indica cuándo el indexador procesó el elemento: un archivo indexado poco antes de la adquisición se creó o modificó recientemente.
- En Windows 11, el archivo -wal contiene las últimas transacciones de indexación: se marcan los elementos que solo están en el WAL o que cambiaron en él.
Limitaciones
- La compatibilidad con Windows.edb (ESE) solo está validada con bases sintéticas: el lector sigue la documentación pública del formato (libesedb, código fuente de ESE de Microsoft) pero aún no se ha comprobado con archivos Windows.edb reales. Contrasta los hallazgos importantes con una segunda herramienta.
- Aún no compatible: valores ESE comprimidos con XPRESS9 / XPRESS10 / LZ4, la codificación de valores de SystemIndex_0A de Windows Vista / 7, la reproducción de los registros MSS*.log de una base en dirty shutdown y la recuperación de registros eliminados en páginas libres de ESE o SQLite (las entradas eliminadas aún marcadas en páginas ESE se cuentan, no se muestran).
- Solo se cubren las ubicaciones indexadas (por defecto los perfiles de usuario y el menú Inicio, más cualquier ubicación añadida al índice); el índice puede estar desactivado, reconstruido o purgado.
- Las marcas de tiempo son FILETIME (UTC). Las propiedades varían según el tipo de archivo y la versión de Windows, así que también se listan todas las propiedades en bruto.
- La estructura y la codificación de valores de Windows 11 provienen de investigaciones públicas: Microsoft no documenta el esquema exacto.
Cómo obtener los archivos
- Recoge toda la carpeta C:\ProgramData\Microsoft\Search\Data\Applications\Windows con KAPE, Velociraptor o desde una imagen de disco, y suelta la carpeta o el ZIP tal cual.
- En un sistema en marcha, el servicio WSearch bloquea los archivos: cópialos desde una instantánea VSS o con una herramienta de copia en bruto. En Windows 11, copia Windows.db y Windows.db-wal a la vez (un WAL que no corresponde se detecta y se ignora).
- Un Windows.edb copiado de un sistema en marcha suele estar en estado dirty shutdown. Se analiza igualmente; para una copia coherente, reproduce los registros con esentutl /r MSS sobre una copia de la carpeta — nunca sobre la evidencia original.
Preguntas frecuentes
¿Se sube mi base a algún sitio?
No. El analizador — incluidos sus lectores SQLite y ESE — está escrito en Rust, compilado a WebAssembly y se ejecuta en un Web Worker de tu navegador. No existe ningún punto de subida.
¿Lee el Windows.edb de Windows 10?
Sí, con su propio lector ESE de solo lectura (catálogo, árboles B+, columnas fijas / variables / etiquetadas, valores largos, compresión de 7 bits y XPRESS). Por ahora solo se ha validado con bases sintéticas, así que trata sus resultados como pistas y confirma los hallazgos clave con otra herramienta.
¿Puede mostrar archivos eliminados?
Muestra los elementos que siguen en el índice después de eliminar el archivo — a menudo con tamaño, propietario, marcas de tiempo y un fragmento de contenido — y señala los elementos ausentes de la tabla gather. La recuperación de registros ya retirados de la base (páginas libres) está prevista.
¿Por qué añadir Windows-gather.db y el archivo -wal?
En Windows 11, Windows.db-wal contiene el trabajo de indexación más reciente y Windows-gather.db lista lo que rastreó el recopilador. Con ambos, la herramienta marca los elementos que solo están en el WAL y detecta los que están en una tabla pero no en la otra.
¿En qué se diferencia de SIDR o esedbexport?
Cubre las mismas tablas, pero funciona en el navegador sin instalación, reúne todas las propiedades de cada elemento en una fila, aplica el WAL por sí mismo y señala candidatos eliminados, fragmentos de contenido, ejecutables y rutas en unidades extraíbles.