L’attaque Man In The Middle est l’attaque dont le protocole SSL est le plus vulnérable. Ce type d’attaque est quasiment à le portée de tous en terme de réalisation. En effet, certains logiciels sont spécialisés dans ce domaine. Ceci contribue à la facilité de l’attaque Man In The Middle. Afin de montrer cette faiblesse nous allons utiliser un logiciel nommé Sslstrip.


Présentation de Sslstrip

Sslstrip est un logiciel développé en Python qui a été présenté pour la première fois à l’évènement Black Hat de 2009. Sslstrip permet de détourner du trafic sécurisé https en le redirigeant vers du http. L’idée derrière ce logiciel vient du fait que la majorité des internautes ne sont pas des experts en informatique. En effet, ceux-ci ne regardent pas vraiment la barre d’adresse de leur navigateur. Pour juger qu’un site est sécurisé ou non ils se basent sur certains aspects de la navigation. Par exemple, ils ont conscience qu’un cadenas doit apparaître dans un endroit du navigateur lorsqu’ils utilisent leurs cartes bancaires.  Au contraire d’un message d’avertissement qui éveille les soupçons de l’utilisateur.
Sslstrip lors de son attaque permet de garder la confiance qu’a l’internaute lorsqu’il se connecte sur un site. Pour cela, le logiciel n’affiche aucun message d’alerte prévenant que le certificat SSL n’est pas signé et simule un environnement dans lequel l’utilisateur sera en confiance.

Fonctionnement

Les sites Internet sont quasiment tous construits de la même manière. Avant que la navigation se fasse en SSL, il faut d’abord naviguer en http. Généralement personne ne rentre manuellement une adresse en commençant par https. Lorsque une partie d’un site doit être sécurisée il faut soit cliquer sur un lien en https soit suivre une redirection. Notre maquette est également faite de cette manière.
Sslstrip va jouer le rôle de passerelle en se faisant passer pour le serveur web. Il va forger une page web ressemblant en tout point à la page stockée sur un vrai serveur web. Puis il va transformer tous les liens https sur le poste de la victime par des liens http. Il en résulte que le serveur web est dupé car il pense que la passerelle créée par Sslstrip est le client. L’internaute est également trompé car il pense que Sslstrip est le vrai site web qu’il demande à afficher. D’ailleurs une icône en forme de cadenas est affichée dans la barre d’adresse du navigateur de la victime. Parallèlement le logiciel peut capturer tout le trafic qui transite entre le client (la victime) et le serveur.

Schéma de l’attaque Man In The Middle avec Sslstrip

Configuration de l’attaque

Nous utiliserons la distribution Linux Backtrack 3 Final pour réaliser cette attaque. Cette distribution disponible en Live CD a comme objectif de fournir des outils nécessaires aux tests de sécurité réseau. Sslstrip n’étant pas inclus dans Backtrack 3, il est alors indispensable de le récupérer puis de l’installer. Notez qu’il est présent de base dans la version 4 de Backtrack.
Une fois les sources de Sslstrip récupérées et décompressées, l’installation se lance en exécutant la commande :

python setup.py install

Il faut ensuite activer l’ip forwarding sur le système qui permettra à l’ordinateur de faire office de passerelle :

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

Puis il faut rediriger le trafic à destination du port 80 (http) vers le port 10000 sur lequel écoute Sslstrip par défaut. Ceci se réalise à l’aide du pare-feu iptables.

iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000

Nous pouvons maintenant lancer Sslstrip grâce à la commande suivante :

python sslstrip.py -w log -a –f

L’option –w log signifie que le détail du trafic sera stocké dans le fichier log. L’option –a indique que les logs porteront sur le trafic http et https. Enfin l’option –f indique qu’une icône représentant un cadenas sera affichée (c’est l’icône qui sera affichée) près de la barre d’adresse du navigateur de la victime.
Nous supposons que nous ne connaissons pas l’adresse IP de la victime. Pour cibler une victime nous scannons le réseau afin de trouver l’adresse IP d’un ordinateur connecté. Le logiciel nmap permet de réaliser cette opération :

nmap 192.168.0.0/24

