> 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/dockerlabs/very-easy/trust.md).

# Trust

## Información de la máquina

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

**Trust** es una máquina Linux de nivel muy fácil en la que la clave para acceder radica en la enumeración de usuarios y la aplicación de `fuerza bruta` para obtener credenciales válidas. Una vez dentro, la escalada de privilegios se logra explotando un binario con permisos de `sudo`, lo que nos permite obtener acceso como **root** y completar la máquina.

***

## Reconocimiento

La fase de **reconocimiento** es el primer paso a la hora de resolver una máquina. Su objetivo es recopilar la mayor cantidad de información posible sobre el sistema objetivo, permitiendo entender su estructura, tecnología y posibles vectores de ataque.&#x20;

Empezaremos haciendo un ping a la máquina víctima para ver si está encendida y ante que nos enfrentamos.

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

Si recibimos respuesta, significa que la máquina está en línea. Además, observamos que el **TTL** (Time To Live) es **64**, lo que indica que es un sistema **Linux** (normalmente, los sistemas Windows tienen un TTL de 128).&#x20;

<figure><img src="/files/v5aqK1tmeTMRmK9n3sZq" 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 **`puertos` .**

El escaneo revela que los puertos **22 (SSH)** y 80 **(HTTP)** están abiertos. Ahora realizamos un escaneo más detallado:

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

**1. `-p22,80` → Escaneo de puertos específicos**

Con `-p22,80`, le indicamos que **solo** escanee los puertos **22 (SSH)** y **80 (HTTP)**

**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**.

Pasamos a ver la página web y vemos lo siguiente

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

***

## Enumeración y búsqueda de vulnerabilidades

Para encontrar directorios y archivos, usamos **GoBuster**:

{% hint style="success" %}
Gobuster es una herramienta de software escrita en el lenguaje de programación Go para encontrar directorios y archivos ocultos en sitios web, lo hace realizando ataques de fuerza bruta.
{% endhint %}

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

Durante el escaneo, encontramos un archivo llamado **secret.php**.

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

Al inspeccionar su contenido, identificamos que contiene información sobre un usuario llamado **Mario**.

***

## Explotación de las vulnerabilidades

Teniendo este usuario, podemos probar a aplicar **fuerza bruta** sobre el servicio SSH con **Hydra**:

{% hint style="success" %}
**Hydra** es una herramienta de cracking de inicio de sesión de red que se ejecuta de manera **paralelizada**, lo que permite realizar ataques de fuerza bruta de manera rápida. Esta herramienta está integrada en varios sistemas operativos, como **Kali Linux**, **Parrot** y otros entornos populares utilizados en pruebas de penetración.
{% endhint %}

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

Tras ejecutar Hydra con las credenciales posibles, logramos encontrar la combinación correcta:

* **Usuario:** mario
* **Contraseña:** chocolate

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

Con estas credenciales, conseguimos acceder a la máquina a través de SSH.

***

## Post Explotación y escalada de privilegios

Enumerando el sistema, descubrimos que **mario** tiene **permisos de sudo** sobre el binario **vim**:

Esto significa que **mario** puede ejecutar **vim** con privilegios elevados, lo que abre la posibilidad de escalar privilegios a **root**

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

Consultamos **GTFOBins**, una fuente conocida que proporciona técnicas para abusar de binarios con permisos elevados. Al buscar por **vim**, encontramos un método que nos permite escalar privilegios utilizando este binario.

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

Siguiendo las instrucciones de **GTFOBins**, ejecutamos el comando proporcionado y logramos escalar privilegios, obteniendo acceso como **root**.

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

***

## Conclusión

Trust es una máquina ideal para principiantes, ya que refuerza conceptos básicos como la enumeración de usuarios y directorios, el uso de fuerza bruta para obtener credenciales y la explotación de configuraciones incorrectas en permisos. A través de estos pasos, se demuestra la importancia de la seguridad en la gestión de accesos y privilegios dentro de un sistema Linux.
