
Introducción
Windows 11 se lanzó hace cuatro años, pero se ha adoptado de forma limitada en entornos corporativos. Según estadísticas basadas en investigaciones del Equipo Global de Respuesta a Incidentes Cibernéticos (GERT, por sus siglas en inglés), a principios de 2025, el sistema operativo Windows 7 (sin soporte desde 2020) seguía presente en los entornos de clientes con una frecuencia apenas menor que la del sistema operativo más reciente. La mayoría de los sistemas, no obstante, aún funcionan con Windows 10:
Principales versiones de Windows presentes en la infraestructura de las organizaciones. La estadística se basa en los datos del Equipo Global de Respuesta a Incidentes Cibernéticos (GERT, Global Emergency Response Team) (descargar)
Además, el sistema operativo más extendido fue lanzado hace más de 10 años, y hoy, 14 de octubre de 2025, Microsoft finaliza el soporte de Windows 10. Por lo tanto, no queda duda de que veremos crecer la cantidad de sistemas con Windows 11 en las organizaciones a las que brindamos servicios de investigación de incidentes. Por esta razón, decidimos compartir un breve resumen de los cambios en los artefactos forenses introducidos en este sistema, información que puede ser útil para nuestros colegas del sector. Los artefactos descritos corresponden a Windows 11 versión 24H2, la versión más reciente del sistema operativo al momento de redactar este artículo.
Novedades en Windows 11
Recall
La función Recall se presentó por primera vez en mayo de 2024. Permite “recordar” todo lo que el usuario ha hecho en su equipo durante los últimos meses. Su funcionamiento es el siguiente: cada pocos segundos, el sistema toma capturas de toda la pantalla. Después, una inteligencia artificial local las analiza en segundo plano, extrayendo toda la información útil, que luego se almacena en una base de datos. Sobre esta base se realiza una búsqueda inteligente. A partir de mayo de 2025, la función Recall está disponible en equipos con NPU (un chip especializado para cómputo de IA, que en la actualidad es compatible solo con procesadores de arquitectura ARM).
Microsoft Recall es, sin duda, una de las funciones más destacadas y controvertidas que se han anunciado para Windows 11. Desde su primer anuncio, ha sido objeto de críticas en la comunidad de seguridad informática por los riesgos que representa para la confidencialidad de los datos. Microsoft realizó ajustes antes del lanzamiento, pero persisten ciertas inquietudes al respecto. Debido a su naturaleza ambigua, la opción viene desactivada de forma predeterminada en las compilaciones corporativas de Windows 11. No obstante, conviene examinar sus artefactos en caso de que hayan sido activados por atacantes o por software malicioso. En teoría, el departamento de TI de una organización también podría habilitar Recall mediante políticas de grupo, aunque lo consideramos poco probable.
Como mencionamos antes, Recall se basa en capturas de pantalla que, por supuesto, deben almacenarse de forma temporal mientras se procesan. Las imágenes sin procesar en formato JPEG se encuentran en la siguiente ruta: %AppData%\Local\CoreAIPlatform.00\UKP\{GUID}\ImageStore\*
. Los nombres de archivo corresponden a los identificadores únicos de las capturas (más adelante se ampliará sobre este punto).
Junto con las capturas, se almacenan metadatos en la etiqueta estándar Exif.Photo.MakerNote (0x927c), que incluyen información relevante: coordenadas de la ventana en primer plano, marca de tiempo (cuándo se tomó la captura), título de la ventana, identificador de ventana, ruta completa del proceso que generó la ventana; y, si en el momento de la captura se utilizaba un navegador, también pueden guardarse el URI y el dominio, entre otros datos.
La función Recall se activa de forma independiente para cada usuario. En el registro, la clave del perfil de usuario que controla la activación/desactivación del almacenamiento de capturas es: Software\Policies\Microsoft\Windows\WindowsAI\
. Además, en las compilaciones más recientes de Windows 11, Microsoft añadió varias claves de registro adicionales relacionadas con la gestión de Recall.
Cabe señalar que, en la versión modificada tras las críticas iniciales, la función incluye un filtro especial diseñado para impedir el almacenamiento de capturas y texto cuando en pantalla aparece información confidencial: ventanas de navegador en modo incógnito, formularios de pago, administradores de contraseñas, etc. Sin embargo, según algunos investigadores, este filtro no siempre funciona como debería.
Para realizar búsquedas rápidas en los datos extraídos de las capturas, se utilizan dos bases de datos vectoriales DiskANN (SemanticTextStore.sidb
y SemanticImageStore.sidb
). No obstante, la base de datos más interesante para el análisis forense es una base SQLite ubicada en: %AppData%\Local\CoreAIPlatform.00\UKP\{GUID}\ukg.db
, que consta de 20 tablas. En la versión más reciente, está accesible sin privilegios de administrador, aunque cifrada. Al momento de redactar este artículo, no existen métodos públicos conocidos para descifrarla de forma directa; por ello, a continuación describimos las tablas más relevantes que se observan en la versión beta de Windows 11 con Recall, lanzada en 2024.
- Tabla
App
: contiene datos sobre el proceso que inició la ventana de la interfaz gráfica de una aplicación. - Tabla
AppDwellTime
: registra la ruta completa del proceso que inició la ventana (columna WindowsAppId), la fecha y hora de inicio (HourOfDay, DayOfWeek, HourStartTimestamp) y la duración de visualización de la ventana (DwellTime). - Tabla
WindowCapture
: incluye el tipo de evento (columna Name):- WindowCreatedEvent: evento de creación de la primera instancia de una ventana de la aplicación. Puede vincularse con el proceso que creó la ventana.
- WindowChangedEvent: evento de modificación de una instancia de ventana. Permite rastrear movimientos o cambios de tamaño mediante el identificador de ventana (WindowId).
- WindowCaptureEvent: evento de creación de una captura de pantalla que contiene la ventana de la aplicación. Además del identificador de ventana, incluye un token de imagen (ImageToken) que permite recuperar más adelante el archivo JPEG correspondiente desde el directorio ImageStore (el nombre del archivo coincide con dicho identificador).
- WindowDestroyedEvent: evento de cierre de una ventana de aplicación.
- ForegroundChangedEvent: evento que no contiene datos útiles desde el punto de vista del análisis forénsico.
Además, la tabla
WindowsCapture
incluye un indicador de si la ventana estaba en primer plano (IsForeground), las coordenadas de sus límites en pantalla (WindowBounds), el título de la ventana (WindowTitle), un campo de propiedades (Properties) y la marca de tiempo del evento (TimeStamp).
- Tabla
WindowCaptureTextIndex_content
: contiene el texto extraído mediante reconocimiento óptico de caracteres (OCR) de la captura de pantalla (columna c2), el título de la ventana (WindowTitle), la ruta de la aplicación (App.Path), la marca de tiempo de la captura (TimeStamp) y el nombre (Name). Esta tabla puede usarse junto con WindowCapture (las columnas c0 e Id contienen datos idénticos que se pueden usar para unir las tablas) y con App (los datos coinciden en las columnas AppId e Id).
Los artefactos de Recall (si la función estaba activada en el sistema antes del incidente) son una “mina de oro” para los analistas de respuesta a incidentes. Con su ayuda es posible reconstruir con gran detalle la actividad de un atacante en un sistema comprometido. Por otro lado, esta función también puede emplearse con fines maliciosos: como se mencionó, el filtro de información privada no es infalible, por lo que atacantes y malware podrían aprovechar Recall para localizar credenciales y otros datos confidenciales.
Aplicaciones predeterminadas actualizadas
En Windows 11 también se actualizaron las aplicaciones predeterminadas; en algunas se cambió tanto la interfaz como la funcionalidad. En particular, ahora aplicaciones como Bloc de notas, Explorador de archivos y Símbolo del sistema admiten el modo de “múltiples pestañas en una sola ventana”. Además, Bloc de notas conserva el estado de las pestañas incluso después de que el proceso haya finalizado. En consecuencia, Windows 11 introduce nuevos artefactos relacionados con el uso de esta aplicación. Estos artefactos fueron estudiados en detalle por nuestro colega AbdulRhman Alfaifi, cuyo trabajo puede consultarse aquí.
El directorio principal de artefactos de Bloc de notas en Windows 11 es: %LOCALAPPDATA%\Packages\Microsoft.WindowsNotepad_8wekyb3d8bbwe\LocalState\
Este directorio contiene dos subdirectorios:
- TabState: almacena un archivo de estado {GUID}.bin por cada pestaña de Bloc de notas. Aquí se guarda el contenido de la pestaña si no se la ha guardado en un archivo. Para las pestañas guardadas, incluye la ruta completa al archivo, el hash SHA-256 del contenido, el contenido en sí, la marca de tiempo de la última escritura y otros metadatos.
- WindowsState: almacena información sobre el estado de la ventana de la aplicación (número total de pestañas, su orden, la pestaña activa, dimensiones y posición en pantalla). Los archivos de estado se denominan *.0.bin o *.1.bin.
La estructura del archivo {GUID}.bin para pestañas guardadas es la siguiente:
Campo | Tipo | Valor y comentario |
Firma | [u8;2] | NP |
? | u8 | 00 |
Archivo_guardado | bool | 00: el archivo no ha sido guardado en la ruta indicada 01: el archivo ha sido guardado |
Longitud_de_la_ruta | uLEB128 | Longitud en caracteres de la ruta completa al archivo donde se escribió el contenido de la pestaña |
Ruta_al_archivo | UTF-16LE | La ruta completa al archivo en el que se escribió el contenido de la pestaña |
Tamaño_archivo | uLEB128 | El tamaño del archivo en el que se escribió el contenido de la pestaña en el disco |
Codificación | u8 | Codificación del archivo: 0x01 – ANSI 0x02 – UTF-16LE 0x03 – UTF-16BE 0x04 – UTF-8BOM 0x05 – UTF-8 |
Tipo_retorno | u8 | Tipo de salto de línea de retorno de carro: 0x01 — CRLF 0x02 — CR 0x03 — LF |
Hora_última_escritura | uLEB128 | Hora de la última escritura (tab save) en el archivo (en formato FILETIME). |
hash_sha256 | [u8;32] | Hash SHA-256 del contenido de la pestaña |
? | [u8;2] | 00 01 |
Inicio_de_sección | uLEB128 | Offset del inicio de la sección desde el principio del archivo |
Fin_de_sección | uLEB128 | Offset del final de la sección desde el principio del archivo |
Configuración | ConfigBlock | Configuración en una estructura de tipo ConfigBlock |
Longitud_del_contenido | uLEB128 | Longitud del texto del archivo |
Contenido | UTF-16LE | Contenido de la pestaña antes de modificarla con nuevos datos. En caso de que la pestaña se guarde en el disco sin modificaciones posteriores: ninguno. |
Contiene_datos_no_guardados | bool | 00: el contenido de la pestaña en el archivo {GUID}.bin coincide con el contenido de la pestaña en el archivo en disco 01: los cambios en la pestaña no se guardan en el disco |
Suma_de_comprobación | [u8;4] | Suma de comprobación CRC32 del contenido del archivo {GUID}.bin con offset 0x03 desde el principio del archivo |
Chunks_sin_guardar | [UnsavedChunk] | Lista de estructuras UnsavedChunk. Ausente en caso de guardar una pestaña en disco sin modificaciones posteriores |