Starting Nmap 4.60 ( http://nmap.org ) at 2009-08-07 18:37 GMT
Interesting ports on 192.168.0.9:
Not shown: 1712 closed ports
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 00:17:3F:52:B4:46 (Belkin)

Interesting ports on 192.168.0.10:
Not shown: 1712 closed ports
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 00:30:05:DD:F0:61 (Fujitsu Siemens Computers)

All 1715 scanned ports on 192.168.0.14 are closed

Interesting ports on 192.168.0.254:
Not shown: 1712 filtered ports

Le scan à détecté 3 machines. Les deux premières sont des ordinateurs. La dernière (192.168.0.254) est le routeur du réseau. Nous choisissons la machine avec l’IP 192.168.0.10 comme victime.

Maintenant il faut mettre l’ordinateur du pirate en situation de Man In The Middle sur le réseau. Pour cela nous allons lancer des requêtes arp poisoning avec l’outil ettercap.

ettercap -T -M arp:remote /192.168.0.10/ /192.168.0.254/

Ainsi l’ordinateur 192.168.0.10 pensera que le routeur du réseau est la machine du pirate. De l’autre côté le routeur pensera que l’ordinateur 192.168.0.10 sera la machine du pirate.

Schéma de l’architecture réseau mis en place pour l’attaque Man In The Middle

Déroulement de l’attaque

Tout est désormais configuré ce qui implique que la totalité du trafic http et https généré par la victime est intercepté par Sslstrip. Pour cette exemple j’ai développé un petit site qui demande à l’utilisateur de rentrer son numéro de carte de manière sécurisé grâce à une page sécurisée par SSL  Sur ce site, l’utilisateur doit d’abord naviguer en http et est redirigé sur une page en https afin d’effectuer le paiement. L’image ci-dessous est l’url affiché sur le navigateur de la victime au moment où les informations bancaires doivent être inscrites.

Nous constatons que l’adresse est en http alors qu’en temps normal elle doit être en https. Cependant nous ne voyons aucune présence d’une icône représentant un cadenas près de cette adresse ni dans une partie du navigateur. Sslstrip a pourtant été exécuté avec l’option qui doit intégrer cette icône (je n’ai pas réussi à afficher ce fameux cadenas). Cependant la page affichée en elle-même est exactement identique à la page affichée lorsque la navigation est réalisée de manière normale.
Du côté de l’ordinateur du pirate, le trafic est stocké en clair dans le fichier log. Nous pouvons alors analyser ce fichier puis rechercher les informations confidentielles. Dans notre cas il s’agit du numéro de la carte bancaire de la victime. Voici un extrait du fichier avec les données recherchées.

2009-08-07 19:42:31,521 SECURE POST Data (www.liced.fr): prix=23.9%A0%80&CB_num=4978456745631234&CB_exp_mois=02&CB_exp_annee=2010
&CB_porteur=Cedric&CB_cvv=333

Nous retrouvons bien toutes les informations relatives à la carte bancaire du client.

Les solutions contre cette attaque

L’attaque Man In The Middle sur notre maquette illustre la plus grande faille d’une connexion en https. Cette attaque ne fonctionne pas sur tous les réseaux. Les réseaux les mieux protégés possèdent en effet des défenses permettant de contrer l’arp poisoning.

Il faut savoir que de plus en plus de sites proposent une navigation totalement en https dès la page d’accueil. Les concepteurs de ces sites ont bien compris que le protocole SSL était sensible aux attaques Man In The Middle. Si la navigation est chiffrée du début à la fin il sera impossible de déchiffrer les données même si celles-ci sont interceptées. Il faudrait une puissance de calcul énorme pour réaliser cet exploit qu’une personne seule ne peut pas posséder. Donc au niveau de l’utilisateur il est souhaitable que celui-ci ouvre la page d’accueil directement en https au lieu d’http.
Cependant lorsqu’on n’est pas certain du réseau sur lequel on est connecté, la meilleure façon de se protéger est de rester vigilant en évitant de s’authentifier sur des sites sensibles  lorsque ceux-ci ne proposent pas une navigation sécurisée dès la page d’accueil. Idéalement les règles à respecter sont :

  • de vérifier que la barre d’adresses soit bien en https lorsque la navigation devrait se faire en SSL.
  • de regarder le certificat du site web afin de voir dans un premier temps sa présence puis dans un second temps qu’il est correctement signé.
  • d’éviter d’acheter sur des sites étrangers car la législation qui s’y applique en cas de problème n’est pas celle de la France. Le consommateur peut se retrouver piégé en cas de problème.
  • de vérifier les coordonnées du cybercommerçant lors d’un achat car la loi Française oblige ceux-ci des les communiquer sur leur site. En cas d’absence d’adresse ou présence d’adresse étrangère, il faut se méfier.

Ces règles ne sont pas exhaustives et peuvent en plus évoluer au cours du temps car la sécurité évolue toujours très vite.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Post Navigation