Man in the middle 802.1x : Différence entre versions

De Wiki d'activités IMA
(Semaine 5)
(Semaine 5)
Ligne 137 : Ligne 137 :
  
 
==Semaine 5==
 
==Semaine 5==
 +
Cette semaine, nous avons reçu les cartes ainsi que les composants nécessaires à la finalisation de celles-ci. Ci-dessous, le rendu final des cartes après soudure.
 +
 
[[Fichier:Carte transceivers dessous.jpg|200px|thumb|center|Carte avec 74VHC245 vu du dessous]]
 
[[Fichier:Carte transceivers dessous.jpg|200px|thumb|center|Carte avec 74VHC245 vu du dessous]]
 
[[Fichier:Carte transceivers dessus.jpg|200px|thumb|center|Carte avec 74VHC245 vu du dessus]]
 
[[Fichier:Carte transceivers dessus.jpg|200px|thumb|center|Carte avec 74VHC245 vu du dessus]]
 
[[Fichier:Carte relais dessous.jpg|200px|thumb|center|Carte avec relais vu du dessous]]
 
[[Fichier:Carte relais dessous.jpg|200px|thumb|center|Carte avec relais vu du dessous]]
 
[[Fichier:Carte relais dessus.jpg|200px|thumb|center|Carte avec relais vu du dessus]]
 
[[Fichier:Carte relais dessus.jpg|200px|thumb|center|Carte avec relais vu du dessus]]
 +
 +
La carte à relais n'est pas entièrement terminée car le transistor MOSFET n'a pas été livré dans les temps avec les autres composants. Pour le coup, la phase de test s'effectuera donc sur la carte avec 74VHC245. Sur les 8 pins mâles au milieu de la carte nous viendrons connecter le câble ethernet. Une Arduino fournira l'alimentation nécessaire aux transceivers et aux inverseurs (+5V), ainsi que le signal de commande des transceivers (voir le fichier programme de contrôle des commutations en fin de wiki).
  
 
==Semaine 6==
 
==Semaine 6==

Version du 30 juin 2019 à 17:12


Présentation générale

  • Nom du projet : Man in the middle 802.1x
  • Stagiaire : Brandon ELEMVA
  • Encadrant : Xavier REDON

Projet

Man In The Middle concept

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 chiffrant ses données avec Ap. C intercepte 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 :

Schéma réalisé par Erwan Broquaire et Pierre-Yves TANNIOU
Montage réalisé par Erwan Broquaire et Pierre-Yves TANNIOU

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 à diodes en tête bêche (avec ou sans transistor) :
Schéma de principe de diodes en tête bèche

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 :
Schéma conceptuel d'un optocoupleur

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 :
Schéma conceptuel du AD8075

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 :
Schéma conceptuel du transceiver 74VHC245

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.

Schéma logique du 74VHC245
Table de vérité du 74VHC245

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 :

Schéma du 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 :

PCB du montage à base de 74VHC245

Cela dit, un tel montage ne peut fonctionner d'un point de vue informatique, tout du moins pas tel que nous le souhaitons. 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. Ceux-ci sont donc commandés avec des directions opposées (au niveau 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.

Schéma du montage à base de 74VHC245

Montage à base de relais type DPDT :

Schéma du montage à base de DPDT

