Usurpation d’adresse IP, c’est dans les vieux pots qu’on fait la meilleure soupe 1/2

//Usurpation d’adresse IP, c’est dans les vieux pots qu’on fait la meilleure soupe 1/2

Usurpation d’adresse IP, c’est dans les vieux pots qu’on fait la meilleure soupe 1/2

Par | 2014-04-24T11:22:57+02:00 avril 24th, 2014|Technique|

L’usurpation d’adresse IP est un problème vieux qui a fait couler beaucoup de pixels, mais qui pourtant reste d’actualité. Pouvoir se faire passer pour un autre sur un réseau donne beaucoup de pouvoir et donc beaucoup de potentiel de nuisance.
L’IP spoofing concerne donc les usurpations du niveau 3 du modèle OSI.

Voici les risques auxquels vous vous exposez si vous n’empêchez pas l’usurpation d’adresse IP :

– INTERCEPTION INTERNE: Rediriger le trafic vers une machine pirate qui enregistre tout
Le pirate substitue l’adresse légitime de la passerelle réseau par celle d’une machine pirate configurée pour tout retransmettre à la vraie passerelle, mais en enregistrant au passage tout le trafic (mots de passe, communautés SNMP, etc.).

– DENI DE SERVICE : Empêcher le trafic d’aboutir
Le pirate substitue l’adresse légitime de la passerelle réseau par celle d’une machine qui « drop » tous les paquets (sauf éventuellement ceux qui lui sont destinés). Plus aucun échange n’est alors possible sur le réseau.

– DENI DE SERVICE : Rediriger le trafic vers une machine en vue de la saturer
Le pirate substitue l’adresse légitime de la passerelle réseau par celle d’un serveur qui va alors recevoir tout le trafic destiné à la passerelle et qui est susceptible de saturer sous l’importance du flux.

– INTERCEPTION EXTERNE: Rediriger les requêtes DNS vers un serveur pirate revoyant vers des sites d’hameçonnage
Le pirate substitue l’adresse légitime du DNS par celle d’un serveur pirate. Quand un client demande l’adresse IP de www.unsite.fr, le DNS pirate lui donne l’adresse d’un site de hameçonnage imitant le site www.unsite.fr et enregistrant les identifiants de connexion de la victime (login, mot de passe, numéros de carte bancaire, etc.).

Il existe, entre autres, deux méthodes permettant de réaliser cette usurpation qui sont bien connues mais malheureusement pas assez souvent prises en compte : le DHCP spoofing et l’ARP spoofing.

Celles-ci sont assez anciennes pour que des contre-mesures existent. Néanmoins, nous n’observons que trop peu souvent, lors de nos audits, la présence de ces protections.
Elles peuvent être déployées sur des commutateurs (switches) ou des routeurs/pare-feu, mais ne sont que rarement activées dans la configuration par défaut des principaux fabricants. C’est donc de la responsabilité de l’administrateur du réseau de s’assurer de leur mise en place.

Il est nécessaire d’enfoncer quelques portes ouvertes sur ces deux protocoles bien connus, afin de pouvoir expliciter les faiblesses qui sont exploitées. Nous nous concentrerons, dans cet article, sur le DHCP. L’ARP fera l’objet d’une suite logique très prochainement (lien vers l’article)

Dynamic Host Configuration Protocol (DHCP)

Protocle

Le DHCP est chargé de fournir une adresse IP à une machine cliente se connectant au réseau. Inutile de s’étendre en détail sur le fonctionnement de ce protocole mais ce simple résumé donne suffisamment de clés pour comprendre les attaques explicitées plus loin :

1. Le client envoie un paquet UDP DHCP Dicovery en broadcast (donc tout le segment réseau peut le capter). Il peut éventuellement contenir son ancienne adresse IP. Si le serveur DHCP se trouve dans un autre sous-réseau, en général le routeur est alors configuré pour transmettre les requêtes DHCP broadcast à ce serveur.
2. Tous les serveurs DHCP qui reçoivent ce message, réservent une adresse IP et font une proposition en envoyant un DHCP Offer (paquet UDP en broadcast également). Ce paquet contient l’adresse IP attribuée, l’adresse de la passerelle, du DNS et de tout ce qui est utile.
3. Le client choisi la réponse qui lui convient le mieux, en général la première, et renvoie un paquet DHCP Request (UDP broadcast) stipulant l’adresse IP du serveur DHCP dont il a retenu l’offre. Les autres serveurs libèrent alors l’adresse IP qu’ils avaient réservée pour ce client.
4. Enfin le serveur DHCP qui a été choisi envoie un dernier paquet : DHCP Ack (UDP broadcast) qui contient toutes les informations nécessaires à la configuration de l’interface : la durée du bail de l’adresse allouée, la passerelle, le serveur DNS, etc.

Attaques

Le protocole DHCP ne prévoit pas d’authentification. Si une machine du réseau décide de se comporter comme un serveur DCHP, rien ne l’en empêche à priori.
Or les machines effectuant des requêtes DHCP prendront en compte, le plus souvent, la première réponse obtenue (celle du serveur légitime ou celle de ce nouveau DHCP). Si le DHCP légitime se trouve après plusieurs routeurs, il mettra plus de temps à répondre qu’un attaquant se faisant passer pour un serveur DHCP dans le même sous-réseau.
Or le DHCP ne fournit pas seulement une adresse IP à une machine, il indique aussi la passerelle, le DNS, etc.

