Cosa è il WarDriving ed esempio pratico da Milano a Bergamo

Tempo di lettura: 9 minuti
Data pubblicazione: October 11, 2016

Sebbene il termine WarDriving sembra abbia a che fare con attività criminali e molti si confondano, non è nulla di tutto ciò. Esso è semplicemente l’atto di muoversi in un area più o meno grande mappando la presenza di reti wireless a fini statistici. Si può camminare, guidare, andare sul treno con il proprio dispositivo e analizzare le reti che si incontrano, senza che il proprietario ne sappia nulla. Il termine deriva da WarDialing, introdotto nel film WarGame. Il WarDialing è simile al WarDriving, ma consiste(va) nel chiamare numeri in modo sequenziale con un computer per rilevare la presenza di computer a loro volta connessi ad un modem.

Google stessa, durante la raccolta di foto per StreetView, ha ammesso di aver sniffato tutte le reti e intercettato il traffico di quelle non protette con chiave di sicurezza. Ricordo che trovare un access point non è reato, mentre accedervi abusivamente o intercettare il traffico dello stesso si.

Cosa ci serve?

  • Computer portatile, ovviamente;
  • scheda wireless;
  • antenna esterna per avere più segnale, ma non è necessaria.
  • un unità GPS per rilevare la posizione (come questa) o uno smartphone che supporta il GPS;
  • un programma di WarDriving: per Linux Kismet, per Windows NetStumbler e per Mac Kismac.

Io non possiedo un unità GPS ma un Android che supporta il GPS. In questo articolo spiegherò come utilizzarlo insieme a Kismet.

Introduzione e raccolta dati

Dopo aver scaricato e installato Kismet, devo configurare il mio dispositivo in modo che possa dialogare con Android e ricevere i dati del GPS. Per fare ciò scarico e installo _android-sdk, gpsd _e _gpsd-clients _con il seguente comando

sudo apt-get install android-sdk gpsd gpsd-clients

Una volta installato, controllo che nella cartella di installazione (nel mio caso /usr/share/android-sdk) sia presente la cartella platform-tools e all’interno della stessa il file adb. Se non è presente, dovete avviare l’applicazione android (basta digitare sul terminale android) e scaricare il pacchetto Android SDK Platform-Tools

wardrivingiandroidadb
wardrivingiandroidadb

Una volta conclusa l’operazione, attivo la modalità USB Debugging Mode sullo smartphone, scarico e apro l’applicazione BlueNMEA e collego lo smartphone al computer tramite un semplice cavo USB.

Screenshot dell'applicazione connessa al computer
Screenshot dell'applicazione connessa al computer

Sul computer mi posiziono nella cartella platform-tools e digito

./adb forward tcp:4352 tcp:4352

Questo comando mi permetterà di girare le connessioni tcp sulla porta 4352 dal telefono al computer e viceversa. Fatto ciò, avvio gpsd

gpsd -N -n -D5 tcp://localhost:4352

Se avete problemi, consigli di leggere questa guida.

In questo modo inizio a ricevere informazioni sulla posizione. Avvio finalmente Kismet seguendo tutte le istruzioni che mi vengono fornite. Quando richiede quale sarà l’interfaccia da utilizzare, basta digitare ifconfig (o ip a) e vedere quella attiva (nel mio caso wlan0)

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether bc:[..]:5c brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether f0:[..]:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.104/24 brd 192.168.1.255 scope global dynamic wlan0
       valid_lft 84440sec preferred_lft 84440sec
    inet6 fe80::[..]:2539/64 scope link 
       valid_lft forever preferred_lft forever
wardrivingkismet
wardrivingkismet

Kismet ora si avvierà, riceverà tutte le informazioni dagli access point intorno a sé e aspetterà solo che noi lo chiudiamo.

wardrivingkismet3
wardrivingkismet3

Per chiuderlo, si può andare sia nel menu in alto a destra sia digitare CTRL+C. Una volta finito, creerà nella cartella in cui lo abbiamo avviato una serie di file, tutti di diverse tipologie.

┌─[mrtouch@parrot]─[~/Desktop/wardriving/]
└──╼ $ls
Kismet-20161010-16-17-09-1.alert   Kismet-20161010-16-17-09-1.netxml
Kismet-20161010-16-17-09-1.gpsxml  Kismet-20161010-16-17-09-1.pcapdump
Kismet-20161010-16-17-09-1.nettxt

Il file:

  • .alert contiene gli avvisi e gli errori che Kismet ha avuto;
  • .gpsxml contiene le informazioni in merito ai soli dati gps raccolti;
  • .nettxt contiene un file di testo con tutte le informazioni raccolte;
  • .netxml contiene un file xml con tutte le informazioni raccolte;
  • .pcadump è possibile caricarlo su Wireshark e analizzarlo da li.

Analisi dei dati

Come scritto nel titolo, ho analizzato gli access point nella tratta Milano-Bergamo sul treno. Vorrei specificare che non ho sniffato il traffico, non ho attaccato gli access point, i dati raccolti sono privati e finiranno nel cestino finito questo articolo. Li ho raccolti a solo scopo dimostrativo e per fare un esempio di un WarDriving con molti dati.

Un esempio possibile di analisi dai dati è quello di caricare l’output su Google Maps ed osservare la posizione dei vari access point e il percorso che abbiamo compiuto. Per fare ciò, dobbiamo per prima cosa convertire il file _.netxml _in un file KML. Digito

giskismet -x Kismet-DATA.netxml

In questo modo gikismet analizzerà i dati e produrrà un database contenente gli stessi (ci metterà un po’, in base a quanti AP abbiamo catturato). Digito ora

 giskismet -q "SELECT * FROM WIRELESS" -o output.kml

in modo da avere un file KML che potremo caricare su Google Maps. Per caricarlo sulla mappa ci sono diversi modi, io lo caricherò utilizzando il mio account. I passi che compio sono:

  1. effettuo il login su Google Maps;
  2. nel menu a destra clicco su _ I miei posti_;
  3. Clicco su Maps e in basso ci sarà la voce Crea mappa;
  4. Importo il file output.kml appena creato.
Mappa con gli access point
Mappa con gli access point

Un altro esempio è quello di analizzare i dati che abbiamo con un software di Statistica. Possiamo usare un banale Excel oppure uno più complesso come R. Nel mio caso utilizzerò proprio R.

Per convertire l’output di Kismet in un file leggibile (csv) utilizzo questo semplice script. Per utilizzarlo basta spostarlo nella cartella in cui abbiamo il file da convertire e digitare

python netxml_to_csv.py Kismet-DATA.netxml output.csv

Attenzione che la conversione sia andata a buon fine. Ho controllato la mia e circa un centinaio di client non sono stati riconosciuti e li ho dovuti eliminare.

Carico poi il file su R, visualizzo le colonne e quanti dati ho

kismetr1
kismetr1

Analizzo poi i dati, in base alle mie esigenze

Diagramma a barre con i diversi tipi di protezione
Diagramma a barre con i diversi tipi di protezione
Diagramma a torta con i diversi tipi di protezione
Diagramma a torta con i diversi tipi di protezione
tipidiprotezione5
tipidiprotezione5

Conclusioni

Il WarDriving è un ottimo modo per capire che tipologie di access point si hanno intorno. Si può fare in una piazza pubblica per scoprire se ci sono Wi-Fi aperti o con una protezione debole come WEP, si può fare quando si viaggia molto, per farsi un’idea di quanti AP ci sono mentre passiamo, come si chiamano, etc. etc. Per chi volesse approfondire potrebbe trovare utile il libro WarDriving and Wireless Penetration Testingo il video di irongeek.