S’il y a une chose que les films hollywoodiens nous apprennent, c’est que les pirates sont malins et ont diverses astuces pour contourner notre sécurité. Dans le monde réel, un problème de sécurité se résume souvent à une opportunité plutôt qu’à une compétence développée. Une attaque « DNS poisoning » correspond à cette description, et en fait, vous devez avoir les compétences nécessaires pour empêcher que votre domaine soit usurpé.

Le concept est simple : les visiteurs voient ce qui ressemble à votre site web, mais qui est frauduleux et nuisible, alors que ce faux site web semble similaire. En tant que tel, vous devez employer plusieurs techniques pour vous assurer que les utilisateurs sont en sécurité et que votre site reste à l’abri des attaques.

Dans cet article, nous allons plonger dans le concept de DNS poisoning et d’usurpation de domaine. Nous allons également parler de certains des concepts environnants pour vous aider à comprendre pourquoi votre réponse éventuelle est la meilleure approche.

Une introduction au système de noms de domaine (DNS)

Avant d’entrer dans les détails du DNS poisoning, parlons du système de noms de domaine. Si la navigation sur un site web semble être une tâche simple, il se passe beaucoup de choses sous le capot du serveur.

De nombreux éléments sont impliqués pour vous permettre de passer de « A » à « B » :

  • Adresse IP. C’est une chaîne de chiffres qui correspond à votre adresse web réelle. Considérez-la comme les coordonnées de votre maison. Par exemple, 127.0.0.1:8080 est une adresse standard « localhost » (c’est-à-dire votre ordinateur).
  • Nom de domaine. Si l’adresse IP représente les coordonnées, le nom de domaine est votre adresse telle qu’elle apparaît sur l’enveloppe. Bien sûr, « kinsta.com » est l’un des millions d’exemples.
  • Une requête DNS. C’est un excellent exemple d’une tâche frontend de haut niveau avec un processus complexe de bas niveau. Pour l’instant, considérez qu’une requête est votre navigateur qui demande à un serveur dédié quelle est l’adresse d’un ensemble de coordonnées.
  • Un serveur DNS. Il est différent du serveur de votre site web car il s’agit de quatre serveurs en un. Son travail consiste à traiter les requêtes DNS. Nous en parlerons un peu plus en détail dans les sections suivantes.
  • Serveur récursif. Vous verrez aussi ces serveurs appelés « serveurs de résolution de noms » Ils font partie du processus de recherche DNS et sont chargés d’interroger les serveurs pour trouver le nom de domaine correspondant à une adresse IP.

En général, un DNS simplifie la recherche d’un nom de domaine pour l’utilisateur final. C’est un élément essentiel du web et, en tant que tel, il comporte de nombreuses pièces mobiles.

Nous examinerons ensuite le processus de recherche lui-même, mais vous pouvez déjà voir que le DNS a un rôle essentiel à jouer.

Le processus de recherche DNS

Soyez patient avec nous ici pendant que nous proposons ce qui ressemble à une analogie abstraite.

Les activités qui emmènent les gens dans des endroits reculés, comme l’alpinisme ou la voile, partagent un danger spécifique : se perdre et ne pas être retrouvé à temps. La façon traditionnelle de localiser les personnes échouées a été d’utiliser des coordonnées. Elles sont explicites et offrent une précision extrême. Cependant, ce procédé présente des inconvénients.

Premièrement, vous devez savoir comment calculer vos coordonnées pour n’importe quel endroit – ce qui est délicat si vous vous trouvez dans une région reculée du monde. Ensuite, vous devez expliquer ces coordonnées à l’équipe de secours. Un seul chiffre erroné et les conséquences sont terribles.

L’application what3words prend le processus complexe de calcul et de transmission des coordonnées et le transforme en un résumé en trois mots de votre emplacement général. Par exemple, prenez le siège social d’Automattic:

Les bureaux d'Automattic dans Apple Maps
Les bureaux d’Automattic dans Apple Maps

Les coordonnées de l’endroit sont 37.744159, -122.421555. Mais à moins d’être un navigateur expert, il est peu probable que vous sachiez cela. Et même si c’était le cas, mettre cela entre les mains de quelqu’un qui pourrait vous aider est une proposition bien mince.

