📡

WiFi-WPA

arthur.bidet@gmail.com


This document is for educational purpose only.

Les Objectifs

L’objectif de toute attaque wifi, c’est le vol de données ou le contrôle. Un attaquant peut aussi bien vouloir intercepter les trames discrètement pour voler des mots de passe ou des informations sensibles, que tenter une escalade de privilège ou un déni de services, là aussi pour voler des données, ou alors pour compromettre le réseau, faire du chantage, faire passer des messages.

Dans cette première partie, nous verrons comment fonctionne le WiFi et les vulnérabilités communes des protocoles utilisés aujourd’hui.

Lors du cours d’aujourd’hui, vous pourrez vous appuyer sur la présentation PDF réalisée dans le cadre de mon Workshop de cybersécurité sur le WiFi proposée aux étudiants de l’UTT en 2024 :

Les types d’attaques

→ Les exploitations de vulnérabilités

→ Rogue Access Point (AP)

→ Les attaques Man-in-the-Middle

→ Brouillage

→ DoS

Fonctionnement du wifi

Les modes de communication et la modulation

Le wifi est une norme (802.11) qui concerne les couches 1 et 2 du modèle OSI, physique et lien. Il a plusieurs modes de communications, infrastructure (AP - clients), et adhoc (clients - clients).

La majorité des standards WIFI utilisent OFDM, une technique de modulation où un signal est divisé en plusieurs sous-porteuses orthogonales, permettant ainsi d'augmenter l'efficacité spectrale et la résistance aux interférences.
En bande de fréquence 2,4GHz, on retrouve généralement 13 canaux en Europe, certains se chevauchent partiellement. On utilise généralement les canaux 1, 6 et 11 qui ne se chevauchent pas.
Les canaux représentent des bandes de fréquences sur lesquelles les APs (Access Points) vont communiquer à leurs clients. Plus un canal est grand, plus il va pouvoir accueillir de sous porteuses orthogonales, ce qui va augmenter la quantité d’information transmise. En général, un canal WiFi peut utiliser des largeurs de canal de 20 MHz.

En WIFI, la méthode d'accès est CSMA/CA, il peut donc y avoir plusieurs clients sur le même canal. De même, il peut aussi y avoir plusieurs AP sur le même canal.

Comment est identifié un point d’accès ?

>BSS : Basic Service Set is a group of wireless devices, that work with the same AP.

>BSSID : AP’s physical MAC address

>SSID : Service Set Identifier, name of the AP

>ESS : Extended Service set , one Service Set can be extended by adding more APs

>ESSID : shared network name

>Channel : 1 à 14, souvent 1, 6 ou 11

1.1) Wi-Fi Protected Access 2

Fonctionnement (PSK)

WPA2 est la version de la norme 802.11i certifiée par la Wi-Fi Alliance. Elle impose de prendre en charge le protocole CCMP, qui s’appuie sur AES, et qui est considéré comme totalement sécurisé.

Cependant, en sniffant un réseau et en capturant une séquence d’authentification entre un client et un AP, on peut obtenir des informations compromettantes.

L’authentification en WPA2 utilise le protocole EAPOL, une extension de EAP définie par IEEE 802. EAP est un protocole de communication réseau, il est constitué d’un échange de trames dans un format spécifique à EAP pour réaliser l’authentification d’un partenaire.

L’authentification est basée sur un 4-way handshake. Cet échange permet de vérifier l’identité du client et de l’AP. Il permet aussi à chacun de négocier les clés de chiffrement pour la sécurisation des communications, ainsi que d’assurer l’intégrité et la confidentialité.

Cet échange utilise plusieurs clés :
- PSK = mot de passe
- PMK = PBKDF2(HMAC-SHA1, PSK, SSID, SSID length, 4096, 256 bits)
- PTK = PRF-512(PMK, "Pairwise key expansion", Min(AA, SPA) || Max(AA, SPA)||Min(ANonce, SNonce) || Max(ANonce, SNonce))
- GTK = dépend de l’AP
- MIC = HMAC-SHA1(PTK, Data)

Les 4 étapes du handshake se composent ainsi :

