Théorie et chiffrement WEP

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


Comment cracker les mots de passe Wi-Fi ? C’est devenu la question la plus posée aux pirates/hackers et pour cause, une fois le mot de passe cracké, vous avez accès aux réseaux de votre victime. Cela vous permettra par la suite de scanner son réseau et infiltrer ses machines. Pour un pirate, cracker un mot de passe Wi-Fi peut s’avérer très intéressant. Mais avant d’apprendre à cracker les mots de passe Wi-Fi il faut comprendre comment fonctionne les mécanismes de sécurité du Wi-Fi.

Tout d’abord le Wi-Fi est apparu en 1997. C’est un groupe de chercheurs de l’IEEE (Institute of Electronic and Electronical Engineers) qui a développé les normes 802.11 qui régissent le fonctionnement du Wi-Fi. Eh oui, pour que toutes les machines puissent communiquer entre elles via le Wi-Fi il faut que celles-ci utilisent le même langage. Donc ces normes 802.11 utilisent des ondes de fréquence comprise entre 2.5GHz et 5GHz (généralement).

antennePour pouvoir émettre/recevoir ces ondes nous avons besoin d’une interface Wi-Fi. Il existe des cartes Wi-Fi externes extrêmement puissantes. Tellement puissante qu’elles sont considérés comme illégales… En tout cas en France.

Pour que le Wi-Fi fonctionne il a fallu modifier légèrement le modèle OSI. Les couches impactées sont la couche physique et la couche liaison de données.

On pourrait se demander pourquoi la couche réseau n’est pas affectée. En fait le Wifi ne fonctionne qu’entre notre PC et notre routeur. Notre PC va envoyer des données au routeur via des ondes. Le routeur va les déchiffrer puis va les envoyer sur le réseau via une connexion filaire. Pas besoin de modifier la couche réseau donc !

Les chercheurs de l’IEEE ont donc modifié la couche physique de telle manière que celle-ci s’occupe de moduler les ondes électro magnétiques envoyées. La particularité de cette couche (pour le Wi-Fi) c’est qu’elle peut utiliser plusieurs standards :

-FHSS : Frequency-Hopping Spread Spectrum
-DSSS : Direct-Sequence Spred Spectrum
-OFDM : Orthogonal Frequency-Division Multiplexing
-IR : Infrarouge

(Je ne peux pas vous donner plus d’infos sur ces standards, cela relève plus de la physique et des maths donc… 😛 )

Quant à la couche liaison, celle-ci a été divisée en deux sous couches :

-La couche LLC : Logical Link Control
-La couche MAC : Medium Access Control

Vous trouverez souvent cette notation : 802.11x. Le x correspond aux différentes normes 802.11. En effet ces normes ont évolué avec le temps notamment leurs portées et leurs vitesses de transfert.

La technologie Wi-Fi est donc très intéressante. Cependant un problème majeur est né en même temps qu’elle : comment protéger son réseau des intrus. Après tout, n’importe qui peut capter une onde électromagnétique. Donc n’importe qui peut lire le contenu de vos communications Wi-Fi. Avec le temps les chercheurs ont compris qu’il fallait faire quelque chose contre cette faille de sécurité. Et c’est là qu’apparaît le protocole WEP !

I/Protocole WEP

Donc le protocole WEP (Wired Equivalent Privacy) est le premier protocole sécuritaire qui a vu le jour. Son but est de chiffrer les informations envoyées entre votre PC et l’antenne du routeur de telle manière qu’une personne tierce ne puisse comprendre le contenu de vos communications.
Ce protocole repose sur l’utilisation d’une clé WEP d’une longueur allant de 64 à 256 bits. On dit de ce protocole qu’il est « assez fort » (dans le sens ou on ne peut pas brute force la clé WEP), « à synchronisation automatique » (chaque paquet peut être déchiffré indépendamment des autres), « efficace » (le chiffrement/déchiffrement est rapide), « optionnel » (on peut ne pas l’utiliser).

Le chiffrement par WEP peut-être résumé par ce calcul :

P = RC4(IV||K) XOR (M||ICV(M))

Complexe ? En fait pas tellement ahah, voyons voir comment il fonctionne :

entetemessNous avons notre trame qui contient le message (M) et l’entête (les informations nécessaires à l’envoi de la trame) :

Puisque nous envoyons un message via des ondes électromagnétiques il y a une forte probabilité pour que celui-ci soit altéré. C’est pour cela que l’on va calculer une somme appelé ICV (Integrity Controled Vector) c’est en fait un entier dont la valeur dépend du contenu de la trame. (Si vous avez lu l’article sur le fonctionnement des réseaux vous avez dû voir l’équivalent pour les datagrammes : le checksum).

