StayGeek Just code it.

9juin/1013

[Tuto + Explications] L’attaque Man In The Middle

Dans le domaine de la sécurité réseau, l'attaque Man in the middle est un classique.

Explications


Son but est simple, Prenons l'exemple suivant :

Nous allons imaginer un réseau local simple, deux ordinateurs connectés à un modem, nous les appelerons PC1 (la victime), et PC2 (l'attaquant)

En temps normal, d'après Wikipedia :

Un ordinateur connecté à un réseau informatique souhaite émettre une trame ethernet à destination d'un autre ordinateur dont il connaît l'adresse IP et placé dans le même sous réseau. Dans ce cas, cet ordinateur va placer son émission en attente et effectuer une requête ARP en broadcast. Cette requête est de type « quelle est l'adresse MAC correspondant à l'adresse IP adresseIP ? Répondez à adresseMAC ».

Puisqu'il s'agit d'un broadcast, tous les ordinateurs connectés au support physique vont recevoir la requête. En observant son contenu, ils pourront déterminer quelle est l'adresse IP sur laquelle porte la recherche. La machine qui possède cette adresse IP, sera la seule (du moins si elle est la seule, ce qui est censé être le cas dans tout réseau) à répondre en envoyant à la machine émettrice une réponse ARP du type « je suis adresseIP, mon adresse MAC est adresseMAC ». Pour émettre cette réponse au bon ordinateur, il crée une entrée dans soncache ARP à partir des données contenues dans la requête ARP qu'il vient de recevoir.

La machine à l'origine de la requête ARP reçoit la réponse, met à jour son cache ARP et peut donc envoyer le message qu'elle avait mis en attente jusqu'à l'ordinateur concerné.

Il suffit donc d'un broadcast et d'un unicast pour créer une entrée dans le cache ARP de deux ordinateurs.


Les ordinateurs s'identifient donc sur le réseau grâce aux requetes ARP, qui permettent de faire le lien entre addresses IP et MAC.
Il devient alors possible, pour un attaquant, d'envoyer des fausses requêtes ARP, et donc de se faire passer pour une autre machine.
Le principe de l'attaque Man in the middle est le suivant
  • L'attaquant se fait passer pour la victime auprès du routeur.
  • L'attaquant se fait passer pour le routeur auprès de la victime.

Que se passe-t-il alors?

Toutes les communications (entrantes et sortantes) de la victime passent par l'attaquant, l'attaquant redirige les paquets comme il faut, ainsi tout se passe de manière transparente pour la victime.

Il est donc possible de lire tous les paquets, et des informations sensibles, comme les mots de passes, les sites web consultés.

D'autres pratiques sont possibles, comme le dns poisoning : L'attaquant intercepte les paquets dns transitant entre la victime et le routeur et les modifie.

Les paquets dns permettent de faire le lien entre un nom de domaine et une adresse ip.

Il est alors possible pour l'attaquant de les modifier et de faire pointer des sites connus (google, banques) vers d'autres sites, et ainsi de faire du fishing.

Tuto

Passons maintenant à la pratique, je vous rappelle que ces pratiques sont illégales si appliquées réellement sans l'accord de votre "victime" .

Pour ce mini-tutorial, j'utiliserais sous ubuntu les outils suivants :

Sous ubuntu, il faut activer l'ip forwarding, qui permettra de renvoyer les paquets aux bons ordinateurs

En root :

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

  • wireshark
  • dsniff

Première étape, il faut réaliser l'arp spoofing, c'est à dire envoyer les fausses requêtes arp.

dsniff fournit le programme arpspoof que nous allons l'utiliser, je ne détaille pas la syntaxe, lisez le manuel pour plus d'infos.

Pour "empoisoner" la victime :

sudo arpspoof -i interface -t IP.DE.LA.BOX IP.DE.LA.VICTIME

On repete l'operation dans un autre shell par exemple pour faire l'inverse :

sudo arpspoof -i interface -t IP.DE.LA.VICTIME IP.DE.LA.BOX

Remplacez bien sur les ip et votre interface par la bonne (eth0 / wlan0 / etc).

Ca y'est, les paquets transitent désormais par notre machine.

Il est alors possible de les lire via le très célèbre analyseur de paquets Wireshark

Nous pouvons alors analyser tous les paquets, et trouver les informations que nous cherchons.

Pour faciliter la recherche de mots de passe, faites un man dsniff ;)

De même pour le dns poisoning, dnsspoof, fourni par dsniff est la pour vous.