IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Alert.png Aquesta wiki forma part dels materials d'un curs
Curs: SeguretatXarxesInformàtiques
Fitxers: No hi ha fitxers
Repositori SVN: https://anonymous@svn.projectes.lafarga.cat/svn/iceupc/SeguretatXarxesInformàtiques
Usuari: anonymous
Paraula de pas: sense paraula de pas
Autors: Sergi Tur Badenas
Logo de kismet

Instal·lació

$ sudo apt-get install kismet

Executables:

$ dpkg -L kismet | grep bin
/usr/bin
/usr/bin/kismet
/usr/bin/kismet_client
/usr/bin/gpsmap
/usr/bin/gpsmap-helper-earthamaps
/usr/bin/kismet_server
/usr/bin/kismet_drone
/usr/sbin

Fitxers de configuració:

$ dpkg -L kismet | grep etc
/etc
/etc/kismet
/etc/kismet/ap_manuf
/etc/kismet/client_manuf
/etc/kismet/kismet.conf
/etc/kismet/kismet_drone.conf
/etc/kismet/kismet_ui.conf
/usr/share/doc/kismet/extra/kismetcsv.sql

Arquitectura client-servidor

Kismet són dos aplicacions:

  • 1 servidor: kismet_server
  • 1 client: kismet_client
$ ps aux | grep kismet
root     11221  0.0  0.0   2964   804 pts/0    S+   09:28   0:00 kismet
root     11222  0.1  0.0   3964  1932 pts/0    S+   09:28   0:00 //usr/bin/kismet_server --silent
root     11223  0.2  0.0   4180  2032 pts/0    S+   09:28   0:00 //usr/bin/kismet_client
root     11224  0.0  0.0   3868   448 pts/0    S+   09:28   0:00 //usr/bin/kismet_client
root     11228  0.0  0.0   3868   440 pts/0    S+   09:28   0:00 //usr/bin/kismet_client
root     11232  0.0  0.0   3868   320 pts/0    S+   09:28   0:00 //usr/bin/kismet_client
root     11246  0.0  0.0   3868   320 pts/0    S+   09:29   0:00 //usr/bin/kismet_client
root     11260  0.0  0.0   3868   320 pts/0    S+   09:29   0:00 //usr/bin/kismet_client
root     11261  0.0  0.0   3868   320 pts/0    S+   09:29   0:00 //usr/bin/kismet_client
root     11602  0.0  0.0   3868   320 pts/0    S+   09:30   0:00 //usr/bin/kismet_client
root     11654  0.0  0.0   3868   320 pts/0    S+   09:31   0:00 //usr/bin/kismet_client
root     11695  0.0  0.0   3868   320 pts/0    S+   09:31   0:00 //usr/bin/kismet_client
root     11746  0.0  0.0   3868   320 pts/0    S+   09:32   0:00 //usr/bin/kismet_client
root     11793  0.0  0.0   3868   320 pts/0    S+   09:33   0:00 //usr/bin/kismet_client
root     11809  0.0  0.0   3868   320 pts/0    S+   09:34   0:00 //usr/bin/kismet_client
root     11824  0.0  0.0   3868   320 pts/0    S+   09:34   0:00 //usr/bin/kismet_client
root     12176  0.0  0.0   3868   228 pts/0    S+   09:35   0:00 //usr/bin/kismet_client
sergi    12213  0.0  0.0   3012   764 pts/2    R+   09:35   0:00 grep kismet

Clients remots es poden connectar a un servidor canviant la configuració de kismet. Vegeu la opció:

allowedhosts=127.0.0.1

del fitxer /etc/kismet/kismet.conf.

Configuració

