Caché de mapas de bits RDP: ubicación y adquisición
Dónde se guarda la caché de mapas de bits RDP de cada usuario y cómo recolectarla con PowerShell, KAPE RDPCache, Velociraptor o una imagen de disco.
Resumen. La caché de mapas de bits RDP está en C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ en el equipo desde el que se conectó el usuario, con una carpeta por cuenta. Recolecte la carpeta completa de cada usuario, conserve la parte Users\<name>\ de la ruta para que cada archivo siga atribuido a su cuenta, y cierre antes las sesiones de Escritorio remoto abiertas, porque los archivos pueden estar en uso. El target RDPCache de KAPE y Windows.Triage.Targets de Velociraptor lo hacen por usted; un breve bucle de PowerShell o un find sobre una imagen montada también sirven.
Para saber qué contiene la caché y por qué importa, empiece por la guía de análisis forense de la caché de mapas de bits RDP.
Dónde se encuentra la caché
La caché de mapas de bits RDP la escribe el cliente Conexión a Escritorio remoto, mstsc, en el AppData local (no móvil) del usuario que lo ejecutó.
| Sistema | Ruta |
|---|---|
| Windows actual | C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ |
| Windows XP | C:\Documents and Settings\<user>\Local Settings\Application Data\Microsoft\Terminal Server Client\Cache\ |
| Tras una actualización in situ | C:\Windows.old\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\ |
En esa carpeta puede encontrar dos familias de archivos:
| Archivos | Formato |
|---|---|
bcache2.bmc, bcache22.bmc, bcache24.bmc | Caché BMC heredada, ranuras fijas, 8/16/32 bpp |
Cache0000.bin, Cache0001.bin, ... | Caché persistente RDP 8, mosaicos de 32 bits |
Ambas familias pueden convivir en la misma carpeta. Recolecte todo su contenido; no filtre por extensión.
Qué equipo, qué usuario
Dos errores son los que más tiempo hacen perder:
- Equipo equivocado. La caché registra lo que mostraba el cliente, así que está en el equipo de origen. Si un atacante saltó de
WKS-AaSRV-B, la evidencia sobre la sesión enSRV-Bestá en la caché deWKS-A. También merece la pena recolectar en el destino, pero para las sesiones que se iniciaron desde él. - Cuenta equivocada. La caché pertenece a la cuenta que ejecutó
mstsc, no a la cuenta usada para iniciar sesión en el equipo remoto. Un perfil localsvc_backupen el origen puede contener las pantallas de una sesión abierta con credenciales de dominio en el destino.
Por eso importa la ruta: RDP Bitmap Cache Parser atribuye cada archivo a la cuenta tomada de Users\<name>\ en la ruta. Si elimina la ruta, pierde la atribución.
Opción 1: PowerShell en un sistema en ejecución
Ejecútelo como administrador. Cierre antes las sesiones de Escritorio remoto abiertas.
Get-ChildItem C:\Users -Directory | ForEach-Object {
$rel = "Users\$($_.Name)\AppData\Local\Microsoft\Terminal Server Client\Cache"
if (Test-Path "C:\$rel") { robocopy "C:\$rel" "C:\triage\$rel" /E /B /R:0 /W:0 /NP /NDL /NFL | Out-Null }
}
tar -a -c -f C:\triage\rdpcache.zip -C C:\triage Users
Qué hace: para cada carpeta de perfil, copia la carpeta Cache con robocopy en modo backup (/B), sin reintentos y con salida silenciosa, y conserva la estructura Users\<name>\... bajo C:\triage. Después, tar -a genera un ZIP a partir de esa estructura. El ZIP puede soltarse directamente en la herramienta.
Este bucle solo examina C:\Users. No cubre Windows.old ni las rutas de XP; para esas, use KAPE o una imagen montada.
Opción 2: KAPE
KapeFiles incluye un target RDPCache (código fuente). Recolecta la carpeta de caché de cada usuario, además de las ubicaciones de Windows.old y de Windows XP.
kape.exe --tsource C: --tdest C:\triage\kape --target RDPCache
KAPE conserva la estructura de directorios original bajo el destino, así que la atribución a cuentas se mantiene. Comprima la carpeta de destino en un ZIP o suéltela como carpeta.
Opción 3: Velociraptor
Recolecte Windows.Triage.Targets (del proyecto Velociraptor Triage) con el target RDPCache, ya sea desde la interfaz gráfica contra un cliente en ejecución o mediante un recolector offline. El ZIP de la colección resultante puede cargarse tal cual: la herramienta lee ZIP, incluidos los que generan KAPE y Velociraptor, y encuentra dentro los archivos de caché.
Opción 4: una imagen de disco montada
Con el volumen de Windows montado en solo lectura en /mnt/win:
cd /mnt/win && find Users -ipath '*/Terminal Server Client/Cache/*' -type f | zip -@ ~/triage/rdpcache.zip
-ipath no distingue mayúsculas de minúsculas, algo importante en imágenes donde los nombres de carpeta varían en ese aspecto. Adapte el directorio de partida a Windows.old/Users o Documents and Settings para estructuras antiguas.
Problemas habituales
| Problema | Causa | Solución |
|---|---|---|
| La copia falla o se omiten archivos | Hay una sesión abierta y el cliente retiene los archivos | Cierre las sesiones, o use el modo backup / un recolector de acceso raw al disco |
| Archivos sin atribuir a nadie | Rutas aplanadas durante la recolección | Conserve Users\<name>\... en el archivo comprimido |
| Nada para la cuenta esperada | Equipo o perfil equivocado | Compruebe qué cuenta ejecutó mstsc y en qué equipo |
| Historial previo a la actualización perdido | No se recolectó Windows.old | Use el target de KAPE o busque en la imagen |
| Archivo comprimido grande | Los archivos de caché pueden ocupar decenas de MB con miles de mosaicos | Normal; la herramienta los procesa localmente |
Recolecte también los metadatos NTFS ($MFT, $UsnJrnl) y los artefactos que permiten fechar las sesiones, ya que los mosaicos no llevan hora: el registro de eventos del cliente RDP, el NTUSER.DAT del usuario para las claves de registro de Terminal Server Client, las jump lists y Prefetch. La lista y cómo usarlos están en movimiento lateral por RDP: artefactos del equipo de origen.
Alcance: en qué equipos recolectar
Recolecte en todos los equipos desde los que alguien pudo iniciar una sesión de Escritorio remoto durante el periodo de interés, no solo en los servidores a los que se accedió. Buenos candidatos son las estaciones de trabajo de administración, los servidores de salto y cualquier máquina donde el registro de eventos del cliente RDP o las claves de registro de Terminal Server Client mencionen un destino dentro del alcance. Una caché que resulta vacía o antigua cuesta poco; un equipo de origen pasado por alto puede costar la única visión de lo que ocurrió en el destino.
Integridad
Calcule el hash del archivo comprimido o de los archivos tal como se recolectaron, anote la herramienta y el comando usados, y trabaje sobre copias. La herramienta en el navegador solo lee los bytes que usted le da y no los modifica ni los sube, pero las buenas prácticas no dependen de la herramienta.
Siguiente paso
Cargue el ZIP o la carpeta en RDP Bitmap Cache Parser, o siga paso a paso cómo analizar la caché de mapas de bits RDP en el navegador.
Preguntas frecuentes
¿Dónde se guarda la caché de mapas de bits RDP?
En el perfil de cada usuario, en el equipo que ejecutó el cliente de Escritorio remoto: C:\Users\<user>\AppData\Local\Microsoft\Terminal Server Client\Cache\. En Windows XP está bajo Documents and Settings\<user>\Local Settings\Application Data. Tras una actualización, revise también C:\Windows.old\Users.
¿Por qué falla mi copia de la caché?
Los archivos pueden estar en uso mientras hay una sesión de Escritorio remoto abierta. Cierre antes las sesiones, o copie en modo backup (robocopy /B) o con un recolector de acceso raw al disco como KAPE o Velociraptor.
¿Tiene KAPE un target para la caché de mapas de bits RDP?
Sí. El target RDPCache de KapeFiles recolecta la carpeta Cache de cada usuario, incluidas las rutas de Windows.old y de Windows XP.