OldGentooWiki:Attaque WEP
De Gentoo-Quebec.
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.
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
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
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
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
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.
# 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.
Listing 6: Impact du chargement d'Ipwraw
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.
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.
- 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.
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.
Listing 10: Description de l'interface réseau wifi0
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:
- 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.
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:
- 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.
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:
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:
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.
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.
(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).
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.
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:
PT XOR KS = CE
- PT = CE XOR KS
- PT = CE XOR RC4(IV,K)
- 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:
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:
CE1 = PT1 XOR KS CE1 = PT1 XOR RC4(IV,K)
Et:
CE2 = PT2 XOR KS CE2 = PT2 XOR RC4(IV,K)
Alors on peut déduire cette formule de la manière suivante :
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.
- 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.
- 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.
- 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.
- 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.

