Pentest Wifi

Qu'est ce que le Wi-Fi ?

Le Wi-Fi (Wireless Fidelity) est apparu en 1997. C’est un groupe de chercheurs de l’IEEE (Institute of Electronic and Electronical Engineers) qui a développé la normea 802.11 qui régissait le fonctionnement du Wi-Fi. Comme tous les moyens de communication sans fil, le Wi-Fi repose sur certaines plages de fréquence qui sont: la bande 2,4Ghz et la bande 5Ghz .

La bande 2,4Ghz s'étend de la fréquence 2,412Ghz à la fréquence 2,484Ghz. Etant donné la "faible" fréquence de ces ondes, le signal aura une très longue portée mais sera moins puissant. L'ensemble de cette bande est elle même divisée en plusieurs canaux de 20 à 22Mhz:

Il existe en tout 14 canaux de diffusion pour la bande 2,4Ghz. Comme on peut le voir sur l'image ci-dessus, ces canaux ont tendance à se chevaucher. C'est ce que l'on appelle l'overlapping. Seuls quatre canaux ne "s'overlap" pas: les canaux 1, 6 et 11. Retenez les bien puisque nous en aurons besoin plus tard.

Dernière chose pour la bande 2,4Ghz, la puissance maximale autorisée d'émission à l'intérieur comme à l'extérieur des bâtiments est limitée à 100mW.

La bande 5Ghz quant à elle repose sur deux bandes:

- 5150 à 5350Ghz
- 5470 à 5850Ghz

Ces bandes sont elles aussi découpées en 22 canaux numérotés modulo 4 de 32 à 68, de 96 à 140, le 144 et finalement de 149 à 165. Ces canaux ont une largeur de 20Mhz et, cette fois, ne se chevauchent pas.

Pour que le Wi-Fi fonctionne il a été nécessaire de modifier les couches physique et liaison de données du modèle OSI. La couche liaison de données a été découpé en deux sous couches: une couche haute (Logical Link Control) et une couche basse (Medium Access Control).

Ces deux sous couches sont utilisées afin d'offrir une certaine fiabilité aux utilisateurs. Le but étant de contrôler les erreurs ainsi que les flux de manière à ne pas perdre de données en cours de route (à cause d'interférences par exemple).

Quant à la couche physique elle repose sur différentes technologies:

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

Malheureusement je ne pourrais pas trop vous expliquer le fonctionnement de ces technos vu que cela relève plus de la physique que de l'informatique. Je vous renvoie donc vers les pages Wikipédia respectives.

Globalement quand on parle de Wi-Fi on parle de la norme 802.11. Il existe pas moins de 21 sous normes qui sont bien trop longues à expliquer donc je vous laisse encore une fois vous reportez vers les bons articles Wikipédia.

Association access point - client

Avant de pouvoir communiquer de façon sécurisée, un client et un access point wifi doivent se connecter puis s'authentifier. Au cours de cet article nous ne traiterons que de l'étape de connexion puisque l'étape d'authentification est détaillée dans plusieurs chapitres dédiés.

La phase de connexion débute par une période de scan passif qui consiste en l'envoi de deux types de trame:

Lorsqu'un access point reçoit une probe à son nom il va émettre une probe response ce qui se va initialiser le processus de connexion:

S'ensuit un ensemble d'échanges:

Une fois ces échanges terminés ont dit que le client est associé à l'access point. C'est d'ailleurs dans cet étape que se trouve un fake client utilisé pour attaquer le protocole WEP.

Une fois le client associé il lui faudra encore s'authentifier que ce soit via un secret partagé (PSK, WEP), via un certificat (EAP TLS) ou encore via un couple d'identifiants (EAP MSCHAP).

Wired Equivalent Privacy

Wired Equivalent Privacy

Comment fonctionne WEP

Le protocole WEP (Wired Equivalent Privacy) est le premier protocole sécuritaire qui a vu le jour. Son but était 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) et   "optionnel" (on peut ne pas l’utiliser).