En un mot, what3words prend un ensemble abstrait de coordonnées et les traduit en trois mots mémorisables. Dans le cas des bureaux d’Automattic, il s’agit de decent.transfers.sleeps:

Le site web de what3words, montrant les bureaux d'Automattic.
Le site web de what3words, montrant les bureaux d’Automattic.

Cela met le positionnement mondial complexe entre les mains de presque n’importe qui ayant accès à l’application. Cela a déjà sauvé beaucoup de vies civiles.

Cela est lié à une recherche DNS car le processus est similaire. Dans le cas de what3words, le sauveteur demande à l’application les coordonnées d’une chaîne de mots. La requête est envoyée à travers les serveurs pour chercher les coordonnées et revenir à l’utilisateur final lorsqu’il les a trouvées.

Une recherche DNS a un flux similaire:

  • Votre navigateur demande l’adresse IP pour un nom de domaine.
  • Votre système d’exploitation (OS) demande au serveur récursif de trouver le nom de domaine et commence à parcourir sa collection de serveurs.
  • Lorsqu’il trouve le nom de domaine, il le renvoie au navigateur.

L’un des inconvénients de what3words est qu’une chaîne de mots n’est pas aussi précise qu’un ensemble de coordonnées. Cela signifie que vous pouvez localiser rapidement un emplacement général mais que vous pouvez passer plus de temps à trouver la personne bloquée.

Une recherche DNS a également des inconvénients et les attaquants malveillants peuvent les exploiter. Mais avant d’aborder ce sujet, faisons un bref détour pour parler de la mise en cache et de la façon dont elle peut accélérer une recherche.

Mise en cache DNS

Tout comme la mise en cache web, la mise en cache DNS peut vous aider à rappeler des requêtes régulières au serveur. Ainsi, le processus de récupération d’une adresse IP sera plus rapide à chaque nouvelle visite.

En bref, le cache est situé dans le système du serveur DNS et évite le voyage supplémentaire vers le serveur récursif. Cela signifie qu’un navigateur peut aller chercher une adresse IP directement sur le serveur DNS et effectuer la requête GET plus rapidement.

Vous trouverez des caches DNS dans l’ensemble de votre système. Par exemple, votre ordinateur aura un cache DNS, tout comme votre routeur et votre fournisseur d’accès Internet (FAI). Souvent, vous ne réalisez pas à quel point votre expérience de navigation dépend de la mise en cache DNS – jusqu’à ce que vous soyez victime de DNS poisoning.

Ce qu’est le DNS poisoning

Maintenant que vous comprennez le concept d’une consultation DNS et le processus complet de récupération d’une adresse IP, nous pouvons voir comment cela peut être exploité.

Vous verrez souvent que le DNS poisoning est aussi appelé « spoofing » parce qu’avoir un site web frauduleux « sosie » dans la chaîne fait partie de l’attaque.

Nous allons parler plus en détail de tous ces aspects, mais sachez que le poisoning DNS ou le sproofing DNS est une attaque nuisible qui peut causer des problèmes mentaux, monétaires et de ressources pour les utilisateurs et Internet.

Mais d’abord, entrons dans le processus cache poisoning.

Comment fonctionne le sproofing DNS et le cache poisoning

Étant donné que l’ensemble du processus d’usurpation est complexe, les attaquants ont créé de nombreux moyens différents pour atteindre leur objectif :

  • Machine-in-the-Middle. C’est là qu’un attaquant se place entre le navigateur et le serveur DNS, empoisonne les deux et redirige un utilisateur vers un site frauduleux sur son propre serveur.
  • Détournement de serveur. Si un attaquant s’introduit dans le serveur DNS, il peut le reconfigurer pour envoyer toutes les requêtes vers son propre site.
  • Empoisonnement par spam. Contrairement au détournement de serveur, cette approche empoisonne le côté client (c’est-à-dire le navigateur). L’accès est souvent accordé par le biais de liens de spam, d’e-mails et de publicités frauduleuses.
  • Les « attaques d’anniversaire » Il s’agit d’une attaque cryptographique complexe qui nécessite quelques explications supplémentaires.

Une attaque d’anniversaire est basée sur le « problème d’anniversaire » Il s’agit d’un scénario de probabilité qui dit (en résumé) que s’il y a 23 personnes dans une pièce, il y a 50 % de chances que deux d’entre elles partagent le même anniversaire. S’il y a plus de personnes dans la pièce, les chances augmentent.