Etape 1 :
Le point d'accès envoie un ANonce au client.
Etape 2 :
Le client calcule la PTK en utilisant la PMK, l'ANonce, et génère un SNonce.
Il envoie le SNonce ainsi que le MIC à l’AP.
Etape 3 :
Le point d'accès calcule la PTK en utilisant la PMK, le SNonce reçu, et l'ANonce.
Le point d'accès envoie au client un message de confirmation.
Etape 4 :
Le client envoie une confirmation finale au point d'accès.

On peut voir directement des failles dans le protocole d’authentification. Si un attaquant capture certains paquets, comme les deux premiers par exemple, il peut déjà avoir assez d’informations pour retrouver le mot de passe PSK :
- L'attaquant utilise un outil pour écouter le trafic et capture les quatre messages du handshake.
- Il utilise ensuite un outil pour tester des combinaisons de mots de passe (hashcat, aircrack-ng, JtR, …) et procède comme ceci :

  1. Il calcule la PMK en utilisant le mot de passe et le SSID du réseau;
  1. Il génère la PTK en utilisant la PMK, l'ANonce, le SNonce, et les adresses MAC capturées;
  1. Il calcule le MIC attendu;
  1. Si les MIC correspondent, le mot de passe est correct.

Il existe cependant des limites. Un benchmark fait avec un GPU RTX 3090 nous donne ces résultats :

Hashmode: 22000 - WPA-PBKDF2-PMKID+EAPOL (Iterations: 4095)
→ Speed.#1: 1129.0 kH/s (74.07ms) @ Accel:8 Loops:512 Thr:1024 Vec:1

Si le mot de passe est dans rockyou.txt (14M Hashes) : 12.7s

Si le mot de passe est une suite de 8 caractères [a-z0-9] : 2498769 s

Les mots de passe de box internet sont souvent plus longs et plus complexes, par exemple, les mots de passe SFR font 20 charactères, ce qui prendrait au maximum plus de 3.75E+17 années à craquer avec une carte graphique RTX 3090.

Cependant, avec des mots de passe modifiés ou ceux de partages de connexion notamment, cela peut être fait aisément.

WPA-2 EAPOL Attack Application

PMKID ATTACK

Méthode : https://www.hackers-arise.com/post/wi-fi-hacking-part-11-the-pmkid-attack

Fonctionnement :

Génération des PMKs Possibles :
    Brute Force : Si l'attaque est de type brute force, le logiciel génère systématiquement toutes les combinaisons possibles de caractères selon la longueur et le type spécifiés (lettres, chiffres, symboles).
    Dictionary Attack : Pour une attaque par dictionnaire, le logiciel utilise une liste de mots de passe potentiels (le "dictionnaire") qui peuvent inclure des mots de passe courants, des variations, et des combinaisons fréquentes.

Calcul de PMK pour chaque essai :
    Pour chaque mot de passe généré ou extrait du dictionnaire, le logiciel calcule la Pairwise Master Key (PMK) en utilisant la fonction de hachage PBKDF2, qui prend comme entrée le SSID du réseau et le mot de passe candidat.

Calcul du PMKID :
    Une fois la PMK calculée, le logiciel calcule un PMKID pour ce candidat en utilisant une fonction de hachage HMAC-SHA1 (ou équivalent) qui prend en entrée la PMK, l'adresse MAC du point d'accès (BSSID) et celle du client.

Comparaison avec le PMKID capturé :
    Le PMKID calculé est ensuite comparé au PMKID capturé lors de la phase d'écoute. Si les deux correspondent, cela signifie que le mot de passe testé est le bon mot de passe du réseau Wi-Fi.

Attacker le PMKID, son fonctionnement : https://hashcat.net/forum/thread-7717-post-41435.html

Fonctionnement (Entreprise)

WPA2 Enterprise est une version du protocole WPA2 qui utilise le standard IEEE 802.1X pour l'authentification des utilisateurs sur les réseaux sans fil. Il utilise un serveur d'authentification externe, généralement un serveur RADIUS (Remote Authentication Dial-In User Service), pour gérer les informations d'identification des utilisateurs.

L’architecture de ce système a donc trois noeuds principaux :

