Propiedades del índice de Windows Search explicadas
System.ItemPathDisplay, System.Search.GatherTime, System.Search.AutoSummary y las demás propiedades de Windows Search que importan en una investigación forense.
En resumen. Cada elemento del índice de Windows Search es una bolsa de propiedades del shell de Windows identificada por un WorkId. Una docena de ellas concentra casi todo el valor forense: System.ItemPathDisplay (ruta completa), System.Size, System.FileOwner, System.DateCreated / DateModified / DateAccessed (marcas de tiempo del sistema de archivos vistas al indexar), System.Search.GatherTime (cuándo procesó el elemento el indexador), System.Search.AutoSummary (un extracto del contenido), System.ItemType y System.Kind (qué es) y propiedades de URL para el historial web. Microsoft documenta qué significa cada propiedad, no cómo la guarda la base. Todas las fechas son FILETIME en UTC.
De dónde vienen las propiedades
El sistema de propiedades de Windows define nombres canónicos como System.ItemPathDisplay, cada uno con un identificador de formato y un identificador de propiedad (una PROPERTYKEY). El indexador aplica los controladores de propiedades a cada archivo y guarda los valores. En Windows.edb, cada propiedad es una columna con un nombre como 4447-System_ItemPathDisplay. En Windows.db es una fila cuyo ColumnId remite al nombre a través de SystemIndex_1_PropertyStore_Metadata. La comparación de formatos muestra ambas estructuras.
El prefijo numérico es propio de cada base. Guíate por el nombre. Las páginas de referencia de Microsoft dan el significado y el tipo de cada nombre, por ejemplo System.ItemPathDisplay.
Las propiedades que importan
Identidad y ubicación
| Propiedad | Significado (Microsoft) | Notas forenses |
|---|---|---|
System.ItemPathDisplay | Ruta de visualización fácil de leer del elemento | La ruta que citas. Incluye la extensión. Localizada si existe un nombre localizado. Rutas UNC para recursos compartidos. |
System.ItemUrl | Forma URL, con esquema (file:, iehistory:, mapi:…) | Te dice qué tipo de elemento es: archivo, historial web, correo. |
System.ItemFolderPathDisplay | Parte de carpeta de la ruta | Útil para agrupar carpetas de preparación. |
System.FileName / System.ItemNameDisplay | Nombre de archivo / nombre mostrado | El nombre mostrado puede ocultar la extensión. |
System.ComputerName | Nombre del equipo donde se encuentra el elemento | Útil cuando se mezclan índices de varios equipos en un caso. |
Los ejemplos de Microsoft para System.ItemPathDisplay incluyen una ruta local, una ruta UNC y una ruta de buzón: el índice cubre más que archivos locales.
Tipo
| Propiedad | Significado | Notas forenses |
|---|---|---|
System.ItemType | Tipo canónico, normalmente la extensión (.exe, .zip) o Directory | Existen valores especiales, como ActivityHistoryItem para los registros de actividad. |
System.ItemTypeText | Tipo legible («Aplicación», «Documento de texto») | Localizado. No filtres por él. |
System.Kind | Categoría asignada según la extensión: document, program, folder, link, webhistory… | Microsoft asigna extensiones a categorías en la clave de registro KindMap. Multivalor. |
System.FileAttributes | Atributos de archivo Win32 | Atributos de oculto / sistema en archivos de usuario merecen una mirada. |
Propietario y tamaño
| Propiedad | Significado | Notas forenses |
|---|---|---|
System.FileOwner | El propietario del archivo, según el sistema de archivos | DOMINIO\usuario o EQUIPO\usuario. El campo de atribución más sólido del índice, pero propietario no es autor: un administrador que copia un archivo puede convertirse en su propietario. |
System.Size | Tamaño en bytes | Tamaño en el momento de la indexación. |
Tiempo
| Propiedad | Significado | Notas forenses |
|---|---|---|
System.DateCreated | Fecha de creación del elemento | Copiada del sistema de archivos al indexar. |
System.DateModified | Última modificación | Igual. |
System.DateAccessed | Último acceso | Igual, y en NTFS la actualización del último acceso suele estar desactivada o ser poco precisa. |
System.Search.GatherTime | Cuándo el rastreador envió por última vez las propiedades del documento | El reloj del propio indexador. No es una marca del sistema de archivos, así que el timestomping del archivo no la cambia. |
Las cuatro son FILETIME: intervalos de 100 nanosegundos desde el 1 de enero de 1601, en UTC. En Windows.db, el analizador las lee como valores little-endian de 8 bytes, siguiendo la investigación pública, y conserva los bytes en bruto junto a la fecha decodificada.
Contenido
| Propiedad | Significado | Notas forenses |
|---|---|---|
System.Search.AutoSummary | Un resumen automático del texto completo del documento | En la práctica, el principio del texto. Stroz Friedberg informa de hasta 1024 bytes en Windows 11. |
System.Title, System.Author, System.Subject… | Metadatos de documento de los controladores de propiedades | Documentos de Office, PDF y correos llevan metadatos adicionales que conviene leer en la lista de propiedades en bruto. |
Web y actividad
| Propiedad | Significado | Notas forenses |
|---|---|---|
System.Link.TargetUrl | URL de destino de un enlace / elemento de historial | En Windows 11, Stroz Friedberg encontró aquí las URL visitadas. |
System.ItemUrl con iehistory://{SID}/… | Elemento del historial web | El SID vincula la entrada a un usuario. |
Propiedades ActivityHistory (StartTime, EndTime, AppId) | Registros del historial de actividad | Presentes cuando System.ItemType es ActivityHistoryItem, según la misma investigación. |
Leer las marcas de tiempo en conjunto
El gather time es el campo en el que un atacante rara vez piensa, y hace más útiles a los demás.
| Patrón | Lectura probable |
|---|---|
Gather time unos segundos o minutos después de DateModified | El indexador recogió un cambio reciente. Normal en archivos activos. |
Gather time muy posterior a DateModified | El archivo se indexó más tarde: nueva ubicación indexada, reconstrucción del índice, reindexación o unidad reconectada. |
DateCreated posterior a DateModified | Típico de un archivo copiado o extraído conservando su fecha de modificación original. Busca el origen. |
DateModified muy antiguo en un ejecutable depositado en una carpeta escribible por el usuario, gather time reciente | Posible timestomping o extracción de un comprimido. Revisa el diario USN y la MFT. |
| Gather time posterior al último inicio de sesión conocido del propietario | Otra persona u otro proceso escribió en esa ubicación, o el indexador se puso al día tarde. |
El Windows Search Index Parser marca los elementos «indexados recientemente»: indexados después de su último cambio y dentro de las 24 horas previas a la indexación más reciente de la misma base. En una máquina incautada poco después de un incidente, eso resalta lo que cambió en el último día de actividad.
Trampas
- Los valores son instantáneas. Todo salvo el gather time describe el archivo en el momento de indexarse. Un archivo modificado después y nunca reindexado muestra valores desfasados.
- Localización. Los nombres mostrados y los textos de tipo cambian con el idioma del sistema. Filtra por
System.ItemType,System.Kindo extensiones. - Propiedades multivalor.
System.Kindy algunas otras contienen varios valores («program; executable»). Un analizador que solo guarda el primero puede perder información. - Ausente no es cero. Que falte una propiedad significa que ningún controlador la rellenó. No significa «vacío» ni «falso».
- Almacenamiento no documentado. Microsoft documenta las propiedades, no la base. Cómo se codifica un valor en
Windows.edboWindows.dbprocede de investigación pública. Ante la duda, mira los bytes en bruto; por eso el analizador muestra todas las propiedades en bruto.