Man in the middle 802.1x
Sommaire
Présentation générale
- Nom du projet : Man in the middle 802.1x
- Stagiaire : Brandon ELEMVA
- Encadrant : Xavier REDON
Projet
Le concept du Man In The Middle 802.1x est le suivant : soit un PC connecté sur un réseau ethernet et communiquant avec un serveur distant. On insère sur ce même réseau un PC "d'attaque" qui viendra écouter la communication qui s'effectue sur le réseau. L'objectif de cette manoeuvre est de pouvoir intercepter les échanges qui s'effectuent entre les deux parties de manière totalement discrète et de se faire passer pour l'un ou les 2 parties.
Pour entrer plus dans les détails, supposons 2 interlocuteurs A et B possédant chacun une clé publique que nous nommerons Ap et Bp, et une clé privée que nous nommerons As et Bs :
- lors d'un échange de données chiffrées normal, A envoie ses données à B en les protégeant avec la clé Bp. B n'aura qu'à les déchiffrer avec Bs;
- à ces 2 interlocuteurs, nous insérons un troisième, C, possédant les clés Cp et Cs. C ne peut déchiffrer ni Ap ni Bp car ne possède pas les clés privées adéquates;
- dans le cas d'une attaque, on suppose que B répond à A en chiffrantant ses données avec Ap. C intercèpte donc les données, modifie la clé publique et renvoie ainsi sa clé Cp à A en se faisant passer pour B (sans que A s'en aperçoive);
- A va donc répondre à C en chiffrant ses données avec la clé Cp (sans le savoir): C est en mesure de déchiffrer les données avec Cs et donc voir le contenu du message envoyé;
- C retransmet ainsi le message à B avec la clé Bp (légèrement modifiée si nécessaire) qui va déchiffrer le message avec Bs sans se douter de rien.
Ainsi, A et B vont continuer de s'échanger des messages en pensant utiliser la clé publique de l'autre sans se douter que c'est celle de C qu'ils utilisent en réalité. L'intrusion est ainsi un succès.
Le sujet
Notre objectif pour ce projet est de concevoir une carte électronique qui nous permettra d'effectuer ce même type d'attaque mais cette fois sur un réseau ethernet 802.1x . Nous simulerons, une fois la carte réalisée, une attaque sur le réseau ethernet des PC disponibles dans les salles de TP de Polytech en suivant le même procédé. Pour cela, nous nous inspirerons des travaux menés par les ingénieurs Erwan Broquaire et Pierre-Yves TANNIOU qui ont déjà réalisé un tel montage à base de relais, l'idée étant de proposer un modèle optimisé par rapport à celui-là.
Cahier des charges
Objectif :
- Concevoir un système permettant de simuler une intrusion sur un réseau éthernet tel que celui disponible dans les salles de TP de Polytech Lille.
Besoins fonctionnels :
- Ce système doit être discret;
- La communication doit pouvoir être bidirectionnelle entre le PC d'attaque et les PC légitimes;
- Si possible, utiliser d’autres composants que des relais électromécaniques pour la commutation lors de l’attaque.
Contrainte :
- Minimiser au maximum le coût des composants.
Résultat attendu :
- Un prototype capable de permettre l'intrusion d'un PC extérieur dans une communication entre un PC et un serveur via une liaison ethernet sans que cette intrusion ne soit détectée.
Le travail effectué
Semaine 1
Cette première semaine de travail était principalement dédiée à de la recherche et de l'analyse du sujet. Avant de se lancer dans la réalisation de notre système d'attaque, il était essentiel de comprendre le fonctionnement du montage réalisé par les ingénieurs précédemment cités. Nous nous sommes donc penchés, dans un premier temps, sur la réalisation de la partie matérielle du projet. Les travaux qu'ils ont réalisés sont les suivants :
Le système réalisé par les deux ingénieurs précédemment mentionnés est composé de relais électromécanique qui permettent de basculer les connexions du réseau attaqué vers les équipements d’attaque employés. Or, leur délai de commutation est de 5 ms, ce qui laisse une période durant laquelle la communication est interrompue, exposant ainsi l’intrusion. Ils ont donc ajouté des résistances sur leurs commutateurs d’attaque et les ont reliées au réseau attaqué afin de tromper le réseau en faisant passer le signal émis comme étant un simple bruit sur la ligne.
L'objectif de leur manœuvre était d'avoir 2 commutateurs d'écoute : l'un écoutant les informations transmises par le PC relié à la caméra, l'autre écoutant les données transmises par la caméra de surveillance. Une Raspberry d'attaque peut éventuellement être rajoutée en cas d'attaque sur le VLAN des commutateurs légitimes (ceux qu'on attaque).
Semaine 2
À partir de nos analyses effectuées lors de la semaine précédente, l'objectif de cette semaine était de déterminer les composants pouvant remplacer les relais électromécaniques, ceux-ci devant être silencieux et discret et devant permettre la transmission bidirectionnelle des signaux perçus sur le réseau. L'objectif étant de pouvoir commencer à réaliser un schéma électrique fonctionnel en vu du routage de notre carte.
Voici les principales idées émises :
- montage à diode en tête bèche (avec ou sans transistor) :
En positionnant les diodes sous cette configuration, nous sommes en mesure de bloquer le sens du courant dans un sens comme dans l'autre (on peut également rajouter des transistors en série à nos diodes). Cela dit, un tel système ne garantit pas une bidirectionnalité de notre montage car nous n'avons aucune indication concernant le signe du courant transmis sur la ligne de transmission, donc système peu fiable;
- montage à base d'optocoupleurs :
Les optocoupleurs fonctionnent de la manière suivante : il reçoit à son entrée un courant qui traverse une LED IR (infrarouge). Cette LED va s'allumer et émettre une lumière IR dans un boîtier hermétique à la lumière qui sera reçue par un phototransistor ou une photodiode. Celui-ci devient donc passant et ferme le circuit de sortie. L'optocoupleur fait donc les conversions successives suivantes : courant électrique - lumière infrarouge - courant électrique. Le seul soucis : ce dispositif est unidirectionnel, bien qu'il soit plus rapide et plus discret qu'un relais électromécanique. Il faudrait donc prévoir un optocoupleur par pins connectées. Sachant qu'un port RJ45 possède 8 pins entrées/sorties, il faudrait donc 8 optocoupleurs. Et pour avoir une bidirectionnalité, il faudrait avoir 8 optocoupleurs supplémentaires dans les sens opposé aux 8 premiers. Soit 16 optocoupleurs ! Cela est donc coûteux d'une part, et complexe d'un point réalisation d'autre part;
- montage à base de buffers :
Le buffer sélectionné ici est un AD8075, utilisés pour la transmission de signaux RGB (il s'agit donc d'un buffer vidéo). Le principe est le suivant : on envoie un signal sur la pin OE\ (si on envoie un signal elle sort un '0' logique, si on envoie rien elle sort un '1' logique) qui va activer la fermeture ou l'ouverture des interrupteurs reliant les sorties aux entrée correspondantes. À l'aide d'une Arduino ou d'une Raspberry pour la commande des interrupteurs, un tel système est tout à fait possible. Cela dit, le problème de la bidirectionnalité se pose car rien n'indique que ces buffers soient bidirectionnels. Il faudrait donc penser également à un système pouvant permettre cette bidirectionnalité;
- montage à base d'émetteurs/récepteurs :
Le 74VHC245 est un dispositif dispositif à 16 broches entrées/sorties réversibles Réversibles car via la pin DIR, nous sommes en mesure de déterminer dans quel sens passe le courant (c'est-à-dire, fixe les pins A entrées et les B en sorties ou l'inverse). La pin OE\ permet d'autoriser ou non le passage du courant selon le signal envoyé sur cette pin. Ci-dessous, vous avez le schéma logique du circuit interne à ce transceiver ainsi que la table de vérité associée.
Ce dispositif semble bidirectionnel car il est possible de permuter les entrées et les sorties.
Nous avons fini par opter pour la solution à base d'émetteurs/récepteurs car celle-ci semblait plus viable et sûre en terme de fonctionnalité par rapport à notre application. Cela dit, nous avons également décidé de réaliser un montage à relais dans la même optique que celui réalisé par les 2 ingénieurs.
Semaine 3
Nos composants ayant été choisis, il nous fallait donc réaliser les schémas électriques correspondants aux montages que nous souhaitions réaliser.
Montage à base de 74VHC245 :
L'idéal pour notre montage aurait été de pouvoir le réaliser en simple face, nous conduisant donc au PCB suivant :
Cela dit, un tel montage ne peut fonctionner d'un point informatique, tout du moins pas tel que nous le souhaitions. En effet, l'idée est de pouvoir commander les commutateurs l'un à l'opposé de l'autre. Plus précisément : nous avons placer 2 transceivers (émetteurs/récepteurs) au niveau de chaque port RJ45 dans le but de gérer la bidirectionnalité de nos signaux. Ils sont donc commandés avec des directions opposées (au nivea des 2 ports RJ45) mais le signal reçu sur la pin OE\ est le même pour les 2 sur un port et l'exact opposé sur l'autre port. Ainsi, le signal de commande de l'un est l'opposé de l'autre. Pour réaliser cela, nous avons utiliser des portes logiques NOT au niveau des pins DIR et OE\ des 4 transceivers. Les 8 pins auxquelles sont reliées nos RJ45 sont en fait un connecteur HE10. Nous allons dénuder un câble RJ45, le couper et venir "mordre" les fils avec ce HE10 qui sera donc relié à nos RJ45.
Montage à base de relais type DPDT :
image schéma