Espionnage réseau : HTTP, ARP et DNS Spoofing

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


Tout au long de cet article je vais vous montrer les techniques utilisés par les pirates pour vous voler vos informations sur le réseau.

I/ Protocole ARP et Ettercap

Le protocole ARP (Address Resolution Protocol) est un protocole qui fait la liaison entre la couche 2 et la couche 3 du modèle OSI. Ce protocole est nécessaire au fonctionnement d’IPv4.
Il permet de faire la liaison entre l’adresse IP (adresse réseau) d’une machine et son adresse MAC (adresse physique). Prenons un exemple concret :

Capture d’écran du 2019-09-13 12-44-04

Imaginons que le PC 1 veuille communiquer avec le PC 2. Pour cela il va avoir besoin de l’adresse MAC du PC 2. Cependant tous ce que nous avons c’est son adresse IP. Le PC 1 va donc effectuer une requête ARP en broadcast. Pour rappelle l’adresse IP de broadcast permet d’envoyer une requête à toutes les machines présentes sur le même réseau. La requête va être de cette forme :

2

Trame récupérée grâce à Wireshark

Le PC d’IP 172.30.44.124 demande qui est 172.30.32.1. A partir de là le protocole ARP va récupérer l’adresse MAC du PC destinataire et la stocker dans le cache ARP (une liste qui contient la paire d’adresse IP/Mac).
Revenons sur Cisco. Si je lis le cache ARP (CMD : arp -a) du PC1 je n’y trouverai aucune information :

3

C’est tout à fait normal puisque le PC1 n’a pas encore communiqué avec les autres PC. Par contre si je ping le PC2 et qu’ensuite je lis le cache ARP :

4

Nous avons bien l’adresse IP du PC2 ainsi que son adresse MAC (Physical Address).
Si vous utilisez Wireshark pour scanner le trafic de votre réseau, vous trouverez parfois des requêtes ARP dites « gratuitous ».

Ce sont des requêtes ARP qui sont faites automatiquement lors du lancement du système d’exploitation d’un équipement tel qu’un routeur.

Ce qui est intéressant avec ce protocole c’est qu’il est facilement exploitable pour un pirate. Imaginez la situation suivante :

Capture d’écran du 2019-09-13 13-53-01.png

Un PC communique avec un serveur, ils s’échangent des paquets de données. Sur le même réseau ce trouve un attaquant qui va procéder à une attaque par ARP poisoning. Une attaque par ARP poisoning consiste à corompre les caches ARP des machines présentes dans un réseau de telle manière que ces dernières envoient toujours leurs paquets vers la machine de l’attaquant.

Ainsi, quoi qu’il arrive, si l’attaque par ARP poisoning fonctionne, le PC de la victime enverra tous ses paquets au PC de l’attaquant qui ensuite les forwardera au serveur et inversement :

Capture d’écran du 2019-09-13 13-58-14.png

Alors pour effectuer cette attaque nous allons utiliser l’outil Ettercap. Il est disponible sous Linux et Windows. Dans mon cas je me servirai de la distribution Kali Linux (le logiciel est d’office présent dans la distribution).

Dans un premier temps nous allons procéder à une attaque Man In The Middle (MiMT) qui permet d’interposer le pc pirate entre le pc victime et le routeur dans le but de sniffer des données tel que des mots de passe ou des identifiants de compte. Pour cela je vais utiliser deux ordinateurs : l’un sous windows 10 (victime) et l’autre sous kali linux (pirate). Celui sous windows 10 possède l’adresse IP suivante : 192.168.0.29. La passerelle par défaut de mon routeur est 192.168.0.1 et l’adresse IP du PC sous Kali est IP 192.168.0.27.

Il va donc falloir que je dupe le routeur et le pc de la victime afin de détourner leur trafic. Pour cela il faudra lancer ettercap avec la commande suivante :

sudo ettercap -G

Arguments:
-G pour ouvrir l’interface graphique et sudo pour avoir les droits

7
L’interface d’Ettercap

Ensuite il faudra cliquer sur « Sniff » puis sur « Unified sniffing ». Une fenêtre va s’ouvrir vous demandant quelle interface vous souhaitez utiliser. Eth0 correspond à votre interface Ethernet, wlan0 à votre interface wifi… Personnellement je suis connecté via un câble. Je vais donc utiliser l’interface eth0. Ensuite il faudra scanner votre réseau à la recherche du pc de la victime. Pour cela cliquez sur Ctrl-S pour lancer le scan du réseau puis Ctrl-H pour afficher la liste des hôtes.

