AccueilđŸ‡«đŸ‡·Chercher

Empoisonnement du cache DNS

L'empoisonnement du cache DNS, l’usurpation de DNS, ou la pollution de cache DNS (DNS cache poisoning, DNS spoofing, ou DNS cache pollution en anglais) est une technique permettant de leurrer les serveurs DNS afin de leur faire croire qu'ils reçoivent une rĂ©ponse valide Ă  une requĂȘte qu'ils effectuent, alors qu'elle est frauduleuse. Une fois que le serveur DNS a Ă©tĂ© empoisonnĂ©, l'information est mise dans un cache, rendant ainsi vulnĂ©rables tous les utilisateurs de ce serveur. Ce type d'attaque permet, par exemple, d'envoyer un utilisateur vers un faux site dont le contenu peut servir Ă  de l'hameçonnage (dans le cas du DNS, on parle de pharming) ou comme vecteur de virus et autres applications malveillantes.

Un ordinateur présent sur Internet utilise normalement un serveur DNS géré par le fournisseur d'accÚs. Ce serveur DNS est la plupart du temps limité aux seuls utilisateurs du réseau du fournisseur d'accÚs et son cache contient une partie des informations rapatriées par le passé. Une attaque par empoisonnement sur un seul serveur DNS du fournisseur d'accÚs peut affecter l'ensemble de ses utilisateurs, soit directement ou indirectement si des serveurs esclaves s'occupent de propager l'information.

Principe

Pour mener Ă  bien une attaque par empoisonnement de cache, l'attaquant exploite une vulnĂ©rabilitĂ© du serveur DNS qui accepte alors des informations incorrectes. Si le serveur ne valide pas les informations reçues et qu'il ne vĂ©rifie pas qu'elles proviennent d'une source fiable, alors il stockera dans son cache ces informations erronĂ©es. Il les transmettra par la suite aux utilisateurs qui effectuent la requĂȘte visĂ©e par l'attaque.

Cette technique peut ĂȘtre employĂ©e pour substituer un contenu, que les victimes s'attendent Ă  obtenir, par un autre contenu. L'attaquant peut par exemple rediriger un utilisateur d'un site web vers un autre site dont le serveur est compromis ou maintenu par l'attaquant. Selon le type d'attaque menĂ©e et afin de ne pas Ă©veiller les soupçons, le nouveau contenu doit ressembler le plus possible au contenu original.

Cette manipulation peut avoir plusieurs buts :

  • propagation de virus ou de vers en faisant croire Ă  l'utilisateur qu'il tĂ©lĂ©charge des fichiers sains
  • hameçonnage (pharming) afin de collecter des informations personnelles, rĂ©cupĂ©rer des mots de passe ou effectuer une fraude
  • usurpation d'identitĂ© (on renvoie le site d'une personne vers un autre site)
  • attaque de l'homme du milieu (l'attaquant fait en sorte de se trouver au milieu de transactions afin de les intercepter, les dĂ©chiffrer et les rediriger de maniĂšre transparente)
  • propagande, contestation (par exemple en renvoyant un site d'un parti politique vers un autre parti)
  • guerre Ă©lectronique (perturbation du rĂ©seau en renvoyant les utilisateurs vers d'autres sites qui ne leur permettent pas d'effectuer leur travail)
  • dĂ©ni de service (renvoi vers un site n'existant pas, faisant croire Ă  l'utilisateur que le serveur n'est plus disponible) ou guerre commerciale (voir l'affaire AlterNIC plus loin)

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 adresse 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 complĂšte 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 une nouvelle 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 pirate 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 [1]. NommĂ©e Operation DNS Storm, son action lui valut d'ĂȘtre arrĂȘtĂ© quelques mois plus tard[2].

Prévention et défense

La plupart des attaques peuvent ĂȘtre Ă©vitĂ©es en ajoutant des vĂ©rifications supplĂ©mentaires. Dans le cas d'une attaque comme celle d'Eugene Kashpureff, la parade consiste Ă  vĂ©rifier que la rĂ©ponse correspond Ă  ce qui Ă©tait attendu (l'IP du nom de domaine demandĂ© et rien d'autre) et Ă  l'ignorer dans le cas contraire. L'amĂ©lioration des gĂ©nĂ©rateurs de nombres pseudo-alĂ©atoires en utilisant des gĂ©nĂ©rateurs cryptographiques pour l'identifiant de 16 bits et les ports ont permis de limiter les problĂšmes dans les serveurs les plus utilisĂ©s (dont BIND[3]). La limitation des demandes multiples pour un mĂȘme nom Ă  partir d'une mĂȘme source a partiellement rĂ©duit l'attaque par le paradoxe des anniversaires, mais elle pourrait ĂȘtre menĂ©e Ă  partir d'un botnet, ce qui nĂ©cessite d'autres moyens de dĂ©fense pour dĂ©tecter les tentatives de ce type.

Une version sĂ©curisĂ©e du DNS existe, DNSSEC, qui se base sur des signatures Ă©lectroniques avec un certificat qui permet de vĂ©rifier l'authenticitĂ© des donnĂ©es. MĂȘme s'il reste toutefois peu rĂ©pandu, son usage doit ĂȘtre encouragĂ©. L'empoisonnement peut ĂȘtre limitĂ© au niveau des couches transport ou application grĂące Ă  une authentification des intervenants, via par exemple TLS. Un serveur DNS pourrait ainsi s'assurer qu'il reçoit bien les informations depuis un serveur de confiance. Il en va de mĂȘme pour les autres applications comme les navigateurs qui peuvent vĂ©rifier l'authenticitĂ© d'une page grĂące aux certificats.

En juillet 2008, des mises à jour de sécurité concernant les serveurs DNS ont été effectuées par un grand nombre d'acteurs du logiciel libre et propriétaire. Ces mises à jour ont été effectuées de façon synchronisée pour remédier à une faille découverte plusieurs mois avant par Dan Kaminsky (de la société IOActive) qui s'avérait critique. Cette faille a été jugée suffisamment sérieuse pour que le secret soit conservé le temps de mettre en place des solutions de protection[4].

Références

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.