Un graphique montrant le problème des anniversaires. (Image source : Wikipedia)
Un graphique montrant le problème des anniversaires. (Image source : Wikipedia)

Cela se traduit par un empoisonnement du DNS basé sur l’identifiant qui relie la requête de consultation du DNS à la réponse GET. Si l’attaquant envoie un certain nombre de requêtes et de réponses aléatoires, il y a une forte probabilité qu’une correspondance aboutisse à une tentative d’empoisonnement réussie. À partir d’environ 450 requêtes, la probabilité est d’environ 75 %, et à 700 requêtes, un attaquant est presque sûr de craquer le serveur.

En bref, les attaques contre le serveur DNS se produisent dans la plupart des cas car cela donne à un utilisateur malveillant une plus grande flexibilité pour manipuler votre site et les données des utilisateurs. Il n’y a pas non plus de vérification des données DNS car les requêtes et les réponses n’utilisent pas le protocole de contrôle de transmission (TCP).

Le point faible de la chaîne est le cache DNS car il fait office de référentiel pour les entrées DNS. Si un attaquant peut injecter de fausses entrées dans le cache, chaque utilisateur qui y accède se retrouvera sur un site frauduleux jusqu’à l’expiration du cache.

Les attaquants recherchent souvent quelques signaux, points faibles et points de données à cibler. Ils s’efforcent de repérer les requêtes DNS qui n’ont pas encore été mises en cache car le serveur récursif devra entreprendre la requête à un moment donné. Par extension, un attaquant cherchera aussi le serveur de noms vers lequel une requête ira. Une fois qu’ils l’ont, le port que le résolveur utilise et le numéro d’identification de la requête sont essentiels.

Bien qu’il ne soit pas nécessaire de répondre à toutes ces exigences (après tout, un attaquant peut accéder aux serveurs par de nombreuses méthodes), le fait de cocher ces cases leur facilite la tâche.

Exemples réels de DNS poisoning

Au fil des ans, il y a eu quelques exemples très médiatisés de DNS poisoning. Dans certains cas, il s’agit d’un acte intentionnel. Par exemple, la Chine fait fonctionner un pare-feu à grande échelle (le soi-disant « Grand Pare-feu de Chine ») pour contrôler les informations que les internautes reçoivent.

En un mot, ils empoisonnent leurs propres serveurs en redirigeant les visiteurs qui se dirigent vers des sites non sanctionnés par l’État, comme Twitter et Facebook. Dans un cas, les restrictions chinoises ont même fait leur chemin dans l’écosystème du monde occidental.

Une erreur de réseau d’un FAI suédois a servi des informations DNS racine provenant de serveurs chinois. Les utilisateurs du Chili et des États-Unis ont donc été redirigés ailleurs lorsqu’ils ont accédé à certains sites de réseaux sociaux.

Dans un autre exemple, des pirates bangladais protestant contre les mauvais traitements en Malaisie ont empoisonné de nombreux domaines liés à Microsoft, Google, YouTube et d’autres sites très connus. Il semble s’agir d’un cas de détournement de serveur plutôt que d’un problème côté client ou de spam.

Même WikiLeaks n’est pas à l’abri des attaques de DNS poisoning. Un détournement de serveur potentiel il y a quelques années a fait que les visiteurs du site ont été redirigés vers une page dédiée aux pirates.

Le DNS poisoning ne doit pas être un processus compliqué. Les soi-disant « hackers éthiques », c’est-à-dire ceux qui cherchent à exposer les failles de sécurité plutôt qu’à infliger des dommages, disposent de méthodes simples pour tester l’usurpation sur leurs propres ordinateurs.

À part le fait d’être redirigé, le DNS poisoning ne semble pas avoir d’effets à long terme à première vue. En fait, il y en a – et nous en parlerons ensuite.

Pourquoi le DNS poisoning et le DNS sproofing sont-ils si nuisibles ?

Un attaquant qui espère réaliser un empoisonnement DNS sur un serveur a trois objectifs principaux :

  • Pour propager des logiciels malveillants.
  • Vous rediriger vers un autre site web qui leur sera profitable d’une manière ou d’une autre.
  • Voler des informations, que ce soit à vous ou à une autre entité.

