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

# BreakMySSH

## Información de la máquina

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

BreakMySSH es una máquina Linux de nivel Muy Fácil que presenta una `versión vulnerable para enumerar usuarios de SSH`. Aplicaremos fuerza bruta al usuario encontrado y entraremos como root a 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/qGaTKhANAZlPZDZ5F54z" 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/BtHsIpTOllfKegDLMpJU" 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 el puerto **22 (SSH)**  está abierto. Ahora realizamos un escaneo más detallado:

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

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

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

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

***

## Enumeración y búsqueda de vulnerabilidades

La **versión 7.7 de OpenSSH** es vulnerable a **enumeración de usuarios**, lo que significa que es posible obtener información sobre los usuarios válidos en el sistema al intentar autenticarse. Esto se puede aprovechar para identificar qué usuarios existen y pueden ser atacados posteriormente.

Para explotar esta vulnerabilidad, buscamos un **PoC** (Prueba de Concepto) que nos permita realizar la enumeración de usuarios en esta versión vulnerable de OpenSSH

<figure><img src="/files/394NLZ0k7rYtdx8uno3D" alt=""><figcaption></figcaption></figure>

Clonamos el repositorio que contiene el PoC

<figure><img src="/files/1CyOF1OauCDvVqXR3LHy" alt=""><figcaption></figcaption></figure>

&#x20;Le damos **permisos de ejecución** al archivo para poder utilizarlo en la explotación de la vulnerabilidad.

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

***

## Explotación de las vulnerabilidades

Para usar la herramienta, nos indican que debemos proporcionar la **IP de la máquina víctima**, el parámetro **-u** (para especificar el usuario) y un nombre de usuario cualquiera.

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

Tras ejecutar el PoC y ver los resultados, descubrimos que el **usuario root** existe en la máquina. Esto nos permite intentar aplicar un ataque de **fuerza bruta** para obtener la contraseña de este usuario utilizando **Hydra**.

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

Probamos con las siguientes credenciales:

* **Usuario:** root
* **Contraseña:** estrella

<figure><img src="/files/9XRRHYf3ADGDSJ33Kk6o" alt=""><figcaption></figcaption></figure>

Logramos acceder a la máquina como **root**, lo que nos otorga **privilegios máximos** sobre el sistema.

***

## Conclusión

BreakMySSH es una máquina que pone a prueba la enumeración de usuarios y la explotación de vulnerabilidades en versiones desactualizadas de SSH. A través de estas técnicas, se destaca la importancia de mantener los servicios actualizados y protegidos contra ataques de reconocimiento y acceso no autorizado.
