Attacking Email Services
Última actualización
Última actualización
Un servidor de correo (también llamado servidor de email) es un servidor que gestiona y entrega correos electrónicos a través de una red, normalmente por Internet. Un servidor de correo puede recibir correos desde un dispositivo cliente y enviarlos a otros servidores de correo, así como también entregar correos a los clientes. Un cliente es normalmente el dispositivo desde el cual leemos nuestros correos (como computadoras, móviles, etc.).
Cuando presionamos el botón de Enviar en nuestra aplicación de correo (cliente de correo), el programa establece una conexión con un servidor SMTP en la red o en Internet. SMTP (Simple Mail Transfer Protocol) es el protocolo utilizado para enviar correos desde los clientes a los servidores y entre servidores.
Cuando descargamos correos en nuestra aplicación, esta se conecta a un servidor POP3 o IMAP4, el cual permite al usuario guardar mensajes en el buzón del servidor y descargarlos periódicamente.
Por defecto, los clientes POP3 eliminan los mensajes descargados del servidor. Este comportamiento dificulta el acceso al correo desde varios dispositivos, ya que los mensajes quedan almacenados localmente. Sin embargo, normalmente podemos configurar el cliente POP3 para que mantenga copias en el servidor.
Por otro lado, los clientes IMAP4 no eliminan los mensajes del servidor por defecto, lo que permite acceder fácilmente a los correos desde múltiples dispositivos.
Veamos cómo podemos atacar servidores de correo.
Los servidores de correo son complejos y normalmente requieren que enumeremos varios servidores, puertos y servicios. Además, hoy en día la mayoría de las empresas tienen sus servicios de correo en la nube, como Microsoft 365 o G-Suite. Por lo tanto, nuestra forma de atacar el servicio de correo dependerá del tipo de servicio que estén utilizando.
Podemos usar el registro DNS MX (Mail eXchanger) para identificar el servidor de correo. Este registro especifica el servidor responsable de aceptar mensajes de correo en nombre de un dominio. Es posible configurar varios registros MX, normalmente apuntando a un conjunto de servidores de correo para balanceo de carga y redundancia.
Podemos utilizar herramientas como host
o dig
, o sitios web como MXToolbox para consultar información sobre los registros MX.
stos registros MX indican que los tres primeros servicios de correo están utilizando servicios en la nube como G-Suite (aspmx.l.google.com
), Microsoft 365 (microsoft-com.mail.protection.outlook.com
) y Zoho (mx.zoho.com
), mientras que el último probablemente sea un servidor de correo personalizado alojado por la empresa.
Esta información es importante porque los métodos de enumeración pueden variar según el servicio. Por ejemplo, la mayoría de los proveedores en la nube utilizan su propia implementación del servidor de correo y adoptan autenticación moderna, lo cual abre vectores de ataque únicos y específicos para cada proveedor. En cambio, si la empresa ha configurado su propio servicio, podríamos encontrar malas prácticas y configuraciones inseguras que permitan ataques comunes a protocolos de servidores de correo.
Si estamos apuntando a un servidor de correo personalizado como inlanefreight.htb
, podemos enumerar los siguientes puertos:
TCP/25
SMTP Unencrypted
TCP/143
IMAP4 Unencrypted
TCP/110
POP3 Unencrypted
TCP/465
SMTP Encrypted
TCP/587
TCP/993
IMAP4 Encrypted
TCP/995
POP3 Encrypted
Podemos usar Nmap con la opción -sC
(scripts por defecto) para enumerar estos puertos en el sistema objetivo:
Los servicios de correo utilizan autenticación para permitir a los usuarios enviar y recibir correos electrónicos. Una mala configuración puede darse cuando el servicio SMTP permite autenticación anónima o soporta comandos que pueden ser usados para enumerar nombres de usuario válidos.
El servidor SMTP dispone de distintos comandos que se pueden aprovechar para enumerar usuarios válidos: VRFY
, EXPN
y RCPT TO
. Si logramos enumerar usuarios válidos, podemos intentar realizar ataques de password spraying, fuerza bruta o incluso adivinar una contraseña válida. Veamos cómo funcionan estos comandos:
VRFY: este comando le indica al servidor SMTP que verifique si existe un nombre de usuario o dirección de correo específica. El servidor responderá indicando si el usuario existe o no. Esta funcionalidad suele estar desactivada por seguridad.
EXPN es similar a VRFY, con la diferencia de que cuando se usa con una lista de distribución, devuelve todos los usuarios incluidos en dicha lista. Esto puede ser más problemático que el comando VRFY, ya que muchas veces existen alias como “all” que agrupan a muchos usuarios.
Como vemos, el comando EXPN devuelve direcciones de usuarios individuales que forman parte de la lista de distribución. Esto amplía nuestra superficie de ataque.
RCPT TO identifica al destinatario de un mensaje de correo. Este comando se puede repetir varias veces para enviar un solo mensaje a múltiples destinatarios.
Como vemos, este comando también nos permite validar si un usuario existe en el sistema en función de la respuesta del servidor. Esto se puede usar para enumerar usuarios válidos antes de lanzar ataques como password spraying o fuerza bruta.
También podemos usar el protocolo POP3 para enumerar usuarios, dependiendo de cómo esté implementado el servicio. Por ejemplo, podemos usar el comando USER
seguido del nombre de usuario, y si el servidor responde con +OK
, eso significa que el usuario existe en el servidor.
Este comportamiento se puede aprovechar para enumerar cuentas válidas antes de intentar ataques de autenticación como fuerza bruta o password spraying.
En el siguiente ejemplo, estamos usando:
-M RCPT
: especifica el modo de enumeración.
-U userlist.txt
: lista de nombres de usuario a probar.
-D inlanefreight.htb
: dominio que se añadirá a cada usuario.
-t 10.129.203.7
: IP del servidor SMTP objetivo.
Como vimos antes, los proveedores de servicios en la nube como Microsoft implementan sus propios sistemas de correo. En el caso de Office 365, podemos abusar de funciones específicas como la enumeración de usuarios.
Podemos usar Hydra para realizar ataques de fuerza bruta o password spraying contra servicios de correo como SMTP, POP3 o IMAP4. Solo necesitamos un listado de usuarios (-L
) y una contraseña o lista de contraseñas (-p
o -P
), además de indicar el servicio.
Si los servicios en la nube permiten el uso de los protocolos SMTP, POP3 o IMAP4, podríamos intentar realizar ataques de password spraying usando herramientas como Hydra, pero normalmente estos intentos son bloqueados por medidas de seguridad del proveedor.
En lugar de eso, es preferible usar herramientas especializadas como:
o365spray
o MailSniper
→ para Microsoft Office 365
CredKing
→ para Gmail u Okta
Un open relay es un servidor SMTP (Simple Mail Transfer Protocol) mal configurado que permite el reenvío de correos sin autenticación. Los servidores de mensajería que están configurados como open relays, ya sea accidental o intencionalmente, permiten que cualquier fuente envíe correos a través del servidor, enmascarando así el origen real de los mensajes y haciendo parecer que provienen del propio servidor.
Desde la perspectiva de un atacante, esto puede ser aprovechado para realizar phishing, enviando correos como si fueran de usuarios inexistentes o suplantando la identidad de otro. Por ejemplo, si detectamos que una empresa tiene un servidor de correo mal configurado como open relay y usa una dirección específica para notificaciones, podemos enviar un correo con esa misma dirección y añadir un enlace malicioso.
Con el script smtp-open-relay
de Nmap, podemos identificar si un puerto SMTP permite este tipo de reenvío:
Después, podemos usar cualquier cliente de correo para conectarnos al servidor y enviar nuestro mensaje:
SMTP Encrypted/
Podemos automatizar el proceso de enumeración de usuarios en servidores SMTP con la herramienta . Esta utilidad permite comprobar si existen direcciones de correo válidas usando comandos como VRFY
, EXPN
o RCPT
.
Una herramienta útil para esto es , que permite validar si un dominio usa Office 365 y luego enumerar usuarios válidos, así como hacer password spraying.