5.2. Menaces contre le DNS
Le DNS date de l’origine de l’Internet. A cette époque, la sécurité n’était pas une préoccupation aussi importante qu’aujourd’hui. Depuis, les enjeux politiques et commerciaux du web ont rendus indispensables la mise en place de contre-mesures permettant de protéger les ressources en ligne.
Ayant été conçu avant cette époque, le DNS a, au cours du temps, été exploité de diverses manières pour effectuer des attaques malveillantes. Les principales failles identifiées du système sont les suivantes :
5.2.1. Injection d’informations falsifiées dans le DNS
A l’origine, le DNS était vulnérable à des attaques de type “Man in the Middle” : Un attaquant intercepte un message, puis injecte un autre message falsifié à la place en s’arrangeant pour que le destinataire ne remarque rien. Une telle attaque peut également se mener en forgeant une fausse réponse à une requête, et en s’arrangeant pour que le client la reçoive avant ou à la place de la réponse officielle. On parle de “DNS Spoofing”.
1. ID Spoofing : En informatique, le spoofing, ou usurpation d’identifié, est une technique consistant à injecter des paquets réseaux falsifiés dans une communication en se faisant passer pour l’émetteur. Dans le cadre du DNS ID spoofing, l’attaquant va essayer de s’insérer entre le client et son résolveur en forgeant une réponse à la requête du client. Envoyer une fausse réponse DNS permet de rediriger le client vers des adresses IP malveillantes au lieu de la machine initialement visée. Pour ce faire, il va exploiter le champs ID de l’en-tête DNS. En effet, l’entête des requêtes DNS possède un champ “ID”, unique sur le client afin que celui puisse associer une réponse à sa requête. Lorsque les serveurs répondent, ils recopient l’identifiant de la requête dans la réponse. Pour générer sa réponse spoofée, l’attaquant doit donc soit récupérer la requête pour obtenir l’ID, soit essayer de deviner cet ID (par exemple en observant les échanges requêtes/réponses précédentes). Pour contrer cette attaque, il faut donc que les clients (typiquement les OS) et les serveurs DNS utilisent des IDs non prédictibles, et bien utiliser un mécanisme de vérification de l’authenticité des informations contenues dans le Record DNS (DNSSEC)
2. Cache Poisoning :
L’attaque “Cache Poisoning” est une autre variante de spoofing qui consiste, non plus à s’insérer entre le client et le résolveur pour injecter des fausses informations, mais à injecter directement ces fausses informations sur le résolveur. Les résolveurs utilisant des mécanismes de cache d’information pour économiser le trafic, arriver à corrompre ces informations permet d’amplifier l’attaque puisque ce n’est plus un seul client, mais potentiellement plusieurs qui pourront ainsi recevoir les fausses informations DNS.
Pour se prémunir contre cette attaque, il faut s’assurer qu’un résolveur ne réponde qu’aux requêtes venant des utilisateurs internes, garder le logiciel serveur à jour pour combler les failles de sécurité, et mettre en place un mécanisme permettant de vérifier l’authenticité des informations contenues dans un Record DNS (DNSSEC).
5.2.2. Déni de service
Le déni de service consiste à rendre un service indisponible pour impacter ses utilisateurs. Pour cela, l’attaquant envoie une importante charge de traffic sur le serveur cible, éventuellement depuis des sources multiples (on parle alors de déni de service distribué, ou DDoS en anglais).
En plus d’un traffic important, une attaque DoS va cibler préférentiellement les faiblesses des protocoles et des implémentations serveurs, en s’arrangeant pour que le trafic sature spécifiquement les points faibles au niveau ressources (typiquement, les buffers ou les tables d’état).
Le DNS forme une cible de choix, car d’une part, il est nécessaire au fonctionnement de nombreux autres services, et d’autre part, il est également intéressant comme vecteur d’amplification, pour une attaque dite “par rebond” : l’attaquant X peut utiliser un serveur DNS comme générateur de trafic vers une destination cible Y. Pour cela, X envoie des requêtes au serveurs DNS, en indiquant comme IP source l’IP de Y. Il s’arrange pour que la requête génère une réponse de taille importante. Le serveur DNS reçoit la requête, génère la réponse, et la renvoie vers l’IP source, donc celle de Y. Y reçoit donc du traffic DNS non sollicité, et de volume potentiellement important. Le facteur d’amplification du DNS est important : le trafic généré vers la cible peut-être jusqu’à 179 fois plus élevé que le trafic généré par l’attaquant!
Les serveurs les plus susceptibles d’être exploités comme relai pour une attaque par amplification sont les résolveurs “ouverts”, qui acceptent de répondre aux requêtes récursives depuis n’importe quelle origine. Il est donc important de bien sécuriser son résolveur pour éviter cela!
Pour en savoir plus sur les DoS DNS, vous pouvez consulter ce Whitepaper publié par CloudFare
5.2.3. Tunnelling DNS
Le DNS peut également servir de support pour le contournement de Firewall. Il s’agit de la technique du Tunnelling DNS. Comme le trafic DNS est considéré comme du traffic sans transport de données, il est souvent autorisé à traverser les firewalls. Les attaquants peuvent du coup se servir de ces messages en apparence inoffensifs pour établir des communications avec des machines infestées derrière le firewall. Pour éviter cette attaque, il faut renforcer le contrôle et la surveillance du trafic DNS.