Qu’est ce que l’empoisonnement de cache DNS ? | Usurpation de DNS

Les pirates peuvent empoisonner un cache DNS en amenant les résolveurs à mettre en cache de fausses informations, de sorte que le résolveur envoie la mauvaise adresse IP aux clients et les utilisateurs tentant de naviguer vers un site Web sont dirigés au mauvais endroit.

Share facebook icon linkedin icon twitter icon email icon

Usurpation de DNS

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

  • Définir les empoisonnements de cache DNS
  • Comprendre le fonctionnement de la mise en cache DNS
  • Expliquer comment les pirates peuvent empoisonner un cache DNS
  • Comprendre comme le DNSSEC permet de se prémunir contre les attaques par empoisonnement du DNS

Qu’est ce que l’empoisonnement de cache DNS ?

Imaginons que, pour faire une blague, les élèves d’un lycée changent tous les numéros de salle de leur établissement de telle sorte que les nouveaux élèves qui ne connaissent pas encore la répartition des salles passent la journée à se perdre et à se présenter dans les mauvaises classes. Imaginons maintenant que les numéros de salles incorrects soient répertoriés dans l’annuaire du lycée et que les élèves continuent de se présenter dans les mauvaises salles jusqu’à ce que quelqu’un le remarque et corrige l’annuaire.

L’empoisonnement du cache du DNS est le fait d’entrer de fausses informations dans le cache DNS afin que les requêtes DNS renvoient une réponse incorrecte et que les utilisateurs soient dirigés vers les mauvais sites Web. L’empoisonnement du cache du DNS est également appelé « usurpation de DNS ». Les adresses IP sont les « numéros de salles » d’Internet qui permettent au trafic Web d’arriver au bon endroit. Les caches du résolveur DNS sont « l’annuaire du lycée » et, lorsqu’ils stockent des informations erronées, le trafic est envoyé au mauvais endroit jusqu’à ce que les informations mises en cache soient corrigées. (Il est important de notre que cela ne déconnecte pas les sites Web réels de leurs adresses IP.)

Parce qu’il n’y a pas de moyen pour les résolveurs DNS de vérifier les données contenues dans leur cache, les informations DNS erronées restent dans le cache jusqu’à l’expiration du délai Time To Live (TTL) ou jusqu’à leur suppression manuelle. L’empoisonnement de DNS est possible en raison de plusieurs vulnérabilités, mais le principal problème est que le DNS a été conçu pour un Internet beaucoup plus petit et basé sur un principe de confiance (de même que le BGP). Un protocole DNS plus sécurisé, appelé DNSSEC, a pour objectif de résoudre certains de ces problèmes, mais il n’est pas encore largement adopté.

Que font les résolveurs DNS ?

Les résolveurs DNS fournissent aux clients une adresse IP associée à un nom de domaine. En d’autres termes, ils prennent des adresses de site Web lisibles par l’humain, comme « cloudflare.com » et les traduisent en adresses IP lisibles par les machines. Lorsqu’un utilisateur tente de naviguer vers un site Web, son système d’exploitation envoie une requête à un résolveur DNS. Un résolveur DNS répond par une adresse IP et le navigateur Web prend cette adresse et lance le chargement du site Web.

Comment fonctionne la mise en cache DNS ?

Un résolveur DNS enregistre les réponses à une requête d’adresse IP pendant une durée donnée. De cette façon, le résolveur peut répondre aux futures requêtes beaucoup plus rapidement, sans communiquer avec tous les serveurs impliqués dans le processus de résolution DNS typique. Les résolveurs DNS enregistrent les réponses dans leur cache pendant la durée indiquée par le Time To Live (TTL) associé à cette adresse IP.

Réponse DNS non mise en cache :

DNS uncached response

Réponse DNS mise en cache :

DNS cached response

Comment les pirates empoisonnent-ils les caches DNS ?

