Skip to content

Análisis forense del portapapeles en ActivitiesCache.db

Cómo guarda Windows el texto del portapapeles en ActivitiesCache.db: tipos 10 y 16, configuración necesaria, caducidad de 12 horas y decodificación Base64.

Publicado el 7 min de lectura

Resumen. El contenido del portapapeles es el tipo de actividad 10: texto en Base64 en ClipboardPayload, conservado 12 horas. Los eventos de copiar y pegar son el tipo 16, con Group = Copy o Paste y un clipboardDataId que los enlaza. El tipo 10 solo se ha observado con el historial del portapapeles y la sincronización entre dispositivos activados a la vez, así que la mayoría de las bases no lo tienen. Cuando aparece, vale oro: comandos, rutas y a veces credenciales.

La evidencia del portapapeles es poco frecuente en Timeline. Precisamente por eso conviene dominarla: cuando aparece, suele responder a la pregunta a la que el resto del caso solo da vueltas.

Los dos tipos de actividad

Tipo 10Tipo 16
QuéEl contenido del portapapelesUna operación de copiar o pegar
Columna claveClipboardPayload (Base64 en JSON)Group («Copy» / «Paste»)
Enlace entre ambosclipboardDataId en Payload
AplicaciónAplicación de la que procedían los datosAplicación de origen / de destino
Duración12 horas (ExpirationTime - LastModifiedTime = 43.200 s)Caducidad estándar
Fuentekacos2000, inversecoskacos2000

kacos2000 observó el tipo 10 por primera vez en una compilación Insider de Windows 10 1809 y señaló que solo había visto texto en el portapapeles; las imágenes no se sincronizaban igual en aquel momento (kacos2000).

Cuándo se registra el contenido del portapapeles

inversecos indica dos requisitos para que el portapapeles se registre en ActivitiesCache.db: el historial del portapapeles activado y la sincronización del portapapeles entre dispositivos activada (inversecos). Ninguno está activado por defecto en la mayoría de los entornos, por eso las filas de tipo 10 son poco comunes.

Dónde comprobar la configuración:

ConfiguraciónUbicación
Historial del portapapelesNTUSER.DAT\Software\Microsoft\Clipboard\EnableClipboardHistory (1 = activado) (kacos2000)
Última limpieza de elementos caducadosNTUSER.DAT\Software\Microsoft\Clipboard\HistoryOldItemsLastCleanupTimestamp (FILETIME) (kacos2000)
Directiva de la organización para la sincronización del portapapelesAllowCrossDeviceClipboard en el CSP de directivas Privacy, Windows 10 1809 y posteriores (Microsoft Learn)

Lea las colmenas de usuario con el parser del registro. Tenga en cuenta que Microsoft dejó de sincronizar en la nube el historial de actividades de las cuentas Microsoft en 2021 y de las cuentas Entra ID a partir de enero de 2024 (Microsoft Support). Cómo afecta esto a las filas locales del portapapeles en las compilaciones actuales no está documentado; pruébelo con sus propias imágenes en lugar de suponerlo.

Decodificar ClipboardPayload

La columna contiene un array JSON. Cada elemento tiene un content en Base64 y un formatName:

[{"content": "cmNsb25lIGNvcHkgRTpcZXhmaWwgbWVnYTpmaW4tYmFja3VwIC0tdHJhbnNmZXJzIDg=", "formatName": "Text"}]

Al decodificar el Base64 se obtiene el texto. inversecos lo resume así: los datos solo están codificados en Base64 (inversecos). El ejemplo anterior, tomado de la muestra ficticia de este sitio, se decodifica como un comando rclone copy.

Windows Timeline Parser decodifica ClipboardPayload en todas las filas que lo tienen, prueba UTF-8 y después UTF-16LE, elimina los caracteres NUL finales y une varios elementos de texto. El resultado aparece en la tabla, marcado como Portapapeles, se puede buscar con el filtro de texto y se exporta en la columna CSV ClipboardText. La entrada ClipboardPayload del glosario ofrece la versión breve.

El texto controlado por un atacante es peligroso en una hoja de cálculo. La exportación CSV de la herramienta antepone un prefijo a las celdas que empiezan por =, +, - o @ para que una fórmula copiada no se ejecute cuando el analista abra la exportación.

Leer los eventos de copiar y pegar

