L’un des sujets présentés lors de la Hack In Paris 2017 portait sur le standard 802.1x et un outil facilitant les techniques de contournement. Conférence particulièrement intéressante, nous vous proposons ici un compte-rendu plus détaillé.
Le but de ce projet est à l’origine né de la volonté de prouver aux clients que les contournements de la protection 802.1x ne sont pas uniquement des « preuves de concept » (POC), mais également de gagner en discrétion lors des missions de Red Team.
Cet outil a été présenté par Valérian LEGRAND – Orange CyberDefense.
Fonctionnement et protocole
Le standard 802.1x est une technologie d’authentification réseau assez récente, créée en 2001 par l’IEEE qui se base sur du « port-based Network Access Control » ou NAC. La fonction principale est de contrôler les accès physiques au réseau d’entreprise afin d’empêcher des intrus de s’y insérer.
Dans ce standard, on distingue 3 types d’équipement :
- Supplicant: L’équipement demandant à s’insérer sur le réseau
- Authenticator: Le switch ou l’AP Wifi
- Authentication Server : Le serveur de vérification des identifiants de connexion (tel que RADIUS, TACACS, CAS, etc.)
L’authentification est réalisée via « EAPoL EAP Over Lan », encapsulant le protocole réseau EAP (« Extensible Authentication Protocol »).
Le fonctionnement basique d’EAPOL est le suivant:
- L’Authenticator demande au Supplicant de décliner son identité.
- Le Supplicant répond à l’Authenticator et transmet son identité au serveur d’authentification afin qu’il vérifie si le Supplicant est autorisé à s’insérer sur le réseau.
- Si le Supplicant n’est pas authentifié, le serveur d’authentification transmet via l’Authenticator un challenge au Supplicant.
- Le Supplicant résout le challenge et le renvoie au Serveur d’authentification via l’Authenticator.
- Le Server d’authentification autorise ou non le Supplicant à se connecter.
Une fois le Supplicant authentifié, le contrôle d’accès au réseau est directement géré par le commutateur réseau avec le protocole NAC. C’est le rôle crucial de l’Authenticator.
L’Authenticator possède deux états par port physique :
- État non contrôlé : N’autorise que les paquets 802.1x et les transmet au serveur d’authentification.
- État contrôlé : Le port agit comme un port standard et est totalement transparent pour l’équipement.
Contournement de la protection
Note : Les anciens équipements ne supportent pas 802.1x, ainsi se brancher à la place d’une imprimante ou d’un téléphone est souvent un bypass rapide et efficace.
- La manière classique et facile.
Lorsqu’aucune vérification de la présence de deux adresses MAC sur un même port n’est effectuée, il est généralement aisé d’outrepasser l’authentification en utilisant un simple « hub ».
En effet, étant donné que l’ouverture de la prise réseau est contrôlée par le switch, si un équipement légitime et un attaquant sont sur le même hub ils sont donc sur la même prise réseau du Switch.
- L’outil FENRIR
Une seconde technique repose sur l’outil FENRIR, basé sur l’interception et l’injection de paquets réseau.
Prérequis :
- 2 interfaces réseau physiques
- Python
- Scapy
Principe de fonctionnement
D’un point de vue macro, l’outil capture les paquets de l’équipement légitime et ceux de la machine de l’attaquant afin de les rediriger correctement vers leurs destinataires respectifs. Il réécrit également divers entêtes afin de masquer son identité.
Dans le schéma ci-dessous, les paquets B & D émanent et sont à destination de l’équipement légitime, tandis que les paquets A & C proviennent et sont à destination de l’attaquant.
L’attaquant connecte l’équipement légitime à son poste, puis s’insère sur le réseau. L’outil FENRIR laisse alors l’équipement légitime s’authentifier et débloquer la prise réseau.
Puis afin de s’auto-configurer, il étudie les communications entre l’équipement légitime et le réseau afin de récupérer notamment :
- L’adresse IP de l’équipement légitime
- L’adresse MAC de l’équipement légitime
- Les adresses + ports des différents serveurs contactés
Enfin, il usurpe l’identité de l’équipement légitime, l’attaquant étant maintenant en position de man in the middle total.
Lors de cette phase il crée une table de référencement des paquets transmis, afin de se souvenir lors du retour des paquets qu’ils sont à destination de l’équipement légitime.
Les entêtes des paquets en partance du poste de l’attaquant sont ajustées afin d’usurper l’identité de l’équipement légitime. Il inscrit alors ces modifications dans la table de référencement afin de pouvoir rediriger les retours vers leur destinataire respectif.
L’outil opérant en toute transparence, l’attaquant peut poursuivre son attaque en utilisant ses outils.
Il est donc possible de capturer des connections retour, utile pour les reverse shell, Responder, etc.
Un système de création de règles permet d’intercepter à la volée des paquets à destination de ports spécifiques.
Explication des vidéos de démonstration
Cette section a pour objectif d’expliquer les différentes commandes de FENRIR entrées lors des démonstrations de Valérian LEGRAND, et les détails techniques sous-jacents.
Vidéo Démonstration 1 : Fonctionnement succinct
- Create_virtual_tap : FENRIR créer un TAP. Pour rappel, un TAP permet de définir une interface de communication réseau virtuelle, particulièrement utile ici. Ce TAP détient les informations de connexion de l’attaquant.
L’ensemble des paquets sont transmis à ce TAP et FENRIR peut donc s’y interfacer afin de rediriger correctement les paquets entre les deux interfaces réseau (machine légitime ou réseau interne).
- Autoconf : Phase d’apprentissage de FENRIR, détectant l’adresse IP & MAC de l’équipement légitime.
- Show all : Affiche l’ensemble des règles d’interception.
- Run : Exécute FENRIR
Le retour de la commande « nc » se fait à 1:50 et répond par « Hello back ».
Vidéo Démonstration 2 : Utilisation de nmap
Sur la vidéo de démonstration, le mode debug de FENRIR permet d’illustrer que l’outil FENRIR modifie l’ensemble des paquets de l’outil « nmap » afin de réaliser le scan au travers du 802.1x.
Vidéo Démonstration 3 : Utilisation de Responder
- create_virtual_tap
- add_reverse_rule 137 multi IP : Afin de capturer les paquets NBNS
- add_reverse_rule 5355 multi IP : Afin de capturer les paquets LLMNR
- add_reverse_rule 445 unique IP : Afin de capturer dans Responder la connexion
Valérian précise que le système de gestion de règles n’est pas optimal et risque de fortement évoluer. A l’heure actuelle, les mots clefs suivants sont disponibles :
- « Multi », l’outil se met en écoute sur un port, utile notamment pour les outils de Man In The Middle.
- « Unique », l’outil ne capture qu’un paquet avant de supprimer la règle. Utile lors de réception de connexions entrantes afin d’éviter de polluer la connexion du reverse shell et gagner en stabilité.
- Run
Dans un second terminal :
- Responder –I FENRIR : Exécute Responder en spécifiant l’interface réseau TAP de FENRIR.