
Primer descifrador para el ransomware The Gentlemen — recupera claves de cifrado de volcados de memoria de procesos mediante extracción de clave efímera X25519. 35/35 archivos descifrados. Investigación de Bedrock Safeguard Inc.
El primer método de descifrado disponible públicamente para el ransomware The Gentlemen.
The Gentlemen (también conocido como hastalamuerte) es actualmente la operación de ransomware como servicio (RaaS) más activa a nivel mundial, con más de 320 víctimas confirmadas hasta el primer trimestre de 2026. Hasta ahora, todos los grandes proveedores de seguridad (Cybereason, Group-IB, Check Point, ASEC, Trend Micro) consideraban el cifrado como criptográficamente irrompible. No existía ningún descifrador público.
Lo rompimos.
The Gentlemen utiliza cifrado de flujo XChaCha20 con intercambio de claves X25519 ECDH. Cada archivo se cifra con una clave única derivada de un par de claves efímeras nuevas. El cifrado es matemáticamente sólido... no rompimos las matemáticas.
Rompimos la implementación.
Go no pone a cero el material de clave criptográfica en el montón después de su uso (CWE-244). Una vez que se genera una clave privada efímera X25519 para un archivo, permanece en la memoria del proceso en lugar de ser borrada, por lo que un volcado del proceso en vivo recupera las claves de los archivos ya cifrados, a menudo en múltiples copias dejadas por el recolector de basura. El sistema operativo recupera esta memoria cuando el proceso termina.
Un volcado de memoria del proceso en vivo, tomado durante o cerca del final del cifrado, normalmente contiene las claves efímeras de todos los archivos procesados hasta ese momento; en nuestro análisis de 35 archivos, todas ellas.
Resultados: 35/35 archivos descifrados con un 100 % de precisión. Las 35 claves recuperadas en 0,6 segundos a partir de un único volcado de memoria.
Si ha sido víctima del ransomware The Gentlemen, es posible que pueda recuperar archivos si se capturó una imagen de memoria del proceso del ransomware mientras se ejecutaba. La recuperación funciona extrayendo las claves privadas efímeras por archivo de esa imagen, por lo que se trata de un esfuerzo máximo y puede ser parcial; solo se pueden recuperar los archivos cuya clave ya se había generado y aún residía en el momento de la captura.
Lo que eso significa en la práctica:
Dónde puede existir una imagen de memoria utilizable; cada una solo ayuda si capturó el proceso mientras se ejecutaba:
procdump, Administrador de tareas → "Crear archivo de volcado" u otra herramienta forense para capturar el proceso del ransomware antes de terminarlo.C:\ProgramData\Microsoft\Windows\WER\.C:\Windows\Minidump\ y C:\Windows\MEMORY.DMP, si ocurrió una comprobación de errores mientras el proceso se ejecutaba (solo los volcados de memoria completos incluyen memoria del proceso; los minivolcados generalmente no).C:\hiberfil.sys, si el sistema hibernó mientras el proceso del ransomware estaba activo (congela una instantánea de la RAM en ese momento).¿No está seguro de si alguno de estos existe para su incidente? Contáctenos en [email protected] y podemos ayudarle a verificar.
# 1. Install dependencies
pip install cryptography
# 2. Extract ephemeral public keys from your encrypted files
python extract_keys_from_files.py --input-dir /path/to/encrypted/files --output keys.json
# 3. Search the memory dump for matching private keys
python recover_keys.py --dump process_memory.dmp --pubkeys keys.json --output recovered_keys.json
# 4. Decrypt your files
python decrypt.py --keys recovered_keys.json --input-dir /path/to/encrypted/files --output-dir /path/to/recovered
--fast / --superfast / --ultrafast)El bloqueador The Gentlemen admite indicadores de velocidad que realizan cifrado parcial en archivos de más de 1 MB. Con --superfast, solo se cifra aproximadamente el 3 % de los bytes en un archivo grande; el ~97 % restante se deja como texto plano en la posición original del disco. Esto está verificado en análisis de ingeniería inversa publicados (ASEC, Trend Micro, Cybereason).
El descifrado XChaCha20 de cuerpo completo en un archivo con cifrado parcial CORROMPERÍA DOBLEMENTE las regiones no cifradas; aplicar XOR de flujo de clave sobre los segmentos de texto plano los convierte en basura y destruye los datos recuperables.
Por esta razón, decrypt.py se niega a procesar archivos de más de 1 MB de forma predeterminada. Si ha verificado que el bloqueador se ejecutó en modo de cifrado completo (solo archivos pequeños o una compilación sin los indicadores de velocidad), pase --force-large para anular.
Para las víctimas de cifrado parcial, use herramientas de recuperación conscientes del formato en las regiones no cifradas en su lugar:
Bedrock Safeguard está realizando activamente ingeniería inversa de la geometría de desplazamiento de fragmentos del modo de cifrado parcial. Cuando ese trabajo finalice, este descifrador se actualizará para manejar de forma segura los segmentos parcialmente cifrados.
Per-file encryption:
1. Generate 32 random bytes -> ephemeral private key (crypto/rand.Read)
2. X25519(ephemeral_priv, operator_pub) -> shared_secret (32 bytes)
3. XChaCha20(plaintext, shared_secret) -> ciphertext
4. Append to file: --eph--<base64(ephemeral_PUBLIC_key)>--marker--GENTLEMEN
La clave privada efímera es el secreto crítico. Existe solo en la memoria del proceso y nunca se escribe en el disco. Pero el asignador de pila de gorutinas de Go no pone a cero la memoria cuando las variables salen del ámbito (CWE-244), dejando el material de clave accesible mediante análisis forense de memoria.
| ID | Descripción |
|---|---|
| CWE-244 | Limpieza inadecuada de la memoria del montón antes de la liberación |
| CWE-316 | Almacenamiento en texto claro de información sensible en la memoria |
public = X25519(candidate, basepoint)shared_secret = X25519(ephemeral_private, operator_public)| IOC | Valor |
|---|---|
| Clave pública X25519 del operador | fcb11717cab989424755a957c1d55361b119de4fdcfecdb2f2e56b15ad801922 |
| Campo | Valor |
|---|---|
| SHA256 | 3ab9575225e00a83a4ac2b534da5a710bdcf6eb72884944c437b5fbe5c5c9235 |
| Tipo | PE32+ x64, binario Go, ofuscado con Garble |
| Tamaño | 2,962,944 bytes |
| Primera vez visto | 2026-04-03 |
| Indicador | Valor |
|---|---|
| Nota de rescate | README-GENTLEMEN.txt |
| Extensión cifrada | Aleatoria por compilación (ej., .axfsmg) |
| Pie de página del archivo | --eph--<base64>--marker--GENTLEMEN |
Esta investigación llevó al desarrollo de Bedrock RansomGuard — un servicio de Windows de código abierto que detecta automáticamente el cifrado de ransomware y captura la memoria del proceso antes de que las claves sean destruidas. RansomGuard funciona contra cualquier familia de ransomware, no solo The Gentlemen.
Este trabajo extiende la recuperación de claves de WannaCry de Adrien Guinet (2017) al ransomware moderno basado en Go que utiliza criptografía de curva elíptica. Hasta donde sabemos, esta es la primera aplicación publicada de recuperación de claves efímeras X25519 a partir de análisis forense de memoria contra cualquier familia de ransomware.
Este proyecto está licenciado bajo la Business Source License 1.1 — gratuita para todos los usos no comerciales, uso comercial interno, respuesta a incidentes e investigación académica.
Bedrock Safeguard Inc. es una firma canadiense de inteligencia en ciberseguridad especializada en el análisis de infraestructura de actores de amenazas, ingeniería inversa de malware y análisis forense digital. Esta investigación se llevó a cabo como parte de nuestra misión de proteger a las organizaciones e individuos canadienses de las amenazas de ransomware.
Si es víctima del ransomware The Gentlemen y necesita asistencia con la recuperación de claves, contáctenos en [email protected].
| ID TOX | 88984846080D639C9A4EC394E53BA616D550B2B3AD691942EA2CCD33AA5B9340FD1A8FF40E9A |
| Correo electrónico de negociación | [email protected] |
| Sitio de filtración (.onion) | tezwsse5czllksjb7cwp65rvnk4oobmzti2znn42i43bjdfd2prqqkad.onion |
| Indicador | Valor |
|---|
Elimina copias de sombra de volumen mediante vssadmin y wmic | |
Agrega exclusiones de Windows Defender mediante Add-MpPreference | |
| Elimina archivos de Prefetch de Windows | |
| Mata servicios de base de datos, respaldo y seguridad antes de cifrar | |
Cambia el fondo de pantalla a gentlemen.bmp | |
Genera un proceso hijo con la variable de entorno LOCKER_BACKGROUND=1 | |
Banderas CLI: --path, --fast, --full, --shares, --silent, --system, -T (retardo) |