
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.