Processus de l’authentification :

  1. Association Initiale :

    Le client envoie une requête d'association au point d'accès.

  1. Établissement du Tunnel TLS :

    Le client et le serveur RADIUS établissent un tunnel sécurisé en utilisant le protocole EAP sur TLS :

    Plusieurs méthodes EAP peuvent être utilisées, comme EAP-TLS, EAP-TTLS, PEAP, etc.

  1. Échange des Informations d'Authentification :

    À travers le tunnel sécurisé, le client envoie ses informations d'identification.

  1. Authentification Réussie :

    Si les informations sont correctes, le serveur RADIUS envoie un message d'acceptation. Le point d'accès permet alors au client d'accéder au réseau.

  1. Génération des Clés de Chiffrement :

    Des clés dynamiques sont générées pour chiffrer les communications entre le client et le point d'accès.

La connexion est considérée comme très sécurisée, il est très compliqué de la contourner, même si cela reste possible en cas de mauvais configuration.

Voici les méthodes EAP les plus couramment utilisées :

EAP-TLS : Elle utilise des certificats l'authentification mutuelle. Elle est considérée comme très sécurisée mais nécessite une infrastructure à clé publique (PKI) pour gérer les certificats.

PEAP (Protected EAP) : Consiste à établir un tunnel TLS sécurisé et utilise ensuite une méthode d'authentification comme EAP-MSCHAPv2. Elle permet l'utilisation de mots de passe plutôt que de certificats pour les utilisateurs.

EAP-TTLS (Tunneled TLS) :Cette méthode est similaire à PEAP, mais offre plus de flexibilité dans les méthodes d'authentification internes.

1.2) Wired Equivalent Privacy

I) Fonctionnement

https://github.com/g0rbe/CEH/blob/master/16_Hacking_Wireless_Networks.md
https://www.aircrack-ng.org/doku.php?id=aircrack-ng

Le protocole WEP est un protocole qui a été largement utilisé entre 2000 et 2015. Il arrive encore de trouver ce système sur des box anciennes et des réseaux non mis à jour.

Source : Wigle

Ce protocole, qui tient son nom du fait qu’il devait fournir une confidentialité comparable à celui d’un réseau filaire, est aujourd’hui connu pour ses grandes faiblesses et son obsolescence.

Le WEP fait parti de la norme IEEE 802.11 et utilise l’algorithme de chiffrement par flot RC4 pour assurer la confidentialité, ainsi que la somme de contrôle CRC-32 pour l’intégrité.

💡

RC4 est un algorithme de chiffrement continu conçu en 1987 par Ronald Rivest, l’un des inventeurs de l’algorithme de cryptographie asymétrique RSA


RC4 fonctionne de la façon suivante : la clef RC4 permet d’initialiser
un tableau de 256 octets en répétant la clef autant de fois que
nécessaire pour remplir le tableau.
Par la suite, des opérations très simples sont effectuées dans le
but est de mélanger autant que possible le tableau. Finalement on
obtient une suite de bits pseudo-aléatoires qui peuvent être utilisés
pour chiffrer les données via un XOR.

Chiffrement & Déchiffrement

Le chiffrement se décompose en plusieurs phases :
• La création de la graine (IV+clé)
• La création du keystream
• Le calcul ICV
• La constitution du message final et son encapsulation dans une trame

A) Le vecteur d’initialisation

C’est une séquence de bits qui change régulièrement, à chaque trame si l’implémentation est bonne. Il est combiné à la clé statique, ce qui introduit une notion d’aléatoire dans le chiffrement. Deux messages identiques n’auront pas le même contenu chiffré.

Un IV a une longueur de 24 bits (soit 2^24 possibilités).

L’IV, comme la clé, doit être connu de l’émetteur et du récepteur. L’implémentation d’un mécanisme de génération automatique, ou de partage comme celui du bluetooth n’a pas été retenu. L’IV est transporté en clair dans les trames.

💡

Certains systèmes sophistiqués offrent des mécanismes de synchronisation qui dérivent des clés de façon automatique et sûre.

Le RC4 est la propriété de la RSA Security, mais la version allégée ARC4 peut être utilisée légalement. Il est utilisé dans de nombreuses applications, l’une des plus connues étant SSL (Secure Socket Layer).

B) RC4

RC4 ne nécessite pas trop de puissance de calcul. Il est extrêmement rapide (environ dix fois plus rapide que le DES). Il est considéré comme fiable. Cet algorithme reprend le principe du masque jetable (OTP – One Time Pad ou masque de Vernam). En effet, on génère un flux de données de taille identique au flux de données claires et on fait un XOR entre les deux, le déchiffrement se fait par XOR entre le chiffré et le même flux pseudo-aléatoire.


