smtp-simple-mail-transfer-protocol
SMTP — Simple Mail Transfer Protocol
Section titled “SMTP — Simple Mail Transfer Protocol”SMTP es el protocolo estándar para el envío de correo electrónico entre servidores. Opera en los puertos 25 (comunicación entre servidores), 587 (submission con autenticación, clientes de correo) y 465 (SMTPS, SMTP sobre SSL). Puerto 25 es el más relevante en pentests de infraestructura.
Puertos y usos
Section titled “Puertos y usos”| Puerto | Uso | Notas |
|---|---|---|
| 25 | SMTP entre servidores (MTA) | Suele estar abierto en servidores de correo. Rara vez acepta conexiones de clientes finales. |
| 587 | Submission (clientes con STARTTLS) | Para clientes de correo con autenticación. |
| 465 | SMTPS (SSL/TLS implícito) | Cifrado desde el inicio de la conexión. |
Enumeración
Section titled “Enumeración”# Detección básicanmap -sV -p 25,587,465 target
# Scripts específicos para SMTPnmap -sC -sV -p 25 targetnmap --script smtp-commands,smtp-enum-users,smtp-open-relay -p 25 targetnmap --script smtp-vuln* -p 25 targetConexión manual con netcat / telnet
Section titled “Conexión manual con netcat / telnet”Conectar directamente al servidor SMTP permite ver el banner (que revela el software y versión) y probar comandos manualmente:
# Conexión al puerto 25nc -nv target 25telnet target 25Una vez conectado, la comunicación SMTP sigue este flujo:
220 mail.target.com ESMTP Postfix (Ubuntu) ← Banner del servidor
EHLO attacker.com ← Saludar al servidor (Extended HELO)250-mail.target.com ← Respuesta con capacidades250-SIZE 10240000250-VRFY ← VRFY habilitado → enumeración de usuarios250-EXPN ← EXPN habilitado → expandir listas250 HELP
VRFY root ← Verificar si existe el usuario root252 2.0.0 root ← Usuario existe
VRFY noexiste ← Usuario que no existe550 5.1.1 <noexiste>: Recipient address rejected
QUITEnumeración de usuarios — VRFY, EXPN, RCPT TO
Section titled “Enumeración de usuarios — VRFY, EXPN, RCPT TO”SMTP tiene tres comandos que pueden revelar si un usuario existe en el servidor:
VRFY — Verifica si una dirección existe. Si está habilitado, confirma usuarios directamente.
EXPN — Expande una lista de distribución, revelando todos sus miembros.
RCPT TO — Intento de envío. La diferencia en la respuesta entre un usuario que existe y uno que no revela información de enumeración.
# Manual con netcatnc target 25EHLO testVRFY adminVRFY rootVRFY info
# Automatizado con smtp-user-enumsmtp-user-enum -M VRFY -U /usr/share/seclists/Usernames/Names/names.txt -t targetsmtp-user-enum -M EXPN -U users.txt -t targetsmtp-user-enum -M RCPT -U users.txt -D target.com -t target
# Opciones:# -M VRFY/EXPN/RCPT TO → método de enumeración# -U → wordlist de usuarios# -D → dominio para construir direcciones email# -t → target IPOpen Relay
Section titled “Open Relay”Un open relay es un servidor SMTP que acepta y retransmite correo de cualquier origen a cualquier destino sin autenticación. Era común en servidores mal configurados y permite enviar spam o emails de phishing usando el servidor de la víctima como relay.
# Probar si el servidor es open relaynmap --script smtp-open-relay -p 25 target
# Manual — intentar enviar correo de terceros a tercerosnc target 25EHLO test.comMAIL FROM: <externo@gmail.com>RCPT TO: <victima@empresa.com>DATASubject: Test relayEste es un test de open relay..QUIT
# Si responde 250 OK → open relay confirmadoSMTP con STARTTLS
Section titled “SMTP con STARTTLS”# Conectar con openssl para ver el certificado y comunicarse cifradoopenssl s_client -starttls smtp -connect target:25
# Directo a SMTPS (puerto 465)openssl s_client -connect target:465Riesgos y misconfiguraciones
Section titled “Riesgos y misconfiguraciones”| Riesgo | Descripción |
|---|---|
| VRFY habilitado | Permite enumerar usuarios válidos del sistema. Brute force con wordlist revela cuentas existentes. |
| EXPN habilitado | Revela los miembros de listas de distribución. |
| Open Relay | El servidor retransmite correo sin autenticación → spam, phishing usando la reputación del servidor. |
| Banner informativo | El banner SMTP revela software, versión y a veces el hostname interno. Información útil para buscar CVEs. |
| Credenciales débiles en port 587 | Brute force en el puerto de submission autenticado. |
| Sin cifrado (puerto 25 sin STARTTLS) | Credenciales y contenido del correo viajan en claro. |
La enumeración de usuarios via SMTP es especialmente útil antes de un ataque de password spraying: si se sabe exactamente qué cuentas existen, se puede hacer spraying dirigido evitando cuentas que no existen y reduciendo el ruido.
El banner del servidor SMTP revela el MTA (Mail Transfer Agent) y su versión. Postfix, Exim, Sendmail y Microsoft Exchange tienen CVEs documentados en versiones específicas. Siempre buscar la versión en Exploit-DB o
searchsploittras identificarla.