Retex : Pentest Wi-Fi WPA2-Enterprise
HOME
Retex : Test d’intrusion Wi-Fi (WPA2-Enterprise)
Introduction
De nos jours, beaucoup d’entreprises utilisent les réseaux sans-fil (Wi-Fi) au sein de leurs établissements. Même si cette techno est plutôt pratique, elle peut constituer un risque de sécurité pour les systèmes d’information et peut se transformer en un véritable cauchemard pour les RSSI et les blue teamers.
Cet article est un retour d’expérience d’un test d’intrusion Wi-Fi. L’objectif est de présenter un cas réel d’une attaque sur le réseau sans-fil (WPA2-Enterprise) d’une organisation.
Dans un premier temps, on va revoir le fonctionnement du Wi-Fi (802.11) et des mécanismes WPA/WPA2.
Ensuite, on verra comment il est possible d’obtenir des informations précieuses sur le réseau interne (noms d’utilisateurs, machines connectées, …) simplement en écoutant les ondes radio avec Wireshark et une carte Wi-Fi USB.
Enfin, on abordera la technique qui consiste à créer un faux point d’accès Wi-Fi et “forcer” des personnes à s’y connecter. On présentera également quelques moyens de défense pour se prémunir contre ces attaques.
Un peu d’histoire
Les normes 802.11
La technologie Wi-Fi fait son apparition au grand public en 1997 avec les normes IEEE 802.11. Elle permet de relier des appareils par ondes radio au sein d’un réseau informatique.
Durant les premières années, il n’y avait aucun mécanisme de cryptographie et les communications circulaient en clair sous forme d’ondes radio dans l’air, accessibles à quiconque muni d’une carte réseau sans-fil.
Il faudra attendre 2 ans pour que le protocole Wired Equivalent Privacy (WEP) fasse son apparition en 1999 pour sécuriser les communications Wi-Fi.
Wired Equivalent Privacy (WEP)
Ce nouveau protocole utilise la cryptographie et plus précisément l’algorithme de chiffrement par flux RC4.
Dans sa première version, le protocole WEP utilisait une clé de 64 bits (seed) constituée d’une clé de 40 bits (key) à laquelle est concaténée un vecteur d’initialisation (IV) de 24 bits.
Cette clé de 64 bits est donnée à l’algo RC4 qui va générer des bits pseudo-aléatoires (keystream). Ce résultat sera ensuite utilisé dans une opération XOR avec le texte clair pour produire un texte chiffré.
Cette opération est répétée, avec la même clé, pour chaque paquet de la communication Wi-Fi.
Quelques années plus tard, des premières études étaient publiées sur les faiblesses de cet algorithme de cryptographie RC4 mais aussi dans l’implémentation du protocole WEP lui-même. Ces faiblesses permettent aux attaquants de casser une clé et de pénétrer un réseau en moins de 5 minutes mais surtout de déchiffrer chaque paquet de la communication.
C’est donc dans l’urgence, en 2003, que naît le mécanisme Wi-Fi Protected Access (WPA), prévu comme une solution intermédiaire en attendant l’arrivée du WPA2 en 2004.
Wi-Fi Protected Access (WPA, WPA2 et WPA3)
Le WPA implémente un nouveau protocole de chiffrement appelé TKIP qui, contrairement au WEP, génère une clé de 128 bits dynamiquement pour chaque paquet de la communication. Il introduit également un nouveau concept appelé 4-way handshake que l’on verra un peu plus tard.
Le WPA2 quant à lui, implémente un autre protocole de chiffrement appelé CCMP basé sur l’algorithme de chiffrement AES avec une clé de 128 bits.
Encore une fois, des études publiées ont démontré la présence de faiblesses (ex: KRACK Attack) dans les implémentations des mécanismes WPA et WPA2 qui restent vulnérables aux attaques de cassage de mots de passe.
Enfin, en 2018, l’organisation Wi-Fi Alliance annonce le lancement du mécanisme WPA3 qui est supposé renforcer la sécurité des réseaux sans-fil en utilisant des mécanismes cryptographiques plus robustes. Mais là encore, des chercheurs ont démontré la possibilité d’effectuer des attaques par recherche exhaustive (brute force) pour deviner le mot de passe (ex: Dragonblood Attack).
Fonctionnement du protocole 802.11
Avant de parler des mécanismes WPA/WPA2, on va d’abord jeter un coup d’oeil au fonctionnement de la base du Wi-Fi, c’est à dire le protocole 802.11. Et comme d’habitude, une image vaut mille mots:
À gauche, on a une station (STA) comme un téléphone, un ordinateur, une TV ou tout autre objet disposant d’une carte réseau sans-fil.
À droite, on a notre point d’accès Wi-Fi (AP) qui fournit un accès au réseau informatique.
Pour illustrer cette explication, on va prendre un exemple concret : un téléphone qui tente de se connecter au réseau Wi-Fi fournit par une “box internet” dans une maison.
Probing
Nos appareils font un scan en continue, à la recherche de réseaux sans-fil. Pour celà, ils envoient des trames, en broadcast, appelées “Probe Request”.
Tous les points d’accès aux alentours répondent avec une trame “Probe Response” indiquant leur configuration et les mécanismes supportés.
Cette trame contient notamment les informations sur l’authentification proposée par les points d’accès. Cette authentification peut s’effectuer selon 2 modes :
- Mode Shared : WEP
- Mode Open :
- Présence du tag RSN :
- CCMP et/ou TKIP (mode WPA2)
- Présence du tag 221 :
- CCMP et/ou TKIP (mode WPA)
- Aucun tag :
- Correspond au Wi-Fi non chiffré
- Présence du tag RSN :
Ici, on constate la présence d’un tag RSN ce qui nous indique l’utilisation du mode WPA2.
Authentication
Si le point d’accès correspond à notre configuration, alors on rentre dans la 2ème phase dite d’authentification (Authentication). Notre station va envoyer une trame Authentication Request au point d’accès.
Note : À cette étape, seuls les modes Open et WEP sont concernés. Les méthodes de sécurité comme l’authentification par clé partagée (PSK) ou par standard 802.1X viennent bien plus tard.
Si tout se passe bien, l’AP répond avec une trame Authentication Response dont la valeur est “Successful”.
À ce stade, la station (téléphone) et le point d’accès sont dans un état dit “authentifié” mais pas encore “associé”.
Association
Ensuite, vient la phase d’association : notre station demande à s’associer au point d’accès en envoyant une trame Association Request qui contient des informations sur ses capacités ainsi que les configurations supportées.
Et à nouveau, si tout se passe bien, le point d’accès répond avec une trame Association Response dont la valeur est “successful”. La trame contient également d’autres informations sur le réseau sans-fil, notamment les débits supportés et d’autres paramètres :
Voilà à quoi ça ressemble le début de la communication 802.11 entre le téléphone et le point d’accès Wi-Fi :
Fonctionnement du Wi-Fi Protected Access (WPA/WPA2)
Jusque là, on a seulement survolé le fonctionnement du Wi-Fi pour les réseaux ouverts et les réseaux utilisant du WEP.
Le WPA se décline en deux catégories :
- WPA-PSK ou WPA-Personal : conçu pour les particuliers ou les petites entreprises, il utilise une clé partagée (Pre-Shared Key) et ne nécessite pas de serveur d’authentification tiers.
- WPA-Enterprise ou WPA-EAP ou encore WPA-802.1X : conçu pour les réseaux d’entreprises et requiert un serveur d’authentification RADIUS. Il utilise le framework EAP qui dispose de plusieurs méthodes pour l’authentification (EAP-MD5, EAP-TLS, EAP-TTLS, EAP-PEAP…).
Cryptographie
Comme on l’a vu un peu plus haut dans l’article, le mécanisme WPA a introduit la notion de 4-Way handshake et l’utilisation du protocole EAPOL.
Mais surtout, contrairement au WEP, le WPA/WPA2 utilise une hiérarchie avec différentes clés pour le chiffrement des communications.
Ces clés peuvent être catégorisées en 2 types :
- Pairwise keys : utilisées pour chiffrer les communications unicast (ex: entre une station et le point d’accès)
- Group keys : utilisées pour chiffrer les communications multicast/broadcast.
A la racine de cette hiérarchie, on a la Pairwise ou Group Master Key (PMK/GMK) en fonction du type de communication (unicast ou multicast/broadcast).
Cette clé est obtenue à partir d’une dérivation de :
- La pre-shared key (PSK) dans le cas d’un réseau avec du WPA/WPA2-Personal.
- La AAA key dans le cas d’un réseau avec du WPA/WPA2-Enterprise.
Le schéma ci-dessous résume l’utilisation des clés pour les communications unicast avec du chiffrement TKIP (WPA) :
Et le schéma suivant résume l’utilisation des clés pour les communications unicast avec du chiffrement CCMP (WPA2) :
Le fonctionnement reste à peu près le même pour le trafic multicast/broadcast. Il faut simplement retirer les clés EAPOL-Key et remplacer les pairwise keys par des group keys (PMK et PTK par GMK et GTK).
WPA/WPA2 4-way handshake
Maintenant qu’on a vu les différentes clés pour la partie crypto, on va voir le fonctionnement du WPA-PSK et voici une vue générale de l’authentification à un réseau utilisant ce mécanisme :
Source : https://networklessons.com/cisco/ccnp-encor-350-401/wpa-and-wpa2-4-way-handshake
Le but de cet article n’est pas de rentrer en détail dans le fonctionnement du 4-way handshake mais plutôt de comprendre les grandes lignes.
Il faut retenir qu’on a une série de 4 messages entre la station et le point d’accès.
Le but de ces messages est de vérifier que l’utilisateur a saisi la bonne clé partagée (PSK) mais aussi que la station et l’AP ont tout deux installé les mêmes clés PTK et GTK chacun dans leur coin. Ces deux clés seront ensuite utilisées pour chiffrer les communications unicast et multicast/broadcast.
Voilà à quoi ressemble le 4-way handshake si on l’observe sur Wireshark :
Authentification WPA/WPA2-Enterprise
L’authentification WPA/WPA2-Enterprise fonctionne de manière différente puisqu’elle n’utilise pas de Pre-Shared Key mais plutôt un serveur d’authentification tiers (RADIUS) :
Là aussi, on ne va pas rentrer dans les détails de chaque message. On va utiliser le joker « we leave this exercice for the reader » et souhaiter bon courage aux curieux dans la lecture de la RFC.
Il faut simplement retenir qu’on a une série de messages EAP qui sont encapsulés et transportés par le protocole EAPOL entre la station (Supplicant) et le point d’accès (Authenticator).
Au début, la station frappe à la porte du point d’accès avec un premier message EAPOL-Start.
Le point d’accès envoie un message EAP-Request/Identity : “Bonjour qui êtes vous ?”.
La station répond avec un message EAP-Response/Identity : “Bonjour je suis Jean D’eau et je veux entrer”.
L’AP vérifie de son côté que ce Jean D’eau existe bien sur le serveur d’authentification RADIUS. S’il existe alors il demande à la station de prouver qu’elle est bien Jean D’eau en lui envoyant un challenge (EAP-Request/Challenge).
Jean D’eau tape son mot de passe qui sera utilisé pour répondre au challenge sans qu’il ne soit transmis sur le réseau. Le point d’accès vérifie ensuite que la réponse de Jean correspond bien au mot de passe qui est stocké sur le serveur RADIUS.
Si tout se passe bien, le point d’accès envoie un message EAP-Success à Jean et le laisse entrer dans le réseau pour surfer sur la toile.
Et ça, c’est juste le fonctionnement de base pour la méthode d’authentification EAP-MD5 qui est la plus simple mais qui est aussi obsolète.
D’autres méthodes d’authentification EAP existent comme EAP-TLS, EAP-TTLS et EAP-PEAP. La différence principale entre les différentes méthodes réside dans l’utilisation du protocole TLS pour l’encapsulation et la transmission des messages EAP durant l’authentification.
Source : https://www.interlinknetworks.com/app_notes/eap-peap.htm
EAP-TLS établit un tunnel TLS entre le client et le point d’accès et nécessite que les deux disposent d’un certificat TLS.
Pour des raisons pratiques, EAP-TTLS et EAP-PEAP n’authentifient que le point d’accès auprès du client et ne nécessitent donc pas de certificat TLS pour le client.
Cas réel d’attaque d’un réseau WPA2-Enterprise
Collecte d’informations
Premier jour du test d’intrusion, le client nous accueille et nous installe dans un bureau. Après quelques minutes de discussion, il nous fournit le SSID du réseau sans-fil à tester.
Armés de notre carte Wi-Fi USB, de la suite aircrack-ng et du logiciel Wireshark, on se met au boulot et on commence à écouter les ondes radio.
Lorsqu’on a capturé assez de trames, on filtre les communications en ne recherchant que les paquets EAP du protocole EAPOL et dont l’adresse MAC source ou destination contient les 3 premiers octets correspondant à notre point d’accès cible.
Très rapidement, on obtient des informations sur la configuration du réseau sans-fil :
- SSID : XXXX
- Sécurité : WPA2-Entreprise
- Fréquence : 2,4 GHz
- Puissance du signal : -33 dBm
- Authentification : EAP-PEAP
- Authentification interne : MSCHAPv2
En observant les trames de type Response Identity, il est possible de récupérer le nom d’utilisateur de la personne qui tente de se connecter au point d’accès.
Parmi les autres informations, on retrouve également l’adresse MAC de sa carte réseau ce qui nous permet de deviner, de manière plus ou moins précise, avec quel type d’appareil la personne tente de se connecter (un ordinateur, un téléphone mobile…).
À la fin de la matinée, on avait déjà une liste, bien fournie, d’utilisateurs à cibler. Bien entendu, à ce stade, on n’avait encore rien fait mais cette simple écoute passive nous fournit déjà beaucoup (trop) d’informations précieuses.
En effet, il n’est pas necessaire pour des attaquants de pénétrer un réseau pour remplir leurs objectifs. Dans le contexte métier de l’organisation auditée, il faut aussi prendre en compte l’espionnage. Un groupe d’attaquants peut se positionner aux alentours de l’établissement et écouter les ondes radio pour savoir :
- Qui travaille au bureau aujourd’hui ?
- Depuis quel type d’appareil ?
- A quelle heure les employés quittent le bureau ?
À partir d’ici, les attaquants ont deux possibilités :
- Effectuer plusieurs tentatives de connexion en utilisant les utilisateurs précédemment énumérés afin de deviner leur mot de passe d’authentification.
- Créer un faux point d’accès et forcer les utilisateurs de l’entreprise à s’y connecter pour divulguer leur mot de passe.
On avait rapidement discuté avec notre contact technique qui nous a informé de la politique de mot de passe et qui était plutôt robuste. On a donc choisi la deuxième option : créer un faux point d’accès.
Création du faux point d’accès
Grâce à l’outil eaphammer, ce processus est entièrement automatisable, ce qui fait gagner un temps considérable lors de la mission.
L’autre avantage de cet outil est le fait qu’il implémente des attaques dites “EAP Downgrade” qui consistent à forcer le client à utiliser des méthodes d’authentification EAP plus faibles, notamment celles qui transmettent les identifiants en clair comme la méthode EAP-GTC.
Par défaut, l’outil va proposer les méthodes d’authentification suivantes :
# Phase 1 (outer authentication)
PEAP,TTLS,TLS,FAST
# Phase 2 (inner authentication)
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
# Génération d'un certificat auto-signé
./eaphammer --cert-wizard
# Création d'un point d'accès pour voler les identifiants RADIUS
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
Avec ces deux commandes, nous voilà munis d’un faux point d’accès utilisant le mécanisme WPA-Enterprise et ressemblant fortement à celui utilisé par les collaborateurs. La question qui se pose maintenant : comment les amener à s’y connecter ?
Deauthentication vs Disassociation
On a opté pour le déni de service (DoS) et de bombarder les appareils, des utilisateurs qu’on avait précédemment énuméré, avec des trames Deauth .
Il est possible d’effectuer cette action avec la suite aircrack-ng et plus précisément le binaire aireplay-ng :
aireplay-ng -0 0 -a MAC_ADDR_AP -c MAC_ADDR_CIBLE wlan0mon
Ici l’option -0 0 permet d’envoyer des trames Deauth en continue. Il nous reste plus qu’à s’armer de patience et espérer qu’une cible se connecte chez nous.
Patience : fun & profit
Ainsi, après quelques minutes d’attente, une des cibles se connecte à notre faux point d’accès en utilisant ses identifiants RADIUS.
Quelques mesures de protection
Identité anonyme
Il est possible pour un utilisateur de renseigner une identité anonyme qui servira à camoufler son nom d’utilisateur dans les messages EAP Identity durant la connexion à un réseau WPA/WPA2-Enterprise.
Cette identité peut être renseignée selon 2 formats :
- anonymous : tous les utilisateurs partagent le même pseudo “anonymous”. Le serveur d’authentification RADIUS fait ensuite lui-même la correspondance pour trouver le bon utilisateur.
- anonymous@realm : les utilisateurs de différents “royaumes” d’authentification cachent leur nom d’utilisateur mais doivent renseigner le nom du “royaume” auxquels ils appartiennent.
La configuration des identités anonymes se fait au niveau du serveur RADIUS qui va agir en tant que serveur EAP-TTLS ou EAP-PEAP. Cette procédure est assez bien documentée ici.
Pour les machines clients qui prennent en charge ce mécanisme, il est possible de configurer ça dans les paramètres réseaux :
Deauth monitoring
Il est possible de surveiller les trames de déauthentification (deauthentication) ou de dissociation (disassociation) en écoutant les ondes radio avec un logiciel comme Wireshark, notamment avec le filtre : wlan.fc.type_subtype == 10 && wlan.fc.type_subtype == 12
En vérifiant l’adresse MAC source de la trame de déauthentification/désassociation, il est possible de savoir si elle provient d’un point d’accès légitime ou non.
Certains scripts comme Deauthalyzer permettent d’automatiser cette tâche.
Néanmoins, selon moi, un attaquant pourrait usurper l’adresse MAC d’un point d’accès et continuer à forger ces trames.
Une autre approche évoquée sur internet consisterait à bombarder constamment les machines connectées avec des trames d’authentification de sorte à prendre le dessus sur les trames deauth/disassoc qui seraient envoyées par des attaquants.
Enfin, il est possible d’utiliser le standard 802.11w, connu aussi sous le nom de Protected Management Frame (PMF). Ce standard ajoute la cryptographie aux trames de gestion (management frames) comme les trames de désauthentification (deauth packets). Néanmoins ce standard n’est pas encore largement diffusé et n’est pas pris en charge par tous les appareils.
Phishing SSID Monitoring
Certains fournisseurs d’équipements réseau proposent cette fonctionnalité de sécurité dans leur routeurs Wi-Fi. Elle consisterait à surveiller la création de point d’accès dont le SSID proviendrait d’une source non légitime et à le supprimer.
Une autre approche, documentée par deux chercheurs chinois Ling Jie et Jin Shuangqi, a démontré qu’en utilisant le Received Signal Strength Value (RSSI) il était possible de connaître avec précision la distance du point d’accès et donc d’avoir un indicateur supplémentaire sur sa légitimé.
Conclusion
Les réseaux sans-fil Wi-Fi ont évolué au fil du temps et des vulnérabilités découvertes dans leur conception.
De plus en plus d’entreprises ont commencé à utiliser cette technologie sans forcément en maitrîser toutes les subtilités.
La sécurité des réseaux sans-fil est parfois négligée au profit de la simplicité d’utilisation pour les collaborateurs, ce qui peut provoquer des incidents dont l’impact est souvent sous-estimé.
Dans certaines situations, des attaquants avancés peuvent pénétrer un réseau en moins de 5 minutes ou tout simplement l’écouter sans s’y connecter pour en tirer des informations précieuses.
Même s’ils sont plus robustes, les réseaux utilisant le mécanisme WPA-Enterprise restent tout de même vulnérables aux attaques par recherche exhaustive de mot de passe (brute force) ou aux attaques par ingénierie sociale comme la création de faux points d’accès.
Références :
- RFC 3748 : https://datatracker.ietf.org/doc/html/rfc3748
- Blog de LSD Security Daemon : https://lsdsecdaemon.com/wifi-connection
- WPA and WPA2 4-Way handhsake : https://networklessons.com/cisco/ccnp-encor-350-401/wpa-and-wpa2-4-way-handshake
- WPA Key Hierarchy : https://networklessons.com/cisco/ccnp-encor-350-401/introduction-to-wpa-key-hierarchy
- 802.11 Association Process : https://documentation.meraki.com/MR/Wi-Fi_Basics_and_Best_Practices/802.11_Association_Process_Explained
- EAP-PEAP and EAP-TTLS Authentication with a RADIUS Server : https://www.interlinknetworks.com/app_notes/eap-peap.htm
- Wireshark Filters : https://semfionetworks.com/wp-content/uploads/2021/04/wireshark_802.11_filters_-_reference_sheet.pdf
- Detect Wi-Fi deauth attack using ESP8266 and receive notification on smartphone : https://www.mobile-hacker.com/2023/10/12/detect-wi-fi-deauthentication-attack-using-esp8266-and-receive-notification-on-smartphone/