Parsers de caché RDP: bmc-tools y alternativas
bmc-tools, RdpCacheStitcher y RDP Bitmap Cache Parser frente a frente: qué hace cada uno, cuándo usarlo en un caso y los límites reales de la herramienta web.
Resumen. bmc-tools (ANSSI, Python) es el decodificador de referencia de la caché de mapas de bits RDP y el que conviene citar. RdpCacheStitcher (BSI) es una interfaz gráfica que ayuda a unir en pantallas los mosaicos exportados por bmc-tools. RDP Bitmap Cache Parser decodifica los mismos archivos en el navegador, con su propio decodificador, escrito de forma independiente y validado con bmc-tools, y añade una galería con pistas de triaje, un collage, un lienzo de reconstrucción y exportaciones. No sustituye a una segunda opinión: en casos reales, compare los mosaicos importantes con bmc-tools.
Si está eligiendo herramienta porque acaba de encontrar una carpeta Terminal Server Client\Cache, la guía de análisis forense de la caché de mapas de bits RDP explica qué tiene delante.
Las tres herramientas de un vistazo
| bmc-tools | RdpCacheStitcher | RDP Bitmap Cache Parser | |
|---|---|---|---|
| Mantenedor | ANSSI (Francia) | BSI (Alemania) | Independiente (este sitio) |
| Forma | Script de Python en línea de comandos | Interfaz gráfica de escritorio | Página web, WebAssembly en un Web Worker |
| Entrada | bcache*.bmc, Cache*.bin | Mosaicos exportados por bmc-tools | bcache*.bmc, Cache*.bin, carpetas, ZIP |
| Decodificación | Sí (referencia) | No, usa mosaicos exportados | Sí (independiente, validada con bmc-tools) |
| Collage | Sí (-b, ancho -w) | No es su objetivo | Sí, configurable, dos disposiciones |
| Reconstrucción de pantallas | No | Sí, es su objetivo | Lienzo manual |
| Restos de ranura | Se exportan con -o | Trabaja sobre mosaicos exportados | Se muestran y se marcan |
| Instalación | Python | Descarga | Ninguna |
| Licencia | CeCILL 2.1 | Consulte su repositorio | De uso gratuito |
Describimos RdpCacheStitcher solo hasta donde estamos seguros; lea su repositorio y su manual para conocer todas sus funciones.
bmc-tools
bmc-tools es la implementación de referencia. Buena parte del trabajo público sobre este artefacto se apoya en su ingeniería inversa de los formatos BMC y Cache*.bin. Nuestro propio decodificador es una implementación aparte, escrita a partir de las especificaciones de protocolo publicadas por Microsoft (MS-RDPBCGR y MS-RDPEGDI) y de la descripción pública de los archivos que hizo el CERT-FR (boletín CERTFR-2016-ACT-017), y validada mosaico a mosaico con bmc-tools. La descompresión de mosaicos (RLE entrelazado) está disponible desde la versión 3.00, de 2022.
Opciones:
| Opción | Función |
|---|---|
-s | Archivo o carpeta de origen |
-d | Carpeta de destino |
-c | Número de mosaicos que extraer |
-v | Salida detallada |
-o / --old | Exportar también los datos antiguos de las ranuras (restos) |
-b | Generar un mapa de bits de collage |
-w | Ancho del collage en mosaicos por fila (64 por defecto) |
-k | Carpetas de salida al estilo KAPE |
Salida: un BMP por mosaico con el nombre <file>_<NNNN>.bmp, y <file>_collage.bmp cuando se pide un collage.
Puntos fuertes: el comportamiento de referencia, automatizable, fácil de ejecutar sobre muchas colecciones, citable. Contrapartidas: requiere un entorno Python en la máquina de análisis, y después hay que recorrer cientos o miles de archivos BMP en un visor de imágenes.
RdpCacheStitcher
RdpCacheStitcher, publicado por el BSI, es una interfaz gráfica que ayuda a unir en pantallas los mosaicos exportados. Toma como entrada los mosaicos exportados por bmc-tools. Úselo cuando el trabajo consista en reconstruir pantallas completas y quiera una aplicación de escritorio dedicada a ello.
Puntos fuertes: diseñado específicamente para la reconstrucción. Contrapartidas: es un segundo paso después de bmc-tools, y requiere instalación en el escritorio.
RDP Bitmap Cache Parser
La herramienta de este sitio decodifica ambos formatos en el navegador. Los archivos nunca salen de la máquina: la decodificación se ejecuta en Rust compilado a WebAssembly, en un Web Worker.
Lo que añade alrededor del decodificador:
- Carga de archivos, carpetas y ZIP (KAPE, Velociraptor, perfiles comprimidos), con cada archivo atribuido a la cuenta tomada de
Users\<name>\en la ruta. - Panel Hallazgos: cuentas que usaron el cliente RDP, mosaicos tipo consola, restos de ranura, mosaicos no decodificables y un recordatorio de que los mosaicos no llevan marcas de tiempo.
- Galería con índice de mosaico y orden de caché, pistas de triaje (Tipo consola, Tipo texto, Resto de ranura, Liso, Duplicado, No decodificado), un filtro Revisar primero y la casilla Ocultar mosaicos lisos y duplicados.
- Collage con mosaicos por fila configurables, en Orden de caché o en Disposición de bmc-tools para reproducir la distribución del
_collage.bmpde bmc-tools. - Reconstruir: un lienzo en cuadrícula para colocar mosaicos a mano, exportado como PNG más un JSON de disposición.
- Detalle del mosaico: clave, tamaño, profundidad, compresión, desplazamiento en el archivo.
- Exportaciones: CSV, JSON, un ZIP de mosaicos en PNG o en BMP con nombres como la salida de bmc-tools (con un
tiles.csv), PNG de un mosaico, PNG del collage.
Límites reales
| Límite | Qué hacer |
|---|---|
| Sin OCR | Lea el texto usted mismo y transcríbalo en sus notas |
| Sin unión automática | Coloque los mosaicos a mano en el lienzo Reconstruir, o use RdpCacheStitcher |
| Las pistas heurísticas pueden fallar por defecto o por exceso | Trátelas como orden de lectura, no como hallazgos |
| Colores de 8 bits aproximados | La paleta no está en la caché; fíese de las formas y del texto |
| Mosaicos estrechos decodificados con su propio ancho como paso de fila | bmc-tools asume 64; compare ambos en los mosaicos estrechos |
| Mosaicos de 8 y 32 bits descomprimidos mostrados con su profundidad real; mosaicos de 32 bits con códec planar decodificados | bmc-tools muestra los mosaicos descomprimidos a 16 bits y omite los planar; espere diferencias en esos mosaicos |
| Validado con archivos sintéticos y construidos a mano | Contraste los mosaicos importantes con bmc-tools en casos reales |
| Se ejecuta en una pestaña del navegador | Las colecciones muy grandes dependen de la memoria del navegador |
La herramienta no muestra ningún intervalo de tiempo porque la caché no contiene horas. El fechado se hace con los artefactos del equipo de origen.
Cuál usar y cuándo
| Situación | Herramienta sugerida |
|---|---|
| Vistazo rápido a una carpeta de caché en un portátil de análisis sin Python | RDP Bitmap Cache Parser |
| Procesamiento por lotes de muchas colecciones en un pipeline | bmc-tools |
| Reconstruir pantallas completas con una herramienta de escritorio dedicada | bmc-tools y después RdpCacheStitcher |
| Triaje: ¿qué mosaicos debo leer primero? | RDP Bitmap Cache Parser (Revisar primero) |
| Un hallazgo que va a un informe | Decodificar con dos herramientas y comparar |
| Compartir mosaicos con un colega que trabaja con flujos de bmc-tools | ZIP BMP de RDP Bitmap Cache Parser (nombres de bmc-tools) |
Las herramientas se combinan bien. Un recorrido práctico: triaje en el navegador, exportar el ZIP BMP, reconstruir en RdpCacheStitcher o en el lienzo Reconstruir, y volver a ejecutar bmc-tools sobre los originales para los mosaicos que vaya a citar.
Contrastar una herramienta con otra
Para un mosaico que piensa citar:
- Anote su índice y su desplazamiento en el archivo en el panel de detalle del mosaico.
- Ejecute bmc-tools sobre el mismo archivo y abra el BMP correspondiente (por índice, y por contenido si la numeración difiere).
- Compare las imágenes. Las diferencias son más probables en mosaicos estrechos (paso de fila), en mosaicos de 8 bits (paleta), en mosaicos de 8 y 32 bits descomprimidos (bmc-tools los muestra a 16 bits) y en mosaicos de 32 bits con códec planar, que bmc-tools omite.
- Registre ambos resultados en sus notas.
Para un recorrido del flujo en el navegador, vea cómo analizar la caché de mapas de bits RDP en el navegador.