Parsers de ActivitiesCache.db comparados: WxTCmd y más
Comparativa justa de parsers de Windows Timeline: WxTCmd, herramientas de kacos2000, Plaso, Velociraptor, SQL y este parser web, con el manejo del WAL.
Resumen. WxTCmd es la referencia: gratuito, automatizable, tres CSV y compatible con KAPE. Las herramientas de kacos2000 son el kit de investigación, con carving del portapapeles incluido. Plaso integra Timeline en una supercronología. Velociraptor recoge y consulta a escala de flota. Windows Timeline Parser sirve para el triaje sin instalación en un navegador, con su propia reproducción del WAL y estado WAL por fila. Para todo lo que vaya a un tribunal, ejecute dos herramientas y compare.
Esta comparativa se limita a lo que cada proyecto documenta o muestra su código fuente. Cuando algo no está documentado, la tabla lo dice en lugar de adivinar.
Los candidatos
| Herramienta | Tipo | Se ejecuta en | Salida |
|---|---|---|---|
| WxTCmd (Eric Zimmerman) | CLI, .NET | Windows (el código incluye compilaciones .NET 6+ con soporte para Linux) | 3 archivos CSV |
| WindowsTimeline (kacos2000) | Ejecutable con interfaz gráfica, scripts de PowerShell, consultas SQL, herramientas de carving del portapapeles | Windows | Cuadrícula / CSV, resultados SQL |
Plaso windows_timeline | Plugin del parser SQLite | Linux, Windows, macOS (Python) | Eventos de supercronología |
Velociraptor Windows.Forensics.Timeline | Artefacto de endpoint | Agentes de Velociraptor | Resultados de consulta; obsoleto en favor de Generic.Forensic.SQLiteHunter |
| ActivitiesCacheParser | Script de Python | Cualquier sistema con Python | Informes |
| DB Browser for SQLite + SQL | Manual | Cualquiera | Lo que usted consulte |
| Windows Timeline Parser | Aplicación web, Rust → WebAssembly | Cualquier navegador moderno | Tabla interactiva, CSV, JSON |
Las suites comerciales también analizan Timeline; Belkasoft, por ejemplo, publicó una demostración en Forensic Focus. Quedan fuera del alcance de este artículo.
WxTCmd
WxTCmd es la herramienta a la que recurren la mayoría de los analistas, y con motivo. Recibe una base con -f y un directorio de salida con --csv, con un formato de fecha opcional --dt (README). Su código escribe tres archivos, uno para Activity, otro para ActivityOperation y otro para Activity_PackageId, con un prefijo de marca de tiempo y el nombre de perfil tomado de la ruta (Program.cs). El CSV de Activity incluye columnas de ejecutable, texto mostrado, información de contenido, payload, payload del portapapeles, inicio, fin, duración, zona horaria y plataforma del dispositivo. SANS la incluye entre sus herramientas forenses (SANS).
Manejo del WAL. El README no menciona el WAL. El código abre la base mediante un ORM sobre una biblioteca SQLite estándar, sin copiarla. Por diseño de SQLite, un archivo -wal que esté junto a la base se lee, y la última conexión que se cierra puede volcarlo en la base y borrarlo (sqlite.org). Consecuencia práctica: mantenga ActivitiesCache.db-wal junto a la copia que analiza, no apunte nunca WxTCmd a la evidencia original y cuente con que el WAL de esa copia se consumirá.
Puntos fuertes: madura, automatizable, un módulo de KAPE listo para usar, CSV preparados para Timeline Explorer. Límites: flujo de trabajo centrado en Windows; sin indicación por fila de lo que procede del WAL.
WindowsTimeline de kacos2000
El repositorio de Costas Katsavounidis acompaña a la investigación pública más detallada sobre esta base (PDF). Ofrece un parser con interfaz gráfica, scripts de PowerShell para bases en vivo y sin conexión, consultas SQL listas para usar y herramientas del portapapeles que, según su autor, recuperan entradas eliminadas tanto de la base como del WAL (repositorio).
Puntos fuertes: profundidad de investigación; carving; SQL que se puede leer y adaptar. Límites: herramientas para Windows; las consultas SQL necesitan una compilación de SQLite con soporte JSON.
Plaso
El plugin windows_timeline de Plaso requiere las tablas Activity y Activity_PackageId y genera eventos de uso por parte del usuario y de actividades genéricas (código fuente). Úselo cuando Timeline sea una fuente entre cientos y quiera todo en el mismo eje.
Puntos fuertes: integración en la supercronología. Límites: menos detalle específico de Timeline que un parser dedicado; consulte su documentación para saber cómo trata su versión los archivos -wal.
Velociraptor
Windows.Forensics.Timeline apunta a C:\Users\*\AppData\Local\ConnectedDevicesPlatform\*\ActivitiesCache.db y está documentado como obsoleto en favor de Generic.Forensic.SQLiteHunter (documentación de Velociraptor). Úselo para hacer hunting en muchos endpoints o para recoger los archivos y analizarlos sin conexión.
DB Browser for SQLite y SQL
Posible, didáctico y arriesgado con evidencia. Un cliente normal leerá el WAL y puede volcarlo (sqlite.org). Abra siempre una copia, y recuerde que los payloads JSON y el contenido Base64 del portapapeles hay que decodificarlos a mano.
Windows Timeline Parser (este sitio)
Lo que hace, tal como está implementado:
- Lector SQLite propio de solo lectura en Rust, compilado a WebAssembly y ejecutado en un Web Worker. Sin motor SQLite, sin ruta de escritura, sin subida.
- Reproducción del WAL: checksums validados, solo transacciones confirmadas; frames no confirmados ignorados; un WAL que no encaja con la base se detecta y se ignora con una advertencia.
- Estado WAL por fila: solo en el WAL, modificada en el WAL o volcada (por qué importa).
- Decodificación: AppId resuelto con GUID de carpetas conocidas,
contentUriconvertido en ruta, segundos de foco, zona horaria del usuario, texto Base64 del portapapeles. - Carga: archivos sueltos, carpetas y colecciones ZIP de triaje; cada base emparejada con su WAL; propietario deducido de la ruta.
- Triaje: marcas para portapapeles, filas solo en el WAL, eliminaciones, carpetas escribibles por el usuario, otras unidades y rutas de red; filtros; UTC/local; CSV (protegido contra inyección de fórmulas) y JSON.
Lo que no hace: recuperar mediante carving registros eliminados, analizar Metadata o ActivityAssetCache, procesar en streaming bases muy grandes. Es más reciente que WxTCmd y tiene menos recorrido en casos reales, y precisamente por eso recomendamos un segundo parser para los hallazgos críticos.
Lado a lado
| WxTCmd | kacos2000 | Plaso | Timeline Parser | |
|---|---|---|---|---|
| Instalación | Herramienta .NET | Ejecutable de Windows / PowerShell | Paquete de Python / Docker | Ninguna (navegador) |
| Tablas | Activity, ActivityOperation, Activity_PackageId | Las mismas, más consultas | Activity, Activity_PackageId | Activity, ActivityOperation, Activity_PackageId |
| WAL | Mediante la biblioteca SQLite, si está junto al archivo | Mediante SQLite; las herramientas de carving leen el WAL | Ver la documentación de Plaso | Reproducción propia, estado por fila |
| Registros eliminados | No | Carving del portapapeles | No | No |
| Portapapeles decodificado | Payload exportado | Sí | No documentado | Sí |
| Salida | CSV | Interfaz gráfica, CSV | Almacenamiento Plaso / cronologías | Tabla, CSV, JSON |
| Lotes / scripts | Sí | En parte | Sí | No (interactivo) |
Cuál usar y cuándo
- Flujo de laboratorio con KAPE, Timeline Explorer e informes: WxTCmd.
- Datos del portapapeles eliminados, investigación: las herramientas de kacos2000.
- Todo en una misma cronología: Plaso.
- Cientos de endpoints: Velociraptor.
- Un portátil, sin permisos de instalación y una respuesta en cinco minutos, o una segunda opinión sobre el contenido del WAL: Windows Timeline Parser, siguiendo la guía paso a paso.
FAQ
¿Cuál es la herramienta de referencia para analizar ActivitiesCache.db?
WxTCmd, de Eric Zimmerman, es un parser gratuito de línea de comandos muy utilizado. Exporta las tablas Activity, ActivityOperation y Activity_PackageId a CSV y encaja en los flujos de trabajo de KAPE.
¿Procesa WxTCmd el archivo -wal?
Su README no menciona el WAL. Abre la base mediante una biblioteca SQLite, y SQLite lee un -wal que esté junto a la base. Mantenga el WAL junto a la copia que analiza y analice solo copias, porque SQLite puede volcar y borrar el WAL al cerrar.