A partir de là, il va falloir choisir nos deux cibles. Dans notre cas la cible une est l’interface de notre routeur : 192.168.0.1. 8Pour la sélectionner, cliquer sur la ligne correspondant à l’interface du routeur puis cliquer sur « Add To Target 1 ». Faites de même pour le PC de la victime. Ensuite allez dans l’onglet « MITM » puis cliquez sur « ARP poisoning ». Une nouvelle fenêtre va s’ouvrir et va vous demander des paramètres optionnels. Cochez impérativement « Sniff remote connections ». Cela indiquera à Ettercap qu’il doit rediriger les requêtes qu’il reçoit aux machines ciblées originellement.

Et voilà, l’attaque a été faite ! Pour vérifier que tout s’est bien déroulé allez dans l’onglet « Plugins » puis « Manage the plugins » et double cliquez sur « chk_poison ». Si Ettercap vous renvoie ceci :

9

Alors votre attaque ARP poisoning est opérationnelle. Sinon c’est qu’il y a eu une erreur…
Dans notre cas tout est bon, on va donc pouvoir commencer notre attaque !

Alors ce qu’il faut bien comprendre c’est qu’il y a de nombreux protocoles de sécurisation des communications sur Internet. Notamment le Protocol SSL (TLS maintenant). Ce genre de protocole crypte totalement le contenu des communications faites entre un PC et le serveur. Il est donc « à priori » impossible de lire leur contenu même en utilisant Wireshark ! L’ARP poisoning semble donc être limité. Sauf que de nombreux sites n’utilisent pas ces sécurités basiques. Dans le premier exemple je vais utiliser un site dédié aux attaques : http://www.webscantest.com. Dans le second par contre j’utiliserai un site que j’ai trouvé et qui est vulnérable à ce genre d’attaque.

Premier exemple

Voici le formulaire utilisé :

10

Maintenant si j’entre un login et un password et que j’appuie sur login et bien je vais voir ces informations s’affichées en clair sur le PC pirate :
Login = lol // Password = coucou

12

En tout est pour tout il m’aura fallu cinq minutes pour récupérer l’identifiant et le mot de passe de ma victime. Bien évidement ceci ne marche pas pour tous les sites… En fait je dirais même plus qu’il y a très peu de « gros » sites qui sont vulnérables à ce genre d’attaque (du moins dans sa version basique).

Pour le second exemple on va aller plus loin encore ! Après quelques minutes de recherche j’ai trouvé un site qui n’utilise pas de protection de communication.

Second exemple

Cette fois nous n’allons pas sniffer les identifiants et le mot de passe de la victime mais carrément toute sa session d’inscription sur le site !

13

Voici une partie du formulaire :

En plus des informations basiques (nom prénom, mail etc…), le formulaire demande aussi le numéro de SIRET de l’entreprise, l’adresse, le numéro de téléphone, la date de naissance etc…

A priori ces informations sont inutiles. Sauf pour un pirate.

Comme pour l’exemple 1, j’ai procédé à une attaque par ARP Poisoning. Ce qui veut dire que tout le trafic de l’ordinateur de la victime va transiter par le PC du pirate. Donc si j’entre des données dans ce formulaire et bien logiquement elles devraient s’afficher sur l’Ettercap du pirate.

Le compte a été créé avec succès :

14

Et comme prévu l’ensemble des informations ont transité par le PC du pirate :

15

J’ai donc accès à l’adresse de ma victime, son numéro de téléphone, le nom de sa société, potentiellement son SIRET et pleins d’autres informations extrêmement utiles pour un pirate informatique !!

Cependant l’ARP poisoning offre beaucoup plus de choses que simplement des identifiants et des mots de passe. En effet une fois l’attaque ARP faites, vous pouvez très facilement scruter l’ensemble du trafic de votre victime. C’est-à-dire que vous pourrez dresser l’ensemble des sites sur lesquels la victime va, et à quel moment de la journée. Pour cela il suffira d’utiliser l’outil Wireshark !

II/ Wireshark

Wireshark est un outil d’administration de réseau. Il permet d’avoir une vue d’ensemble sur le trafic de votre réseau.

Il est disponible sur Linux (je l’utilise sous kali linux), Windows et Mac. Pour l’ouvrir rendez-vous sur l’invite de commande et entrez :

wireshark

Wireshark vous demandera quelle interface vous souhaitez utiliser, dans notre cas nous allons utiliser le réseau Ethernet : eth0.
Le logiciel est composé de plusieurs partie :

16

-En haut nous avons les paramètres, menu d’éditions, statistiques et surtout la barre des filtres qui nous permet d’entrer un filtre (une adresse IP, un protocole, un nom de domaine etc…).

