> 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/writes-ups/tryhackme/easy/soupedecode-01.md).

# Soupedecode 01

## Información de la máquina

<figure><img src="/files/hk2ES8Aiavtf7VnQqKMY" alt=""><figcaption></figcaption></figure>

**Soupedecode 01** es una máquina Windows de nivel *Easy* en *TryHackMe* que permite poner en práctica técnicas clave de enumeración y explotación de entornos de dominio Active Directory. El reto inicia con un reconocimiento SMB empleando **NetExec** para identificar el dominio y extraer una lista de usuarios mediante *RID Brute Forcing*. A partir de ahí, se aplica un ataque de **Password Spraying** que permite descubrir credenciales válidas y acceder a recursos compartidos SMB. Una vez dentro, se avanza a un **Kerberoasting Attack** para obtener y crackear hashes de cuentas de servicio, consiguiendo credenciales adicionales que facilitan el acceso a nuevos recursos. Entre estos, se encuentra un archivo con hashes NTLM que pueden ser reutilizados mediante **Pass-the-Hash** para conseguir ejecución remota con privilegios *SYSTEM*.

***

## Reconocimiento

Empezaremos haciendo un primer reconocimiento para ver los puertos abiertos en el sistema.

<figure><img src="/files/N4Hmz2Vh6D9sjjiAhBhS" alt=""><figcaption></figcaption></figure>

**1. `-p-` → Escaneo de todos los puertos (1-65535)**

Por defecto, `nmap` solo escanea los **1000 puertos más comunes**.\
Con `-p-`, forzamos a que escanee **los 65,535 puertos** de la máquina objetivo, lo que puede ser útil para encontrar servicios que corren en puertos poco convencionales.

**2. `--open` → Filtrar solo los puertos abiertos**

Cuando escaneamos un sistema, muchos puertos pueden estar cerrados o filtrados por un firewall.\
Este parámetro hace que `nmap` **solo muestre los puertos abiertos**, reduciendo el ruido y facilitando el análisis.

**3. `-sS` → Stealth Scan (Escaneo Sigiloso con SYN)**

Es conocido como **"TCP SYN Scan"**, y funciona de la siguiente manera:

* `nmap` envía un paquete **SYN** (solicitud de conexión).
* &#x20;Si el puerto está abierto, el servidor responde con **SYN-ACK**.
* En lugar de completar la conexión con un **ACK**, `nmap` responde con un **RST (Reset)**, interrumpiendo la comunicación.

**4. `--min-rate 5000` → Velocidad mínima de paquetes (5000 por segundo)**

Por defecto, `nmap` ajusta dinámicamente la velocidad de los paquetes según la respuesta de la red.\
Con `--min-rate 5000`, obligamos a `nmap` a **no enviar menos de 5000 paquetes por segundo**, acelerando el escaneo.

**5. `-n` → Deshabilitar resolución DNS**

Normalmente, `nmap` intenta resolver el nombre de dominio de las IPs escaneadas (DNS lookup).\
Con `-n`, evitamos esta resolución de nombres, lo que **acelera el escaneo** y evita que los servidores DNS registren nuestra actividad.

**6. `-Pn` → Omitir detección de host (Host Discovery Off)**

Por defecto, `nmap` envía paquetes ICMP (ping) para ver si un host está activo antes de escanearlo.\
Si un firewall bloquea los pings, `nmap` puede marcarlo como "host down" y no escanearlo.

**7. `-oG`** **→ Exportar el contenido en formato grepeable**

Todo el resultado del escaneo lo exportaremos en un archivo llamado **`allPorts` .**

El escaneo revela muchos puertos abiertos. Ahora haremos un escaneo más detallado.

<figure><img src="/files/KtO9OZDnjShF8fmw36EE" alt=""><figcaption></figcaption></figure>

**1. `-p<puertos>` → Escaneo de puertos específicos**

Con `-p<puertos>`, le indicamos que **solo** escanee los puertos que queremos

**2. `-sCV` → Escaneo de versiones y scripts básicos**

Este parámetro en realidad es **dos combinaciones en una**:

* **`-sC`** → Activa los **NSE scripts por defecto** en `nmap` (similar a usar `--script=default`).\
  Ejecuta scripts básicos para enumerar información del servicio detectado, como banners, versiones, etc.
* **`-sV`** → Realiza **fingerprinting de versiones**, intentando identificar la versión exacta del software en cada puerto abierto.

**3. `-oN` → Guardar el resultado en formato Normal**

Por defecto, `nmap` muestra los resultados en pantalla, pero con **`-oN targeted`**, guardamos el resultado en un archivo en **formato legible para humanos**.

Usando la herramienta **NetExec (nxc)**, identificamos el nombre del dominio al que pertenece la máquina objetivo.\
*(NetExec es una herramienta para interactuar con servicios SMB, WinRM, RDP, entre otros, útil en pentesting de redes Windows.)*

<figure><img src="/files/Crq0Z27vcgFjULUHvhDE" alt=""><figcaption></figcaption></figure>

Añadimos el nombre del dominio identificado al archivo `/etc/hosts` para resolverlo localmente hacia la IP del objetivo.

<figure><img src="/files/nbOiqWcqdKNHw67qFkqb" alt=""><figcaption></figcaption></figure>

Con **nxc smb**, enumeramos los recursos compartidos disponibles en el servicio SMB. Aunque no tenemos permisos para acceder a ellos, podemos listarlos.

<figure><img src="/files/6oHkGvDHne3x2pRCniOR" alt=""><figcaption></figcaption></figure>

Utilizando la opción `--rid-brute` de NetExec, enumeramos los identificadores RID y obtenemos así una lista de usuarios del dominio.

