Simple Mail Transfer Protocol è il protocollo standard utilizzato per la trasmissione via internet di e-mail.
Durante una scansione delle porte di un server è facile trovare il servizio aperto, ma non è altrettanto facile trovarne vulnerabilità. In questo articolo vedremo alcune modalità per eseguire l’enumerazione di utenti attivi su di esso.
Protocolli di posta
I principali protocolli di porta sono tre:
- SMTP: permette di trasferire la posta da un server ad un altro, quindi consente solo l’operazione di invio e non di ricezione; utilizza la porta 25.
- POP3: sistema semplice di ricezione dei messaggi, utilizza (di default) la porta 110. I messaggi devono esser scaricati sul computer dell’utente (a differenza di IMAP). Questo protocollo non permette cifratura, quindi le credenziali inviate passano in chiaro;
- IMAP: anch’esso protocollo di ricezione, sfrutta la porta 143 o (nel caso di cifratura) 993. Questo servizio permette le procedure di sincronizzazione e di conseguenza il mantenimento delle mail sul server in modo da renderle accessibile ad altri host.

Per chi volesse approfondire, qui vengono descrittti i principali protocolli.
Identificazione del servizio
La verifica che il servizio sia attivo viene fatta in fase di scansione; per cui se dopo una scansione della rete la porta 25 è aperta (ma può essere diversa), l’host attaccato avrà il servizio attivo

Una volta trovato, possiamo utilizzare alcuni comandi per verificare se è possibile utilizzare il server come relay, ossia sfruttarlo per inviare e-mail in maniera anonima
┌─[mrtouch@parrot]─[~] └──╼ $telnet 192.168.1.125 25 Trying 192.168.1.125... Connected to 192.168.1.125. Escape character is '^]'. 220 vulnix ESMTP Postfix (Ubuntu) HELO 192.168.1.109 250 vulnix MAIL FROM:wbe@mail.com 250 2.1.0 Ok RCPT TO:me@mail.it 554 5.7.1 <me@mail.it>: Relay access denied

Altri modi per testare questa malconfigurazione possono essere:
- script di nmap;
- metasploit.

Enumerazione degli utenti
Una volta accertato che non è vulnerabile, passiamo all’enumerazione degli utenti; per eseguire questa operazione ci sono essere diversi modi, sia con tool automatici sia con comandi manuali.
Nmap, come di consueto, ha uno script apposito per l’enumerazione degli utenti, smtp-enum-users:
─[mrtouch@parrot]─[~] └──╼ $nmap --script smtp-enum-users -p 25 192.168.1.125 Starting Nmap 7.60 ( https://nmap.org ) at 2017-10-14 22:56 CEST Nmap scan report for 192.168.1.125 Host is up (0.00034s latency). PORT STATE SERVICE 25/tcp open smtp | smtp-enum-users: |_ Method RCPT returned a unhandled status code. Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds
Ma in questo caso sembra non funzionare.
Passo quindi a metasploit, con il modulo smtp_enum

Bingo! Abbiamo trovato diversi utenti attivi sul servizio.
Un’altra modalità è il software smtp-user-enum:
┌─[mrtouch@parrot]─[~] └──╼ $smtp-user-enum -M VRFY -U /usr/share/metasploit-framework/data/wordlists/unix_users.txt -t 192.168.1.125 Starting smtp-user-enum v1.2 ( http://pentestmonkey.net/tools/smtp-user-enum ) ---------------------------------------------------------- | Scan Information | ---------------------------------------------------------- Mode ..................... VRFY Worker Processes ......... 5 Usernames file ........... /usr/share/metasploit-framework/data/wordlists/unix_users.txt Target count ............. 1 Username count ........... 113 Target TCP port .......... 25 Query timeout ............ 5 secs Target domain ............ ######## Scan started at Sat Oct 14 23:03:04 2017 ######### 192.168.1.125: ROOT exists 192.168.1.125: backup exists 192.168.1.125: bin exists ................. 192.168.1.125: user exists 192.168.1.125: www-data exists 192.168.1.125: vulnix exists ######## Scan completed at Sat Oct 14 23:03:05 2017 ######### 26 results. 113 queries in 1 seconds (113.0 queries / sec)
Nel caso si volesse provare manualmente, è possibile utilizzare telnet
┌─[mrtouch@parrot]─[~] └──╼ $telnet 192.168.1.125 25 Trying 192.168.1.125... Connected to 192.168.1.125. Escape character is '^]'. 220 vulnix ESMTP Postfix (Ubuntu) vrfy ROOT.localdomain 550 5.1.1 : Recipient address rejected: User unknown in local recipient table vrfy root.localdomain 550 5.1.1 : Recipient address rejected: User unknown in local recipient table vrfy root 252 2.0.0 root vrfy hacktips 550 5.1.1 : Recipient address rejected: User unknown in local recipient table vrfy sys 252 2.0.0 sys vrfy vulnix 252 2.0.0 vulnix
In queso modo abbiamo identificato almeno tre account disponibili (il comando vrfy chiede al server se il determinato utente richiesto è valido).
Conclusioni
Una volta identificati gli utenti possiamo passare alla prossima fase, ossia quella dello scanning di altri servizi, utilizzando le informazioni raccolte fin’ora o eseguire direttamente un bruteforce sul servizio ssh, avendo già scoperto alcuni utenti del sistema.
Per chi se lo fosse chiesto, la macchina che ho utilizzato è vulnix, mentre per chi volesse approfondire attacchi a SMTP, consiglio SMTP – Always a victim of good time (SANS) e SMTP Injection via recipient email addresses.
Se ti è piaciuto l’articolo condividi, dona, spargi il verbo! HackTips







