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:
- 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)
Creamos un archivo de texto con un par de líneas 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.
Vamos a pulsar en «Más información» del Consejo que nos ofrece. Se nos abrirá el menú de configuración (figura 2) donde vamos a activar la sincronización entre dispositivos. Todo esto nos habrá generado dos nuevos registros, ClipboardTipRequired que indica que ya hemos visualizado un consejo. Y el registro CloudClipboardAutomaticUpload con el valor (1), ya que se activa la sincronización automática por defecto, a continuación vamos a seleccionar «nunca sincronizar automáticamente», y este valor cambiará a (0).
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.
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.
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":{}}
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"}}}
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.