-Au milieu vous avez le trafic qui transite par la carte réseau de votre ordinateur. Différents types de paquets sont visibles : UPD, SSDP, ARP, ICMP, TCP, http etc…

-En bas vous avez la partie analyse avec les différentes parties du paquet et surtout leur contenu en hexadécimal (à gauche) et en clair (à droite).

Maintenant imaginez que ma victime se rende sur le site jeu.fr. Eh bien moi en tant que pirate je vais pouvoir scruter son activité. Je saurais donc que la personne se connecte au site http://www.jeu.fr. Bien évidement cela semble inutile dans ce cas-ci mais si la victime se connecte à sa banque et bien je pourrais déterminer que celui-ci à un compte dans telle banque. Petit à petit toutes les informations que l’on récupère sur quelqu’un formeront un tout qui sera exploitable pour un pirate informatique.

Pour faciliter la vision sur wireshark nous allons utiliser un filtre qui est le suivant :

ip.src==192.168.0.29 and http

Ainsi nous n’aurons que les paquets qui viennent de la machine de notre victime et nous n’aurons que des paquets http (ceux qui nous servent à accéder aux sites web).

Maintenant si je me connecte au site http://www.jeu.fr :

17

Voilà ce que j’obtiens sur Wireshark. Je sais donc que ma victime se connecte à ce site. Encore mieux, parfois les antivirus envoient des requêtes au serveur de leur distributeur pour savoir si un élément présent sur votre PC est dangereux. Ce genre d’informations indique clairement au pirate quel anti-virus vous utilisez. Par conséquent il pourra mieux cibler son attaque puisqu’il connaîtra vos défenses ! Sur une période de quelques jours on peut facilement retracer les habitudes d’une personne et procéder à une attaque plus complexe mais qui nous offrira potentiellement énormément d’informations.

III/ DNS Spoofing

Maintenant que l’on sait que notre victime se connecte régulièrement sur le site http://www.jeu.fr, ce qui serait sympas c’est de lui faire croire qu’il entre ses identifiants sur la page officiel alors qu’en fait il les entre sur une page factice qui renverrait les données au pirate. C’est ce qu’on appelle une attaque par « phishing » ! Et pour cela nous avons un module dans Ettercap : « dns_spoof » !
Bon petit rappel, un serveur DNS est un serveur qui lie une adresse URL à une adresse IP. Sur votre PC vous avez un cache DNS qui contient un ensemble d’URL lié à des adresses IP.
Si vous exécutez la commande suivante vous verrez ce cache : ipconfig /displaydns
Lorsque vous entrez l’URL « http://www.jeu.fr » votre navigateur va d’abord demander à un serveur DNS quelle est l’adresse IP du serveur de http://www.jeu.fr Ce serveur DNS va lui répondre en lui donnant l’adresse IP du serveur de http://www.jeu.fr.

Nous ce que nous allons faire c’est que nous allons bloquer la requête du navigateur vers le DNS et lui envoyer une adresse IP d’un serveur qui nous appartient et qui servira au phishing. Le navigateur de la victime va donc se connecter à un serveur, celui du pirate. A partir de là le pirate peut décider de copier la page de connexion de http://www.jeu.fr et, si la victime entre ses identifiants dessus et bien le pirate pourra les récupérer et voler le compte de la victime.

La première chose à faire dans ce type d’attaque c’est de déterminer quels sont les sites les plus visités par notre victime. Dans notre cas nous allons nous servir du site http://www.jeu.fr. Bien évidemment cela n’a aucun intérêt pour un pirate. En revanche des sites bancaires ou mail sont beaucoup plus intéressants. Restons sur le cas du site jeu.fr.
Par la suite il faudra éditer le fichier etter.dns. Dans un premier temps il faudra vous accorder les droits admin : sudo su suivi de votre mot de passe. Ensuite tapez la commande suivante :

gedit /etc/ettercap/etter.dns

Un éditeur de texte va s’ouvrir :

18

Descendez un peu dans le fichier et vous tomberez sur la ligne suivante : « microsoft sucks 😉 redirect it to http://www.linux.org ». LOL
En fait, ce fichier est celui qu’utilise ettercap pour rediriger les utilisateurs. Il va donc falloir spécifier que dès que la victime se rend sur le site http://www.jeu.fr il faut la rediriger vers notre serveur à nous.
Voici le code à ajouter :

*.jeu.fr A 192.168.0.25
www.jeu.fr A 196.168.0.25

En premier on a les noms de domaine, puis l’adresse IP vers laquelle on redirige la victime (AKA l’adresse IP de notre serveur local) (mon adresse IP est 196.168.0.25).

