> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/docs/active-directory/as-rep-roasting.md).

# AS-REP Roasting

## Introducción

**AS-REP Roasting** es una técnica de post-explotación en entornos Active Directory que permite a un atacante obtener hashes Kerberos de usuarios que **no requieren preautenticación**, con el objetivo de crackearlos offline y obtener sus contraseñas en texto claro.

Es similar a Kerberoasting, pero en este caso no se requiere autenticación previa en el dominio: si el usuario tiene la opción "Do not require Kerberos preauthentication" activada, un atacante puede solicitar directamente un AS-REP cifrado con su clave secreta (derivada de su contraseña), y crackearlo sin necesidad de credenciales válidas.

***

## ¿Qué es la preautenticación?

Kerberos, por defecto, requiere que un cliente se identifique cifrando un timestamp con su clave secreta (derivada de la contraseña) antes de recibir un TGT del KDC. Esto es la **preautenticación**.

Si esta opción está desactivada en una cuenta, el KDC responderá directamente con un mensaje AS-REP cifrado con la clave del usuario, lo que lo hace susceptible a ser crackeado offline.

***

## Requisitos del ataque

* Acceso a red al puerto 88 (Kerberos) del Domain Controller.
* Enumeración de cuentas con preautenticación deshabilitada.
* Herramientas como `GetNPUsers.py` (Impacket) para obtener los hashes.
* Diccionario o wordlist para crackear.

No se requiere autenticación previa en el dominio, lo que convierte a AS-REP Roasting en un ataque ideal en fases tempranas de intrusión.

***

## Enumeración de usuarios vulnerables

Una vez que conoces el dominio, puedes usar `GetNPUsers.py` para identificar usuarios vulnerables y extraer sus hashes Kerberos:

```bash
GetNPUsers.py htb.local/ -no-pass -usersfile usuarios.txt -format hashcat -outputfile asrep-hashes.txt
```

Parámetros:

* `-no-pass`: No se autentica en el dominio.
* `-usersfile`: Lista de posibles usuarios.
* `-format hashcat`: Salida compatible con herramientas de cracking.
* `-outputfile`: Archivo donde se guardarán los hashes.

Si alguno de los usuarios listados no requiere preautenticación, recibirás una línea similar a esta:

```java
$krb5asrep$23$usuario@HTB.LOCAL:1a2b3c4d5e6f...
```

***

## Crackeo de los hashes

Con el hash en formato adecuado, se puede crackear con:

#### Hashcat

```bash
hashcat -m 18200 asrep-hashes.txt /usr/share/wordlists/rockyou.txt --force
```

#### John the Ripper

```bash
john --format=krb5asrep --wordlist=/usr/share/wordlists/rockyou.txt asrep-hashes.txt
```

Si la contraseña es débil o está en tu wordlist, obtendrás el texto claro.

***

## Escenario realista

Supón que estás haciendo un reconocimiento en un entorno corporativo. Tienes el dominio `acme.local` y has enumerado algunos posibles usuarios: `svc_account`, `user1`, `legacy_admin`. Usas una lista de estos usuarios con `GetNPUsers.py` y logras obtener el hash de `legacy_admin`, que tenía la opción de preautenticación desactivada.

Crackeas el hash y obtienes la contraseña: `Winter2022!`

Ahora puedes autenticarte como ese usuario en el dominio, lo que puede abrir paso a más recolección, movimiento lateral o escalada de privilegios.
