Análisis forense de Windows Timeline: ActivitiesCache.db
Guía completa de análisis forense de Windows Timeline: qué registra ActivitiesCache.db, dónde está, por qué importa el -wal y cómo leerlo en una investigación.
Resumen. Windows Timeline es una base de datos SQLite por usuario, ActivitiesCache.db, ubicada en %LOCALAPPDATA%\ConnectedDevicesPlatform\<cuenta>\. Registra las aplicaciones que usó el usuario, los archivos y páginas abiertos, el tiempo de foco por aplicación y, a veces, texto del portapapeles. Adquiérala junto con su archivo -wal, lea las tablas Activity y ActivityOperation, convierta las marcas de tiempo Unix desde UTC y corrobore con otros artefactos. Es muy rica en Windows 10 e incierta en Windows 11: compruebe, no suponga.
La mayoría de los artefactos de Windows responden a una pregunta concreta. Prefetch dice que un binario se ejecutó. Las Jump Lists dicen que una aplicación abrió un archivo. Windows Timeline es distinto porque responde a varias preguntas a la vez, por usuario y con duraciones. Eso la convierte en una de las mejores fuentes para reconstruir qué hacía una persona frente al teclado, y en una de las más fáciles de malinterpretar.
Esta guía es la puerta de entrada de la serie. Cada sección enlaza con un artículo más detallado.
Qué es Windows Timeline
Timeline llegó con Windows 10 versión 1803 (actualización de abril de 2018) como parte de la Connected Devices Platform, el servicio detrás de las funciones multidispositivo de Microsoft del tipo «continúa donde lo dejaste» (el examen de la base de datos de kacos2000). Microsoft describe el historial de actividades como lo que usted hace en el dispositivo, por ejemplo las aplicaciones y servicios que usa, los archivos que abre y los sitios web que visita, almacenado localmente en el dispositivo (Microsoft Support).
La parte visible era la vista Timeline en la Vista de tareas (Windows + Tab). Microsoft indica que la experiencia de Timeline se retiró en Windows 11, aunque se mantiene en Windows 10 (Microsoft Support: Get help with Timeline). La vista desapareció; qué contiene todavía la base en Windows 11 se trata en Windows 11 Timeline: ¿sigue siendo útil ActivitiesCache.db?.
Dónde se almacena
| Elemento | Valor |
|---|---|
| Carpeta | C:\Users\<user>\AppData\Local\ConnectedDevicesPlatform\<account-folder>\ |
| Base de datos | ActivitiesCache.db (SQLite 3) |
| Archivos asociados | ActivitiesCache.db-wal (registro write-ahead), ActivitiesCache.db-shm (índice de memoria compartida) |
| Carpeta de cuenta | L.<username> para cuentas locales; otro identificador para cuentas Microsoft y profesionales o educativas |
| Alcance | Una base de datos por carpeta de cuenta |
La carpeta ConnectedDevicesPlatform puede contener más de una carpeta de cuenta para el mismo usuario de Windows, por ejemplo tras pasar de una cuenta local a una cuenta Microsoft. Adquiera la carpeta completa. Las rutas, el nombre de las carpetas de cuenta, los targets de KAPE y el manejo de archivos bloqueados se detallan en dónde está ActivitiesCache.db y cómo adquirirlo.
Qué contiene
La base tiene varias tablas. Tres concentran casi todo el valor para la investigación (Group-IB, kacos2000):
| Tabla | Qué contiene | Por qué importa |
|---|---|---|
Activity | Una fila por actividad: aplicación, tipo, inicio/fin, payload JSON, payload del portapapeles | La cronología en sí |
ActivityOperation | Operaciones en cola (inserción, actualización, eliminación) pendientes de sincronizar | Rastros de entradas que el usuario quitó de Timeline |
Activity_PackageId | Nombres de paquete o de ejecutable por actividad, con caducidad | Ayuda a identificar la aplicación |
Cada fila de Activity tiene un tipo de actividad. Los más habituales:
| ActivityType | Significado | Datos clave |
|---|---|---|
| 5 | Aplicación, archivo o página abiertos | displayText, contentUri, appDisplayName en el payload |
| 6 | Aplicación en uso (foco) | activeDurationSeconds, userTimezone, hora de inicio y de fin |
| 10 | Contenido del portapapeles | Texto en Base64 en ClipboardPayload |
| 16 | Operación de copiar o pegar | La columna Group indica copia o pegado |
| 2 | Notificación | Metadatos de notificaciones toast |
La aplicación se identifica mediante el JSON AppId, un array de pares plataforma/aplicación en el que las carpetas del sistema aparecen como GUID de carpetas conocidas. Cada campo se explica en tipos de actividad y campos del payload de ActivitiesCache.db.
Por qué el archivo -wal no es opcional
ActivitiesCache.db funciona en modo write-ahead log de SQLite. Las filas nuevas y modificadas se añaden a ActivitiesCache.db-wal; solo llegan al archivo principal cuando un checkpoint las copia de vuelta. La documentación de SQLite es clara: separar una base de datos de su archivo WAL puede hacer que se pierdan transacciones ya confirmadas (sqlite.org/wal.html).
En un equipo encendido o usado recientemente, las últimas horas de actividad suelen estar solo en el WAL. Analice la base sola y obtendrá una cronología que se detiene justo antes de la parte interesante. El mecanismo y sus consecuencias forenses se explican en por qué importa ActivitiesCache.db-wal.
Qué puede demostrar y qué no
| Pregunta | Respuesta de Timeline | Fiabilidad |
|---|---|---|
| ¿Abrió el usuario este archivo? | Fila de tipo 5 con la ruta del archivo | Alta, por cuenta de usuario |
| ¿Cuánto tiempo usó esta aplicación? | activeDurationSeconds del tipo 6 | Buena, pero compárela con inicio/fin |
| ¿Qué aplicación se usó en un USB o un recurso compartido? | Ruta en otra letra de unidad o ruta UNC | Buena para la ruta; el volumen requiere otros artefactos |
| ¿Qué copió? | Texto del portapapeles (tipo 10), si existe | Alta cuando existe, rara vez existe |
| ¿Se ejecutó un programa? | Solo si generó una actividad de usuario | Parcial: la ausencia no demuestra nada |
| ¿Cuándo exactamente, en hora local? | Segundos Unix en UTC más userTimezone | Buena, si la conversión es explícita |
Las reglas de interpretación, incluido por qué una fila de Timeline es prueba de uso y no de creación de procesos, están en ¿demuestra Windows Timeline la ejecución o el acceso a archivos?.
Un flujo de trabajo que se sostiene
- Adquiera la carpeta
ConnectedDevicesPlatformcompleta de cada usuario, desde una imagen de disco o una colección de triaje. Conserve la estructuraUsers\<name>\para atribuir cada base a su cuenta. - Calcule hashes de lo adquirido antes de abrir nada con una herramienta que pueda escribir. Una biblioteca SQLite estándar puede hacer un checkpoint y borrar el WAL al cerrar la base (sqlite.org): trabaje sobre copias.
- Analice la base y su WAL juntos. Anote qué filas existen solo en el WAL: son las más recientes y las que sostendrán el informe.
- Normalice la hora. Guarde UTC; convierta a hora local con el
userTimezonedel payload solo para el relato. - Filtre según la pregunta: tipo 5 para archivos abiertos, tipo 6 para uso, tipos 10 y 16 para el portapapeles,
ActivityOperationcon tipo de operación 3 para eliminaciones. - Corrobore con SRUM, Prefetch, archivos LNK, Jump Lists y registros de eventos. La comparación está en Windows Timeline vs SRUM vs Prefetch vs Jump Lists.
El Windows Timeline Parser realiza los pasos 3 a 5 en el navegador: suelte la base y su WAL y reproduce las transacciones WAL confirmadas, marca las filas que están solo en el WAL o que cambiaron en él, decodifica AppId y payloads, y exporta a CSV o JSON. No se sube nada. El paso a paso está en cómo analizar ActivitiesCache.db en el navegador.
Límites que conviene tener presentes
- Retención. Cada entrada tiene un
ExpirationTime; kacos2000 lo midió en exactamente 30 días tras la última modificación, y en 12 horas para las entradas del portapapeles (kacos2000). - Configuración. El usuario o una directiva pueden detener la recopilación («Almacenar mi historial de actividades en este dispositivo») y borrar el historial (Microsoft Support).
- Cobertura. No todos los procesos generan actividad. Timeline trata del uso por parte del usuario.
- Registros eliminados. Las filas borradas pueden sobrevivir en páginas libres o en frames antiguos del WAL, pero la mayoría de los parsers, incluido este por ahora, no los recuperan mediante carving.
La lista completa, con las maniobras antiforenses y cómo detectarlas, está en limitaciones y antiforense de Windows Timeline.
FAQ
¿Qué es ActivitiesCache.db?
Es la base de datos SQLite, una por usuario, que hay detrás de Windows Timeline y del historial de actividades. Registra qué aplicaciones usó el usuario, qué archivos y páginas abrió, cuánto tiempo tuvo el foco cada aplicación y, en algunas configuraciones, el texto del portapapeles.
¿Qué versiones de Windows tienen Windows Timeline?
Timeline llegó con Windows 10 versión 1803. Microsoft retiró la vista Timeline en Windows 11, pero la base de datos puede seguir existiendo en sistemas Windows 11: compruébelo en lugar de darlo por supuesto.
¿Necesito el archivo -wal?
Sí. La base funciona en modo write-ahead log de SQLite, así que los cambios recientes permanecen en ActivitiesCache.db-wal hasta un checkpoint. Sin él, a menudo falta la actividad más reciente.
Lecturas recomendadas
- Costas Katsavounidis (kacos2000), An examination of Win10 ActivitiesCache.db database y el repositorio WindowsTimeline.
- Group-IB, No Time to Waste: Windows 10 Timeline for forensics.
- Base de conocimiento ForensicArtifacts, Activities Cache Database.
- SQLite, Write-Ahead Logging.