Wifitap

Un article de Page Personnelle de Cédric Blancher, l'encyclopéde libre.

english.png (http://sid.rstack.org/index.php/Wifitap_EN) English version

Wardriver


Sommaire

News

SyScan'07 logo

Deepsec 2007 logo

Wifitap 0.4.0 (http://sid.rstack.org/code/wifitap/wifitap-0.4.0.tgz) est sorti !

Un training Wi-Fi (http://www.syscan.org/practical.html) est prévu pour SyScan'07 (http://syscan.org/) à Singapour. Wifitap y sera évidemment décrit et utilisé.

Un autre (http://deepsec.net/schedule/) est prévu pour Deepsec 2007 (http://deepsec.net/media/logo.png) à Vienne, en Autriche.

Description

Wifitap est une preuve de concept d'outil de communication sur les réseaux WiFi par injection de trafic.

Exemples d'utilisation

Communication directe sans association

Wifitap permet de communiquer directement avec une station associée à un point d'accès directement, c'est à dire :

  • sans avoir à être associé soi-même ;
  • sans passer par le point d'accès.
~# modprobe prism54
~# ifconfig eth1 up
~# iwlist eth1 scan
eth1      Scan completed :
          Cell 01 - Address: 00:13:10:30:22:5C
                    ESSID:"linksys"
                    Mode:Master
                    Encryption key:off
                    Frequency:2.462 GHz (Channel 11)
                    Quality:19/0  Signal level:-28 dBm  Noise level:-47 dBm

Nous plaçons notre interface WiFi en mode monitor sur le channel 11.

~# iwconfig eth1 mode monitor channel 11
~# ifconfig eth1 promisc

Wifitap est prêt à être lancé pour communiquer avec les stations associées au point d'accès 00:13:10:30:22:5C dans notre zone de portée.

~# wifitap.py

Error: BSSID not defined

Usage: wifitap -b <BSSID> [-o <iface>] [-i <iface>] [-s <SMAC>] [-w <WEP key> [-k <key id>]] [-d [-v]] [-h]
     -b <BSSID>    specify BSSID for injection
     -o <iface>    specify interface for injection (default: ath0)
     -i <iface>    specify interface for listening (default: ath0)
     -s <SMAC>     specify source MAC address
     -w <key>      WEP mode and key
     -k <key id>   WEP key id (default: 0)
     -d            activate debug
     -v            verbose debugging
     -h            this so helpful output
~# wifitap.py -b 00:13:10:30:22:5C -i eth1 -p -o eth1
IN_IFACE:   eth1 (no Prism headers in capture)
OUT_IFACE:  eth1
BSSID:      00:13:10:30:22:5c
tcpdump: WARNING: eth1: no IPv4 address assigned
Interface wj0 created. Configure it and use it
[...]

Lancer Wifitap entraine la création d'une interface tuntap appelée wj0 à travers laquelle nous allons injecter le trafic IP.

~# ifconfig wj0 192.168.11.11 mtu 1400
~# ifconfig wj0
wj0       Lien encap:Ethernet  HWaddr 66:F6:C9:1E:E2:13
          inet adr:192.168.11.11  Bcast:192.168.11.255  Masque:255.255.255.0
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1400  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:500
          RX bytes:0 (0.0 b)  TX bytes:18 (18.0 b)

~# route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.11.0    0.0.0.0         255.255.255.0   U     0      0        0 wj0

Nous pouvons atteindre le réseau 192.168.11.0/24 à travers wj0. En écoutant sur l'interface eth1 (avec tcpdump par exemple), nous pouvons découvrir des stations associées et communiquer avec elles sur IP.

NB : l'adresse MAC de wj0 est utilisée comme source des trames émises, aussi peut-il être utile de la modifier en utilisant -s <SMAC>.

~# ping 192.168.11.10
PING 192.168.11.10 (192.168.11.10): 56 data bytes
64 bytes from 192.168.11.10: icmp_seq=0 ttl=64 time=37.222 ms
64 bytes from 192.168.11.10: icmp_seq=1 ttl=64 time=0.200 ms
64 bytes from 192.168.11.10: icmp_seq=2 ttl=64 time=0.188 ms
64 bytes from 192.168.11.10: icmp_seq=3 ttl=64 time=0.206 ms
--- 192.168.11.10 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.188/9.454/37.222/16.032 ms

Autres applications de Wifitap

Wifitap permet à n'importe quelle application d'envoyer et recevoir des paquets par capture et injection de trame 802.11 sur un réseau WiFi simplement en configurant l'interface wj0 de manière adéquate, c'est à dire :

  • en lui affectant une adresse IP cohérente avec l'adressage du réseau cible ;
  • en routant le trafic désiré à travers elle.

En particulier, c'est une méthode simple d'injection de paquets arbitraires dans des trames 802.11 sans avoir à utiliser de bibliothèque spécifique.

De plus, elle permet de s'affranchir de toute limitation imposée par le point d'accès, comme contourner les système de prévention des communication inter-clients (par exemple PSPF de Cisco) ou encore atteindre plusieurs SSID gérés par le même point d'accès.

Modification de Wifitap

Wifitap peut être simplement modifier pour réaliser des tâches simples comme générer des réponses arbitraires à des trames lues sur le réseau étudié.

Si on veut utiliser Scapy pour la lecture de paquets capturés et la génération des réponses, il est nécessaire d'ajouter l'import des classes concernées. Si on veut travailler sur de l'ICMP par exemple, il suffira d'ajouter :

from scapy  import IP,ICMP

Ensuite, on supprimera le code responsable de la gestion de l'interface tuntap :

  • initialisation ;
  • lecture ;
  • écriture.

Enfin, on modifiera la boucle principale pour gérer l'identification des trames intéressantes, la lecture des champs, la génération puis l'injection des réponses, éventuellement en fonction des requêtes.

L'archive de Wifitap contient des exemples de programmes :

  • injection de réponses à des requêtes ARP (wifiarp.py) ;
  • injection de réponses à des requêtes DNS (wifidns.py) ;
  • injection de réponses à des ICMP Echo Requests (wifiping.py).

Dépendances

Wifitap dépend de :

  • Python (http://www.python.org/) >= 2.2
  • Scapy (http://secdev.org/projects/scapy/), version de developement avec support 802.11 (inclus dans le tgz)
  • Psyco (http://psyco.sourceforge.net/), un optimisateur Python (optionel, mais chaudement recommandé)
  • Une carte WiFi et son driver supportant l'injection :
    • Chipset Prism54 FullMAC chipset avec le driver prism54 (http://prism54.org/) (patch optionnel mais recommandé) ;
    • Chipset Atheros avec le driver Madwifi (http://madwifi.sourceforge.net) patché ;
    • Chipset Prism2/2.5/3 avec les drivers hostap (http://hostap.epitest.fi/) ou wlan-ng (http://www.linux-wlan.org/) patchés ;
    • Chipset Ralink RT2500 avec le driver rt2500 (http://rt2x00.serialmonkey.com/) ;
    • Chipset Ralink RT2750 avec le driver rt2750 (http://rt2x00.serialmonkey.com/) patché ;
    • Chipset Realtek RTL8180 avec le driver rtl8180 (http://rtl8180-sa2400.sourceforge.net/) patché.

Voir le fichier PATCHING pour l'installation des drivers. Les patches ont été écrits par Christophe Devine et sont actuellement maintenu par l'équipe de Aircrack-ng (http://www.aircrack-ng.org/).


Téléchargements

Code Source de Wifitap

Wifitap est également disponible sur Packetstorm (http://www2.packetstormsecurity.org/cgi-bin/search/search.cgi?searchvalue=wifitap&type=archives).

Sources externes

  • Le Live CD Linux BackTrack (http://www.remote-exploit.org/index.php/BackTrack) inclut Wifitap 0.3.7 depuis la version 1.0 Final
  • Le Live CD Linux Pentoo (http://www.pentoo.ch/) propose un package Wifitap 0.3.7 (http://www.pentoo.ch/isos/modules/wifitap-0.3.7.mo)
  • Le Live CD Linux Troppix (http://distrowatch.com/troppix) (discontinued) contient Wifitap depuis la version 1.1beta
  • Wifitap est listé sur Wireless Vulnerabilities & Exploits (http://www.wirelessve.org/) sous l'identifiant WVE-2005-0058 (http://www.wirelessve.org/entries/show/168)

Ressources liées

Vidéos

Conférences

  • Hack.lu 2006 (http://hack.lu/), Luxembourg : PDF, 3Mo (http://sid.rstack.org/pres/0610_Hacklu_WifiWorkshop.pdf)
  • Bellua Cyber Security Asia 2006 (http://bellua.com/bcs/asia06.index.html), Jakarta, Indonésie : PDF, 3Mo (http://sid.rstack.org/pres/0608_BCS_OpenWireless.pdf)
  • Lightning talk à Eusecwest/core06 (http://eusecwest.com/), Londres, Royaume Uni : PDF, 393Ko (http://sid.rstack.org/pres/0602_ESW_CaptiveBypass.pdf).
  • SecureCon 2006 (http://securecon.unimelb.edu.au/), Melbourne, Australie : PDF, 2,1Mo (http://sid.rstack.org/pres/0602_Securecon_WirelessInjection.pdf)
  • Pacsec/core05 (http://pacsec.jp/), Tokyo, Japon : PDF, 1,9Mo (http://sid.rstack.org/pres/0511_Pacsec_WirelessInjection_en.pdf)
  • Ruxcon 2005 (http://ruxcon.au.org/), Sydney, Australie : PDF, 2Mo (http://sid.rstack.org/pres/0510_Ruxcon_WirelessInjection.pdf)
  • Syscan'05 (http://syscan.org/), Bangkok, Thaïlande : PDF, 2,1Mo (http://sid.rstack.org/pres/0509_Syscan_WirelessInjection.pdf)
  • LSM 2005 (http://www.rencontresmondiales.org/), Dijon : PDF, 1,9Mo (http://sid.rstack.org/pres/0507_LSM05_WirelessInjection.pdf)
  • Recon 2005 (http://recon.cx/), Montréal, Canada, et release publique de Wifitap : PDF, 1,2Mo (http://sid.rstack.org/pres/0506_Recon_WirelessInjection.pdf)
  • Rump Session du SSTIC 2005 (http://www.sstic.org/), Rennes : PDF, 220Ko (http://sid.rstack.org/pres/0506_SSTIC_Wifitap.pdf)

Trainings

Trackbacks

Outils personels

RSS feed RSS

Atom feed Atom

No software patents !

PageRank Actuel

Valid XHTML 1.0 Transitional