💻SMTP
El Simple Mail Transfer Protocol( SMTP) es un protocolo para enviar correos electrónicos en una red IP.
¿Cómo funciona SMTP?
Se puede utilizar entre un cliente de correo electrónico y un servidor de correo saliente o entre dos servidores SMTP. SMTP a menudo se combina con los protocolos IMAP o POP3, que pueden recuperar y enviar correos electrónicos. En principio es un protocolo basado en cliente-servidor, aunque se puede utilizar SMTP entre un cliente y un servidor y entre dos servidores SMTP. En este caso, un servidor actúa efectivamente como cliente.
De forma predeterminada, los servidores SMTP aceptan solicitudes de conexión en el puerto 25
. Sin embargo, los servidores SMTP más nuevos también utilizan otros puertos como el puerto TCP 587
. Este puerto se utiliza para recibir correo de usuarios/servidores autenticados, normalmente utilizando el comando STARTTLS para cambiar la conexión de texto sin formato existente a una conexión cifrada. Los datos de autenticación están protegidos y ya no son visibles en texto sin formato en la red.
Al inicio de la conexión, la autenticación ocurre cuando el cliente confirma su identidad con un nombre de usuario y contraseña. Luego se pueden transmitir los correos electrónicos. Para ello, el cliente envía al servidor las direcciones del remitente y del destinatario, el contenido del correo electrónico y otra información y parámetros. Una vez transmitido el correo electrónico, la conexión se vuelve a finalizar. Luego, el servidor de correo electrónico comienza a enviar el correo electrónico a otro servidor SMTP.
SMTP funciona sin cifrar, sin medidas adicionales y transmite todos los comandos, datos o información de autenticación en texto sin formato. Para evitar la lectura no autorizada de datos, el 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 sólo los usuarios autorizados envíen correos electrónicos. Para ello, la mayoría de los servidores SMTP modernos admiten la extensión del protocolo ESMTP con SMTP-Auth. Después de enviar su correo electrónico, el cliente SMTP, también conocido como Mail User Agent
( MUA
), lo convierte en un encabezado y un cuerpo y los carga en el servidor SMTP. Éste tiene la denominada 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 el spam y luego lo almacena.
Para aliviar el MTA, en ocasiones va precedido de un Mail Submission Agent
( MSA
), que comprueba la validez, es decir, el origen del correo electrónico. Este MSA
también se llama servidor. Relay
. Estos son muy importantes más adelante, ya que en muchos servidores SMTP pueden realizarse Open Relay Attacks
debido a una configuración incorrecta. Discutiremos este ataque y cómo identificar su punto débil un poco más adelante. Luego, el MTA busca 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 vuelven a ensamblar para formar un correo electrónico completo. Desde allí, Mail delivery agent
( MDA
) lo transfiere al buzón del destinatario.
Cliente ( |
| Agente de envío ( |
| Open Relay ( |
| Agente de entrega de correo ( |
| Buzón ( |
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 utilizable. Aunque las especificaciones del protocolo prevén este tipo de notificación, su formato no se especifica de forma predeterminada, por lo que normalmente sólo se devuelve un mensaje de error en inglés, incluido el encabezado del mensaje no entregado.
Los usuarios no se autentican cuando se establece una conexión y, por tanto, el remitente de un correo electrónico no es fiable. Como resultado, los repetidores SMTP abiertos a menudo se utilizan indebidamente para enviar spam en masa. Para no ser rastreados, los autores utilizan direcciones de remitentes falsas y arbitrarias (mail spoofing). Hoy en día, se utilizan muchas técnicas de seguridad diferentes para evitar el uso indebido de servidores SMTP. Por ejemplo, los correos electrónicos sospechosos se rechazan o se ponen en cuarentena (carpeta de correo no deseado). Por ejemplo, los responsables de esto son el protocolo de identificación DomainKeys (
DKIM
), el Sender Policy Framework (SPF
).
Para ello se ha desarrollado una extensión para SMTP llamada Extended SMTP
( ESMTP
). Cuando la gente habla de SMTP en general, normalmente se refiere a ESMTP. ESMTP usa TLS, que se realiza después del EHLO
comando enviando STARTTLS
. Esto inicializa la conexión SMTP protegida por SSL y, a partir de este momento, toda la conexión queda cifrada y, por tanto, más o menos segura. Ahora la extensión AUTH PLAIN para autenticación también se puede utilizar de forma segura.
Configuración predeterminada
Cada servidor SMTP se puede configurar de muchas maneras, al igual que todos los demás servicios. Sin embargo, existen diferencias porque el servidor SMTP solo es responsable 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 es una extensión de servicio utilizada para autenticar al cliente. |
| El cliente inicia sesión con el nombre de su computadora y así inicia la sesión. |
| El cliente nombra el remitente del correo electrónico. |
| El cliente nombra el destinatario del correo electrónico. |
| El cliente inicia la transmisión del correo electrónico. |
| El cliente aborta la transmisión iniciada pero mantiene la conexión entre el cliente y el servidor. |
| El cliente comprueba si hay un buzón disponible para la transferencia de mensajes. |
| El cliente también verifica si hay un buzón disponible para enviar mensajes con este comando. |
| El cliente solicita una respuesta del servidor para evitar la desconexión por tiempo de espera. |
| El cliente finaliza la sesión. |
Para interactuar con el servidor SMTP, podemos usar la telnet
herramienta para inicializar una conexión TCP con el servidor SMTP. La inicialización real de la sesión se realiza con el comando mencionado anteriormente, HELO
o EHLO
.
Telnet-HELO/EHLO
El comando VRFY
se puede utilizar para enumerar los usuarios existentes en el sistema. Sin embargo, esto no siempre funciona. Dependiendo de cómo esté configurado el servidor SMTP, el servidor SMTP puede emitir code 252
y confirmar la existencia de un usuario que no existe en el sistema. Puede encontrar una lista de todos los códigos de respuesta SMTP aquí .
Telnet-VRFY
Por lo tanto, nunca se debe confiar enteramente en los resultados de las herramientas automáticas. Después de todo, ejecutan comandos preconfigurados, pero ninguna de las funciones indica explícitamente cómo el administrador configura el servidor probado.
En ocasiones es posible que tengamos que trabajar a través de un proxy web. También podemos hacer que este proxy web se conecte al servidor SMTP. El comando que enviaríamos entonces se vería así: CONNECT 10.129.14.128:25 HTTP/1.0
Todos los comandos que ingresamos en la línea de comando para enviar un correo electrónico los conocemos de todos los programas cliente de correo electrónico como Thunderbird, Gmail, Outlook y muchos otros. Especificamos el destinatario subject
del correo electrónico, CC, BCC y la información que queremos compartir con otros. Por supuesto, lo mismo funciona desde la línea de comando.
Enviar un correo electrónico
El encabezado del correo es el portador de una gran cantidad de información interesante en un correo electrónico. 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 en su camino, el contenido y formato del mensaje, y el remitente y el destinatario.
Parte de esta información es obligatoria, como la información del remitente y cuándo se creó el correo electrónico. Otra información es opcional. Sin embargo, el encabezado del correo electrónico no contiene ninguna 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 primera vista. La estructura de un encabezado de correo electrónico está definida por RFC5322 .
Configuraciones peligrosas
Para evitar que los correos electrónicos enviados sean filtrados por filtros de spam y no lleguen al destinatario, el remitente puede utilizar un servidor de retransmisión en el que el destinatario confíe. Es un servidor SMTP conocido y verificado por todos los demás. Como regla general, el remitente debe autenticarse en el servidor de retransmisión antes de utilizarlo.
A menudo, los administradores no tienen una visión general de qué rangos de IP deben permitir. Esto da como resultado una mala configuración del servidor SMTP que todavía encontraremos a menudo en las pruebas de penetración externas e internas. Por tanto, permiten que todas las direcciones IP no provoquen errores en el tráfico de correo electrónico y así no perturben o interrumpan involuntariamente la comunicación con los clientes actuales y potenciales.
Configuración de Open Relay
Con esta configuración, este servidor SMTP puede enviar correos electrónicos falsos y así inicializar la comunicación entre varias partes. Otra posibilidad de ataque sería falsificar el correo electrónico y leerlo.
Enumerando el servicio
Los scripts predeterminados de Nmap incluyen smtp-commands
, que utiliza el comando EHLO
para enumerar todos los comandos posibles que se pueden ejecutar en el servidor SMTP de destino.
Nmap
Sin embargo, también podemos utilizar el script NSE smtp-open-relay para identificar el servidor SMTP de destino como un Open Relay mediante 16 pruebas diferentes. Si también imprimimos el resultado del escaneo en detalle, también podremos ver qué pruebas está ejecutando el script.
Scripts NSE disponibles
Nmap - Open Relay
Enumeración de usuarios SMTP
Lo podemos instalar de la siguiente manera:
Última actualización