SMTP
Last updated
Last updated
El protocolo Simple Mail Transfer Protocol
( SMTP
) es un protocolo para enviar correos electrónicos en una red IP. Puede utilizarse entre un cliente de correo electrónico y un servidor de correo saliente o entre dos servidores SMTP. SMTP suele combinarse con los protocolos IMAP o POP3, que permiten obtener y enviar correos electrónicos. En principio, es un protocolo cliente-servidor, aunque SMTP puede utilizarse entre un cliente y un servidor, así como entre dos servidores SMTP. En este caso, un servidor actúa como cliente.
De forma predeterminada, los servidores SMTP aceptan solicitudes de conexión en el puerto 25
. Sin embargo, los servidores SMTP más recientes también utilizan otros puertos, como el puerto TCP 587
. Este puerto se utiliza para recibir correo de usuarios/servidores autenticados, generalmente mediante el comando STARTTLS para cambiar la conexión de texto plano existente a una conexión cifrada. Los datos de autenticación están protegidos y ya no son visibles en texto plano en la red. Al iniciar la conexión, la autenticación se produce cuando el cliente confirma su identidad con un nombre de usuario y una contraseña. A continuación, se pueden transmitir los correos electrónicos. Para ello, el cliente envía al servidor las direcciones de remitente y destinatario, el contenido del correo electrónico y otra información y parámetros. Tras la transmisión del correo electrónico, la conexión se finaliza. El servidor de correo electrónico comienza entonces a enviar el correo electrónico a otro servidor SMTP.
El protocolo SMTP funciona sin cifrar y sin medidas adicionales, y transmite todos los comandos, datos e información de autenticación en texto plano. Para evitar la lectura no autorizada de datos, el protocolo SMTP se utiliza junto con el cifrado SSL/TLS. En determinadas circunstancias, un servidor utiliza un puerto distinto del puerto TCP estándar 25
para la conexión cifrada, por ejemplo, el puerto TCP 465
.
Una función esencial de un servidor SMTP es prevenir el spam mediante mecanismos de autenticación que permiten que solo los usuarios autorizados envíen correos electrónicos. Para ello, la mayoría de los servidores SMTP modernos admiten la extensión de protocolo ESMTP con SMTP-Auth. Tras enviar el correo electrónico, el cliente SMTP, también conocido como Mail User Agent
( MUA
), lo convierte en un encabezado y un cuerpo y lo sube al servidor SMTP. Este cuenta con el llamado Mail Transfer Agent
( MTA
), la base del software para enviar y recibir correos electrónicos. El MTA comprueba el tamaño del correo electrónico y si es spam, y luego lo almacena. Para facilitar la tarea del MTA, ocasionalmente se le antepone un Mail Submission Agent
( MSA
), que verifica la validez, es decir, el origen del correo electrónico. Esto MSA
también se denomina Relay
servidor. Estos son muy importantes más adelante, ya que el llamado ataque Open Relay Attack
puede llevarse a cabo en muchos servidores SMTP debido a una configuración incorrecta. Más adelante analizaremos este ataque y cómo identificar su punto débil. El MTA busca entonces en el DNS la dirección IP del servidor de correo del destinatario.
Al llegar al servidor SMTP de destino, los paquetes de datos se reensamblan para formar un correo electrónico completo. Desde allí, el Mail delivery agent
( MDA
) lo transfiere al buzón del destinatario.
Pero SMTP tiene dos desventajas inherentes al protocolo de red.
La primera es que enviar un correo electrónico mediante SMTP no devuelve una confirmación de entrega válida. Si bien las especificaciones del protocolo contemplan este tipo de notificación, su formato no está especificado por defecto, por lo que normalmente solo se devuelve un mensaje de error en inglés, que incluye el encabezado del mensaje no entregado.
Cada servidor SMTP puede configurarse de diversas maneras, al igual que todos los demás servicios. Sin embargo, existen diferencias, ya que el servidor SMTP solo se encarga de enviar y reenviar correos electrónicos.
El envío y la comunicación también se realizan mediante comandos especiales que hacen que el servidor SMTP haga lo que el usuario requiere.
Dominio
Descripción
AUTH PLAIN
AUTH es una extensión de servicio utilizada para autenticar al cliente.
HELO
El cliente inicia sesión con el nombre de su computadora y así inicia la sesión.
MAIL FROM
El cliente nombra al remitente del correo electrónico.
RCPT TO
El cliente nombra el destinatario del correo electrónico.
DATA
El cliente inicia la transmisión del correo electrónico.
RSET
El cliente cancela la transmisión iniciada pero mantiene la conexión entre el cliente y el servidor.
VRFY
El cliente comprueba si hay un buzón disponible para la transferencia de mensajes.
EXPN
El cliente también verifica si hay un buzón disponible para enviar mensajes con este comando.
NOOP
El cliente solicita una respuesta del servidor para evitar la desconexión debido al tiempo de espera.
QUIT
El cliente finaliza la sesión.
Para interactuar con el servidor SMTP, podemos usar la telnet
herramienta para inicializar una conexión TCP con él. La inicialización de la sesión se realiza con el comando mencionado anteriormente, HELO
o EHLO
.
Por lo tanto, nunca se debe confiar completamente en los resultados de las herramientas automáticas. Al fin y al cabo, estas ejecutan comandos preconfigurados, pero ninguna de las funciones indica explícitamente cómo el administrador configura el servidor probado.
A veces, necesitamos usar un proxy web. También podemos conectar este proxy web al servidor SMTP. El comando que enviaríamos sería similar a esto:CONNECT 10.129.14.128:25 HTTP/1.0
Todos los comandos que introducimos en la línea de comandos para enviar un correo electrónico los conocemos de cualquier cliente de correo electrónico como Thunderbird, Gmail, Outlook y muchos otros. Especificamos el destinatario subject
, el destinatario, las copias en CC y CCO, y la información que queremos compartir. Por supuesto, esto también funciona desde la línea de comandos.
El encabezado del correo electrónico contiene gran cantidad de información interesante. Entre otras cosas, proporciona información sobre el remitente y el destinatario, la hora de envío y llegada, las estaciones por las que pasó el correo electrónico, el contenido y el formato del mensaje, y el remitente y el destinatario.
Para evitar que los correos electrónicos enviados sean filtrados por los filtros de spam y no lleguen al destinatario, el remitente puede usar un servidor de retransmisión de confianza para el destinatario. Se trata de un servidor SMTP conocido y verificado por todos los demás. Por regla general, el remitente debe autenticarse en el servidor de retransmisión antes de usarlo.
A menudo, los administradores no tienen una visión general de los rangos de IP que deben permitir. Esto provoca una configuración incorrecta del servidor SMTP que aún encontramos con frecuencia en pruebas de penetración internas y externas. Por lo tanto, permiten que todas las direcciones IP no provoquen errores en el tráfico de correo electrónico y, por lo tanto, no interrumpan involuntariamente la comunicación con clientes potenciales y actuales.
Con esta configuración, el servidor SMTP puede enviar correos electrónicos falsos y, por lo tanto, iniciar la comunicación entre varias partes. Otra posibilidad de ataque sería falsificar el correo electrónico y leerlo.
Los scripts predeterminados de Nmap incluyen smtp-commands
, que utiliza el EHLO
comando para enumerar todos los comandos posibles que se pueden ejecutar en el servidor SMTP de destino.
Los usuarios no se autentican al establecer una conexión, por lo que el remitente de un correo electrónico no es fiable. Como resultado, los relés SMTP abiertos se utilizan a menudo para enviar spam masivo. Los remitentes utilizan direcciones de remitente falsas y arbitrarias para evitar ser rastreados (suplantación de correo). Actualmente, se emplean diversas técnicas de seguridad para prevenir el uso indebido de los servidores SMTP. Por ejemplo, los correos electrónicos sospechosos se rechazan o se envían a cuarentena (carpeta de spam). Entre los responsables de esto se encuentran, por ejemplo, el protocolo de identificación ( DKIM
) y el ( SPF
).
Para ello, se ha desarrollado una extensión para SMTP llamada Extended SMTP
( ESMTP
). Cuando se habla de SMTP en general, se suele hacer referencia a ESMTP. ESMTP utiliza TLS, que se realiza después del EHLO
comando mediante el envío de [ STARTTLS
nombre del dominio]. Esto inicializa la conexión SMTP protegida por SSL y, a partir de ese momento, toda la conexión está cifrada y, por lo tanto, es más o menos segura. Ahora, la extensión para la autenticación también se puede utilizar de forma segura.
El comando VRFY
puede usarse para enumerar usuarios existentes en el sistema. Sin embargo, esto no siempre funciona. Dependiendo de la configuración del servidor SMTP, este podría emitir code 252
y confirmar la existencia de un usuario inexistente en el sistema. Puede encontrar una lista de todos los códigos de respuesta SMTP .
Parte de esta información es obligatoria, como la del remitente y la fecha de creación del correo electrónico. Otra información es opcional. Sin embargo, el encabezado del correo electrónico no contiene información necesaria para la entrega técnica. Se transmite como parte del protocolo de transmisión. Tanto el remitente como el destinatario pueden acceder al encabezado de un correo electrónico, aunque no sea visible a simple vista. La estructura de un encabezado de correo electrónico se define en .
Sin embargo, también podemos usar el script NSE para identificar el servidor SMTP de destino como un relé abierto mediante 16 pruebas diferentes. Si además imprimimos el resultado del escaneo en detalle, podremos ver qué pruebas está ejecutando el script.