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.
Io non possiedo un unità GPS ma un Android che supporta il GPS. In questo articolo spiegherò come utilizzarlo insieme a Kismet.
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
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.
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
Kismet ora si avvierà, riceverà tutte le informazioni dagli access point intorno a sé e aspetterà solo che noi lo chiudiamo.
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:
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:
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
Analizzo poi i dati, in base alle mie esigenze
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.