Skip to content

Análisis forense de la caché de mapas de bits RDP: guía

Qué es la caché de mapas de bits RDP, dónde está, qué muestran sus mosaicos de una sesión remota, cómo fecharla y cómo analizar bcache*.bmc y Cache*.bin.

Publicado el 9 min de lectura

Resumen. La caché de mapas de bits RDP es un conjunto de archivos que el cliente Conexión a Escritorio remoto (mstsc.exe) escribe en el equipo de origen, en el perfil del usuario que se conectó: C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\. Contiene miles de pequeños mapas de bits, normalmente de 64×64 píxeles, de lo que mostraba la pantalla remota. Una vez decodificados y ordenados, esos mosaicos pueden mostrar consolas y comandos tecleados, nombres de carpetas y herramientas. No tienen marcas de tiempo ni posición en pantalla, así que la sesión se fecha con otros artefactos y las pantallas se reconstruyen a mano. RDP Bitmap Cache Parser decodifica ambos formatos de archivo en su navegador; no se sube nada.

Esta guía es el punto de entrada de la serie. Cada sección enlaza con un artículo más detallado.

Qué es la caché de mapas de bits RDP

Escritorio remoto envía la pantalla remota al cliente en forma de mapas de bits. Para no descargar otra vez las mismas piezas (un marco de ventana, un icono, un fondo liso), el cliente mantiene una caché de los mapas de bits que ya ha recibido. Con el almacenamiento persistente de mapas de bits activado, parte de esa caché se escribe en disco y sobrevive a la sesión. Esa copia en disco es la caché de mapas de bits RDP.

El almacenamiento persistente de mapas de bits es una opción de la pestaña Experiencia de Conexión a Escritorio remoto y se guarda en los archivos .rdp como bitmapcachepersistenable:i:1. Está activado por defecto en mstsc. Esta serie trata de la caché que escribe mstsc; no afirmamos nada sobre otros clientes RDP.

Por qué importa en una investigación

La mayor parte de la evidencia RDP indica que hubo una sesión. La caché de mapas de bits es uno de los pocos artefactos que pueden mostrar lo que vio el usuario durante ella:

  • ventanas de consola, con los comandos y su salida tal como se mostraban;
  • ventanas del Explorador de archivos, con nombres de carpetas y archivos;
  • herramientas abiertas en el equipo remoto, cuadros de diálogo, mensajes de error;
  • a veces, texto escrito en un editor.

Se encuentra en el equipo desde el que se inició la sesión. En un caso de movimiento lateral, eso significa que la caché de una estación de trabajo comprometida o de un servidor de salto puede documentar actividad en un destino que después se borró o cuyos registros se limpiaron. Es la razón principal para recolectarla en todos los equipos donde se usó mstsc.

Dónde se encuentra

SistemaRuta
Windows actualC:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\
Windows XPC:\Documents and Settings\<user>\Local Settings\Application Data\Microsoft\Terminal Server Client\Cache\
Tras una actualización in situRevise también C:\Windows.old\Users\...

La caché es por usuario: los archivos pertenecen a quien ejecutó el cliente. La recolección con PowerShell, KAPE, Velociraptor o desde una imagen montada se explica en ubicación y adquisición de la caché de mapas de bits RDP.

Los dos formatos de archivo

FormatoNombres de archivoLo escribeAlmacenamiento de mosaicos
Caché BMC heredadabcache2.bmc, bcache22.bmc, bcache24.bmc (bmc-tools menciona también bcache23.bmc)Clientes antiguos; aún aparece en sistemas actualesRanuras de tamaño fijo, 8, 16 o 32 bpp, algunos mosaicos comprimidos con RLE entrelazado
Caché persistente RDP 8Cache0000.bin, Cache0001.bin, ...Versiones más recientes del clienteCabecera RDP8bmp y después mosaicos de 32 bits sin comprimir, uno tras otro

Microsoft no documenta ninguno de los dos como formato de archivo. Lo que sabemos procede de ingeniería inversa, sobre todo de bmc-tools de la ANSSI. En cambio, la compresión de mapas de bits dentro de los archivos .bmc es el códec RLE entrelazado de RDP, que sí está documentado. Los detalles a nivel de byte están en el formato de archivo bcache*.bmc y Cache*.bin.

Qué es un mosaico y qué no es

Un mosaico de mapa de bits es un pequeño rectángulo de la pantalla remota, normalmente de 64×64 píxeles y más pequeño en los bordes. Cada uno se guarda con una clave de caché de 64 bits, un ancho y un alto. Nada más.

Un mosaico tieneUn mosaico no tiene
PíxelesUna marca de tiempo
Ancho y altoSu posición en la pantalla
Una clave de cachéUn identificador de sesión o de equipo de destino
Un lugar en el orden de cachéGarantía de ser reciente

Dos consecuencias condicionan todo análisis:

  1. Los mosaicos están en orden de caché, no en orden de pantalla. Mosaicos contiguos en el archivo a veces son contiguos en pantalla (una región de ventana puede acabar en caché fila a fila), pero nada en el formato lo garantiza.
  2. Las piezas idénticas se guardan una sola vez. Un fondo de escritorio liso o una zona de consola negra vacía aparece como un único mosaico, no como las decenas de lugares que cubría.

En los archivos .bmc, una ranura también puede conservar parte de un mosaico anterior cuando se escribe encima uno más pequeño. Ese sobrante es un resto de ranura y puede mostrar contenido que, por lo demás, ya se ha sobrescrito.