El primer que cal per configurar Kysmet és saber quin driver estem utilitzant per a la targeta wireless. Podeu utilitzar hal-device-manager (consulteu Adaptadors de xarxa de l'article sobre Xarxes Linux.).

També el podeu buscar amb lshal

$ lshal

La llista és enorme però podeu volcar el resultat a un fitxer

$ lshal > out.txt

I busqueu el dispositiu utilitzant un editor de text:

$ gedit out.txt &

Podeu buscar amb la combinació de tecles Ctrl+f. Per exemple nosaltres hem localitzat una targeta de xarxa:

$ lspci 
...
0b:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

Busque doncs per paraules com Intel o wireless o 3945ABG o qualsevol altre paraula que ajudi a trobar el vostre dispositiu. Per exemple, buscant per 3945ABG hem trobat:

...
udi = '/org/freedesktop/Hal/devices/pci_8086_4222'
info.linux.driver = 'iwl3945'  (string)
info.parent = '/org/freedesktop/Hal/devices/pci_8086_2841'  (string)
info.product = 'PRO/Wireless 3945ABG Network Connection'  (string)
info.subsystem = 'pci'  (string)
info.udi = '/org/freedesktop/Hal/devices/pci_8086_4222'  (string)
info.vendor = 'Intel Corporation'  (string)
linux.hotplug_type = 2  (0x2)  (int)
linux.subsystem = 'pci'  (string)
linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1c.1/0000:0b:00.0'  (string)
pci.device_class = 2  (0x2)  (int)
pci.device_protocol = 0  (0x0)  (int)
pci.device_subclass = 128  (0x80)  (int)
pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1c.1/0000:0b:00.0'  (string)
pci.product = 'PRO/Wireless 3945ABG Network Connection'  (string)
pci.product_id = 16930  (0x4222)  (int)
pci.subsys_product_id = 4129  (0x1021)  (int)
pci.subsys_vendor = 'Intel Corporation'  (string)
pci.subsys_vendor_id = 32902  (0x8086)  (int)
pci.vendor = 'Intel Corporation'  (string)
pci.vendor_id = 32902  (0x8086)  (int)

I el seu driver és :

info.linux.driver = 'iwl3945'  (string)

Normalment el driver s'executa com un mòdul del nucli de Linux. Podeu comprovar que el modul s'està executant amb:

$ lsmod | grep iwl
iwl3945                89844  0 
iwlwifi_mac80211      219108  1 iwl3945
cfg80211               15112  1 iwlwifi_mac80211

O quelcom similar per al vostre driver.

Configuració del fitxer kismet.conf

El més important de la configuració de kismet es troba al fitxer /etc/kismet/kismet.conf. El primer que cal fer es configurar la línia:

source=none,none,addme

Aquí cal posar quin és l'origen des del que començarem a detectar xarxes wireless. El format és el següent:

source=type,interface,name

On

  • type: és el tipus de targeta de xarxa. El tipus ve determinat pel driver que esteu utilitzant. Un cop sabeu el vostre driver, consulteu al manual de kismet, quin és el tipus que heu d'utilitzar. Consulteu la secció 12. Capture Sources (ara,--acacha 07:06, 18 març 2010 (UTC), 7. Supported capture sources) del manual.
  • interface: el nom de la interfície de xarxa wireless que volem utilitzar
  • name: Un nom que li posarem a l'origen de dades. Podeu posar el que vulgueu, però normalment es posa el nom del fabricant de la targeta de xarxa wireless (Intel, Dlink, Atheros, etc...)

Editeu el fitxer /etc/kismet/kismet.conf i modifiquem la línia source= per:

source=iwl3945,eth1,Intel

On iwl3945 és el driver de la nostra targeta de xarxa, eth1 és el nom de la interfície de xarxa sense fils i Intel la marca del chip de la targeta sense fils.

A la web de documentació de Kismet:

http://www.kismetwireless.net/documentation.shtml

O al fitxer:

/usr/share/doc/kismet/README.gz

Que podeu desomprimir amb:

$ gz /usr/share/doc/kismet/README.gz

Podeu consultar la llista de drivers possibles segons la targeta de xarxa.

Recursos:

Configuració per a DLINK (DWL-G520)

Utilitza un xip Atheros. La configuració és:

source=madwifi_g,wifi0,d-link

Consulta també:

Aircrack-ng#DLINK_.28DWL-G520.29

Configuració per a DLINK (DWL-G510 Rev C)

Sembla que no hi ha suport.

Configuració per a Zydas zd1211rw (Wireless USB amb antena de WISACOM)

Es pot comprar a pricoinsa per uns 30€ aprox (--acacha 12:55, 19 abr 2009 (UTC)):

Wisacom usb.jpg

La configuració del fitxer /etc/kismet/kismet.conf és:

source=zd1211,wlan1,wisacom

I executem :

$ sudo kismet

Consulteu també:

Aircrack-ng#Zydas__zd1211rw

Configuració del so

Al fitxer /etc/kismet/kismet.conf:

# Do we use sound?
# Not to be confused with GUI sound parameter, this controls wether or not the
# server itself will play sound.  Primarily for headless or automated systems.
sound=false
# Path to sound player
soundplay=/usr/bin/play
# Optional parameters to pass to the player
# soundopts=--volume=.3
# New network found
sound_new=//usr/share/kismet/wav/new_network.wav
# Wepped new network
# sound_new_wep=${prefix}/com/kismet/wav/new_wep_network.wav
# Network traffic sound
sound_traffic=//usr/share/kismet/wav/traffic.wav
# Network junk traffic found
sound_junktraffic=//usr/share/kismet/wav/junk_traffic.wav
# GPS lock aquired sound
# sound_gpslock=//usr/share/kismet/wav/foo.wav
# GPS lock lost sound
# sound_gpslost=//usr/share/kismet/wav/bar.wav
# Alert sound
sound_alert=//usr/share/kismet/wav/alert.wav

Canvieu

  • sound=false per sound=true.
  • soundplay=/usr/bin/play per soundpaly=soundplay=/usr/bin/aplay

Torneu a iniciar kismet. El so es pot activar i descativar mitjançant la tecla m (mute).

Configuració del sintetitzador de veu (Festival)

Fitxer /etc/kismet/kismet.conf:

# Does the server have speech? (Again, not to be confused with the GUI's speech)
speech=false
# Server's path to Festival
festival=/usr/bin/festival 
# Are we using festival lite?  If so, set the above "festival" path to also
# point to the "flite" binary
flite=false
# Are we using Darwin speech?
darwinsay=false 
# What voice do we use?  (Currently only valid on Darwin)
speech_voice=default
# How do we speak?  Valid options:
# speech    Normal speech
# nato      NATO spellings (alpha, bravo, charlie)
# spell     Spell the letters out (aye, bee, sea) 
speech_type=nato
# speech_encrypted and speech_unencrypted - Speech templates
# Similar to the logtemplate option, this lets you customize the speech output.
# speech_encrypted is used for an encrypted network spoken string
# speech_unencrypted is used for an unencrypted network spoken string
# %b is replaced by the BSSID (MAC) of the network
# %s is replaced by the SSID (name) of the network
# %c is replaced by the CHANNEL of the network
# %r is replaced by the MAX RATE of the network
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.   

Canvieu:

  • speech=false per speech=true

Instal·leu el sintetitzador de veu:

$ sudo apt-get install festival

Podeu canviar el text amb:

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.

Configuració del gps

Fitxer /etc/kismet/kismet.conf:

# Do we have a GPS?
gps=false
# Host:port that GPSD is running on.  This can be localhost OR remote!
gpshost=localhost:2947
# Do we lock the mode?  This overrides coordinates of lock "0", which will
# generate some bad information until you get a GPS lock, but it will 
# fix problems with GPS units with broken NMEA that report lock 0
gpsmodelock=false

Opció f: follow network centers a la pàgina principal.

Configuració dels fabricants de targetes (segons MAC)

Fitxer /etc/kismet/kismet.conf:

# Where do we get our manufacturer fingerprints from?  Assumed to be in the
# default config directory if an absolute path is not given.
ap_manuf=ap_manuf
client_manuf=client_manuf

Configuració del sistema mètric

Fitxer /etc/kismet/kismet.conf:

# Use metric measurements in the output?
metric=true

Execució

Cal executar kismet amb permisos de superusuari:

$ sudo kismet

Un cop executat, obriu una nova terminal i executeu:

$ iwconfig
...
eth1      IEEE 802.11g  Nickname:""
         Mode:Monitor  Frequency:2.452 GHz  Tx-Power=27 dBm   
         Retry min limit:7   RTS thr:off   Fragment thr=2346 B   
         Power Management:off
         Link Quality:0  Signal level:0  Noise level:0
         Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
         Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Veureu que la targeta de xarxa a canviat a mode monitor. Executeu:

$ ifconfig eth1
eth1      Link encap:UNSPEC  HWaddr 00-1F-3C-52-79-C0-00-00-00-00-00-00-00-00-00-00
         UP BROADCAST PROMISC MULTICAST  MTU:1500  Metric:1
         RX packets:12039 errors:0 dropped:0 overruns:0 frame:0
         TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:1531957 (1.4 MB)  TX bytes:9964 (9.7 KB)

Com veieu, kismet canvia la MAC, d'aquesta manera es fa més difícil localitzar la màquina que està treballant en mode monitor.

Manual d'ús

Kismet funciona per tecles. En qualsevol moment podeu utilitzar la tecla h que us proporciona l'ajuda.

Kismet1.png

Per sortir de l'ajuda premeu q.

La pantalla principal, mostra la llista de xarxes trobades. Qüestions que heu de tenir en compte:

  • 1a columna: Mostra si hi ha activitat recent.
  • 2a columna: nom de la xarxa.
  • 3a columna: Tipus de xarxa
    • P (Probe request): sense connexió associada encara
    • A (Access point): xarxa sense fils estàndard (mode infraestructura)
    • H (Ad-hoc): xarxa P2P (adhoc)
    • T(Turbocell): Turbocell (aka Karlnet or Lucent Outdoor)
  • G (Group): grup de xarxes sense fils
  • 'D (Data': Xarxa amb només dades (sense packets de control)
  • 4a columna: Tipus de xifratge:
    • N: sense xifratge
    • Y: Estàndard WEP
    • O: Altres (per exemple WAP)
  • 5a columna: Canal de radiofreqüència utilitzat.
  • 6a columna: Nombre de paquets capturats.
  • 7a columna (Flags):
    • F Factory configuration: Punt d'accés configurat amb les opcions per defecte
    • Tx on x és un número. S'han trobat adreçes IP per TCP
    • Ux on x és un número. S'han trobat adreçes IP per UDP
    • Ax on x és un número. S'han trobat adreçes IP per ARP
    • D on x és un número. S'han trobat adreçes IP per DHCP
    • W: xarxa desencriptada utilitzant una clau WEP proporciona per l'usuari de kismet.
  • 8a columna (Rang IP): Ranf d'adreces IP detectat
  • 9a columna (Flags): Mida total dels paquets recollits.

Codi de colors

  • Verd: Xarxa xifrada
  • Groc: Xarxa no xifrada

Podeu consultar les estadístiques d'una xarxa amb la tecla a:

Kismet6.png

Podeu mostrar una gràfica del nombre de paquets per unitat de temps amb la tecla r.

Kismet7.png

O mostrar els tipus de paquets amb la tecla p.

El mode per defecte en que s'ordenen les xarxes és l'autofit. Aquest mode, no permet fer gaires coses. Per canviar el mode premeu s

Kismet2.png

Ara podeu ordenar per exemple per ordre alfabètic de nom de xarxa (SSID) prement la tecla s. Ara ja podeu moureus per les diferents xarxes utilitzant les fletxes del teclat.

Seleccioneu una xarxa i premeu c. Aquesta tecla mostra una llista dels clients d'aquesta xarxa:

Kismet3.png

L'ajuda depèn de on esteu. Si ara premeu h. Consultareu l'ajuda del menú clients:

Kismet4.png

La columna més important, és la T que mostra el tipus de client:

  • F (from DS): són clients que utilitzen la xarxa wireless per enviar paquets de broadcast. Normalment es tracta de les màquines amb fil (wired)
  • T (to DS): són clients que envien paquets al DS. Normalment nodes sense fils.
  • I (intra DS): un node que forma part del sistema de distribució. Normalment el punt o punts d'accés de la xarxa.
  • S (send to): s'ha enviat dades a aquest client però no ha contestat
  • E (Establisher): El client ha esta vist entrant al punt d'accés.

Un cop estem mostrant els clients dins d'una xarxa, podem canviar de xarxes (amunt i avall) amb les tecles n i p.

Escolliu un client, i mostreu la informació en detall prement i:

Kismet5.png

Podeu tornar enrere amb q.

DS vol dir, distribution system (normalment el punt d'accés en una xarxa amb infraestructura).


Finalment per sortir de Kismet cal prémer Q (majúscules/capital).

Posar noms a xarxes

A la pantalla principal, ordeneu per qualsevol mode que no sigui l'autofit (p.ex. premeu s dos cops) i situe-vos sobre una xara amb les fletxes del teclat. Un op a sobre la xarxa a la que li voleu donar un nom premeu m i doneu-li un nom.


Termes i conceptes

  • WAP: Wireless Acces Point
  • DS: Distribution System

Kismet com a eines de defensa (detectar sniffers sense fils)

Kismet té un sistema d'alertes que avisa quan detecta comportaments inusuals en una xarxa. Les alertes poden ser sonores si tenim activat el so (sona una sirena de bateries antiaèries).

En qualsevol moment podeu consultar les alertes amb l tecla w (warnings).

Kismet8.png

# Alerts to be reported and the throttling rates.
# alert=name,throttle/unit,burst/unit
# The throttle/unit describes the number of alerts of this type that are
# sent per time unit.  Valid time units are second, minute, hour, and day.
# Burst rates control the number of packets sent at a time
# For example:
# alert=FOO,10/min,5/sec
# Would allow 5 alerts per second, and 10 alerts total per minute.
# A throttle rate of 0 disables throttling of the alert.
# See the README for a list of alert types.
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


# Do we track IVs?  this can help identify some attacks, but takes a LOT
# of memory to do so on a busy network.  If you have the RAM, by all
# means turn it on.
trackivs=false

Fitxers de log

Els fitxers de les sessions de kismet es guarden a:

/var/log/kismet

Les sessions de kismet es guarden en aquesta carpeta. Automàticament es registre la data (dia), i en cas de fer més d'una sessió en un dia s'enumeren correlativament.

Per exemple la primera sessió del dia 25 d'octubre de 2008:

$ ls -la Kismet-Oct-25-2008-1*
-rw-r--r-- 1 root root     0 2008-10-25 20:31 Kismet-Oct-25-2008-1.cisco
-rw-r--r-- 1 root root   893 2008-10-25 20:31 Kismet-Oct-25-2008-1.csv
-rw-r--r-- 1 root root 17418 2008-10-25 20:31 Kismet-Oct-25-2008-1.dump
-rw-r--r-- 1 root root  1086 2008-10-25 20:31 Kismet-Oct-25-2008-1.network
-rw-r--r-- 1 root root  2187 2008-10-25 20:31 Kismet-Oct-25-2008-1.xml

Com podeu veure hi ha diferents formats

  • network: Format de text
  • cvs: format compatible (es pot obrir directament) amb eines de full de càlcul com openoffice Calc.
  • XML: Les mateixes dades en XML.

Kismet Google Maps

Recursos:

Kismet i spectools


TroubleShooting. Resolució de problemes

Matar kismet si es penja

$ ps aux | grep kismet
root     11221  0.0  0.0   2960   864 pts/0    S+   09:28   0:00 kismet
root     11222  0.1  0.0      0     0 pts/0    Z+   09:28   0:03 [kismet_server] <defunct>
sergi    16530  0.0  0.0   3012   764 pts/1    R+   10:15   0:00 grep kismet

$ sudo killall kismet

$ ps aux | grep kismet
root     11221  0.0  0.0   2960   864 pts/0    S+   09:28   0:00 kismet
root     11222  0.1  0.0      0     0 pts/0    Z+   09:28   0:03 [kismet_server] <defunct>
sergi    16725  0.0  0.0   3012   784 pts/1    R+   10:15   0:00 grep kismet
$ sudo kill -9 11221 11222
$ ps aux | grep kismet
sergi    16737  0.0  0.0   3012   764 pts/1    R+   10:15   0:00 grep kismet

Vegeu també