Wifizoo

From aldeid
Jump to navigation Jump to search

WifiZoo

Description

Wifizoo est un outil de capture (wifi/OPN) et de lecture (wifi/WEP) d'informations sur les réseaux sans fil. Son proxy intégré permet le rejeu des informations capturées en installant sur la machine de l'attaquant les cookies interceptés. Cet outil permet de réaliser du "session hijacking" (vol de session).

Sites de références

Installation

Pré-requis

Note
La version 1.3 "black" de wifizoo encapsule scapy alors que pour la version 1.3 standard, il est nécessaire de copier scapy.py manuellement dans le répertoire d'installation de wifizoo.

Installation à partir des sources

Téléchargement de Wifizoo

# cd /usr/local/src/
# wget http://wifizoo.info/wifizoo_black_v1.3.tar.bz2
# bzip2 -cd wifizoo_black_v1.3.tar.bz2 | tar -xvf -
# mv wifizoo_black_v1.3 /usr/local/wifizoo

Création de l'arborescence

Note
Cette étape n'est nécessaire que pour la version standard. En effet, la version "black" contient déjà cette arborescence.
# cd /usr/local/wifizoo/
# mkdir logs

Téléchargement de scapy

Note
Cette étape n'est nécessaire que pour la version standard. En effet, la version "black" encapsule déjà scapy.
# wget http://www.aldeid.com/tools/scapy.py

Utilisation

Les modes d'utilisation de wifizoo

Wifizoo propose deux modes d'utilisation :

  • un mode d'écoute (-i <interface>)
  • un mode de lecture (-c <pcap_file>)

Mode écoute passive

Le mode d'écoute permet de sniffer certaines informations sur les réseaux wifi ouverts (OPN). L'exemple suivant montre comment réaliser cette manipulation.

Il est nécessaire pour cela d'activier le mode "Monitor" de votre interface réseau. Pour cela, il peut être nécessaire (dans le cas où l'interface réseau ne supporte pas nativement ce mode) d'utiliser ipwraw.

Pour activer le mode monitor sur le canal 11 :

# airmon-ng start wifi0 11

Lancer ensuite wifizoo :

# cd /usr/local/wifizoo/
# python wifizoo.py -i wifi0

Attendre que des informations du type suivant défilent sur la sortie standard :

Channel: Unavailable (No PrismHeaders).
bssid=df:a5:cc:a8:db:ff src=00:0e:cd:fc:ef:c0 dst=00:1d:cd:df:cc:00
TCP: 74.123.14.12.80 -> 192.168.0.10.49624

Puis lancer l'interface :

http://127.0.0.1:8000/

Mode lecture

Le mode lecture permet de lire les informations intéressantes d'un fichier de capture (créé par exemple via airodump-ng) afin d'en extraire les cookies interceptés. La commande suivante permet de décrypter un fichier de capture (WEP) afin qu'il soit exploitable dans Wifizoo.

# decrypt -p <wep_key> -m <mac_ap> -e <input_cap_file.cap> -d <output_cap_file.cap>
Note
Pour plus d'informations sur la fonction decrypt, voir ici

Une fois ceci fait, il ne nous reste plus qu'à fournir le fichier à Wifizoo :

# python wifizoo.py -c <output_cap_file.cap>

Puis à ouvrir l'interface Web en chargeant l'adresse suivante :

http://127.0.0.1:8000/

Paramétrage du navigateur

Afin de pouvoir installer les cookies interceptés sur votre machine, il est nécessaire de paramétrer votre navigateur afin qu'il passe par le proxy de Wifizoo :

Présentation de l'interface Web

Liste des SSIDs (liste des points d'accès)

BSSID->Clients graph

Probes graph

SSIDs obtained from Probe requests

Stats

POP3 credentials

Cookies

FTP Data

MSN Data

SMTP Data

Erreur possible

Cette astuce est issue de : http://nahidulkibria.blogspot.com/2009/08/error-while-running-wifizoo-in-ubuntu.html.

Si vous obtenez un erreur du type :

Traceback (most recent call last):
File "wifizoo.py", line 5, in <module>
  from scapy import *
File "/usr/local/wifizoo/scapy.py", line 3114
  tr = map(lambda x: Gnuplot.Data(x,with="lines"), trt.values())
                                        ^
SyntaxError: invalid syntax

Effectuez les remplacements suivants dans scapy.py :

Remplacer :
  tr = map(lambda x: Gnuplot.Data(x,with="lines"), trt.values())
  g = Gnuplot.Gnuplot()
  world = Gnuplot.File(conf.gnuplot_world,with="lines")
  g.plot(world,*tr)
par :
  tr = map(lambda x: Gnuplot.Data(x,with_="lines"), trt.values())
  g = Gnuplot.Gnuplot()
  world = Gnuplot.File(conf.gnuplot_world,with_="lines")
  g.plot(world,*tr)