kismet + gpsd + gpsdrive = wardriving!

Información Importante Sobre el Contenido

Estas accediendo al contenido antiguo del blog. Este artículo "kismet + gpsd + gpsdrive = wardriving!" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.

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
<no ssid> -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</no>

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.

Información Importante Sobre el Contenido

Estas accediendo al contenido antiguo del blog. Este artículo "kismet + gpsd + gpsdrive = wardriving!" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.

3 comentarios

  1. Buen post, pero mi tarjeta broadcom no es compatible con el modo monitor

  2. Zerial

    diciembre 7, 2009 a las 8:08 pm

    ¿Qué modelo de broadcom tienes? Hay formas de dejarlas en modo monitor …

  3. disculpe que referencia es el gpsconh que hace el lab?

Los comentarios están cerrados.