the_open_door
café
ESEN
← Volver al índice

Decrypting Solar-PuTTY sessions

Solar-PuTTY (de SolarWinds) es un gestor de conexiones SSH/RDP que guarda las sesiones, incluidas sus credenciales, en un fichero sessions-backup.dat. El problema es cómo las guarda: el fichero es un blob cifrado con AES, pero la clave es una contraseña elegida por el usuario y derivada con un esquema débil (PBKDF con muy pocas iteraciones). Eso lo convierte en un objetivo perfecto para un ataque de diccionario offline: si encontramos ese .dat en una máquina comprometida, podemos romper la contraseña en local sin límite de intentos.

Aquí el fichero aparece en un directorio de backups del host:

ls /opt/backups/Solar-PuTTY/      # sessions-backup.dat

Se exfiltra a la máquina atacante y se ataca con una herramienta tipo SolarPuttyCracker, que prueba cada palabra del diccionario como contraseña de descifrado hasta que el AES produce un JSON válido:

python3 SolarPuttyCracker.py -w rockyou.txt -o output.txt sessions-backup.dat

Cuando acierta, el output.txt contiene el JSON de las sesiones en claro: nombre, IP, puerto y, lo importante, el bloque Credentials con Username y Password. En esta caja eso entrega directamente la contraseña de root, y con un simple su root se completa la escalada por reutilización de credenciales.

El porqué. Una herramienta de conveniencia guarda secretos de alto valor (credenciales de administración) con un cifrado reversible mediante fuerza bruta. El .dat parece inofensivo (datos binarios), pero su contenido es oro. Conecta con el crackeo offline: el coste de derivación bajo es lo que hace viable el ataque.

Defensa. No dejar backups de gestores de sesiones en el host; si se usan, protegerlos con una master password fuerte y restringir su lectura; preferir autenticación por clave/certificado a contraseñas almacenadas.

Máquinas donde se aplica