Le chiffrement WEP peut-être résumé en un calcul :

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

Où:
- P est la data chiffrée
- IV est une valeur supposée aléatoire de 24 bits
- K est la clé de chiffrement utilisée d'une taille minimale de 40 bits
- M est le message à chiffrer
- IVC(M) est une fonction permettant de calculer l'intégrité du message M
- + est l'opérateur de concaténation

Nous avons donc un message M:

 

Afin de s'assurer de l'intégrité de ce message (c'est à dire qu'un attaquant n'en a pas modifié le contenu) un hash, l'ICV (Integrity Controled Vector) du message M est généré à l'aide de l'algorithme CRC-32 puis concaténé au message M initial:

Nous obtenons ainsi le premier élément de notre calcul:

M + ICV(M)

Pour créer le second élément nous allons avoir de la clé de chiffrement K ainsi que d'un IV (Initialization Vector). Le vecteur d'initialisation est utilisé afin de ne pas chiffrer de données directement à l'aide de la clé et donc empêcher la récupération de la clé de chiffrement en cas de cassage du message chiffré. Ce vecteur d'initialisation a une taille fixe de 24 bits et est concaténé à la clé de chiffrement:

Le résultat de cette concaténation est ensuite passé au travers de l'algorithme RC4. Globalement l'algorithme derrière RC4 est assez simple à comprendre. Tout d'abord nous allons remplir un tableau de 256 bits en utilisant la concaténation de l’IV avec la clé.

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 sélectionnera plusieurs bits qui deviendront notre nouvelle clé pseudo aléatoire de chiffrement définitive:

Nous obtenons ainsi le deuxième élément de notre calcul:

RC4(IV + K)

Il ne nous reste plus qu'à xorer les deux éléments entre eux afin d'obtenir le message chiffré. Au résultat du XOR seront ensuite concaténées, les header l'IV, ainsi que le numéro de la clé de chiffrement WEP utilisée en clair:

La trame envoyée contient aussi un header MAC dans lequel se trouve, entre autres, la nature de la trame et les adresses de la source et de la destination. Je l'ai cependant omi dans le schéma ci-dessus pour ne pas l'allourdir. L'IV et le numéro de la clé de chiffremnet sont envoyés en clair tandisque la donnée et l'ICV sont envoyés chiffrés.

De son côté le point d'accès n'aura plus qu'à exécuter l'opération inverse pour déchiffrer la donnée.

Wired Equivalent Privacy

Attaquer WEP: la théorie

Pourquoi est ce qu'on insiste tant pour que plus personne n'utilise WEP? Eh bien vous devez sans doute le savoir mais il existe tout un tas de vulnérabilités liées à ce protocole et ça, on le doit notamment à une mauvaise implémentation des IV ainsi qu'à l'algorithme de chiffrement RC4.

Le premier gros problème de WEP c'est la taille des clés dont la taille est beaucoup trop faible entre 5 et 13 caractères. La seconde c'est le principe même d'IV. 

Comme nous l'avons vu précédemment, l'IV (de 24 bits) est concaténé avec la clé de chiffrement afin de créer un simulat d'aléatoire:

Les 24 bits utilisés pour coder l'IV permettent de créer environ 17 millions d'IV's uniques. Parmis ces 17 millions d'IV disponibles certains ont très vite été considéré comme étant beaucoup trop faibles pour être utilisé. D'ailleurs une attaque cryptographique entière sur le protocole RC4 repose sur ces IV's faibles: l'attaque FMS. Pour la petite anecdote, l'exploitaion de ces IV's faibles à forcer les constructeurs à modifier, à plusieurs reprise, le firmware de leurs points d'accès Wi-Fi afin d'interdire leurs utilisations.

Au delà de ces IV's faibles se cachent un autre problème: le nombre trop peu élévé d'IV's disponibles. En effet l'une des règles d'utilisation du protocole RC4 implique qu'une clé de chiffrement ne doit pas être utilisé pour chiffrer deux messages différents. Or comme nous l'avons vu nous pouvons au maximum créer un peu moins de 17 millions de clé de chiffremnt différentes et, vous vous en doutez, une borne Wi-Fi émet un nomber assez conséquent de paquets. De manière générale il a été montré qu'il était possible de collecter tous les IV's (et donc toutes les clés de chiffrement possibles) en écoutant passivement un réseau pendant 5 heures (et encore, ça c'était il y a plus de 10 ans).