Bien sûr, il n’est pas nécessaire de faire preuve d’imagination pour comprendre pourquoi l’empoisonnement ou l’usurpation de DNS est un problème pour les FAI, les opérateurs de serveurs et les utilisateurs finaux.

Comme nous l’avons mentionné, l’usurpation d’identité est un énorme problème pour les FAI, à tel point qu’il existe des outils comme le CAIDA Spoofer pour les aider.

Le site web de l'ACDI
Le site web de l’ACDI

Il y a quelques années, les statistiques montraient qu’il y avait environ 30.000 attaques par jour. Ce chiffre a très certainement augmenté depuis la publication du rapport. De plus, comme c’était le cas avec l’exemple de la section précédente, la diffusion de sites usurpés sur un réseau met en évidence les problèmes de confiance des utilisateurs, ainsi que les problèmes de confidentialité.

Peu importe qui vous êtes, il y a quelques risques lorsque vous êtes victime d’empoisonnement et d’usurpation :

  • Comme avec le Grand Pare-feu de Chine, vous pourriez être soumis à la censure. Cela signifie que les informations que vous obtenez ne seront pas exactes, ce qui a un effet d’entraînement sur de nombreux domaines sociaux et politiques.
  • Le vol de données est une préoccupation majeure, et c’est une entreprise lucrative pour ceux qui veulent obtenir les informations bancaires des utilisateurs et d’autres données sensibles.
  • Vous pourrez être sensible aux logiciels malveillants et autres troyens sur votre système. Par exemple, un attaquant pourrait injecter un keylogger ou d’autres formes de logiciels espions sur votre système par le biais d’un site usurpé.

Le DNS poisoning a aussi d’autres effets connexes. Par exemple, il se peut que vous ne puissiez pas appliquer de mises à jour de sécurité sur votre système pendant que le processus de récupération bat son plein. Cela laisse votre ordinateur vulnérable pendant plus longtemps.

Prenez également en compte le coût et la complexité de ce processus de nettoyage, car il touchera tout le monde le long de la chaîne. Des prix plus élevés pour tous les services connectés ne sont qu’un des points négatifs.

L’effort pour éliminer l’empoisonnement DNS est immense. Étant donné que l’empoisonnement affecte à la fois les configurations côté client et côté serveur, le débarrasser de l’un ne signifie pas qu’il a disparu de tous.

Comment prévenir le DNS poisoning

Il y a deux zones touchées par l’empoisonnement DNS : côté client et côté serveur. Nous allons voir ce que vous pouvez faire pour empêcher cette attaque préjudiciable des deux côtés.

Commençons par ce que fait l’Internet dans son ensemble du côté du serveur.

Comment Internet essaie d’empêcher le DNS poisoning et le DNS sproofing côté serveur

Bien que nous ayons beaucoup parlé de DNS tout au long de cet article, nous n’avons pas noté à quel point cette technologie est archaïque. En bref, le DNS n’est pas le mieux adapté à une expérience de navigation web moderne en raison de quelques facteurs. Pour commencer, il n’est pas crypté, et sans certaines considérations de validation essentielles, cela empêcherait beaucoup d’attaques par empoisonnement DNS de se poursuivre.

Un moyen rapide d’empêcher les attaques de se renforcer est d’adopter une stratégie de journalisation simple. Cela permet d’effectuer une comparaison simple entre la requête et la réponse pour voir si elles correspondent.

Cependant, la réponse à long terme (selon les experts) est d’utiliser les extensions de sécurité du système de noms de domaine (DNSSEC). Il s’agit d’une technologie conçue pour lutter contre l’empoisonnement du DNS, et en termes simples, elle met en place différents niveaux de vérification.

Pour aller plus loin, DNSSEC utilise la « cryptographie à clé publique » comme vérification. Il s’agit d’un moyen de signer les données comme étant authentiques et dignes de confiance. Elle est stockée avec tes autres informations DNS et le serveur récursif l’utilise pour vérifier qu’aucune des informations qu’il reçoit n’a été modifiée.

Comparé à d’autres protocoles et technologies Internet, DNSSEC est relativement récent, mais il est suffisamment mature pour être mis en œuvre au niveau de la racine d’Internet, même s’il n’est pas encore généralisé. Le DNS public de Google est un service qui prend entièrement en charge le DNSSEC, et d’autres apparaissent régulièrement.

