Limitaciones y antiforense de Windows Timeline
Dónde se agota la evidencia de Windows Timeline: caducidad, configuración, historial borrado, filas eliminadas, WAL ausente, límites del parser y manipulación.
Resumen. La evidencia de Timeline se agota de seis formas previsibles: caducidad (30 días; 12 horas para el portapapeles), configuración (recopilación desactivada por el usuario o por directiva), borrado (borrar historial, entradas quitadas), eliminación del archivo, WAL ausente y límites del parser (sin carving de páginas libres ni de frames WAL obsoletos). Cada una deja rastro en algún sitio: filas de eliminación en ActivityOperation, la fecha de creación de la base en la tabla Metadata, el diario USN, las instantáneas de volumen, la configuración del registro. La ausencia de filas en Timeline nunca demuestra, por sí sola, que no ocurriera nada.
Saber dónde se detiene un artefacto es lo que separa un hallazgo de una suposición. Esta es la lista para Windows Timeline, con la comprobación cruzada de cada punto.
Límites naturales
Caducidad
Cada fila tiene un ExpirationTime. kacos2000 lo midió en exactamente 2.592.000 segundos (30 días) después de LastModifiedTime para las actividades normales y 43.200 segundos (12 horas) para el contenido del portapapeles (kacos2000). Una actividad que se sigue actualizando va aplazando su caducidad; la apertura puntual de un archivo hace seis semanas ya no está en la tabla viva.
Comprobación cruzada: instantáneas y copias de seguridad del perfil; SRUM, que tiene su propia retención, independiente; Jump Lists y archivos LNK, que no tienen un campo de caducidad temporal.
Cobertura
Timeline registra la actividad visible para el usuario (aplicaciones, archivos, páginas), no cada proceso (Microsoft Support). Una herramienta lanzada desde un servicio, una tarea programada o un shell remoto sin ventana de escritorio no tiene por qué aparecer. Los propios tipos de actividad son observaciones de investigadores, no una especificación pública: varios números siguen sin explicación (kacos2000/WindowsTimeline).
Comprobación cruzada: Prefetch, AmCache, eventos de creación de procesos en EVTX.
Windows 11
La vista Timeline se retiró en Windows 11 (Microsoft Support) y lo que la base sigue recibiendo varía. Vea Windows 11 Timeline: ¿sigue siendo útil ActivitiesCache.db?
Hora
Las marcas de tiempo son segundos Unix en UTC fijados por el reloj local. Un reloj del sistema erróneo produce horas erróneas; la base no contiene ninguna fuente de tiempo independiente. El userTimezone del payload registra la zona horaria al crear la actividad (Microsoft Graph), lo que ayuda cuando un portátil ha viajado.
Antiforense deliberado
| Acción | Efecto en ActivitiesCache.db | Qué deja atrás |
|---|---|---|
| Desactivar «Almacenar mi historial de actividades en este dispositivo» | Deja de registrarse la actividad nueva | Estado de la opción en la colmena del usuario; un hueco en las filas mientras otros artefactos continúan |
Directiva de grupo / MDM (EnableActivityFeed, PublishUserActivities) | Publicación de actividades de usuario desactivada (CSP Privacy) | Valores de directiva en la colmena SOFTWARE |
| «Borrar el historial de actividades» | Filas eliminadas para la cuenta (Microsoft Support) | Páginas liberadas de la base, frames del WAL, un inicio repentino de la cronología |
| Quitar una entrada (Timeline de Windows 10) | Entrada copiada a ActivityOperation con estado eliminado (kacos2000) | Una operación de eliminación en cola con su propio CreatedTime |
| Borrar el archivo de la base | Windows lo vuelve a crear | Entradas del diario USN; el DatabaseInstanceIdUpdateTime de la tabla Metadata, que kacos2000 identificó como la fecha de creación de la base (kacos2000) |
| Editar la base con un cliente SQLite | Filas modificadas o eliminadas | Depende de la configuración: el contenido borrado puede permanecer en espacio libre salvo que secure_delete esté activo (PRAGMA de SQLite) o el archivo se reconstruyera con VACUUM (VACUUM de SQLite) |
La operación de eliminación es un regalo
La limpieza más habitual, quitar una entrada comprometedora, es también la más visible. La tabla ActivityOperation conserva la operación con tipo de operación 3, el Id de la actividad y la hora en que se puso en cola la eliminación. En Windows Timeline Parser, estas filas se marcan como Eliminación y se fechan por su hora de creación, no por la hora de inicio de la actividad a la que apuntan, así que aparecen en la cronología en el momento de la limpieza.
kacos2000 describe una sutileza: en las cuentas Microsoft, las entradas con estado eliminado permanecen en ActivityOperation solo hasta que se sincronizan, y después vuelven a Activity hasta caducar (kacos2000). Como la sincronización en la nube del historial terminó para las cuentas Microsoft en 2021 y para las cuentas Entra ID a partir de enero de 2024 (Microsoft Support), conviene probar este comportamiento en sistemas actuales en lugar de darlo por hecho. Revise también ActivityStatus en Activity.
Señales de que la base se reinició
- La fila más antigua es mucho más reciente que el perfil, mientras SRUM y Prefetch muestran actividad anterior del mismo usuario.
- La fecha de creación de la tabla
Metadataes reciente. - El diario USN muestra
ActivitiesCache.dbborrado y vuelto a crear (parser USN). - Una instantánea de volumen contiene una base mayor y más antigua.
Fallos de adquisición (los que nos causamos nosotros)
| Fallo | Resultado | Solución |
|---|---|---|
| No se adquirió el WAL | Falta la actividad más reciente, las filas actualizadas muestran valores antiguos | Adquirir ActivitiesCache.db* (adquisición) |
| Base y WAL de momentos distintos | Frames que no coinciden; un parser cuidadoso ignora el WAL | Adquirir ambos en una sola pasada o desde una instantánea |
| Originales abiertos con un cliente SQLite | WAL volcado y borrado al cerrar (sqlite.org) | Calcular hashes y trabajar sobre copias |
| Solo se adquirió una carpeta de cuenta | Se pierde la actividad de otro tipo de cuenta | Adquirir la carpeta ConnectedDevicesPlatform completa |
Límites del parser (incluido este)
Ser explícito con la herramienta forma parte de ser explícito con la evidencia. Hoy, Windows Timeline Parser:
- Analiza las filas vivas de
Activity,ActivityOperationyActivity_PackageId, con las transacciones WAL confirmadas aplicadas. - No recupera mediante carving registros eliminados de freeblocks, páginas de la freelist ni frames WAL de una generación de salt anterior. Informa de por qué se detuvo la lectura del WAL (por ejemplo, «pertenece a una generación anterior del WAL»), pero no extrae esos frames.
- No analiza las tablas
Metadata,ActivityAssetCacheniAppSettings. - Muestra la columna
Group(Copy / Paste) en la exportación JSON, no en la tabla. - Carga cada base en la memoria del navegador.
- Se ha probado con archivos SQLite reales construidos según el esquema documentado; contraste los hallazgos críticos con un segundo parser (comparativa de parsers).
Para recuperar registros eliminados, herramientas de investigación SQLite como bring2lite analizan las freelists y el WAL (Meng y Baier, 2019), y kacos2000 publica herramientas de carving del portapapeles (kacos2000/WindowsTimeline).
FAQ
¿Puede un usuario borrar su historial de Windows Timeline?
Sí. Windows ofrece un botón para borrar el historial de actividades, los usuarios podían quitar entradas individuales de Timeline en Windows 10 y la opción de almacenar el historial puede desactivarse. Quitar una entrada deja una operación de eliminación pendiente en ActivityOperation, que es en sí misma una prueba.
¿Cuánto tiempo conserva Windows Timeline la actividad?
Cada fila tiene un ExpirationTime. Los investigadores lo midieron en 30 días tras la última modificación para las actividades normales y en 12 horas para el contenido del portapapeles.