Auditando un servidor SMTP

Publicada en Publicada en Análisis de vulnerabilidades, Enumeración y escaneo, Pruebas de concepto

Buenas!

El post de hoy NO se basa en nada nuevo, innovador y que no exista ya o existan diferentes entradas al respecto, pero se trata de una pequeña recolección de mecanismos, procedimientos o como quieras llamarlo para auditar un servidor SMTP.

SMTP (Simple Mail Transfer Protocol) o “protocolo para transferencia simple de correo”, es un protocolo de red utilizado para el intercambio de mensajes de correo electrónicos. El puerto oficial del protocolo SMTP es el 25. Por defecto es un protocolo sin cifrado, para ello se dispone del puerto 465 dedicado para SMTP "seguro", lo de seguro en seguridad obvio que no se puede garantizar, pero ya aplica mecanismos de cifrado.

Tras esta pequeña introducción obligada, ¿Qué tenemos que tener en cuenta para auditar un servidor SMTP?

En primer lugar, empleando un escaneo de puertos con Shodan/censys y cia para hacerlo pasivo, mientras que para activo empleamos Nmap, nuestro mejor amigo de toda la vida:

 

 

Una vez identificado, abrimos una conexión por Telnet o netcat y al acceder podemos ver el banner (nmap debería haberlo obtenido):

 

Para comenzar, un pequeño paréntesis para ver los comandos de SMTP:

HELO - Comando enviado por el cliente para identificarse. Ejemplo:  HELO 192.168.101 or HELO client.microsoft.com.
EHLO - Es similar al comando HELO. La diferencia se basa en comunicar al servidor que el cliente quiere usar el modo extendido de SMTP: ESMTP.

• STARTTLS - Emplear cifrado TLS para cifrar las comunicaciones pues por defecto SMTP se comunica en texto plano.
RCPT TO - Especifica la dirección de correo del destinatario.
DATA -   Comienza la transferencia del contenido del mensaje.
RSET - Resetear/abortar la comunicación..
MAIL - Especifica la dirección de correo del remitente.
QUIT - Cierra la conexión.
HELP - Comando de ayuda para listar los comandos habilitados en el servidor.
AUTH - Para autenticarse en el servidor.
VRFY - Comando para preguntar al servidor si un correo esta disponible o registrado en el servidor.

¿Qué pruebas se incluyen dentro de un análisis de un servidor SMTP?

  • Identificación del banner y búsqueda de posibles vulnerabilidades propias de la versión.
  • Enumeración de usuarios.
  • SMTP Relay
  • Incorrecto control de acceso para poder enviar un correo suplantando el origen.

 

Identificación del banner

Posibles opciones de obtener si se lo han dejado con la configuración por defecto:

  • Obtención del banner con la ejecución de Nmap.
  • Al acceder al servidor mediante Telnet o netcat
  • Metasploit cuenta con un módulo auxiliar: /scanner/smtp/smtp_version

 

 

Si no lo han quitado voluntariamente con cualquiera de las tres opciones citadas se puede obtener. Una vez obtenido el banner, el siguiente paso sería buscar posibles vulnerabilidades si la versión del software no se encuentra actualizada.

Enumeración de usuarios

Se cuenta con tres comandos interesantes como VRFY, EXPN y RCPT TO que pueden ser empleados para enumerar posibles usuarios registrados en el servidor de correo.

Realizándolo manualmente:

 

El comando EXPN se suele encontrarse deshabilitado, sin embargo, los otros dos no: RCPT TO y VRFY.

Automatizándolo a través de herramientas semiautomáticas:

  • Nmap

Nmap posee el script "smtp-enum-users.nse" que lista posibles usuarios empleando el comando EXPN. Su principal problema ya lo podeéis imaginar, si dicho comando está deshabilitado no obtendrá resultados.

Sintaxis: nmap --script smtp-enum-users.nse <<DIRECCION_IP>> -p 25

 

 

  • SMTP-user-enum de pentest-monkey

Instalada por defecto en Kali Linux.

URL: http://pentestmonkey.net/tools/user-enumeration/smtp-user-enum

Herramienta dedicada para realizar enumeración de usuarios, bien por usernames o dirección de correo. Además, permite seleccionar los comandos con los que se va a realizar dicha enumeración: VRFY, EXPN o RCPT. Por defecto, VRFY.

 

 

  • ISMTP

Venía instalada por defecto en Kali Linux, pero en las últimas versiones ya no.

Autor: Alton Johnson (alton.jx@gmail.com)

github: https://github.com/crunchsec/ismtp

 

 

Herramienta muy completa para realizar un análisis a un servidor SMTP. Dispone:

- Enumeración de usuarios.

- Testear SMTP Relay.

- Email spoofing.

- Enumeración de usuarios con los tres comandos citados.

 

Al detectar un usuario registrado dio un fallo y perdió la conexión, pero la herramienta funciona 😉

- Testear SMTP Relay.

 

  • Metasploit:  /scanner/smtp/smtp_enum

Metasploit cuenta con el módulo auxiliar: /scanner/smtp/smtp_enum para enumerar usuarios. Por defecto, lo realiza con el diccionario /usr/share/metasploit-framework/data/wordlists/unix_users.txt

 

  • SMTP Relay

Se cuenta con el módulo de metasploit auxiliary: /scanner/smtp/smtp_relay. Se tiene que configurar los parámetros MAIL FROM y MAILTO, el origen y destino del correo (por defecto ya viene configurado con valores fake).

 

 

Si fuera vulnerable se podría emplear para realizar campañas de phishing, spam o malware empleando un correo de empresa a priori "confiable".

Realizándolo a mano:

 

Se observa que el acceso a Relay está configurado correctamente.

Finalmente, otro tipo de pruebas sería ver si se puede introducir adjuntos, así como superar el tamaño máximo de los mismos.

De manera externa, se cuenta con el servicio de mxtoolbox (https://mxtoolbox.com/) que realiza un análisis sobre la configuración para tener una primera toma de contacto.

En este entrada se han detallado las pruebas que yo al menos realizo, desconozco si aplica alguna más, en ese caso os agradecería cualquier aportación en la sección de comentarios.

Espero que os sea útil y os haya gustado 😉

Nos vemos en el siguiente post!

N4xh4ck5

La mejor defensa, es un buen ataque.

3 comentarios en “Auditando un servidor SMTP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *