In quest’articolo vedremo come sia possibile, in certe condizioni, intercettare il traffico di una connessione SSL e appropriarsi di dati sensibili, quali le credenziali di un account di posta elettronica. È sempre bene ricordare che l’articolo ha fini esclusivamente didattici, e che l’utilizzo di queste tecniche su dispositivi terzi è punibile penalmente.
Inizieremo con una breve introduzione teorica, e poi vedremo come effettuare realmente i sopra citati attacchi.
Due attacchi informatici sottovalutati
Il Network Eavesdropping (più comunemente conosciuto come network sniffing) e il man-in-the-middle (letteralmente, “uomo nel mezzo”) sono due attacchi informatici molto sottovalutati. Il network sniffing è un attacco, a livello di rete, che consiste nel catturare i pacchetti trasmessi dai computer connessi alla rete in esame e nel ricercarvi informazioni sensibili quali password, token di sessione, o qualsiasi tipo di informazioni riservate.
Come vedremo tra poco, si tratta di un attacco molto semplice ma dal risultato potenzialmente devastante. L'attacco man-in-the-middle (abbreviato talvolta in MITM), invece, intercetta una comunicazione tra due sistemi di una rete, per esempio i dati scambiati in una connessione HTTP tra un client e un server.
Utilizzando diverse tecniche, l’attaccante divide la connessione originale in due parti, una tra il client e il MITM, l'altra tra MITM ed il server.
L’attaccante che è riuscito nel suo intento, cioè quello di inserirsi tra i due dispositivi vittima, è ora in grado non solo di impadronirsi di tutte le informazioni scambiate, ma anche di modificare a suo piacere parte o tutte le informazioni presenti nella comunicazione intercettata, fingendosi l'una o l'altra parte.
Sssltrip: intercettiamo il traffico SSL
Sslstrip è uno strumento ideato da Moxie Marlinspike (disponibile gratuitamente) che permette di estrarre informazioni da una sessione protetta, attaccando HTTP. Il tool esegue un attacco MITM sulla connessione HTTP tra la vittima e il server. Successivamente, esso sostituisce il link HTTPS con collegamenti HTTP, memorizzando i link che sono stati cambiati. Comunica con il client utilizzando il protocollo HTTP, e con il server con quello HTTPS. Le immagini (come la favicon) sono sostituite dalle icone più comuni di "secure lock", per "ingannare" visivamente l'utente.
Sslstrip registra tutto il traffico, incluse password e credenziali, che possono essere rubate senza che la vittima se ne accorga.
È bene notare, comunque, che l'attacco ad una connessione SSL presenta alcuni problemi non sempre risolvibili. Il problema più comune che si può incontrare è che un'eccezione di sicurezza venga visualizzata sulla macchina della vittima. Ciò accade se si usano strumenti che generano certificati self-signed. La maggior parte delle volte, l’attaccante può contare sulla sua vittima per bypassare questa tipologia di avvisi (è prassi comune accettare il certificato senza preoccuparsi di quello che sta succedendo). Nei moderni browser è sempre più difficile aggirare queste richieste, ma quasi mai impossibile.
Esempio pratico
Immaginiamo di considerare due PC, uno che rappresenta la vittima e il secondo l’attaccante. La vittima utilizza un qualsiasi sistema operativo, su cui ipotizziamo che giri il browser Mozilla Firefox, alla versione 53.0.3 (32 bit, multipiattaforma). L’attaccante utilizzerà il sistema operatico Kali Linux. Per avere successo l’attaccante utilizzerà un secondo tool chiamato ettercap.
Supponiamo di avere già installato su Kali Linux i due strumenti di cui avremo bisogno, vale a dire Sslstrip e ettercap (quest'ultimo disponibile nella maggior parte dei repository, nonchè liberamente scaricabile dal sito ufficiale). Apriamo quindi un terminale e per prima cosa configuriamo l'IP forwarding, come segue:
echo 1 > /proc/sys/net/ipv4/ip_forward
Configuriamo quindi la porta usando iptables:
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10000
Quest’ultimo commando dice a iptables di instradare tutto il traffico in arrivo alla porta 80 sulla porta 10000. Su quest'ultima porta verrà configurato Sslstrip in ascolto.
Avviamo ora Sslstrip, mettendolo quindi in ascolto sulla porta 10000:
sslstrip -a -f -l 10000 -w log_10000
Questo comando dice a Sslstrip di registrare tutto il traffico HTTP/HTTPS da e per il server (flag -a
), sostituire la favicon con l'icona del lucchetto per "ingannare" l'utente del browser (flag -f
), mettersi in ascolto sulla porta 10000 (flag -l
) e salvare tutte le informazioni nel file log_10000 (flag -w
).
Avviamo quindi Ettercap per creare un attacco MITM tra la vittima e il gateway:
sudo ettercap -Tqi wlan0 -M arp /192.168.1.101/ /192.168.1.1/
Vediamo meglio il significato dei parametri:
- il flag
-T
abilita l’interfaccia testuale; Wlan0
rappresenta l’interfaccia di rete utilizzata, che va adattata caso per caso;-M arp
lancia un attacco MITM verso gli host indicati; se si omettono gli indirizzi IP, ettercap effettuerà un attacco MITM su tutti gli host della rete.
Avviamo Firefox sulla macchina vittima e apriamo una connessione web sicura di una casella di posta elettronica. Su Ettercap, potremo facilmente monitorare la richiesta, e quindi visualizzare l’e-mail e la password trasmesse in chiaro con il protocollo HTTP.