Le « A » indique que l’on utilise une adresse IPv4. « AAAA » correspond à une adresse IPv6 et « PTR » correspond à la méthode reverse des serveurs DNS.

Petit aparté, pour procéder à cette attaque il va falloir télécharger la suite LAMP (sous linux) qui vous permettra de simuler un serveur. Je vous laisse le faire ça serait un peu trop long à expliquer. Une fois LAMP installé il faudra vous rendre dans le fichier /var/www/index.html. C’est dans ce fichier que vous mettrez le code source de la page pirate. Par la suite il faudra entrer la ligne de code suivante : ifconfig eth0 promisc. Cela permettra à votre carte réseau d’accepter toutes les demandes de connexion. De même vous devrez lancer votre serveur apache avec cette commande :

service systemctl start apache2

A ce stade il faudra créer une copie conforme du site web visé. Pour cela vous pourrez par exemple prendre un screen et ajouter par-dessus un formulaire d’authentification trafiqué. C’est ce que je vais faire mais étant nul en Photoshop ça sera moche. Bon le principe est là (on va dire…). Ce que j’ai fait c’est que j’ai bleuté le formulaire d’origine et que j’ai rajouté le mien par-dessus. Je l’ai fait grossièrement sans me prendre la tête. Dans la vraie vie un pirate fera attention aux moindres détails.

Voici le rendu final :

19

On a donc un fichier index.html, un fichier CSS et un fichier traitement qui écrit les identifiant dans un fichier texte (tout est dans l’archive). Ce site factice, je vais le mettre sur mon réseau local LAMP. Puis je vais procéder à l’attaque dns spoof.
Lorsque vous créerez le fichier traitement.txt n’oubliez pas de lui attribuer les droits d’écriture et de lecture. Sinon votre fichier traitement.php ne pourra pas écrire les identifiants/mdp 😉
Procédons à l’attaque. Dans un premier temps il faudra faire une ARP poisoning. Ensuite il faudra se rendre dans l’onglet « Plugin » et double clic sur dns_spoof. L’attaque est opérationnelle, il n’y a plus qu’à attendre que la victime se connecte sur le site et entre ses identifiants pour les lui voler !

20

La victime a été dupée, et j’ai réussi à voler son identifiant et son mot de passe ! En effet si je me rends sur mon serveur local et que j’ouvre le fichier traitement.txt j’obtiens ceci :

21

Ensuite si vous voulez passer inaperçu il suffira de rediriger la victime vers une erreur du type « Impossible de se connecter au serveur ». La plupart des personnes n’y connaissant rien à l’informatique, laisseront tomber au bout de quelques tentatives puis se reconnecteront quelques heures plus tard.
Et voilà on vient de voler les identifiants d’une personne sans même qu’elle s’en rende compte! Imaginez les dégâts d’une attaque de ce type si elle est utilisée pour voler les identifiants d’un compte bancaire, d’une messagerie ou autre…
Au cas où vous ne l’auriez pas compris ce genre d’attaque ne sont possibles que si l’on est sur le même réseau que nos victimes. Pour contrer cette attaque, le protocole SSL a été développé. Mais ça, ça sera pour le prochain article !

IV/ Se protéger

Le réel problème du protocole ARP est qu’il a été développé dans le seul but de fonctionner. A aucun moment les développeurs ont pensé à le sécuriser. Résultat il est plutôt compliqué de se protéger face aux ARP poisoning. Voici quand même quelques solutions :

-Entrer manuellement les combinaisons IP/MAC dans chaque ordinateur. C’est long, faut le faire dès qu’on rajoute une machine mais c’est fonctionnel.

-Utiliser un logiciel d’analyse tel que arpwatch qui détecte les paquets ARP anormaux ou ArpOn.

-L’utilisation d’un switch intelligent est aussi une possibilité. Ce switch serait capable de faire un filtrage IP-MAC

Enfin une solution simple et durable sur Mozilla est l’add-on « HTTPS Everywhere » qui utilise le protocole SSL dès qu’il le peut. Vous pouvez le télécharger ici


Et voilà cet article est terminé j’espère qu’il vous aura intéresser. Je voulais vraiment vous montrer à quel point utiliser un réseau non sécurisé est dangereux. Typiquement ce genre d’attaque est faisable sur un réseau tel que celui des MacDo, des bibliothèques, des établissements scolaires etc…
Le meilleur conseil que je pourrais vous donner et de ne jamais tenter de vous connecter à un site confidentiel sur un réseau non protégé.
Comme d’habitude si vous avez des questions ou si vous avez repéré des erreurs faites m’en part en via l’onglet « Contact » 😉

6 commentaires

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s