Wifitap

De Page Personnelle de Cédric Blancher.

English version

Wardriver


Sommaire

[modifier] Description

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

Le projet est désormais maintenu par Oliver Lavery qui a ouvert un repository GitHub à cet effet : https://github.com/gdssecurity/wifitap/.

[modifier] Exemples d'utilisation

[modifier] 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

[modifier] 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.

[modifier] 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).

[modifier] Dépendances

Wifitap dépend de :

  • Python >= 2.2
  • Scapy, version de developement avec support 802.11 (inclus dans le tgz)
  • Psyco, un optimisateur Python (optionel, mais chaudement recommandé)
  • Une carte WiFi et son driver supportant l'injection :
    • Chipset Prism54 FullMAC chipset avec le driver prism54 (patch optionnel mais recommandé) ;
    • Chipset Atheros avec le driver Madwifi patché ;
    • Chipset Prism2/2.5/3 avec les drivers hostap ou wlan-ng patchés ;
    • Chipset Ralink RT2500 avec le driver rt2500 ;
    • Chipset Ralink RT2750 avec le driver rt2750 patché ;
    • Chipset Realtek RTL8180 avec le driver rtl8180 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.


[modifier] Téléchargements

[modifier] Code Source de Wifitap

[modifier] Sources externes

[modifier] Ressources liées

[modifier] Vidéos

[modifier] Conférences

[modifier] Trainings

[modifier] Trackbacks

Navigation
autres
Locations of visitors to this page

No software patents !

Valid XHTML 1.0 Transitional

Valid CSS 2.1