Las filas de tipo 16 no contienen el texto, pero indican la dirección y la aplicación:

  1. Filtre por Copiar / pegar.
  2. En la exportación JSON, lea group (Copy o Paste) en cada fila; abra la fila para ver el clipboardDataId en el payload.
  3. Empareje un Copy y un Paste con el mismo clipboardDataId: la primera aplicación es el origen y la segunda el destino (kacos2000).
  4. Si existe una fila de tipo 10 para el mismo elemento, también tiene el contenido.

Así, «el usuario copió una ruta del Bloc de notas y la pegó en una consola» se convierte en una secuencia que se puede mostrar en lugar de deducir.

Qué pueden revelar las filas del portapapeles

En casos reales, el portapapeles suele contener lo que los usuarios no escriben dos veces:

ContenidoPor qué importa
Comandos (net use, rclone, one-liners de PowerShell)Intención y herramientas, a menudo con argumentos
Rutas UNC y URLObjetivos: recursos compartidos, sitios de subida, paneles C2
Nombres de usuario y contraseñasManejo de credenciales; también un dato sensible para su informe
Fragmentos de documentosQué datos se estaban moviendo

Trátelo como material sensible: oculte las credenciales en los informes y restrinja el acceso a la exportación.

Triaje del portapapeles en cinco minutos

Una rutina que funciona con cualquier adquisición, espere o no datos del portapapeles:

  1. Cargue la base de cada usuario con su WAL en Windows Timeline Parser y lea el contador Portapapeles. Cero también es una respuesta: anótelo.
  2. Filtre por Portapapeles. En cada fila, anote la aplicación de origen, la hora UTC y el texto decodificado. Compruebe la marca Solo en el WAL: las filas del portapapeles viven poco, y las más recientes suelen estar solo en el WAL.
  3. Filtre por Copiar / pegar y alinee los eventos alrededor de cada fila del portapapeles. Una copia en el Bloc de notas seguida, segundos después, de un pegado en una consola merece una frase en el informe.
  4. Busque en el texto decodificado hosts, recursos compartidos, URL y nombres de cuenta, y pivote: las mismas cadenas pueden aparecer en los registros de eventos, el historial del navegador o las aplicaciones de mensajería.
  5. Obtenga la colmena del usuario y anote EnableClipboardHistory, para que el informe explique por qué existen (o no) datos del portapapeles en ese equipo.

Límites

  • Poco frecuente. Depende de la configuración, y la duración de 12 horas deja una ventana corta.
  • Solo texto en las observaciones publicadas hasta ahora.
  • Filas eliminadas. kacos2000 señala que muchas entradas de tipo 10 caducadas pueden recuperarse, incluso meses después, y ofrece herramientas de carving para ello (kacos2000/WindowsTimeline). El parser de este sitio solo muestra filas vivas (volcadas y del WAL).
  • Otras fuentes. Los datos del portapapeles también pueden estar en memoria; vea el trabajo de inversecos sobre análisis del portapapeles en memoria (inversecos) y el parser de RAM. Velociraptor ofrece un artefacto Windows.Forensics.Clipboard en su exchange (Velociraptor).

FAQ

¿ActivitiesCache.db contiene siempre el historial del portapapeles?

No. El contenido del portapapeles (tipo de actividad 10) solo se ha observado cuando el historial del portapapeles y la sincronización entre dispositivos estaban ambos activados, y esas entradas caducan a las 12 horas. La mayoría de las bases no tienen ninguna.

¿Cómo se guarda el texto del portapapeles en ActivitiesCache.db?

En la columna ClipboardPayload, como un array JSON cuyo campo content contiene el texto codificado en Base64. Al decodificar el Base64 se obtiene el texto copiado.

¿Se pueden recuperar entradas del portapapeles eliminadas?

A veces. kacos2000 afirma recuperar entradas caducadas de la base y de su WAL con una herramienta de carving. Los parsers estándar solo muestran filas vivas.

Artículos relacionados

Artículos relacionados

Caso ficticio paso a paso: reconstruir la sesión interactiva de una cuenta de servicio y la exfiltración de nóminas con ActivitiesCache.db y su WAL.
Qué demuestra realmente una fila de Windows Timeline: archivo abierto, aplicación en primer plano, tiempo de uso. Cómo redactarlo y qué artefactos lo confirman.
Comparativa justa de parsers de Windows Timeline: WxTCmd, herramientas de kacos2000, Plaso, Velociraptor, SQL y este parser web, con el manejo del WAL.