<figure><img src="/files/Rysmd2j7CtJix3fTRTaH" alt=""><figcaption></figcaption></figure>

Guardamos los resultados obtenidos en un archivo de texto y los procesamos para quedarnos únicamente con los nombres de usuario. Paralelamente, guardamos la evidencia original sin modificar en otro archivo.

<figure><img src="/files/PDeW2atjubJFzPN0Awww" alt=""><figcaption></figcaption></figure>

## Password Spraying

Realizamos un ataque de **Password Spraying** usando los usuarios obtenidos previamente, probando si la contraseña es igual al nombre del usuario.\
*(El **Password Spraying** consiste en intentar una o pocas contraseñas comunes contra una gran cantidad de usuarios, para evitar bloqueos por intentos fallidos repetidos.)*

<figure><img src="/files/KIyhlH3pFb3vICMkmQBo" alt=""><figcaption></figcaption></figure>

Descubrimos que el usuario **ybob137** tiene como contraseña su propio nombre, quedando las credenciales `ybob137:ybob137`.

<figure><img src="/files/eRGjKrBlp3KbcFe9bsCC" alt=""><figcaption></figcaption></figure>

Con estas credenciales, obtenemos permisos de lectura en el recurso compartido **"Users"**.

<figure><img src="/files/ia9Gvl3JuJY3Yxl4XvAF" alt=""><figcaption></figcaption></figure>

Al acceder al recurso, observamos lo que parece ser el directorio `/home/Users` del dominio, donde se almacenan las carpetas personales de los usuarios.

<figure><img src="/files/7v0PnwdE4Ks27gEwwWES" alt=""><figcaption></figcaption></figure>

Accedemos específicamente a la carpeta del usuario **ybob137**, incluyendo su escritorio.

<figure><img src="/files/ckrWQW8a2IEU6ykFigj8" alt=""><figcaption></figcaption></figure>

Dentro de su escritorio encontramos la **primera flag** de la máquina.

<figure><img src="/files/UYj8t6DAmOel8Ea0ggqz" alt=""><figcaption></figcaption></figure>

## Kerberoasting Attack

Con credenciales válidas, ejecutamos un ataque de **Kerberoasting**, obteniendo varios hashes de contraseñas de cuentas de servicio.\
*(El **Kerberoasting Attack** aprovecha que las cuentas de servicio en entornos Windows tienen tickets Kerberos cifrados con la contraseña de la cuenta. Si se solicita un TGS de ese servicio, el hash puede ser crackeado offline para recuperar la contraseña.)*

<figure><img src="/files/D84AkrJBZm6xUI8Sxvyt" alt=""><figcaption></figcaption></figure>

Usamos **John the Ripper** para crackear los hashes obtenidos y recuperamos una contraseña: `Password123!!`.

<figure><img src="/files/CU3fbzoFWsq9Cs0GP85I" alt=""><figcaption></figcaption></figure>

Probamos la contraseña contra distintos usuarios y encontramos que funciona con la cuenta **file\_svc**.

<figure><img src="/files/AbGPMUmcoaFQdY9EgL7f" alt=""><figcaption></figcaption></figure>

Volvemos a enumerar los recursos SMB y descubrimos que ahora tenemos acceso al recurso **backup**.

<figure><img src="/files/Sb4p6cEqx55l47s21wjS" alt=""><figcaption></figcaption></figure>

Dentro del recurso encontramos un archivo de texto.

<figure><img src="/files/l4V9VKD0jwL6h1r4T1di" alt=""><figcaption></figcaption></figure>

Al inspeccionar el archivo, encontramos una lista de usuarios del servidor junto con hashes **NTLM**. Estos hashes no necesariamente corresponden a los usuarios listados.

<figure><img src="/files/rVisEw2Y7cBAEy1ZlmzN" alt=""><figcaption></figcaption></figure>

Procesamos el archivo para separar los nombres de usuario de los hashes **NTLM** en dos listas distintas.

<figure><img src="/files/QqKLgMCgVphK5msDiBn1" alt=""><figcaption></figcaption></figure>

Probamos a autenticarnos usando los hashes con el método **Pass-the-Hash**, y descubrimos que uno es válido. Además, el sistema devuelve el mensaje "Pwned!", indicando compromiso exitoso.

<figure><img src="/files/mi1a4JorZ4r8wUq8E2V7" alt=""><figcaption></figcaption></figure>

## Pass-The-Hash

Usando la herramienta **psexec** con el hash válido, realizamos un **Pass-the-Hash** y conseguimos acceso remoto a la máquina con privilegios de administrador (**SYSTEM**).\
*(El Pass-the-Hash consiste en autenticarse usando el hash NTLM en lugar de la contraseña en texto plano.)*

<figure><img src="/files/8CR3LvKnN5Wq0IimQZN0" alt=""><figcaption></figcaption></figure>

Con el acceso obtenido, localizamos y visualizamos la **flag final** de la máquina.

<figure><img src="/files/QRvmrBHtSqFqTwmWkcuj" alt=""><figcaption></figcaption></figure>

***

## Conclusión

La máquina **Soupedecode 01** demuestra cómo la combinación de técnicas clásicas de *Active Directory* —**Password Spraying**, **Kerberoasting** y **Pass-the-Hash**— puede derivar en un compromiso total del sistema con privilegios de administrador. El uso inicial de NetExec para enumerar el dominio y obtener usuarios es un paso crítico que habilita el resto de la cadena de ataque. La debilidad de contraseñas predecibles y la reutilización de hashes NTLM permiten el movimiento lateral y la escalada de privilegios de forma directa. En conjunto, este laboratorio refuerza la importancia de implementar políticas robustas de contraseñas, segmentar los accesos y proteger las cuentas de servicio en entornos Windows