Alors pourquoi est ce que ça devient dangereux de chiffrer deux messages avec le même IV? Eh bien parce que mathématiquement nous obtenons ces égalités:

M1 XOR C = C1
M2 XOR C = C2

Ce qui équivaut à dire que:

M1 XOR M2 = C1 XOR C2

Or comme nous connaissons C1, C2 et M1 nous pouvons obtenir M2

La seconde règle d'utilisation de l'algorithme RC4 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. En fait on devrait jetter 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.

Dernière règle, on ne doit pass chiffrer plus de 2^36 octets de données avec une même clé ce qui, encore une fois, n'est évidemment pas respecté à cause du faible nombre d'IV disponibles.

Toutes ces vulnérabilités cryptographiques offrent un certain nombre d'attaque contre le WEP que je détaillerai dans des articles à part.

Wired Equivalent Privacy

Attaque WEP : ARP replay

Dans cette page nous allons nous intéresser à l’attaque par rejeu de paquets ARP. Cette attaque est la plus fiable et probablement la plus rapide de toute pour récupérer la clé WEP.

La première chose à faire sera donc de passer notre carte réseau en mode monitor. De cette manière on verra tout le trafic qui passe par notre carte.

Pour cela lancez la commande suivante :

airmon-ng start wlan0

Wlan0 c’est le nom de mon interface Wi-Fi sous Kali Linux (pour vous ça peut être autre chose, pour savoir le nom de votre interface tapez la commande ip a).

rep1.png

Si airmon-ng vous dit que des programmes peuvent interférer avec lui-même tuez-les. Pour cela entrez la commande kill suivi du PID. Notre carte réseau sera à partir de maintenant en mode monitor. Par la suite nous allons utiliser l’outil airodump-ng qui sert à capturer les paquets qui passent sur notre carte réseau. Pour cela lancer la commande suivante :

airodump-ng --encrypt wep wlan0mon

Ici --encrypt wep permet de spécifier que l’on s’attaque seulement au protocole wep et wlan0mon est notre interface en mode monitoring. Encore une fois, wlan0mon est le nom de l’interface wlan0 en mode monitor sous Kali Linux. A vous de remplacer par le bon nom.

rep2.png
Dans la liste ESSID (nom du réseau Wi-Fi) on va chercher le nom du réseau que l’on veut frapper. Ensuite on va récupérer son BSSID (l’adresse MAC de l’équipement qui émet l’onde Wi-Fi). Enfin on va relancer airodump-ng avec cette commande :

airodump-ng --write "nom du fichier" --bssid "bssid du réseau à attaquer" --channel "canal utilisé par l'AP" "votre interface Wi-Fi"

Pour moi la commande sera :

airodump-ng –write capture –bssid 24:EC:99:A5:E0:9B  –channel 1 wlanmon

–write permet de créer un fichier dans lequel les données observées seront stockées. Deux fichiers vont être crées : capture-01.cap et capture-01.txt (vous pouvez le nommer autrement : out, fichier, texte… Peu importe, il faudra juste s’en rappeler pour la prochaine étape).

Le premier contient les paquets capturés et le second les informations concernant le point d’accès (essid, bssid etc…). L’option channel permet de spécifier un canal d’écoute. Si vous ne savez pas quel canal utilisé prenez celui indiqué dans la colonne CH.

Dès lors, notre carte réseau ne s’intéresse plus qu’au réseau visé :