De los mosaicos a las pantallas

El análisis le da un montón de mosaicos. Tres vistas los convierten en evidencia:

  • Galería: cada mosaico a un tamaño legible, con su índice. Rápida para buscar texto de un vistazo.
  • Collage: todos los mosaicos en una imagen, N por fila, como el _collage.bmp de bmc-tools. Cuando una ventana entró en caché fila a fila, elegir el ancho adecuado alinea partes de ella. Vea collage de mosaicos.
  • Reconstrucción manual: colocar mosaicos a ojo sobre una cuadrícula para rehacer una pantalla, como hace RdpCacheStitcher del BSI y como hace la pestaña Reconstruir de esta herramienta.

Reconstruir pantallas RDP a partir de los mosaicos de caché explica por qué un collage se alinea en el centro y se desplaza en los bordes, y cómo terminar el trabajo a mano.

Fechar la actividad

La caché aporta contenido, no tiempo. Construya la cronología con los artefactos que la rodean:

FuenteDóndeQué aporta
Marcas de tiempo NTFS de los archivos de caché$MFT ($STANDARD_INFORMATION, $FILE_NAME), $UsnJrnlCuándo creó y escribió el cliente los archivos de caché
Registro del cliente RDPMicrosoft-Windows-TerminalServices-RDPClient/Operational, evento 1024Intentos de conexión, con el nombre del destino
Registro de Windows de Terminal Server ClientHKCU\Software\Microsoft\Terminal Server Client\Servers\<host> y ...\DefaultDestinos usados, UsernameHint, lista MRU
Default.rdp, jump lists, PrefetchDocumentos del usuario, perfil, C:\Windows\PrefetchUso del cliente y conexiones recientes
Registros del equipo de destinoSecurity 4624 (tipo de inicio de sesión 10), 4778/4779; RemoteConnectionManager 1149Inicios de sesión y reconexiones al otro lado

El contenido visible en los mosaicos también ayuda: el reloj de la barra de tareas, una fecha en un listado de archivos, un resumen de transferencia con el tiempo transcurrido. Trátelos como lo que mostraba la pantalla, con la zona horaria y el reloj del equipo remoto. Los detalles están en movimiento lateral por RDP: artefactos del equipo de origen.

Herramientas

HerramientaQué hace
bmc-tools (ANSSI, Python)Decodificador de referencia: exporta los mosaicos como BMP y un collage
RdpCacheStitcher (BSI)Una interfaz gráfica que ayuda a unir los mosaicos exportados en pantallas
RDP Bitmap Cache ParserDecodifica ambos formatos en el navegador, con galería, collage, lienzo de reconstrucción, pistas de triaje y exportaciones

Nuestro decodificador es una implementación independiente, escrita a partir de las especificaciones de Microsoft y de investigación pública; reconocemos bmc-tools como la implementación de referencia y hemos validado nuestra salida con él. Una comparativa honesta, incluidos nuestros límites, está en comparativa de parsers de caché RDP. Para un recorrido práctico, vea cómo analizar la caché de mapas de bits RDP en el navegador.

Errores frecuentes

  • Recolectar en el equipo equivocado. La caché está en el origen, no en el destino.
  • Copiar con una sesión abierta. Los archivos pueden estar en uso y la copia puede fallar. Cierre las sesiones o use una copia en modo backup o a bajo nivel.
  • Deducir tiempos del orden de los mosaicos. El orden de caché no es un orden cronológico fiable.
  • Sobreinterpretar mosaicos de 8 bits. La paleta no se guarda, así que los colores son aproximados.
  • Tomar las pistas por hallazgos. «Tipo consola» significa que conviene leerlo primero, no que sea malicioso.

Preguntas frecuentes

¿La caché de mapas de bits RDP está en el cliente o en el servidor?

En el cliente. El cliente Conexión a Escritorio remoto (mstsc.exe) la escribe en el perfil del usuario que lo ejecutó, en el equipo desde el que se conectó. El equipo de destino no guarda estos archivos para esa sesión.

¿La caché de mapas de bits RDP contiene marcas de tiempo?

No. Los mosaicos no llevan hora propia, ni posición en pantalla, ni identificador de sesión. Feche la actividad con las marcas de tiempo NTFS de los archivos de caché, el registro de eventos del cliente RDP, las claves de registro de Terminal Server Client y los registros del equipo de destino.

¿Puedo ver lo que tecleó el atacante?

A veces. Si había una consola o un editor en pantalla, los mosaicos que lo cubrían pueden mostrar la línea de comandos o el texto tal como se veía. Se lee en las imágenes; la caché no contiene ningún registro de pulsaciones de teclas.

¿Qué herramienta debo usar para analizarla?

bmc-tools de la ANSSI es el decodificador de referencia. RDP Bitmap Cache Parser decodifica los mismos archivos en el navegador con su propio decodificador, escrito de forma independiente, y añade galería, collage y lienzo de reconstrucción. Para los hallazgos importantes, compare la salida de dos herramientas.

Artículos relacionados

Artículos relacionados

Qué artefactos del equipo de origen RDP muestran adónde y cuándo se conectó un usuario, y cómo usarlos para fechar y atribuir lo que muestra la caché.
Paso a paso: cargue bcache*.bmc y Cache*.bin en un parser gratuito en el navegador, haga triaje, arme un collage, reconstruya una pantalla y exporte.
Por qué un collage de caché RDP se alinea en unas zonas y se desplaza en otras, cómo elegir su ancho y cómo rehacer una pantalla mosaico a mosaico.