Malgré cela, il y a encore quelques inconvénients avec le DNSSEC qui méritent d’être signalés :

  • Le protocole ne code pas les réponses. Cela signifie que les attaquants peuvent toujours « écouter » le trafic, mais les attaques devront être plus sophistiquées pour contourner DNSSEC.
  • Comme DNSSEC utilise des enregistrements supplémentaires pour rassembler les données DNS, il existe une autre vulnérabilité appelée « énumération de zone » Elle utilise un enregistrement pour « parcourir » et collecter tous les enregistrements DNS dans une « zone » spécifique Certaines versions de cet enregistrement chiffrent les données, mais d’autres ne le font pas encore.
  • DNSSEC est un protocole complexe, et comme il est aussi nouveau, il peut parfois être mal configuré. Bien sûr, cela peut éroder les avantages de son utilisation et présenter d’autres problèmes par la suite.

Malgré cela, DNSSEC est l’avenir, du moins du côté serveur. Quant à toi, en tant qu’utilisateur final, vous pouvez aussi prendre certaines mesures préventives.

Comment prévenir le DNS poisoning côté client

Il existe d’autres moyens d’empêcher l’empoisonnement du DNS côté client, mais aucun n’est aussi robuste que le DNSSEC côté serveur mis en œuvre par un expert. Néanmoins, il y a quelques cases simples que vous pouvez cocher en tant que propriétaire de site :

  • Utilisez le cryptage de bout en bout pour toutes les requêtes et les réponses. Les certificats Secure Sockets Layers (SSL) font un bon travail à cet égard.
  • Utilisez des outils de détection de l’usurpation d’identité. Ceux-ci analysent les paquets de données reçus avant de les envoyer. Cela permet d’atténuer tout transfert de données malveillant.
  • En augmentant les valeurs de temps de vie (TTL) de votre cache DNS, vous pouvez éliminer les entrées malveillantes avant qu’elles n’atteignent les utilisateurs finaux.
  • Vous devrez avoir mis en place une bonne stratégie DNS, DHCP et IPAM (DDI). Cela consiste en votre stratégie DNS, le protocole de configuration dynamique des hôtes et la gestion des adresses IP. C’est un processus complexe mais nécessaire géré par les sysadmins et les experts en sécurité des serveurs.

En tant qu’utilisateur final, il y a quelques autres choses que vous pouvez faire pour aider à empêcher l’empoisonnement et l’usurpation :

  • Utilisez un réseau privé virtuel (VPN), car vos données seront cryptées de bout en bout. Vous pourrez aussi utiliser des serveurs DNS privés, là encore avec un cryptage de bout en bout.
  • Prenez des précautions simples, comme ne pas cliquer sur des liens non reconnus et effectuer des analyses de sécurité régulières.
  • Vider régulièrement votre cache DNS élimine aussi les données malveillantes de votre système. C’est quelque chose qui prend quelques secondes et qui est simple à réaliser.

Bien que vous ne puissiez pas vous débarrasser totalement de l’empoisonnement DNS, vous pouvez empêcher le pire de se produire. En tant qu’utilisateur final, vous n’avez pas beaucoup de contrôle sur la façon dont le serveur gère les attaques. De même, les sysadmins n’ont pas le contrôle de ce qui se passe dans le navigateur. C’est donc un travail d’équipe pour empêcher cette attaque des plus néfastes d’affecter l’ensemble de la chaîne.

Résumé

Les attaques sur Internet sont monnaie courante. Le DNS poisoning (ou spoofing) est une attaque courante qui peut affecter des millions d’utilisateurs si elle n’est pas vérifiée. Cela est dû au fait que le protocole DNS est ancien et inadapté à la navigation web moderne – bien que des technologies plus récentes se profilent à l’horizon.

En bref, l’empoisonnement DNS redirige un utilisateur final vers une version frauduleuse d’un site web existant. C’est un moyen de voler des données et d’infecter les systèmes avec des logiciels malveillants. Il n’y a pas de moyen infaillible de l’empêcher complètement, mais vous pouvez le contenir grâce à quelques mesures simples.

Vous avez déjà été victime de DNS poisoning ou de DNS sproofing, et si oui, quelle en était la cause ? Partagez votre expérience avec nous dans la section des commentaires ci-dessous !

Jeremy Holcombe Kinsta

Content & Marketing Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems ;).