Pequeño análisis forense del portapapeles de Windows

Antes de comenzar con este pequeño análisis forense, te invito a que te des una vuelta, si no lo has hecho ya, por este artículo Sácale provecho al portapapeles de Windows en el que te explico el funcionamiento como usuario del portapapeles de Windows y de su historial.

Usamos constantemente el portapapeles de Windows, así que desde un punto de vista forense no está de más darse una vuelta por él, a ver que podemos encontrar, si el usuario no tiene activado el historial del portapapeles, tan sólo tendremos acceso a su último elemento copiado, pero por el contrario, si lo tiene activado, podemos tener acceso a muchos de los elementos que el usuario ha copiado (textos, imágenes, capturas de pantalla), por ponerte un ejemplo de lo que nos podemos encontrar, ¿alguna vez has copiado, para no equivocarte, una contraseña de esas que te sugieren tan hipermegaseguras, con sus mayúsculas, minúsculas, números, caracteres extraños y otros caracteres aún más extraños? pues si la has copiado en el portapapeles, lo más probable es que siga en el historial del portapapeles, y cualquiera que tenga acceso a él, tendrá acceso a esa contraseña tan hipersegura, y de la que te sientes tan orgulloso.

Ya sabemos que la forma fácil de acceder al historial del portapapeles es con la combinación de teclas Win +V, y nos aparecerá todo su contenido. Pero pongamonos los guantes y cojamos el bisturí para comenzar a ver sus entrañas, vamos a ver dónde se guardan todas estas configuraciones del portapapeles y como funciona. Podemos comenzar con el registro, la configuración del portapapeles la podemos encontrar en la siguiente ruta:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Clipboard

Dentro de la anterior clave podremos encontrar los siguiente valores de configuración:

Fig. 1 – Clave registro portapapeles
  • ClipboardTipRequired; Aparecerá cuando hayamos visualizado el consejo que nos muestra el portapapeles en su parte inferior.
  • CloudClipboardAutomaticUpload; Aparecerá el valor (1) cuando esté activada la sincronización automática del portapapeles. Aparecerá el valor (0) cuando esté activada la sincronización manual.
  • EnableClipboardHistory; Uno de los más obvios, indica si el historial está activado o no, (0) historial desactivado, (1) historial activado, cambiando el valor directamente aquí podemos activar o desactivar el historial del portapapeles.
  • HistoryOldItemsLastCleanupTimestamp; A los analistas forenses cuando vemos un «Timestamp» se nos ponen los pelos de punta, pero a pesar de parecer bastante claro el significado de este valor «¿marca de tiempo del último borrado de los elementos del historial?», parece que registre la hora y fecha de cuando se ha procedido al borrado del historial, y así es como aparece en muchos manuales, o pseudomanuales, pero realmente no he conseguido aclarar cuando y en qué condiciones se genera esta marca de tiempo, por lo que si puedes y quieres aportar algo de conocimiento a la comunidad, lo puedes hacer a través de los comentarios.
  • PastedFromClipboardUI; Aparecerá el valor (1) si alguna vez se ha copiado un elemento contenido en el historial del portapapeles.
  • ShellHotKeyUsed; Aparecerá el valor (1) si hemos usado alguna vez la combinación de teclas Win +V para acceder al historial del portapapeles.

Realicemos una pequeña práctica para ver qué podemos sacar de esto

Partimos de un historial del portapapeles desactivado, si quieres puedes borrar todos los valores contenidos en la clave de registro «Clipboard», ellos mismos se irán creando conforme vayamos realizan diversas acciones.

Comencemos activando el portapapeles del historial, Configuración > Sistema > Portapapeles > Historial del Portapapeles, enconces aparecerá el registro EnableClipboardHistory con el valor (1)

Fig. 2 – Activación del historial del portapapeles

Creamos un archivo de texto con un par de líneas de texto

Fig. 3 – Archivo de texto

Copiamos la primera línea en el portapapeles (PRIMER TEXTO), y pulsamos la combinación de teclas Win + V para ver el contenido, que aparecerá con las opciones de Eliminar, Anclar y Borrar todo, así como un Consejo en la parte baja, en este momento se nos habrá creado el registro ShellHotKeyUsed con el valor (1), lo que indica que ya se ha usado la combinación de teclas Win + V.

Fig. 4 – Visualización de historial del portapapeles
Fig. 5 – Sincronización del Historial del Portapapeles

