> 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/ejpt-notes/metodologias-de-evaluacion/enumeracion/enumeracion-de-servicios/enumeracion-de-ftp.md).

# Enumeración de FTP

El **Protocolo de Transferencia de Archivos (FTP)** es un servicio clásico de red utilizado para transferir archivos entre un cliente y un servidor. Aunque ha sido en gran parte reemplazado por alternativas más seguras como SFTP o SCP, sigue estando presente en muchas infraestructuras, especialmente en entornos antiguos o mal mantenidos. Esto lo convierte en un objetivo interesante durante una auditoría de seguridad.

***

## 🌐 ¿Qué es FTP?

* **Puerto predeterminado:** TCP/21
* **Funcionalidad:** Facilita la transferencia de archivos entre sistemas.
* **Uso común:** También se utiliza para subir archivos al directorio de un servidor web.

***

## 🎯 Objetivo de la Enumeración FTP

Durante una prueba de penetración, la enumeración de un servidor FTP puede revelarnos:

* Archivos o directorios públicos sensibles.
* Usuarios válidos.
* Configuraciones incorrectas, como acceso anónimo habilitado.
* Servicios de backend que permiten subida o ejecución de archivos.
* Versiones del software FTP, que podrían ser vulnerables.

***

## 🧰 Módulos Auxiliares de Metasploit para FTP

Metasploit Framework incluye varios módulos que puedes utilizar para interactuar con un servicio FTP, incluyendo:

#### 🔎 Detección de versión del servicio FTP

```bash
use auxiliary/scanner/ftp/ftp_version
set RHOSTS 192.168.1.100
run
```

#### 👤 Enumeración de acceso anónimo

```bash
use auxiliary/scanner/ftp/anonymous
set RHOSTS 192.168.1.100
run
```

#### 🔐 Ataque de fuerza bruta a FTP

```bash
use auxiliary/scanner/ftp/ftp_login
set RHOSTS 192.168.1.100
set USER_FILE /usr/share/wordlists/usernames.txt
set PASS_FILE /usr/share/wordlists/rockyou.txt
run
```

***

## ⚠️ FTP y Seguridad

* **Autenticación débil:** FTP utiliza una combinación de **usuario y contraseña en texto plano**.
* **Acceso anónimo:** Si un servidor permite conexiones como "anonymous", es posible acceder sin credenciales.
* **Transmisión insegura:** FTP no cifra los datos, lo que lo hace susceptible a ataques de sniffing.

***

## 🧪 Laboratorio Práctico

**Paso 1:** Abra el enlace del laboratorio para acceder a la máquina Kali.

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

**Paso 2:** Verifique si la máquina de destino es accesible:

**Dominio:**

```
ping -c 4 demo.ine.local
```

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

El objetivo es alcanzable.

**Paso 3:** Enumeración FTP con Metasploit.

Antes de poder comenzar, necesitaremos iniciar la consola de Metasploit Framework (msfconsole), esto se puede hacer ejecutando el siguiente comando:

**Dominio:**

```
msfconsole
```

Para empezar, necesitaremos identificar una versión de servicio del servidor FTP que se ejecuta en el objetivo, esto se puede hacer cargando el siguiente módulo:

**Dominio:**

```
use auxiliary/scanner/ftp/ftp_version
```

Ahora necesitaremos configurar las opciones del módulo, más específicamente la opción de destino, esto se puede hacer ejecutando el siguiente comando:

**Dominio:**

```
set RHOSTS demo.ine.local
```

Ahora podemos ejecutar el módulo ejecutando el siguiente comando:

**Dominio:**

```
run
```

Como se muestra en la siguiente captura de pantalla, el módulo revela que el sistema de destino está ejecutando **ProFTPD 1.3.5a**

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

Podemos realizar un ataque de fuerza bruta en el servidor FTP para identificar credenciales legítimas que podamos usar para la autenticación, esto se puede hacer cargando el módulo **ftp\_login de la siguiente manera:**

**Dominio:**

```
use auxiliary/scanner/ftp/ftp_login
```

Ahora necesitaremos configurar las opciones del módulo, más específicamente la opción de destino, esto se puede hacer ejecutando el siguiente comando:

**Dominio:**

```
set RHOSTS demo.ine.local
```

Dado que estamos realizando un ataque de fuerza bruta, también necesitaremos configurar las opciones **USER\_FILE** y **PASS\_FILE** .

**Comandos:**

```
set USER_FILE /usr/share/metasploit-framework/data/wordlists/common_users.txt

set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt
```

Ahora podemos ejecutar el módulo ejecutando el siguiente comando:

**Dominio:**

```
run
```

Como se muestra en la siguiente captura de pantalla, el ataque de fuerza bruta identifica las credenciales **sysadmin:654321**

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

También podemos verificar si se permiten inicios de sesión anónimos en el servidor FTP, esto se puede hacer utilizando los siguientes comandos:

**Comandos:**

```
use auxiliary/scanner/ftp/anonymous
set RHOSTS demo.ine.local
run
```

Como se muestra en la siguiente captura de pantalla, el módulo revela que los inicios de sesión FTP anónimos no están habilitados en el servidor FTP.

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

Ahora podemos iniciar sesión en el servidor FTP con las credenciales que obtuvimos de la fuerza bruta FTP, esto se puede hacer mediante el uso del cliente FTP en Kali Linux.

**Dominio:**

```
ftp demo.ine.local
```

Como se muestra en la siguiente captura de pantalla, se le pedirá que proporcione un nombre de usuario y una contraseña, proporcione las credenciales que obtuvimos del ataque de fuerza bruta.

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

Como se muestra en la captura de pantalla anterior, la autenticación es exitosa y hemos iniciado sesión en el servidor FTP.

#### Conclusión

En este laboratorio, exploramos el proceso de realizar enumeración FTP con Metasploit Framework.
