> 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-smtp.md).

# Enumeración SMTP

El **Simple Mail Transfer Protocol (SMTP)** es un protocolo de comunicación ampliamente utilizado para la transmisión de correos electrónicos entre servidores y clientes. Debido a su prevalencia y a la información que puede revelar, SMTP es un objetivo habitual durante la fase de enumeración de un test de penetración.

***

## 🔌 Puertos SMTP

Por defecto, SMTP utiliza el **puerto TCP 25** para la transmisión de mensajes. Sin embargo, también puede estar configurado para operar en los siguientes puertos:

* **TCP 465**: SMTP sobre SSL (SMTPS).
* **TCP 587**: SMTP con STARTTLS, utilizado comúnmente para clientes autenticados.

Es fundamental escanear estos tres puertos durante la fase de descubrimiento de servicios.

***

## 🧠 ¿Por qué enumerar SMTP?

Durante la enumeración de SMTP, el objetivo es obtener información como:

* La **versión del servidor SMTP** (puede revelar vulnerabilidades).
* Verificar si está configurado como **open relay** (permite el envío de correos sin autenticación).
* Enumerar posibles **usuarios válidos** en el sistema.

Toda esta información puede servir como base para futuras fases de explotación o ingeniería social.

***

## 🧪 Laboratorio Práctico

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

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

**Paso 2:** ¿Cuál es el nombre del servidor SMTP y el banner?

**Respuesta:**

```
Server: Postfix
Banner: openmailbox.xyz ESMTP Postfix: Welcome to our mail server.
```

**Dominio:**

```
nmap -sV -script banner demo.ine.local
```

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

**Paso 3:** Conéctese al servicio SMTP utilizando netcat y recupere el nombre de host del servidor (nombre de dominio).

**Respuesta:**

```
openmailbox.xyz
```

**Dominio:**

```
nc demo.ine.local 25
```

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

**Paso 4:** ¿Existe el usuario "admin" en el servidor? Conéctese al servicio SMTP mediante netcat y compruébelo manualmente.

**Respuesta:**

```
Yes
```

**Dominio:**

```
VRFY admin@openmailbox.xyz
```

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

**Paso 5:** ¿Existe el usuario "commander" en el servidor? Conéctese al servicio SMTP mediante netcat y compruébelo manualmente.

**Respuesta:**

```
No
```

**Dominio:**

```
VRFY commander@openmailbox.xyz
```

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

**Paso 6:** ¿Qué comandos se pueden usar para comprobar los comandos/capacidades compatibles? Conéctese al servicio SMTP mediante Telnet y compruébelo.

**Comandos:**

```
telnet demo.ine.local 25
HELO attacker.xyz
EHLO attacker.xyz
```

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

**Paso 7:** ¿Cuántos nombres de usuario comunes del diccionario /usr/share/commix/src/txt/usernames.txt existen en el servidor? Utilice la herramienta smtp-user-enum para esta tarea.

**Respuesta:**

```
8
```

**Dominio:**

```
smtp-user-enum -U /usr/share/commix/src/txt/usernames.txt -t demo.ine.local
```

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

**Paso 8:** Determine cuántos nombres de usuario comunes del diccionario /usr/share/metasploit-framework/data/wordlists/unix\_users.txt existen en el servidor. Utilice el módulo de Metasploit adecuado para esta tarea.

**Respuesta:**

```
20
```

**Comandos:**

```
msfconsole -q
use auxiliary/scanner/smtp/smtp_enum
set RHOSTS demo.ine.local
exploit
```

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

**Paso 9:** Conéctese al servicio SMTP usando telnet y envíe un correo falso al usuario root.

**Comandos:**

```
telnet demo.ine.local 25
HELO attacker.xyz
mail from: admin@attacker.xyz
rcpt to:root@openmailbox.xyz
data
Subject: Hi Root
Hello,
This is a fake mail sent using telnet command.
From,
Admin
.
```

**Nota:** Hay un punto (.) en la última línea que indica la terminación de los datos.

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

**Paso 10:** Envíe un correo falso al usuario root usando el comando sendemail.

**Dominio:**

```
sendemail -f admin@attacker.xyz -t root@openmailbox.xyz -s demo.ine.local -u Fakemail -m "Hi root, a fake from admin" -o tls=no
```

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

#### Conclusión

En este laboratorio, analizamos los conceptos básicos del reconocimiento del servidor SMTP Postfix