Vamos a continuar realizando diversas acciones, ahora podemos copiar la segunda línea de texto (SEGUNDO TEXTO) y realizamos un captura de pantalla Win + ImprPant, si visualizamos el historial podemos comprobar que los elementos copiados se van apilando de manera que el que se encuentra en la parte más alta es el elemento copiado más reciente.

Fig. 6 – Elementos copiados

En el artículo Sácale provecho al portapapeles de Windows ya comentamos que los elementos del historial del portapapeles se almacenan en la memoria RAM, por lo que si apagamos el sistema se perderá todo su contenido, excepto que los elementos hayan sido anclados, entonces, si los elementos han sido anclados y no se pierden con el apagado del sistema, ¿dónde se almacenan? Pues puedes darte una vuelta por la siguiente ruta de tu explorador de archivos.

C:\Users\nombre_usuario\AppData\Local\Microsoft\Windows\Clipboard

Debes tener en cuenta que la carpeta AppData se encuentra oculta, por lo que deberás indicarle a tu explorador que te muestre los «elementos ocultos» para poder verla, en la ruta anterior vas a poder encontrar las siguientes carpetas.

Fig. 7 – Carpetas elementos historial portapapeles

Aunque la primera carpeta tiene un nombre muy sugerente, vamos a trabajar con la segunda, la carpeta «Pinned», esta carpeta tan solo contiene en su interior otra carpeta vacía y nombrada con un número GUI por el propio sistema, vamos a comenzar anclando el último elemento que hemos incorporado a nuestro portapapeles, es decir, la captura de pantalla, esta acción nos crea varios elementos en el interior de la anterior carpeta, primero un archivo nombrado «metadata.json» que va a ser como un índice de todos los elementos que están anclados en el portapapeles.

{"items":
    {"{65099958-C853-4285-A401-A0936AC0CF64}":
        {"timestamp":"2024-03-06T15:24:04Z","source":"Local"}}}

En este archivo podemos ver un número en la segunda línea que corresponderá al nombre de la carpeta con el elemento anclado, así como una marca de tiempo con la hora y fecha en la que el elemento ha sido copiado al portapapeles (NO cuando se ha anclado) esta marca de timepo se muestra en UTC. El segundo elemento que se ha creado es la carpeta nombrada con el número que nos muestra el archivo metadata.json, y que en su interior aparecerán otros dos elementos, un archivo llamado de nuevo metadata.json, con algunos datos del elemento, como que se trata de una imagen (Bitmap), y que se encuentra encriptado, y otro archivo que es el elemento en si, pero no podemos acceder a su contenido al encontrarse encriptado.

{"formatMetadata":
    {"Bitmap":
        {"dataType":"StreamReferenceFile","collectionType":"None","isEncrypted":true}},
         "sourceAppId":"","property":{}}
Fig. 8 – Elemento anclado

Como curiosidad hacer notar como el archivo del elemento cifrado se nombra como «Qml0bWFw» equivalente a «Bitmap» en Base64. La fecha de modificación de estos archivos, así como la fecha de modificación de la carpeta que los contiene, corresponde con la hora y fecha en la que los elementos han sido anclados.

Para terminar, anclemos los dos elementos restantes, primero el elemento (PRIMER TEXTO), y a continuación el elemento (SEGUNDO TEXTO), a continuación puedes ver el contenido del archivo metadata.json (índice de elementos) con las marcas de tiempo indicando cuando se ha copiado cada elemento, y las carpetas con la fecha de modificación indicando cuando han sido anclados en el historial.

{"items":
    {"{65099958-C853-4285-A401-A0936AC0CF64}":
        {"timestamp":"2024-03-06T15:37:18Z","source":"Local"},
     "{A3CFD79D-359B-4004-A214-1CF942EA456D}":
	{"timestamp":"2024-03-06T15:22:00Z","source":"Local"},
     "{F95FC87F-D403-46FF-9B32-4B5CC120BB43}":
	{"timestamp":"2024-03-06T15:24:04Z","source":"Local"}}}
Fig. 9 – Elementos anclados del historial

Si abrimos una carpeta de un elemento de texto podremos encontrar de nuevo un archivo metadata.json, junto con el elemento anclado cifrado.

Hasta aquí, unas pocas respuestas, y muuuuuchas nuevas preguntas sin respuesta de momento, ¿qué clave usa Windows para el cifrado de los elemento anclados? ¿Qué indica la fecha del registro HistoryOldItemsLastCleanupTimestamp y cuándo se genera? ¿Qué tokens utiliza Widows para generar los nombres de las carpetas? Si tienes alguna respuesta, o algo que aportar, siéntete libre de escribir en los comentarios.  Gracias por leerme, and seek happiness.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio