Antes que todo, quisiera agradecer a Leo_, quien donó prestó el GPS para que los del hacklab pudieramos jugar.
Y para los que no saben lo que es el Wardriving:
Se llama wardriving a la búsqueda de redes inalámbricas Wi-Fi desde un vehículo en movimiento. Implica usar un coche o camioneta y un ordenador equipado con Wi-Fi, como un portátil o una PDA, para detectar las redes. Esta actividad es parecida al uso de un escáner para radio. (Citado textualmente desde Wikipedia.)
La idea de este post, es hacer un mini tutorial de cómo hice funcionar (gracias a la ayuda de Nozelf) el GPS en GNU/Linux junto a las herramientas de sniffing kismet y a gpsdrive. Debo dejar claro que no enseñaré a configurar el bluetooth ni nada por el estilo, asumo que todo eso ya está configurado.
Lo primero que haremos será buscar el dispositivo y asociarlo a nuestra máquina, para esto usaremos hcitool y rfcomm.
[root@balcebu ~]# hcitool scan
Scanning ...
00:02:C7:15:B3:A3 BTGPS 15B3A3
[root@balcebu ~]# rfcomm bind /dev/rfcomm0 00:02:C7:15:B3:A3
[root@balcebu ~]#
Para ver si el GPS está entregando algún tipo de información, podemos hacer un cat directamente al dispositivo.
[root@balcebu ~]# cat /dev/rfcomm0
PGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPRMC,000211.991,V,0000.0000,N,00000.0000,E,0.000000,,101102,,*0A
$GPVTG,,T,,M,0.000000,N,0.000000,K*4E
$GPGGA,000212.991,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*76
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPRMC,000212.991,V,0000.0000,N,00000.0000,E,0.000000,,101102,,*09
$GPVTG,,T,,M,0.000000,N,0.000000,K*4E
$GPGGA,000213.991,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*77
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPRMC,000213.991,V,0000.0000,N,00000.0000,E,0.000000,,101102,,*08
$GPVTG,,T,,M,0.000000,N,0.000000,K*4E
$GPGGA,000214.991,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*70
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPRMC,000214.991,V,0000.0000,N,00000.0000,E,0.000000,,101102,,*0F
$GPVTG,,T,,M,0.000000,N,0.000000,K*4E
$GPGGA,000215.991,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*71
Hasta ahora todo en orden. Ahora debemos configurar el kismet, el fichero de configuración que tengo yo es:
version=2007.09.R1 servername=Kismet suiduser=zerial networkmanagersleep=true source=iwlagn,wlan0,iwl vapdestroy=true channelhop=true channelvelocity=5 channelsplit=true defaultchannels=IEEE80211b:1,6,11,2,7,3,8,4,9,5,10 defaultchannels=IEEE80211g:1,6,11,2,7,3,8,4,9,5,10 defaultchannels=IEEE80211a:36,40,44,48,52,56,60,64 defaultchannels=IEEE80211ab:1,6,11,2,7,3,8,4,9,5,10,36,40,44,48,52,56,60,64 tcpport=2501 allowedhosts=127.0.0.1 bindaddress=127.0.0.1 maxclients=5 gps=true gpshost=localhost:2947 gpsmodelock=false alert=NETSTUMBLER,10/min,1/sec alert=WELLENREITER,10/min,1/sec alert=LUCENTTEST,10/min,1/sec alert=DEAUTHFLOOD,10/min,2/sec alert=BCASTDISCON,10/min,2/sec alert=CHANCHANGE,5/min,1/sec alert=AIRJACKSSID,5/min,1/sec alert=PROBENOJOIN,10/min,1/sec alert=DISASSOCTRAFFIC,10/min,1/sec alert=NULLPROBERESP,10/min,1/sec alert=BSSTIMESTAMP,10/min,1/sec alert=MSFBCOMSSID,10/min,1/sec alert=LONGSSID,10/min,1/sec alert=MSFDLINKRATE,10/min,1/sec alert=MSFNETGEARBEACON,10/min,1/sec alert=DISCONCODEINVALID,10/min,1/sec alert=DEAUTHCODEINVALID,10/min,1/sec allowkeytransmit=true writeinterval=300 trackivs=false sound=false soundplay=/usr/bin/play sound_new=${prefix}/share/kismet/wav/new_network.wav sound_traffic=${prefix}/share/kismet/wav/traffic.wav sound_junktraffic=${prefix}/share/kismet/wav/junk_traffic.wav sound_alert=${prefix}/share/kismet/wav/alert.wav speech=false festival=/usr/bin/festival flite=false darwinsay=false speech_voice=default speech_type=nato speech_encrypted=New network detected, s.s.i.d. %s, channel %c, network encrypted. speech_unencrypted=New network detected, s.s.i.d. %s, channel %c, network open. ap_manuf=ap_manuf client_manuf=client_manuf metric=false waypoints=true waypointdata=/home/zerial/.gpsdrive/way.txt waypoint_essid=true alertbacklog=50 logtypes=dump,network,csv,xml,weak,cisco,gps trackprobenets=true noiselog=false corruptlog=true beaconlog=true phylog=true mangledatalog=true fuzzycrypt=wtapfile,wlanng,wlanng_legacy,wlanng_avs,hostap,wlanng_wext,ipw2200,ipw2915 fuzzydecode=wtapfile,radiotap_bsd_a,radiotap_bsd_g,radiotap_bsd_bg,radiotap_bsd_b,pcapfile netfuzzycrypt=true dumptype=wiretap dumplimit=0 logdefault=Kismet logtemplate=%n-%d-%i.%l piddir=/var/run/ configdir=%h/.kismet/ ssidmap=ssid_map groupmap=group_map ipmap=ip_map
Nota: Tuve que instalar una version antigua de Kismet ya que tuve conflictos con la más nueva.
Cuando tengamos configurado kismet y, antes de ejecutarlo, debemos setear nuestra interfáz en modo monitor y correr gpsd. Lo primero va a depender del driver que estemos usando.
En los casos más comunes son:
Intel, broadcom, ralink, realtek, entre otas:# iwconfig wlan0 mode monitor
En la mayoría:# airmon-ng wlan0 start
En las con madwifi (atheros, zydass)# wlanconfig ath create wlandev wifi0 wlanmode monitor
Y el gpsd lo corremos:# gpsd -F /tmp/gps.socket /dev/rfcomm0
Ya podemos arrancar el kismet. La pantalla que veremos será algo similar a:
Son todas las redes que captura nuestra interfáz wireless. Pero a lo que nosotros nos interesa, es el fichero Way Points que se está guardando, según nuestro kismet.conf, en el directorio ~/.gpsdrive/way.txt.
[zerial@balcebu ~]$ cat ~/.gpsdrive/way-ssid.txt
GASPAR -33.442875 -70.598656
RED_ANDRES -33.442886 -70.598724
EDSOIT -33.442875 -70.598656
jaguar house 0.000000 0.000000
Visitas Jaguar 0.000000 0.000000
Rodrigo_2008 -33.442875 -70.598656
costa2 -33.442881 -70.598656
SUPERTALDO -33.442886 -70.598724
Fidelizador.com -33.442881 -70.598656
CDAguilucho -33.442875 -70.598656
CDAguilucho -33.442875 -70.598656
CDAguilucho -33.442881 -70.598656
CDAguilucho -33.442881 -70.598656
WebSTAR -33.442875 -70.598656
Prueba -33.442881 -70.598656
Lo que vemos son los nombres de las señales, longitud y latitud. Ya con toda ésta información, podemos "graficarla" en algun mapa, por ejemplo, el de gpsdrive.
Aún no configuro bien ni cargo los mapas que corresponden, por lo que el GPSDrive me muestra la información un tanto ilegible, pero podemos ver que si está posicionando la información capturada por kismet. Lamentablemente no puedo hacer más zoom.
Otra opción sería traspasar los datos de WayPoints a KML para que pueda ser interpretado por Google Earth, tambien podemos introducir las coordinadas manualmente para ir graficando.
La idea es la siguiente, montar una antena en un auto y salir con los portátiles a recorrer la ciudad capturando éste tipo de información y graficandolo en un mapa para luego compartirla y tener un mapa con las redes de la ciudad. El próximo post relacionado a este tema, será cuando haga wardriving, subiré fotos y todo eso.


Comentarios (2)