Le procédé mathématique est né d’un vide technique laissé par d’autres procédés de chiffrement extrêmement efficaces mais très gourmands en puissance de calcul. Le gros avantage de RC4 est qu’il fournit un niveau de sécurisation assez élevé, tout en étant implantable de façon logicielle, donc à faible coût. RC4 est l’un des protocoles de chiffrement
les plus utilisés dans le monde.

Deux étapes sont nécessaires pour l’opération de chiffrement :

  • L’initialisation de la clé
  • La réalisation du cryptogramme (texte chiffré ou cyphertext)

C) Initialisation de la clé

La clé WEP, notée K, peut être de deux longueurs différentes :

  • 40 bits (5o)
  • 104 bits (13o)

La clé K est concaténée à l’IV, généralement en position LSB. On obtient alors une clé de 64 bits (8o) ou 128 bits (16o), que l’on appelle graine, germe, plaintext ou seed : IV || K ( ||=concaténation).

Ensuite, on applique la fonction RC4 à cette graine pour obtenir le ‘Keystream’.
5 octets étant relativement petit, cette version pourrait être sensible au bruteforce en cas d’attaque par clair connu.

D) Le contrôle d’intégrité

Initialement conçu pour la détection d’erreurs, le CRC est parfois vu comme un indicateur d’intégrité. Il repose sur des fonctions de hachage cryptographiques. Les fonctions cryptographiques sont généralement non linéaires, pour garantir l’impossibilité de reconstruire le hash en modifiant les données. Cependant, ce n’est pas le cas pour le CRC, ce qui n’est pas sans conséquences.

La séquence de contrôle est noté ICV.

E) Construction du message final

Il a été mathématiquement démontré par Claude Shannon qu’un chiffrement est fiable si la longueur de la clé est au moins égale à celle du message à chiffrer.

Dans le chiffrement RC4, chaque bit du texte en clair est chiffré par un bit de la table. On réalise un XOR bit à bit entre l’une des clés aléatoires et le payload.

Contrairement au chiffrement par blocs, le chiffrement par flux permet de traiter un message de n’importe quelle taille sans rien découper.

L’opérateur XOR est adéquat pour le chiffrement symétrique car en l’appliquant deux fois, on obtient le message de base :

(M|K)|K=M|(K|K)=M|0=M

Le résultat de la séquence chiffrée C est donné par : C=(M||ICV(M)) xor RC4(IV||K)

Récapitulatif

Chiffrement d’un message avec la clé WEP

Déchiffrement d’un message

Distribution des clés

Le problème de la distribution des clés est un aspect majeur du protocole WEP. La clé WEP est partagé entre l’AP et tous ses clients et est statique.

Certains AP permettent la génération d’une passphrase qui initialise un générateur dur 32 bits. Cependant, ces générateurs sont biaisés vu que la passphrase est crée avec seulement des charactères ASCII (bit de poids fort nul). Ainsi l’espace décrivant la graine va de 00:00:00:00 à 7F:7F:7F:7F.

L’utilisation d’une clé sur 104 bits est donc vivement conseillée. Sa génération repose aussi sur une passphrase, mais cette fois c’est la fonction md5 qui sera utilisée. Alors, seuls les 104 premiers bits.

L’authentification OSA

Open System Authentification est utilisée par défaut et se déroule en deux étapes. Un des parties envoie une trame de gestion en précisant l’algorithme souhaité (0=ouvert). Si WEP est utilisé, le corps de la trame est chiffré, il faut alors que la clé utilisée par l’AP et le client soit la même.

L’authentification SKA

Shared Key Authentication nécessite le partage d’une clé de chiffrement par les 2 entités. L’objectif est de vérifier que le pair possède bien la même clé. Le challenge permettant de vérifier la possession de la clé est une preuve à divulgation nulle de connaissance (ZKIP).

II) Les attaques (WEP)

A) Attaque FMS/Korek (IVs)

B) Attaque par fausse authentification

C) Attaque Chop-Chop

D) SKA challenge/response

Ressources supplémentaires :

Environnement d’exercices : https://github.com/koutto/pi-pwnbox-rogueap