Siamo sicuri che quelle che consideriamo transazioni sicure sul web lo sia realmente? Quanti di noi sono realmente attenti mentre digitano una password all’interno di un sito web e verificano che sia presente la scritta rassicurante HTTPS?
La verità è che non lo siamo abbastanza e molte volte, spesso troppe, per abitudine o per distrazione non verifichiamo e diventiamo vulnerabili a potenziali attacchi fraudolenti. Trarre in inganno un persona impossessandosi illecitamente di dati sensibili (password di accesso per esempio) può essere davvero molto semplice.
Premessa HTTP vs HTTPS
HTTP acronimo di HyperText Transfer Protocol è un protocollo applicativo utilizzato per il trasferimento di informazioni sul web. In parole spicciole: un client effettua una richiesta ad un server che gli restituisce una risposta. Le informazioni scambiate sono “in chiaro” e facilmente leggibili.
HTTPS è un protocollo di trasmissione sicura attraverso il web in cui le informazioni che sfruttano il protocollo HTTP avvengono all’interno di una connessione criptata (TLS o SSL) tra il client e il server.
In Fig.2 uno spaccato del protocollo HTTP e del modello TCP/IP.
SSL Strip: un attacco Man in the Middle
In questo articolo vedremo una tecnica di attacco fraudolento abbastanza semplice da realizzare che prende il nome di SSL Strip.
SSL Strip è un attacco di tipo Man in the Middle in cui un sito in HTTPS viene degradato a HTTP permettendo il transito di informazioni sensibili in chiaro e facilmente leggibili da un attaccante.
Una Vittima (A) richiede o passa dei dati ad un server (C). L’accatto MitM consiste nel fare passare tutto il traffico tra A e C dal computer dell’attaccante (B). Ovviamente A non se ne deve accorgere.
Nel caso specifico di un sito web che utilizza HTTPS, l’attacco SSL Strip fa transitare le informazioni criptate solo da B a C che le intercetta e le passa ad A in chiaro tramite il più semplice HTTP. In questo modo sul browser del computer A non compaiono avvisi di allerta che si verificherebbero invece nel caso in cui l’attaccante compromettesse in qualsiasi maniera il certificato di sicurezza rilasciato dal server. Come si può evincere questo genere di attacco sfrutta molto la distrazione dell’utente che non verifica la presenza di una connessione sicura.
SSL Strip: prerequisiti e comandi
Per effettuare questo tipo di attacco è sufficiente utilizzare una distribuzione Kali Linux anche su macchina virtuale e seguire queste semplici istruzioni. L’attacco funziona solo all’interno di una rete LAN e può trasformare il nostro vicino nel nostro peggior nemico.
La prima cosa da fare è abilitare l’ip forwarding sulla macchina Kali affinché tutti i pacchetti IP possano passare attraverso la macchina in modo totalmente trasparente.
echo 1 > /proc/sys/net/ipv4/ip_forward
Successivamente aggiungiamo una regola sul firewall iptables che permetterà di acquisire tutto il traffico che la vittima effettua sulla porta 80 (HTTP) ridirigendolo su una porta diversa su cui metteremo in ascolto sslstrip. Quest’ultimo si occuperà di intercettare tutte le richieste di connessioni HTTPS trasformandole in semplici e chiare HTTP.
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
Verifichiamo che la regola sul firewall sia stata creata correttamente.
iptables -t nat -L PREROUTING
Ora arriva il bello: fare credere al pc vittima che tutto il traffico debba passare su di noi. Verrò effettuato quello che viene comunemente chiamato “avvelenamento delle tabelle ARP” o ARP poisoning. Arpspoof invia in rete una gran quantità di pacchetti ARP e fa credere al pc vittima (o ai pc vittime) che il pc dell’attaccante è il gateway della rete.
arpspoof -i 'interfaccia' -t 'IP gateway' -r 'IP vittima'
Mi son dimenticato! Il firewall è meglio che accetti richieste sulla porta di redirect.
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
Ora avviamo sslstrip e mettiamolo in ascolto sulla porta indicata in precedenza.
sslstrip -l 8080
Sslstrip salva le richieste POST in un file di log. Andandolo a leggere in diretta su un nuovo terminale possiamo verificare che tutto funzioni al meglio.
tail -f sslstrip.log
Ecco il flusso di dati in diretta e le password che passando in chiaro sono facilmente leggibili sul computer attaccante.
Contromisure
Come avete potuto vedere effettuare questo tipo di attacco non è difficile (basterebbe in effetti fare copia incolla di quattro comandi). L’unica “fortuna” è che funziona come detto in precedenza solo su rete LAN riducendo quindi il campo di azione dell’attaccante.
La cosa che invece lascia basiti nel 2017 è la presenza di molti siti istituzionali e bancari, provati nella giornata di ieri e oggi, vulnerabili a questo tipo attacco che ha le sue contromisure nel meccanismo di sicurezza HSTS pubblicato nel lontano 2012.
HSTS (HTTP Strict Transport Security) garantisce che tra il client e il server non si verifichino attacchi di downgrade come SSL strip. Il server comunica al browser di accettare solo richieste attraverso HTTPS. Il browser che supporta HSTP avvisa l’utente con un messaggio di allerta se un sito viene degradato.
L’utente ovviamente non dovrà premere su “continua” come spesso fa non leggendo mai i pop-up ma sul tasto “allontanati da questo sito” mettendosi al sicuro da possibili frodi.