. Que signifie WifiScanner? --------------------------- Wi reless F ind I dentify S canner . Pourquoi WifiScanner ? ------------------------ Il existe une multitude d'outils utilisés pour le wardriving. Leur point commun majeur est qu'ils utilisent des cartes Lucent et leur mode auto-homing. De même, Airsnort utilise des cartes prism. Pourquoi deux cartes? En regardant les sources de prismdump et airsnort, j'ai compris qu'une seule carte serait suffisante, d'ou prism stumbler. WifiScanner change periodiquement de canal, à la recherche de trames, et les affiche. Ce programme est inspiré de wlanctl (de linux-wlan) et prismstumbler de Jan Fernquist Ce scanner utilise moins de ressources CPU que son ainé, grâce aux appels directs au driver (comparé aux exec de wlanctl) . De quoi ai je besoin pour faire marcher WifiScanner ? ------------------------------------------------------- - Linux ( désolé pour les *BSD :) - D'abord, vous avez besoin des drivers wlan-ng ( http://www.linux-wlan.com ) J'utilise ces drivers avec succes, depuis Linux 2.4.16 jusqu'à Linux 2.4.22 Cette version a été testée avec linux-wlan-ng-0.1.13 -> linux-wlan-ng-0.2.0 REM : linux-wlan-ng-0.1.13 is est déprécié et le code correspondant sera supprimé de WifiScanner dans les versions > 0.8.1 Avec Linux-wlan-ng-0.0.14+ vous aurez besoin de libpcap 0.7.1 * WifiScanner a besoin des fichiers .o de wlan-ng, donc vous devrez compiler wlan-ng avant WifiScanner (Voir le Makefile pour plus d'infos) * Vous avez aussi besoin des sources du noyau Linux * Si vous utilisez linux-wlan-ng-0.1.13 (déprécié), vous aurez besoin de CONFIG_NETLINK dans votre noyau * Les sources de Ethereal (version 0.9.x) J'ai ajouté la fonction de sauvegarde du traffic sniffé, donc voue aurez besoin de la librairie Wiretap (libwiretap), qui est fournie dans les sources de Ethereal. Wiretap a besoin de Glib * Curses * Un terminal capable d'afficher au moins 132 colonnes sur 50 rangées (il est possible de passer outre avec l'option -c) * Une carte wifi :-) (PrismII ou CISCO Aironet card) . Tests and Exécutions ---------------------- Les doits de superutilisateur sont nécessaire pour que le sniffer fonctionne. # src/wifiscanner WifiScanner v0.9.1 (Wlan driver version >= 0.14) (c) 2002 Hervé Schauer Consultants (Jerome.Poggi@hsc-labs.com) Use of interface:wlan0 I sleep 71ms before change channel I try to scan 14 channels per second Beginning scan of the 802.11b networks... Use CTRL-C to stop sniffing [...] Le programme demarre et on le voit :-) Pour sortir, presser CTRL-C [...] Now a summary of the detection : -------------------------------- Station (00:06:25:70:B3:A4) - BSSID=00:06:25:70:B3:A4 - SSID is not broadcasted Signal is between 15 and 49 and Data rate is 2Mb/s Max speed available is 11Mb/s Channel 6 with Wep 1 beacon every 100 ms is sent This is an AP ------------- Spectral repartition : ----------------------- 01 02 03 04 05 06 07 08 09 10 11 12 13 14 50 -- -- -- -- -- -- ** -- -- -- -- -- -- -- 48 -- -- -- -- -- ** ** ** -- -- -- -- -- -- 46 -- -- -- -- -- ** ** ** -- -- -- -- -- -- 45 -- -- -- -- -- ** ** ** ** -- -- -- -- -- 43 -- -- -- -- -- ** ** ** ** -- -- -- -- -- 42 -- -- -- -- -- ** ** ** ** -- -- -- -- -- 40 -- -- -- -- ** ** ** ** ** -- -- -- -- -- 39 -- -- -- -- ** ** ** ** ** -- -- -- -- -- 37 -- -- -- -- ** ** ** ** ** ** -- -- -- -- 35 -- -- -- -- ** ** ** ** ** ** -- -- -- -- 34 -- -- -- ** ** ** ** ** ** ** -- -- -- -- 32 -- -- -- ** ** ** ** ** ** ** -- -- -- -- 31 -- -- -- ** ** ** ** ** ** ** -- -- -- -- 29 -- -- -- ** ** ** ** ** ** ** -- -- -- -- 28 -- -- -- ** ** ** ** ** ** ** -- -- -- -- 26 -- -- -- ** ** ** ** ** ** ** -- -- -- -- 25 -- -- -- ** ** ** ** ** ** ** -- -- -- -- 23 -- -- -- ** ** ** ** ** ** ** ** -- -- -- 21 -- -- -- ** ** ** ** ** ** ** ** -- -- -- 20 -- -- -- ** ** ** ** ** ** ** ** -- -- -- 18 -- -- -- ** ** ** ** ** ** ** ** -- -- -- 17 -- -- -- ** ** ** ** ** ** ** ** -- -- -- 15 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 14 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 12 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 10 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 9 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 7 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 6 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 4 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 3 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 1 -- -- ** ** ** ** ** ** ** ** ** -- -- -- 01 02 03 04 05 06 07 08 09 10 11 12 13 14 Pour arreter le sniffer, vous avez juste besoin de presser Ctrl-C J'ai ajouté quelques fonctions: - Possibilité de n'écouter qu'un canal - Possibilité de sauver toutes les informations affichées - Possibilité de sauver le trafic réseau au format pcap, pour analyse off-line - Possibilité d'écrire un fichier au format .dot Graphviz ( http;//www.graphviz.org) $dot -Tps < FILENAME.dot > FILENAME.ps Avec FILENAME.dot généré par wifiscanner Pour plus d'informations, consulter le Changelog ainsi que l'aide en ligne man. . Aide et syntaxe ----------------- Wifiscanner peut etre démarré avec ou sans les parametres suivants: -F FileName - Enregistres la sortie dans un fichier et sur le stdout -H Hop - Nombre de hops avant rotation du canal (default 1) -S Channel - Ecouter seulement le canal (1-14) -V - Afficher le no de version et quitter -W FileName - Sauver le trafic sniffé au format PCAP -D FileName - Creer un .dot contenant les elements détectés -d - Ecrire les dates au format humain -i number - nom de l' interface (default wlan0) -I - Activer les fonctions de detection d'intrusion -M number - Nombre de packets avant de quiter (0 = unlimited) -N abcd - Cacher les trames de type Ack, Beacon, Control, Data -v level - Niveau de detail des traces ( level 2 pour débugguer ) -t number - Nombre de ms avant le changement de canal (default=71) -c - ne pas tester les dimensions de l'ecran -C - type de driver à utiliser (cisco, cisco_cvs, prism, hostap) Vous pouvez utiliser le niveau 2 de debug (-v 2) pour dumper tout les paquets au format Hexadecimal, c'est equivalent à tcpdump -lnvvv. C'est un dump tres rapide, vous êtes prévenu :-) . Coment lire les Datas ----------------------- En guise d'exemple, voila des paquets: 1018427099,"",0,___,STA,51,0,00:40:96:17:4F:CC,00:04:E2:48:68:43,00:10:5A:48:68:43,11Mb/s,STA Activity,To DS 1018427099,"Airport",11,Wep,AP,78,0,FF:FF:FF:FF:FF:FF,00:04:E2:48:68:43,00:04:E2:48:68:43,1Mb/s,AP Base (dedicated) Colonne 1 : Date depuis le 1er Janvier 1970 (ou au format humain avec -d) Colonne 2 : ESSID Colonne 3 : Canal, 0 si inconnu Colonne 4 : STA or AP : Client Station or Access Point Colonne 5 : Niveau de signal Colonne 6 : Niveau de Bruit (Si connu) Colonne 7 : Adresse de destination du paquet (FF:FF:FF:FF:FF:FF pour le broadcast) Colonne 8 : Adresse source du paquet Colonne 9 : BSSID Colonne 10: Data Rate (1, 2, 5.5 or 11Mbit/s) Colonne 11: Type of client Client : C'est un client (management ou control paquets) AP Base : C'est un access point AP Base (STA in master mode) : C'est une carte en mode maître AP Base (dedicated) : C'est un Access point dédié Ad-Hoc STA : C'est un client Ad-Hoc STA Activity : C'est un client emettant des données Si vous trouvez d'autres infos , come ???7, ecrivez moi. Colonne 12: Type de transmission radio Radio seule Data Vers DS Data Depuis DS Data AP Vers AP Si vous trouvez d'autres infos , come ???4, ecrivez moi. Colonne 13: Type de paquet Jettez un coup d'oeil a la fonction TypeOfPacketToString dans src/conversion.c :-) . Comment lire dans l'interface curse --------------------------------------- L'écran est organisé de la sorte : +-------------------------+ | Title Windows | +---------------+---------+ | | Summary | | Panel Window | Window | | | | +---------------+---------+ | | | Real time Window | | | +-------------------------+ Dans "Panel Windows" vous verez les differents clients et les Access point détectés >AP 00:40:96:13:94:F6 "tsunamiiii" |=====================______________|_ (153,255) > Cela signifie qu'un paquet est recu AP or STA : signifie ... :) MAC address de l'element détecté SSID Histogramme de qualité de signal (==== for now and |_____| for the maximum) Qualité de signal au format digital (valeur actuelle, valeur maxi) Summary windows : AP : Nombre d'AP détectés STA : Nombre de stations détectées BEACON : Nombre de trames BEACON recues SSID : Nombre de SSID Différents Channel : Nombre de canaux avec activité Invalid : Nombre de paquets invalides Crypted : Nombre de paquets cryptés Weak : Nombre de paqueés cryptés mais vulnérables Last IV : Dernier paquet WeakIV recu Packets : Nombre de paquets Ensuite, c'est le graphe du canal scanné "Realtime Windows" Ce sont les données vues en temp réel . Module IDS (Intrusion Detection System) ----------------------------------------- Q - Comment ca marche A - J'essaye d'analyser les timestamps, s'il sont trop différents, cela signifie qu'un paquet a ete forgé. Pourquoi? parce que les timestamps sont générés par le hardware, et c'est pas forgeable, contrairement aux adresses MAC J'analyse aussi les intervales de BEACON, parce que j'ai changé les intervales de BEACON, et si 2 intervales BEACON son trouvés, cela signifie que quelqu'un tente une attaque MAn in the Middle (essaez de changer l'interval des beacon avec une valeur bizarre et jettez un coup d'oeil) Pour finir, je tente d'analyser la variation des No de sequence. Take a look at http://home.jwu.edu/jwright/papers/wlan-mac-spoof.pdf Q - Pourquoi cette fonction existe A - parce que les scanners/ Deni de service, attaques Man in the middle existent. . Licence and Copyright ----------------------- Ce programme est sous la licence GPL et copyright 2003 Hervé Schauer Consultants Jerome Poggi . GPG Signature --------------- Tout les tarballs sont signés avec ma clef GPG, et vous trouverez les signatures: http://www.hsc.fr/ressources/outils/wifiscanner/download/ Mon empreinte clef publique est : C34A C116 1AA2 84AD 2592 1F98 FBB0 84A0 34AF BB17 Ma clef publique est disponible: - sur les serveurs de clef PGP - http://www.hsc.fr/~poggi/jerome.poggi.asc