Ataque de 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... Windows

# 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.

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

# 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.

tryhackme
tryhackme 🔍 click para ampliar

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>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

$ nmap -p 389,636,3268,3269,88,445 --script ldap-search,ldap-rootdse <IP>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

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>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

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>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

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>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

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> --force

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

En caso de que quieran utilizar John para crackear el hash, lo pueden hacer con el siguiente comando.

$ john <wordlist.txt> <hash.hash>

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

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>' --shares

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Así como también enumerar otros usuarios del AD.

$ netexec smb <IP> -u '<usuario>' -p '<password>' --users

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

# 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".

Ilustración del procedimiento
Ilustración del procedimiento 🔍 click para ampliar

Advertencia: Todo el contenido de este artículo es estrictamente educativo. No nos hacemos responsables del mal uso de esta herramienta o información. Practica únicamente en entornos controlados y con autorización.
× Imagen ampliada