Les pirates peuvent empoisonner les caches DNS en se faisant passer pour les serveurs de noms DNS, en faisant une requête à un résolveur DNS puis en falsifiant la réponse lorsque le résolveur DNS interroge un serveur de noms. Cet empoisonnement est possible parce que les serveurs DNS utilisent l’UDP plutôt que le TCP et parce qu’il n’y a actuellement aucune vérification des informations DNS.

Processus d’empoisonnement de cache DNS :

DNS Cache Poisoning Process

Cache DNS empoisonné :

Poisoned DNS Cache

Plutôt que d’utiliser le TCP, qui exige que les interlocuteurs « se serrent la main » pour initier la communication et vérifier l’identité des appareils, les requêtes et réponses DNS utilisent le DSP ou User Datagram Protocol. Avec l’UDP, il n’y a pas de garantie qu’une connexion est ouverte, que le destinataire est prêt à recevoir ou que l’expéditeur est celui qu’il dit être. C’est pour cette raison que l’UDP est vulnérable aux falsifications : un pirate peut envoyer un message par UDP et prétendre qu’il s’agit de la réponse d’un serveur légitime en falsifiant l’entête.

Si un résolveur DNS reçoit une réponse falsifiée, il l’accepte et met en cache les données sans les remettre en question parce qu’il n’a aucun moyen de vérifier que les informations sont justes et proviennent d’une source légitime. Le DNS a été créé au tout début d’Internet alors que les seuls utilisateurs étaient des universités et des centres de recherche. Il n’y avait alors aucune raison de supposer que quiconque essaie de falsifier les informations DNS.

Malgré ces importants points de vulnérabilité dans le processus de mise en cache du DNS, les attaques par empoisonnement du DNS ne sont pas simples. Parce que le résolveur DNS interroge réellement le serveur de noms faisant autorité, les pirates n’ont que quelques millisecondes pour envoyer une fausse réponse avant que la véritable réponse arrive.

Les pirates doivent également connaitre ou deviner plusieurs facteurs pour mener des attaques par usurpation de DNS :

  • Quelles sont les requêtes qui ne sont pas mises en cache par le résolveur DNS ciblé et pour lesquelles il devra interroger le serveur de noms faisant autorité.
  • Quel port* le DNS utilise (ils utilisaient le même port pour toutes les requêtes mais désormais, ils utilisent un port différent et aléatoire à chaque fois)
  • Le numéro d’identification de la requête
  • Vers quel serveur de noms faisant autorité la requête sera dirigée

Les pirates peuvent également accéder au résolveur DNS d’une autre manière. Si un tiers malveillant utilise, pirate ou accède physiquement à un résolveur DNS, il peut plus facilement corrompre les données mises en cache.

*Dans la mise en réseau, un port est un point virtuel de réception de communication. Les ordinateurs ont plusieurs ports, chacun avec son propre numéro, et pour qu’ils puissent communiquer entre eux, certains ports doivent être alloués à certains types de communication. Par exemple, les communications HTTP sont toujours dirigées vers le port 80 et HTTPS utilise toujours le port 443.

Censure et usurpation de DNS

Plusieurs gouvernements ont délibérément empoisonné les caches DNS de leur pays afin d’interdire l’accès à certains sites ou ressources Web.

Comment le DNSSEC permettra-t-il d’empêcher l’empoisonnement de DNS ?

DNSSEC signifie Domain Name System Security Extensions et c’est un moyen de vérifier l’intégrité et l’origine des données DNS. Le DNS a été initialement conçu sans de telles vérifications, c’est pourquoi l’empoisonnement de DNS est possible.

Tout comme le TLS/SSL, le DNSSEC utilise une clé de cryptographie publique (un moyen de signer les information de façon numérique) pour vérifier et authentifier les données. Les extensions DNSSEC on été publiées en 2005, mais le DNSSEC n’est pas encore répandu ce qui laisse le DNS vulnérable aux attaques.