L'idée était de s'inspirer du travail effectuer par nos 2 ingénieurs. Cependant, le montage qu'ils ont réalisé ne s'applique que dans le cas le cas où on ne souhaite limiter notre application qu'à des câbles de 100 Mbit/s de débit. Or, nous souhaitons pouvoir appliquer notre montage sur des réseaux de 1Gbit/s de débit. De ce fait, plutôt que ne prendre que 2 paires de fils comme eux l'ont fait (blanc-orange, orange, blanc-vert, vert), nous prenons les 8 fils utilisés par le câble ethernet. Le sechéma ainsi obtenu diffère du leur sur plusieurs points, mais le principe reste le même (et s'inspire de celui que nous avons réalisé avec les transceivers).

Nous nous sommes servis de relais DPDT (Double Pole Double Throw). Ils sont équivalents à 2 relais SPDT (Single Pole Double Throw) fonctionnent ensemble et pilotés par la même bobine.

Schéma conceptuel d'un relais DPDT

Ils possèdent 2 contacts l'un à l'opposé de l'autre qui font office de borne commune, 2 contacts Normalement Ouvert ou NO pour "Normaly Open" (quand il n'y a aucune tension sur la bobine) et 2 contacts Normalement Fermé ou NC pour "Normaly Closed" (également lorsqu'il n'y a aucune de tension sur la bobine). Quand on applique une tension sur la bobine, on entend des "clics" : les bornes communes vont se connecter sur les contacts NO et les contacts NC vont s'ouvrir. Dès qu'on coupe la tension aux bornes de la bobine, on entend à nouveau des "clics" et le relais revient à son état de repos (les NO ouverts et les NC fermés). Le relais DPDT possède donc 8 broches au total : 6 pour les contacts, 2 pour la bobine.

PCB du montage à base de relais DPDT

Les PCB étant réalisés, il ne nous reste plus qu'à réaliser les cartes et passer à la phase de test.

Semaine 4

Après avoir consulté Mr BOE, nous nous sommes aperçus que la carte à relais pourrait ne pas fonctionner comme nous le souhaitions. En effet, j'ai connecté l'alimentation directement aux relais, impliquant ainsi que la bobine de ceux-ci serait toujours alimentée et, donc, les contacts resteraient bloqués sur la position NO. Dans ce cas, déconnecter l'alimentation manuellement aurait pu être une solution mais le temps de commutation aurait donc été beaucoup trop long. Il fallait donc concevoir un montage permettant de couper l'alimentation des relais.

Nous avons donc pensé à utiliser un montage "high side switch".

Montage High Side Switch

Le fonctionnement est le suivant : on place un transistor MOSFET entre la source d’alimentation et la borne In de bobines de nos relais. Celui-ci coupe donc l'alimentation des bobines. À la borne Source de transistor, on connecte le + de notre alimentation. Sur la borne Drain, on connecte nos relais. Sur la borne Grille, on connecte un transistor NPN (tant que sur la base du transistor NPN on a un signal de 5V appliqué dessus, le MOSFET reste actif et coupe l'alimentation des relais) et une résistance (pour limiter le courant à la base du MOSFET). En parallèle à nos relais, nous ajoutons des diodes de roue libre afin de protéger les inductances de nos relais d’une éventuelle surtension.

Nous avons pu arriver, ainsi, aux schéma et PCB suivants, qui ont été validés pour le montage à relais :

Schéma électrique final du montage à relais
PCB final du montage à relais

Semaine 5

Cette semaine, nous avons reçu les cartes ainsi que les composants nécessaires à la finalisation de celles-ci. Ci-dessous, le rendu final des cartes après soudure.

Carte avec 74VHC245 vu du dessous
Carte avec 74VHC245 vu du dessus
Carte avec relais vu du dessous
Carte avec relais vu du dessus

La carte à relais n'est pas entièrement terminée car le transistor MOSFET n'a pas été livré dans les temps avec les autres composants. Pour le coup, la phase de test s'effectuera donc sur la carte avec 74VHC245. Sur les 8 pins mâles au milieu de la carte nous viendrons connecter le câble ethernet. Une Arduino fournira l'alimentation nécessaire aux transceivers et aux inverseurs (+5V), ainsi que le signal de commande des transceivers (voir le fichier programme de contrôle des commutations en fin de wiki).

Semaine 6

Paramètres à fixer dans le fichier interfaces de la Rpi
Liste des appareils connectés ou déconnectés temps réel sur le PC légitime

Source

Documentation

Man In The Middle 802.1x : principe[1]

Silent Wire Hacking by Pierre-Yves Tanniou and Erwan Broquaire[2]

Datasheet transceiver 74VHC245[3]

Datasheet relay DPDT G6K[4]

Montage High Side Switch : Réalisation du montage[5]

Programme Arduino permettant le contrôle la commutation des relais et des 74VHC245 : Fichier:Programme controle commutation.zip