kismet + gpsd + gpsdrive = wardriving!

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: kismet 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 -33.442886 -70.598724 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. 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)

RoyalGNZ
Buen post, pero mi tarjeta broadcom no es compatible con el modo monitor
sp1b0t
disculpe que referencia es el gpsconh que hace el lab?

Deja un comentario