Il est donc possible de reproduire toutes les nuisances de l’usurpation d’IP. Mais l’ont peut également s’attaquer à l’adressage IP de machines tierces, les nuisances suivantes sont donc aussi à prendre en compte :

– DENI DE SERVICE : Envoyer une mauvaise adresse IP à une machine du réseau pour l’empêcher de s’y connecter
Le pirate se fait passer pour le serveur DHCP et donne des IP incorrectes (par exemple 192.168.0.2 dans un réseau en 10.0.0.0/24) de sorte que la machine cliente ne sera pas routée correctement et n’arrivera pas à joindre et à être jointe.

– DENIS DE SERVICE : Consommer toutes les adresses IP disponibles pour empêcher les autres utilisateurs de se connecter
Le pirate simule des paquets DHCP Discover avec un identifiant changeant à chaque fois, le serveur DHCP réserve donc une IP à chaque requête. Lorsque la réserve d’adresses IP est épuisée, plus aucune nouvelle machine ne pourra se connecter au réseau, ni celle dont le bail IP a expiré.

Contre-mesures

DHCP snooping

Le DHCP snooping est en ensemble de techniques, agissant au niveau 2 du modèle OSI, visant à contrecarrer les serveurs DHCP « voyous » (Rogue DHCP).
La principale contre-mesure consiste à introduire la notion de confiance au niveau des interfaces des routeurs/pare-feux/commutateurs. L’équipement sera configuré pour autoriser les DHCP Offer et DHCP Ack uniquement depuis les interfaces de confiance (trusted).
L’efficacité de ce dispositif nécessite également une bonne hygiène d’architecture réseau : les postes utilisateurs (d’où il est plus probable de voir une attaque émerger) ne doivent pas être dans le même segment que le serveur DHCP.
Ainsi les requêtes d’un poste utilisateur tentant de se faire passer pour un serveur DHCP ne proviendront pas de l’interface de confiance (et seront donc supprimées).

Une autre fonctionnalité importante consiste à établir une base, au niveau des commutateurs (switches), des adresses IP attribuées ainsi que de leur adresse MAC et leur port. Les commutateurs observent et enregistrent simplement les réponses DHCP afin de construire cette liste.

Il s’agit d’une très forte plus-value contre l’IP spoofing en général. En effet, d’autres contre-mesures utilisent cette base pour interdire les trames circulant sur le réseau avec une certaine IP de destination (ou de source), non associées à la même adresse MAC que celle de la dernière attribution du vrai serveur DHCP (telle qu’enregistrée dans la base du DHCP snooping).

Unicast Reverse Path Forwarding (uRPF)

L’Unicast Reverse Path Forwarding est une mesure simple qui permet de limiter les risques d’usurpation brute d’IP.
Lorsqu’un routeur doit transmettre un paquet, il consulte sa table de routage pour s’assurer que le destinataire est bien joignable. Avec l’uRPF, il s’assurera toujours que l’IP de source du paquet, qui est donc sensée recevoir la réponse, est bien atteignable par l’interface dont il a reçu le paquet.
En effet, si cette adresse IP n’est pas atteignable par le chemin d’où elle est sensée avoir envoyé un paquet, c’est que ce n’est pas elle qui l’a envoyé.

Pour illustrer par un exemple, imaginons que la table de routage du routeur soit :
– 1.1.1.0/24 eth1
– 2.2.2.0/24 eth2
– 3.3.3.0/24 eth3

Et imaginons plusieurs types de paquets reçus :
– [source : 1.1.1.30 – destination : 2.2.2.4] provenant de l’interface eth1
L’adresse 1.1.1.30 est joignable sur l’interface eth1 (car elle appartient au réseau 1.1.1.0/24). Donc le paquet est accepté
– [source : 1.1.1.30 – destination : 2.2.2.4] provenant de l’interface eth2
L’adresse 1.1.1.30 est joignable mais pas par l’interface eth2, si c’est bien elle qui avait envoyé ce paquet, il serait venu de l’interface eth1. Donc le paquet est refusé
– [source : 4.4.4.30 – destination : 2.2.2.4] provenant de l’interface eth1
L’adresse 4.4.4.30 n’est pas joignable, donc elle n’aurait pas pu envoyer ce paquet. Donc le paquet est refusé.

Il existe une subtilité quant à dire que le paquet reçu « doit » provenir de l’interface où l’adresse émettrice est joignable. En effet certains réseaux ont un routage dit « asymétrique » où la réponse n’empreinte pas forcément le même chemin que la requête.

A ce moment là, on peut utiliser l’uRPF en « loose mode » (par opposition au « strict mode » décrit précédemment). Ce mode se contente seulement de vérifier que l’adresse source du paquet est joignable dans la table de routage, peu importe l’interface d’où il provient.
L’uRPF en loose mode, appliqué aux exemples précédents de paquets reçus, aurait accepté les deux premiers paquets et refusé le troisième.

Il ne s’agit pas d’une protection totale : un attaquant dans le même sous-réseau que l’adresse qu’il veut usurper ne serait pas détecté (si 1.1.1.10 essaye de se faire passer pour 1.1.1.20). Néanmoins cela permet de parer à des cas « grossiers » d’usurpation d’adresse IP.
Plusieurs types de routeurs permettent d’utiliser ce système.

 

Rédigé par David Soria, Expert Sécurité ITrust