Empoisonnement du cache DNS - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Aspects techniques

Un serveur DNS permet d'obtenir l'adresse IP d'une cible à partir de son nom (par exemple l'entrée pour fr.wikipedia.org retourne 145.97.39.155). Afin d'obtenir cette IP, le serveur peut soit consulter son cache si l'information s'y trouve ou alors propager la requête plus loin, vers d'autres serveurs de manière récursive. L'ensemble du réseau est organisé selon un arbre subdivisé en domaines. Dans le cas de fr.wikipedia.org, le serveur DNS chargé du domaine .org va être interrogé, il va indiquer quel serveur peut donner des informations au sujet du domaine wikipedia.org. Finalement, ce dernier serveur indiquera l'IP complet pour fr.wikipedia.org. La validité des messages repose sur un identifiant de 16 bits qui doit être le même durant une transaction. Par ailleurs, le port et l'adresse utilisée pour la réponse doivent correspondre aux paramètres utilisés lors de l'envoi de la requête.

Attaque basée sur le paradoxe des anniversaires

Cette attaque part du principe qu'un identifiant de 16 bits ne garantit pas une sécurité suffisante. Grâce au paradoxe des anniversaires, il est en effet possible de générer un grand nombre de messages de manière à tomber sur un identifiant valide. L'attaque se déroule comme suit et s'apparente à du spoofing :

  1. Alice envoie un grand nombre de requêtes au serveur cible A, en spécifiant le nom de domaine (fr.wikipedia.org) dont elle voudrait obtenir l'IP
  2. en même temps, elle se fait passer pour un autre serveur de nom B en préparant des réponses qui y ressemblent, mais avec des identifiants de transaction aléatoires (en vertu du paradoxe des anniversaires) de manière à produire un paquet comme celui attendu par le serveur cible. Elle spécifie par ailleurs un nouvel IP w.x.y.z
  3. si le paquet correspond à ce qui était attendu par le serveur cible, alors celui-ci, en l'absence d'une protection particulière, insère l'information malveillante dans le cache où elle reste durant un certain temps (défini par le TTL, time to live)
  4. Bob demande à accéder à Wikipédia, l'IP qu'il reçoit n'est plus celle de fr.wikipedia.org mais w.x.y.z

La difficulté de cette attaque consiste à déterminer le port sur lequel le serveur B va répondre et à empêcher le vrai serveur de nom de répondre dans les temps. Si les ports sont aléatoires alors l'attaque sera beaucoup plus difficile, car elle nécessite plus de messages. Certaines attaques reposaient sur le fait que les générateurs de nombres pseudo-aléatoires des serveurs n'offraient pas un aléa suffisant. Des identifiants de transaction avaient ainsi plus de chance d'apparaître que d'autres, offrant à l'attaque une probabilité de réussite accrue.

La solution à ce problème fut d'empêcher les demandes multiples émanant de la même source pour un même nom de domaine (c'est-à-dire qu'une seule requête d'Alice concernant fr.wikipedia.org est traitée à la fois).

Variante

Pour contourner le problème lié au TTL, au lieu de susciter une requête pour fr.wikipedia.org, le hacker génère une série de requêtes pour des hôtes du même sous-domaine, par exemple xx.wikipedia.org, et tente à chaque fois un empoisonnement en tentant de deviner le numéro de transaction. La réponse consiste non pas en un enregistrement A vers un serveur pirate (dont l'IP est 6.6.6.6) mais un NS :

      xx.wikipedia.org     IN NS    fr.wikipedia.org      fr.wikipedia.org     IN A     6.6.6.6      

Le second enregistrement est alors mis en cache, ce qui assure le succès de l'attaque. Le hacker peut envoyer de très nombreuses réponses (seule celle avec le numéro de transaction correct sera pris en compte), et le temps dont il dispose dépend de la rapidité de la réponse du serveur DNS légitime. Si cette tentative échoue, il peut recommencer immédiatement avec un autre hôte du sous-domaine, ce qui augmente de façon importante ses chances de succès. Les serveurs récursifs n'étant généralement accessibles qu'à certaines plages d'adresses IP (les clients), le hacker peut utiliser une fausse adresse IP source ou bien générer un trafic qui résultera probablement en une requête DNS (SMTP HELO, scanning, etc).

Attaque par l'ajout de plusieurs résolutions

L'attaquant dispose d'un serveur de nom pour un domaine (par exemple empoisonnement-dns.com). Le but est de polluer le cache du serveur cible A en se basant sur une vulnérabilité et en procédant comme suit :

  1. Alice demande l'IP de empoisonnement-dns.com au serveur cible A
  2. le serveur A ne dispose pas de cette information dans son cache, il contacte alors le serveur de nom pour le domaine
  3. le serveur de nom, sous le contrôle de l'attaquant, renvoie les informations concernant empoisonnement-dns.com, mais ajoute des informations concernant d'autres sites dans sa réponse, par exemple l'adresse de fr.wikipedia.org qu'il fait pointer vers un autre site dont l'IP est w.x.y.z
  4. le serveur insère l'information malveillante dans le cache où elle reste durant un certain temps (défini par le TTL, time to live)
  5. Bob demande à accéder à Wikipédia, l'IP qu'il reçoit n'est plus celle de fr.wikipedia.org, mais w.x.y.z

Cette attaque a été utilisée en juin 1997 par Eugene Kashpureff qui gérait un serveur DNS alternatif à la racine du système (nommé AlterNIC). Kashpureff redirigea le trafic d'Internic (son concurrent direct) vers le site d'AlterNIC. Nommée Operation DNS Storm, son action lui valut d'être arrêté quelques mois plus tard.

Page générée en 0.244 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise