Explotaciones SMTP
Los atacantes pueden aprovechar servidores SMTP inseguros para enviar spam y realizar phishing y otros ataques basados en correo electrónico. SMTP es un protocolo de servidor a servidor, que es diferente de los protocolos de cliente / servidor como POP3 o IMAP.
CONSEJO Antes de que pueda comprender cómo explotar las vulnerabilidades del protocolo de correo electrónico (, como las vulnerabilidades basadas en SMTP ), debe familiarizarse con los puertos TCP estándar utilizados en los diferentes protocolos de correo electrónico. Los siguientes puertos TCP se utilizan en los protocolos de correo electrónico más comunes:
- Puerto TCP 25: El puerto predeterminado utilizado en SMTP para comunicaciones no cifradas.
- Puerto TCP 465: El puerto registrado por la Autoridad de Números Asignados de Internet ( IANA ) para SMTP sobre SSL ( SMTPS ). SMTPS ha quedado en desuso a favor de STARTTLS.
- Puerto TCP 587: El protocolo SMTP seguro ( SSMTP ) para comunicaciones cifradas, como se define en RFC 2487, utilizando STARTTLS. Los agentes de usuario de correo ( MUA ) usan el puerto TCP 587 para enviar un correo electrónico. STARTTLS también se puede usar sobre el puerto TCP 25 en algunas implementaciones.
- Puerto TCP 110: El puerto predeterminado utilizado por el protocolo POP3 en comunicaciones no cifradas.
- Puerto TCP 995: El puerto predeterminado utilizado por el protocolo POP3 en comunicaciones cifradas.
- Puerto TCP 143: El puerto predeterminado utilizado por el protocolo IMAP en comunicaciones no cifradas.
- Puerto TCP 993: El puerto predeterminado utilizado por el protocolo IMAP en comunicaciones cifradas ( SSL / TLS ).
Relés abiertos SMTP
SMTP relé abierto es el término utilizado para un servidor de correo electrónico que acepta y relés ( es decir, envía correos electrónicos ) de cualquier usuario. Es posible abusar de estas configuraciones para enviar correos electrónicos falsificados, spam, phishing y otras estafas relacionadas con el correo electrónico. Nmap tiene un script NSE para probar configuraciones de relé abierto. Los detalles sobre el script están disponibles en https://svn.nmap.org/nmap/scripts/smtp-open-relay.nse, y el Ejemplo 5-6 muestra cómo puede usar el script contra un servidor de correo electrónico ( 10.1.2.14 ).
– SMTP Open Relay NSE Script
root@kali:/usr/share/nmap/scripts# **nmap –script smtp-open-relay.nse**
10.1.2.14
Starting Nmap 7.60 ( https://nmap.org ) at 2018-04-15 13:32 EDT
Nmap scan report for 10.1.2.14
Host is up (0.00022s latency).
PORT STATE SERVICE
25/tcp open smtp
|_smtp-open-relay: Server is an open relay (16/16 tests)
Nmap done: 1 IP address (1 host up) scanned in 6.82 seconds
root@kali:/usr/share/nmap/scripts#
Comandos SMTP útiles
Varios comandos SMTP pueden ser útiles para realizar una evaluación de seguridad de un servidor de correo electrónico. Los siguientes son algunos ejemplos:
- HELO: Se utiliza para iniciar una conversación SMTP con un servidor de correo electrónico. El comando es seguido por una dirección IP o un nombre de dominio ( por ejemplo, HELO 10.1.2.14 ).
- EHLO: Se utiliza para iniciar una conversación con un servidor SMTP extendido ( ESMTP ). Este comando se usa de la misma manera que el HELO comando.
- COMIENZA: Se utiliza para iniciar una conexión de Seguridad de capa de transporte ( TLS ) a un servidor de correo electrónico.
- RCPT: Se utiliza para denotar la dirección de correo electrónico del destinatario.
- DATOS: Se utiliza para iniciar la transferencia del contenido de un mensaje de correo electrónico.
- RSET: Se utiliza para restablecer ( cancelar ) una transacción por correo electrónico.
- CORREO: Se utiliza para denotar la dirección de correo electrónico del remitente.
- SALIR: Solía cerrar una conexión.
- AYUDA: Se usa para mostrar un menú de ayuda ( si está disponible ).
- AUTH: Se utiliza para autenticar un cliente en el servidor.
- VRFY: Se utiliza para verificar si existe el buzón de correo electrónico de un usuario.
- EXPN: Se utiliza para solicitar o ampliar una lista de correo en el servidor remoto.
El ejemplo 5-7 muestra un ejemplo de cómo puede usar algunos de estos comandos para revelar direcciones de correo electrónico que pueden existir en el servidor de correo electrónico. En este caso, se conecta al servidor de correo electrónico utilizando telnet seguido por el puerto 25. ( En este ejemplo, el servidor SMTP está utilizando comunicación de texto sin formato a través del puerto TCP 25. ) Entonces usas el VRFY Comando ( verify ) con el nombre de usuario del correo electrónico para verificar si la cuenta de usuario existe en el sistema.
El SMTP VRFY Comando
omar@kali:~$ **telnet 192.168.78.8 25**
Trying 192.168.78.8…
Connected to 192.168.78.8.
Escape character is ‘^]’.
220 dionysus.theartofhacking.org ESMTP Postfix (Ubuntu)
VRFY sys
252 2.0.0 sys
VRFY admin
550 5.1.1 <admin>: Recipient address rejected: User unknown in local
recipient table
VRFY root
252 2.0.0 root
VRFY omar
252 2.0.0 omar
los smtp-user-enum La herramienta ( que está instalada de manera predeterminada en Kali Linux ) le permite automatizar estos pasos de recopilación de información. El ejemplo 5-8 muestra el smtp-user-enum opciones y ejemplos de cómo usar la herramienta.
Ejemplo 5-8 – Usando el smtp-user-enum Herramienta
root@kali:~# **smtp-user-enum**
smtp-user-enum v1.2 ( http://pentestmonkey.net/tools/smtp-user-enum )
Usage: smtp-user-enum [options] ( -u username | -U file-of-usernames )
( -t host | -T file-of-targets )
options are:
-m n Maximum number of processes (default: 5)
-M mode Method to use for username guessing EXPN, VRFY or RCPT
(default: VRFY)
-u user Check if user exists on remote system
-f addr MAIL FROM email address. Used only in «RCPT TO» mode
(default: [email protected])
-D dom Domain to append to supplied user list to make email
addresses (Default: none)
Use this option when you want to guess valid email
addresses instead of just usernames e.g. «-D example.com» would guess
[email protected], [email protected], etc. Instead of simply the usernames
foo and bar.
-U file File of usernames to check via smtp service
-t host Server host running smtp service
-T file File of hostnames running the smtp service
-p port TCP port on which smtp service runs (default: 25)
-d Debugging output
-t n Wait a maximum of n seconds for reply (default: 5)
-v Verbose
-h This help message
Also see smtp-user-enum-user-docs.pdf from the smtp-user-enum tar
ball.
Examples:
$ smtp-user-enum -M VRFY -U users.txt -t 10.0.0.1
$ smtp-user-enum -M EXPN -u admin1 -t 10.0.0.1
$ smtp-user-enum -M RCPT -U users.txt -T mail-server-ips.txt
$ smtp-user-enum -M EXPN -D example.com -U users.txt -t 10.0.0.1
El ejemplo 5-9 muestra cómo usar el smtp-user-enum comando para verificar si el usuario omar existe en el servidor. La mayoría de los servidores de correo electrónico modernos deshabilitan VRFY y EXPN comandos. Es muy recomendable que desactive estos comandos SMTP. Los firewalls modernos también ayudan a proteger y bloquear cualquier intento de conexión SMTP utilizando estos comandos.
Ejemplo 5-9 – Enumerar un usuario utilizando el smtp-user-enum Herramienta
root@kali:~# **smtp-user-enum -M VRFY -u omar -t 192.168.78.8**
Starting smtp-user-enum v1.2 ( http://pentestmonkey.net/tools/smtp-user-
enum )
———————————————————-
| Scan Information |
———————————————————-
Mode ………………… VRFY
Worker Processes ……… 5
Target count …………. 1
Username count ……….. 1
Target TCP port ………. 25
Query timeout ………… 5 secs
Target domain …………
######## Scan started at Sat Apr 21 19:34:42 #########
192.168.78.8: omar exists
######## Scan completed at Sat Apr 21 19:34:42 #########
1 results.
1 queries in 1 seconds (1.0 queries / sec)
root@kali:~#
Explotaciones conocidas del servidor SMTP
Es posible aprovechar las hazañas que se han creado para aprovechar las vulnerabilidades conocidas relacionadas con SMTP. El ejemplo 5-10 muestra una lista de exploits SMTP conocidos utilizando el searchsploit comando en Kali Linux.
NOTA los Explotar título en la salida del ejemplo 5-10 se trunca y abrevia. Ingrese el comando searchsploit smtp en una amplia ventana de terminal en su instancia de Kali para ver los títulos completos.
Ejemplo 5-10 – Usando searchsploit para encontrar exploits SMTP conocidos
root@kali:~# **searchsploit smtp**
———————————————– ———————————
Exploit Title | Path
———————————————– ———————————
AA SMTP Server 1.1 – Crash (PoC) | windows/dos/14990.txt
Alt-N MDaemon 6.5.1 – IMAP/SMTP Remote Buffer | windows/remote/473.c
Alt-N MDaemon 6.5.1 SMTP Server – Multiple Com | windows/remote/24624.c
Alt-N MDaemon Server 2.71 SP1 – SMTP HELO Argu | windows/dos/23146.c
Apache James Server 2.2 – SMTP Denial of Servi | multiple/dos/27915.pl
BaSoMail 1.24 – SMTP Server Command Buffer Ove | windows/dos/22668.txt
BaSoMail Server 1.24 – POP3/SMTP Remote Denial | windows/dos/594.pl
BL4 SMTP Server < 0.1.5 – Remote Buffer Overfl | windows/dos/1721.pl
Blat 2.7.6 SMTP / NNTP Mailer – Local Buffer O | windows/local/38472.py
BulletProof FTP Server 2019.0.0.50 – ‘SMTP Ser | windows/dos/46422.py
Cisco PIX Firewall 4.x/5.x – SMTP Content Filt | hardware/remote/20231.txt
Citadel SMTP 7.10 – Remote Overflow | windows/remote/4949.txt
Cobalt Raq3 PopRelayD – Arbitrary SMTP Relay | linux/remote/20994.txt
CodeBlue 5.1 – SMTP Response Buffer Overflow | windows/remote/21643.c
CommuniCrypt Mail 1.16 – ‘ANSMTP.dll/AOSMTP.dl | windows/remote/12663.html
CommuniCrypt Mail 1.16 – SMTP ActiveX Stack Bu | windows/remote/16566.rb
Computalynx CMail 2.3 SP2/2.4 – SMTP Buffer Ov | windows/remote/19495.c
DeepOfix SMTP Server 3.3 – Authentication Bypa | linux/remote/29706.txt
dSMTP Mail Server 3.1b (Linux) – Format String | linux/remote/981.c
EasyMail Objects ‘EMSMTP.DLL 6.0.1’ – ActiveX | windows/remote/10007.html
EType EServ 2.9x – SMTP Remote Denial of Servi | windows/dos/22123.pl
Eudora 7.1 – SMTP ResponseRemote Remote Buffer | windows/remote/3934.py
Exim ESMTP 4.80 – glibc gethostbyname Denial o | linux/dos/35951.py
FloosieTek FTGate PRO 1.22 – SMTP MAIL FROM Bu | windows/dos/22568.pl
FloosieTek FTGate PRO 1.22 – SMTP RCPT TO Buff | windows/dos/22569.pl
Free SMTP Server 2.2 – Spam Filter | windows/remote/1193.pl
Free SMTP Server 2.5 – Denial of Service (PoC) | windows/dos/46937.py
GetSimple CMS My SMTP Contact Plugin 1.1.1 – C | php/webapps/49774.py
GetSimple CMS My SMTP Contact Plugin 1.1.2 – P | php/webapps/49798.py
GoodTech SMTP Server 5.14 – Denial of Service | windows/dos/1162.pl
Hastymail 1.x – IMAP SMTP Command Injection | php/webapps/28777.txt
i.Scribe SMTP Client 2.00b – ‘wscanf’ Remote F | windows/dos/7249.php
Inetserv 3.23 – SMTP Denial of Service | windows/dos/16035.py
Inframail Advantage Server Edition 6.0 < 6.37 | windows/dos/1165.pl
Ipswitch Imail Server 5.0 – SMTP HELO Argument | windows/dos/23145.c
iScripts AutoHoster – ‘main_smtp.php’ Traversa | php/webapps/38889.txt
Jack De Winter WinSMTP 1.6 f/2.0 – Buffer Over | windows/dos/20221.pl
LeadTools Imaging LEADSmtp – ActiveX Control ‘ | windows/remote/35880.html
…
<output omitted for brevity>
…
Softek MailMarshal 4 / Trend Micro ScanMail 1. | multiple/remote/21029.pl
SoftiaCom wMailServer 1.0 – SMTP Remote Buffer | windows/remote/1463.pm
SPECTral Personal SMTP Server 0.4.2 – Denial o | windows/dos/899.pl
SquirrelMail PGP Plugin – Command Execution (S | linux/remote/16888.rb
sSMTP 2.62 – ‘standardize()’ Buffer Overflow | linux/dos/34375.txt
SynaMan 4.0 build 1488 – SMTP Credential Discl | windows/webapps/45387.txt
SysGauge 1.5.18 – SMTP Validation Buffer Overf | windows/remote/41672.rb
TABS MailCarrier 2.51 – SMTP ‘EHLO’ / ‘HELO’ R | windows/remote/598.py
TABS MailCarrier 2.51 – SMTP EHLO Overflow (Me | windows/remote/16822.rb
YahooPOPs 1.6 – SMTP Port Buffer Overflow | windows/remote/577.c
YahooPOPs 1.6 – SMTP Remote Buffer Overflow | windows/remote/582.c
———————————————– ———————————
Shellcodes: No Results
root@kali:~#
