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 du cache DNS ?

Imaginez que lors de la journée d'intégration d'une grande école, les étudiants de deuxième année se soient amusés à changer tous les numéros de salles de leur établissement, de sorte que les nouveaux étudiants qui ne connaissent pas encore les lieux passent leur temps à se perdre et à se présenter dans les mauvaises salles de cours. Imaginez maintenant que les numéros de salles soient enregistrés dans un répertoire de l'établissement et que les étudiants continuent de se diriger vers les mauvaises salles jusqu'à ce que l'un d'entre eux le remarque et corrige le répertoire.

L’empoisonnement du cache DNS désigne 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 de mauvais sites web. L’empoisonnement du cache DNS est également appelé « usurpation de DNS » (DNS spoofing). 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 campus » 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 noter que cela ne déconnecte pas les sites web réels de leurs adresses IP réelles.)

Parce qu’il n’existe généralement aucun 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 Time To Live (TTL) ou jusqu’à ce qu'elles soient supprimées manuellement. Un certain nombre de vulnérabilités rendent l'empoisonnement du DNS possible, 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 (un peu comme le BGP). Un protocole DNS plus sûr appelé DNSSEC vise à résoudre certains de ces problèmes, mais il n'a pas encore été 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 sites web lisibles par l'homme comme « cloudflare.com » et les traduisent en adresses IP lisibles par la machine. 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 aux requêtes 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 :

Réponse DNS non cachée

Réponse mise en cache DNS :

Réponse DNS en cache

Comment les attaquants empoisonnent-ils les caches DNS ?

Les pirates peuvent empoisonner les caches DNS en se faisant passer pour des 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. Cela est rendu possible parce que les serveurs DNS utilisent UDP au lieu de TCP, et parce qu'actuellement il n'y a pas de vérification des informations DNS.

Processus d'empoisonnement du cache DNS :

Processus d'empoisonnement du cache DNS :

Cache DNS empoisonné :

Cache DNS empoisonné :

Au lieu d'utiliser le protocole TCP, qui oblige les deux parties communicantes à effectuer un « handshake » (littéralement une poignée de main) pour initier la communication et vérifier l'identité des périphériques, les requêtes et réponses DNS utilisent le protocole UDP (User Datagram Protocol). Avec UDP, rien ne garantit qu'une connexion est ouverte, que le destinataire est prêt à recevoir ou que l'expéditeur est bien celui qu'il prétend être. Le protocole UDP est vulnérable à la falsification pour cette raison : un attaquant peut envoyer un message via UDP et prétendre qu'il s'agit d'une réponse d'un serveur légitime en falsifiant les données d'en-tête.

Si un résolveur DNS reçoit une réponse falsifiée, il accepte et met en cache les données de manière non critique, car il n'y a aucun moyen de vérifier si les informations sont exactes et proviennent d'une source légitime. Le DNS a été créé au début d'Internet, lorsque les seules parties qui y étaient connectées étaient les universités et les centres de recherche. Il n'y avait aucune raison de penser que des personnes malveillantes essaieraient de diffuser de fausses informations DNS.

Malgré ces points de vulnérabilité majeurs dans le processus de mise en cache du DNS, les attaques d'empoisonnement du DNS ne sont pas faciles. Étant donné que le résolveur DNS interroge réellement le serveur de noms faisant autorité, les attaquants n'ont que quelques millisecondes pour envoyer la fausse réponse avant que la vraie réponse du serveur de noms faisant autorité n'arrive.

Les pirates doivent également connaître ou deviner plusieurs facteurs pour mener des attaques par usurpation DNS :

  • 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é
  • Le port* utilisé par le résolveur DNS (les résolveurs utilisaient le même port pour toutes les requêtes, mais utilisent désormais un port différent et aléatoire à chaque fois)
  • Le numéro d'identification de la demande
  • Le serveur de noms faisant autorité vers lequel la requête ira

Les attaquants pourraient également accéder au résolveur DNS d'une autre manière. Si un tiers malveillant opère, pirate ou obtient un accès physique à un résolveur DNS, il peut plus facilement modifier les données mises en cache.

* Dans les réseaux, un port est un point virtuel de réception de communication. Les ordinateurs ont plusieurs ports, chacun avec leur propre numéro. Pour que les ordinateurs puissent communiquer entre eux, certains ports doivent être désignés pour certains types de communication. Par exemple, les communications HTTP vont toujours au port 80 et HTTPS utilise toujours le port 443.

Usurpation DNS et censure

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 contribuera-t-il à empêcher l'empoisonnement du DNS ?

DNSSEC (Domain Name System Security Extensions) est un moyen de vérifier l'intégrité et l'origine des données DNS. Le DNS a été initialement conçu sans une telle vérification, c'est pourquoi l'empoisonnement DNS est possible.

Tout comme le TLS/SSL, le DNSSEC utilise le chiffrement à clé publique (une façon de signer numériquement des informations) pour vérifier et authentifier les données. Les extensions DNSSEC on été publiées en 2005, mais le DNSSEC n’est pas encore généralisé, ce qui fait que le DNS reste vulnérable aux attaques.