Ubicación de ActivitiesCache.db y adquisición forense
Dónde está ActivitiesCache.db según el tipo de cuenta y cómo adquirirlo con su -wal desde imágenes de disco, KAPE, Velociraptor o un sistema en ejecución.
Resumen. La base está en C:\Users\<user>\AppData\Local\ConnectedDevicesPlatform\<account-folder>\ActivitiesCache.db. Adquiera la carpeta ConnectedDevicesPlatform completa de cada perfil, incluido ActivitiesCache.db-wal. En un sistema en ejecución, use un recolector con acceso raw al disco (target WindowsTimeline de KAPE, Velociraptor) o una instantánea de volumen, y tome la base y el WAL a la vez. Calcule hashes antes de analizar.
Obtener el archivo es fácil en un disco apagado y sorprendentemente fácil de hacer mal en uno encendido. Los dos errores clásicos son copiar la base sin su WAL y copiar los dos archivos en momentos distintos. En ambos casos se obtiene una cronología que parece correcta y que en silencio está incompleta.
La ruta
| Componente | Valor |
|---|---|
| Base | %LOCALAPPDATA%\ConnectedDevicesPlatform\ (C:\Users\<user>\AppData\Local\ConnectedDevicesPlatform\) |
| Carpeta de cuenta | L.<username> para una cuenta local (artifacts-kb); los profesionales describen un identificador de estilo hexadecimal para cuentas Microsoft y una carpeta con prefijo AAD. para cuentas Entra ID (Azure AD) (README de ActivitiesCacheParser) |
| Archivos | ActivitiesCache.db, ActivitiesCache.db-wal, ActivitiesCache.db-shm |
| Cerca | CDPGlobalSettings.cdp y archivos .cdp por cuenta (ajustes JSON de la plataforma) |
Dos detalles importan en la práctica.
Un usuario, varias carpetas de cuenta. kacos2000 observó que, cuando un usuario pasa de una cuenta local a una cuenta Microsoft, la carpeta L.<username> se elimina y se crea una nueva para la cuenta Microsoft, trasladando las entradas anteriores; al volver a una cuenta local, la base de la cuenta Microsoft permanece (kacos2000). No se detenga en la primera carpeta que encuentre.
El nombre de la carpeta no es el usuario. En las cuentas Microsoft y Entra ID, el nombre de la carpeta no contiene el nombre de usuario. Atribuya la base a partir de la ruta del perfil (Users\<name>\) y conserve esa estructura en la adquisición. La entrada del glosario ConnectedDevicesPlatform resume la nomenclatura.
Qué archivos tomar
| Archivo | ¿Tomarlo? | Por qué |
|---|---|---|
ActivitiesCache.db | Sí | La base tras el checkpoint |
ActivitiesCache.db-wal | Sí | Cambios confirmados aún no volcados, a menudo la actividad más reciente (por qué importa el WAL) |
ActivitiesCache.db-shm | Opcional | El índice WAL: una estructura de búsqueda reconstruible, sin evidencia propia |
Archivos de ajustes *.cdp | Sí, no cuesta nada | Contexto sobre la cuenta y la configuración de la plataforma |
SQLite indica que el archivo WAL forma parte del estado persistente de la base y que separarlos puede provocar la pérdida de transacciones confirmadas (sqlite.org/wal.html). Trate el par como una única evidencia.
Desde una imagen de disco
La adquisición en frío es el caso limpio: nada mantiene los archivos abiertos y no puede producirse ningún checkpoint mientras trabaja.
- Monte la imagen en solo lectura.
- Exporte
Users\*\AppData\Local\ConnectedDevicesPlatform\de forma recursiva, conservando las rutas. - Calcule el hash de cada archivo exportado.
- Compruebe si cada carpeta de cuenta tiene un
-wal. Un WAL vacío o ausente en una imagen suele indicar que la última conexión se cerró limpiamente y volcó los datos (sqlite.org); anótelo, no es un error.
Revise también las instantáneas de volumen si la imagen las tiene. Una instantánea más antigua puede contener una base anterior a que el usuario borrara el historial o a que caducaran las entradas. El parser de imágenes de disco y el parser de la Papelera de reciclaje cubren la evidencia vecina que querrá extraer de la misma imagen.
Desde un sistema en ejecución
En un equipo encendido, la sesión del usuario mantiene la base abierta. Una copia normal de archivos suele fallar por una infracción de uso compartido o, peor aún, funciona con la base y no con el WAL.
KAPE. El target WindowsTimeline de KapeFiles recoge ActivitiesCache.db* de forma recursiva bajo la carpeta ConnectedDevicesPlatform de cada usuario, lo que trae la base, el WAL y el SHM de una vez (WindowsTimeline.tkape). KAPE lee archivos bloqueados mediante acceso raw al disco.
Velociraptor. El artefacto Windows.Forensics.Timeline apunta por defecto a C:\Users\*\AppData\Local\ConnectedDevicesPlatform\*\ActivitiesCache.db; su documentación lo marca como obsoleto en favor de Generic.Forensic.SQLiteHunter (documentación de Velociraptor). Para recoger archivos, use un patrón que termine en ActivitiesCache.db* para que el WAL venga incluido.
Instantánea de volumen. Crear una instantánea y copiar desde ella da un par coherente y fijado en el tiempo. Modifica el sistema, así que regístrelo en sus notas.
Use lo que use, la regla es la misma: la base y el WAL deben proceder del mismo instante. Un WAL de otro momento puede contener frames que no encajan con las páginas de la base. El Windows Timeline Parser comprueba que el resultado reproducido siga siendo un Timeline plausible e ignora un WAL que no coincide, con una advertencia, pero no puede recuperar lo que una mala copia nunca capturó.
Señales de una mala copia
| Síntoma | Causa probable |
|---|---|
El archivo empieza con ceros en lugar de SQLite format 3 | La herramienta de copia no pudo leer el archivo bloqueado y escribió un búfer vacío |
| Hay WAL, pero el parser informa de un salt o checksum que no coincide en el primer frame | WAL tomado en otro momento o de otra base |
| La base se analiza, pero la actividad más reciente tiene horas o días en un equipo activo | Falta el WAL |
Solo hay un -wal y un -shm, sin base | Patrón de adquisición demasiado estrecho |
La herramienta informa de cada uno de estos casos de forma explícita: los archivos que empiezan con ceros, un WAL sin su base y un -shm ignorado aparecen en Archivos no analizados, y la falta de WAL genera una advertencia.
Atribución y cadena de custodia
- Mantenga intacto
Users\<name>\AppData\Local\ConnectedDevicesPlatform\<account-folder>\en la adquisición. La herramienta atribuye cada base a partir deUsers/<name>/o de la carpetaL.<name>; su informe debe hacer lo mismo. - Calcule el hash de los archivos adquiridos y trabaje solo con copias. Abrir los originales con una biblioteca SQLite estándar puede volcar el WAL en la base y borrarlo al cerrar la conexión (sqlite.org), lo que altera la evidencia.
- Anote la zona horaria del sistema y la del usuario, y mantenga las marcas de tiempo en UTC en sus notas de trabajo.
Colecciones de triaje: qué más recoger
Si ya está recogiendo Timeline, la misma pasada debería traer los artefactos que lo corroboran: SRUDB.dat para SRUM, C:\Windows\Prefetch para Prefetch, AutomaticDestinations para las Jump Lists, Recent\*.lnk para los archivos LNK, las colmenas de usuario para la evidencia del registro y los registros de eventos para EVTX. Timeline es más sólido cuando es una voz entre varias; vea Windows Timeline vs SRUM vs Prefetch vs Jump Lists.
FAQ
¿Dónde se almacena la base de datos de Windows Timeline?
En C:\Users\<user>\AppData\Local\ConnectedDevicesPlatform\<account-folder>\ActivitiesCache.db. La carpeta de cuenta es L.<username> para una cuenta local y otro identificador para cuentas Microsoft o profesionales y educativas.
¿Necesito el archivo -shm?
No. El archivo -shm es un índice de memoria compartida que SQLite reconstruye. Adquiéralo si su herramienta lo recoge, pero la evidencia está en ActivitiesCache.db y ActivitiesCache.db-wal.
¿Puedo copiar ActivitiesCache.db de un sistema en ejecución?
No con una copia normal mientras el usuario tiene la sesión iniciada, porque el archivo suele estar abierto. Use un recolector con acceso raw al disco, como KAPE o Velociraptor, o una instantánea de volumen, y tome la base de datos y su WAL en el mismo instante.
Próximos pasos
Con los archivos en la mano, analice ActivitiesCache.db en su navegador, o vuelva a la guía completa de análisis forense de Windows Timeline.