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 d'une 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 est le fait de saisir de fausses informations dans un cache DNS, de sorte 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 DNS est également appelé « usurpation de DNS » ou DNS spoofing. Les adresses IP sont comme les « numéros de salle » de notre exemple à l'échelle d'Internet, qui permettent au trafic web d'arriver aux bons endroits. Les caches de résolveur DNS sont le « répertoire de l'établissement » et lorsqu'ils stockent des informations erronées, le trafic va aux mauvais endroits jusqu'à ce que les informations en cache soient corrigées (vous noterez que cela ne déconnecte pas les sites web réels de leurs adresses IP réelles).

Comme il n'existe généralement aucun moyen pour les résolveurs DNS de vérifier les données dans leurs caches, les informations DNS incorrectes restent dans le cache jusqu'à ce que leur Time to Live (TTL), c'est-à-dire leur durée de vie, arrive à expiration, ou jusqu'à ce qu'elles soient supprimées manuellement. Un certain nombre de vulnérabilités rendent possible l'empoisonnement DNS, 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 protocole de routage BGP). Un protocole DNS plus sécurisé 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 l'adresse IP associée à un nom de domaine. En d'autres termes, ils prennent les 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 se rendre sur un site web, son système d'exploitation envoie une requête à un résolveur DNS. Le résolveur DNS répond avec l'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 un certain temps. De cette manière, le résolveur peut répondre aux futures requêtes beaucoup plus rapidement, sans avoir besoin de communiquer avec les nombreux serveurs impliqués dans le processus de résolution DNS typique. Les résolveurs DNS enregistrent les réponses dans leur cache aussi longtemps que le time to live (TTL) désigné et associé à cette adresse IP le leur permet.

Réponse DNS non mise en cache :

DNS uncached response

Réponse mise en cache DNS :

DNS cached response

Comment les attaquants empoisonnent-ils les caches DNS ?

Les attaquants peuvent empoisonner les caches DNS en usurpant l'identité des serveurs de noms DNS, en faisant une demande à un résolveur DNS, puis en falsifiant la réponse lorsque le résolveur DNS interroge un serveur de noms. Cette opération est possible, parce que les serveurs DNS utilisent UDP au lieu de TCP et qu'il n'y a actuellement aucune vérification des informations DNS.

Processus d'empoisonnement du cache DNS :

DNS Cache Poisoning Process

Cache DNS empoisonné :

Poisoned DNS Cache

Au lieu d'utiliser 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 UDP (protocole datagramme utilisateur). 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. 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 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 résolveur DNS utilise (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
  • Vers quel serveur de noms faisant autorité la requête ira-t-elle

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 de 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 aidera-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. DNS a été initialement conçu sans une telle vérification, c'est pourquoi l'empoisonnement DNS est possible.

Tout comme TLS/SSL, le DNSSEC utilise le chiffrement à clé publique (un moyen de signature numérique des informations) pour vérifier et authentifier les données. Les extensions DNSSEC ont été publiées en 2005, mais le DNSSEC n'est pas encore généralisé ce qui rend le DNS encore vulnérable aux attaques.