On va donc ajouter à notre trame l’ICV :

icv

Ensuite on va choisir une clé parmi les quatre disponibles. En effet avec WEP vous pouvez utiliser jusqu’à quatre clés différentes. Cela permet d’en changer si l’une d’entre elle est compromise. Deux informations vont être nécessaire à garder en mémoire : le numéro de la clé (allant de 1 à 4) et la valeur de la clé.

numcle

Pour la suite de l’algorithme il va falloir concaténer le numéro de la clé et la valeur de la clé avec ce que l’on appelle le vecteur d’initialisation. Ce vecteur d’initialisation, de 24 bits, permet de créer une nouvelle clé à partir de la clé WEP. En effet, on va prendre notre clé et on va ajouter 3 octets de données supplémentaires devant. Ainsi si notre clé est 0158 et que notre vecteur d’initialisation est 896 alors notre nouvelle clé sera 8960158. (C’est un exemple je n’ai pas pris de valeurs fidèles à la réalité). Ce vecteur a une taille de 24 bits cela veut dire qu’on pourra créer 2^24 nouvelles clés (16 777 216 clés). On fera de même avec le numéro de la clé et on obtiendra donc ceci :

concat

Une fois ces concaténations faites, on va pouvoir initialiser l’algorithme RC4. Pour cela nous allons remplir un tableau de 256 bits en utilisant la concaténation de l’IV avec la clé. Vous me direz que notre concaténation ne fait qu’entre 64 et 128 bits. En fait on initialisera notre tableau en y mettant autant de fois que nécessaire notre clé : soit 4 fois (64*4 =256) soit 2 fois (128*2 =256).

Ensuite des opérations mathématiques simples seront effectuées de manière à mélanger le tableau. Ces opérations sont vraiment basiques (addition, soustraction échange etc…). Une fois le mélange effectué on va sélectionner plusieurs bits qui deviendront notre nouvelle clé pseudo aléatoire. Puis on va procéder au XOR entre la concaténation du message et son ICV et le résultat du RC4 (pour chaque bit de nos opérandes nous allons comparer leurs valeurs. Si les deux sont différents alors on mettra le bit à 1 sinon à 0).

Schématiquement :

resume

Il n’y a donc qu’une partie de la trame qui est chiffrée : le message et son ICV. Par contre l’entête, l’IV et le numéro de la clé ne l’est pas. Ce qui est tout à fait normal, l’entête ne peut pas être chiffrée de base et la box qui réceptionnera la trame aura besoin de l’IV ainsi que du numéro de la clé afin de pouvoir recréer le tableau d’initialisation pour pouvoir décoder le message.

Sauf qu’il y des règles à respecter pour que RC4 ne soit pas compromis… Et après quelques années de recherche les mathématiciens (cryptologue) ont compris que le protocole WEP ne les respecte pas du tout…

En fait il y en a trois.

  • Ne jamais utiliser deux fois la même clé

La raison est simple, si je chiffre deux messages différents avec une même clé alors en xorant ces deux message chiffrés je vais obtenir le xor du message clair. En bruteforcant un peu le résultat on pourra donc déchiffrer les deux messages et du coup récupérer la clé de chiffrement.

Et bien évidemment la première règle n’est pas respectée pour la simple est bonne raison qu’avec une clé et le vecteur d’initialisation de 3 octets on peut créer 16 777 216 clés. Et il a été prouvé via le paradoxe des anniversaires qu’il suffit d’envoyer 12000 paquets pour retomber avec une probabilité de 99% sur la même clé.

  • Jeter les 512 premiers octets du résultat obtenu via RC4

La seconde règle n’est pas respectée non plus puisqu’il n’y a aucun filtrage des données obtenues après l’utilisation de l’algorithme du RC4. On jette les 512 premiers octets afin d’éviter de tomber sur une clé dites faible c’est à dire facilement crackable. Par exemple, les clés qui commencent par « 00 00 FD » ont 14 % de chance de produire une sortie qui commence par « 00 00 ». On peut donc procéder à une attaque statistique afin de casser RC4.

  • Ne pas chiffrer plus de 2^36 octets de données avec une même clé

La dernière règle quant à elle n’a aucun sens si l’on réfléchit au niveau d’une entreprise…

De ces nombreuses observations sont nées des techniques de crakage et plusieurs outils dont le célèbre Aircrack-ng.

EDIT du 29 Octobre 2017 : Afin de limiter la taille de l’article ne pas vous perdre je l’ai découpé en plusieurs articles. Les suivants présenteront les différentes attaques contre le WEP. A commencer par la fake authentification.

Un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s