Comment lutter contre le détournement de DNS ?

29 Juil, 2019  - écrit par  dans Sécurité

Le 24 avril 2018, les utilisateurs d’un service de porte-monnaie populaire Ether (une cryptomonnaie populaire comparable à Bitcoin) ont reçu un message inhabituel alors qu’ils naviguaient sur le site Web pour se connecter : le certificat SSL du site Web était affiché comme invalide. Après un examen plus approfondi, ils allaient constater que le certificat était auto-signé.
Certains utilisateurs se seraient arrêtés là. Après tout, il est logique de ne pas se connecter à un site Web avec une erreur de certificat. Point barre.
Mais ce ne fut pas le cas. Comme l’erreur de certificat était tout ce qui n’allait pas et le reste allait  bien, certains utilisateurs se sont quand même connectés et ce à l’encontre de leur meilleur instinct. Toute personne ayant poursuivi sa navigation a immédiatement vu un compte à rebours de 10 secondes avant que toute sa cryptomonnaie disponible ne soit transférée vers un autre portefeuille.
En d’autres termes, ils ont été victime de hameçonnage.
Mais comment est-ce arrivé ? Personne n’a cliqué sur un lien déguisé dans un courriel et chacun naviguait directement sur le site Web ou avait utilisé un favori.

Alors, que s’est-il passé ?

Revenons un peu en arrière. Tout d’abord, nous devons nous pencher sur la façon dont Internet fonctionne. Pour commencer, il y a le DNS.
En tant que bureau d’enregistrement, nous vendons des noms de domaine, ce qui signifie que nous vous laissons attribuer un nom, disons exemple.com, à l’adresse IP du serveur sur lequel vous hébergez un service, comme votre site Web, votre courriel, etc.
Le DNS est la façon dont vous dites à l’Internet quelle adresse IP va avec quel nom. Vous attribuez des serveurs DNS à votre nom de domaine qui ont tout tracé pour savoir quelles adresses IP vont avec exemple.com, lesquelles ont votre email sur elles et ainsi de suite.
Puis, quand quelqu’un ouvre une fenêtre de navigateur et tape ‘exemple.com’, son ordinateur demande à un résolveur DNS à quelle adresse IP il doit se connecter pour trouver votre site. Si cette personne ou quelqu’un d’autre sur le même réseau ont récemment visité votre site, alors le résolveur DNS a probablement cette information stockée dans son cache et il peut simplement donner cette réponse à votre ordinateur. S’il ne la connaît pas, il remontera la chaîne et demandera au prochain serveur DNS.
Le résolveur DNS met alors en cache la réponse pour une utilisation ultérieure, pendant une période de temps définie (appelée temps de vie ou TTL). De cette façon, la prochaine fois que quelqu’un sur le réseau demande une réponse particulière, celle-ci n’a pas besoin d’être demandée à la source.
De nos jours, il est de plus en plus rare que les propriétaires de noms de domaine utilisent leurs propres serveurs DNS. Ils se servent généralement des serveurs DNS de leur bureau d’enregistrement ou un fournisseur tiers comme Cloudflare ou Amazon Web Services.
Parce qu’il est distribué, le DNS est un système très robuste. Mais en même temps, il souffre d’une faiblesse : il s’agit d’un système basé sur la confiance. Chaque serveur DNS en cours de route fait confiance au serveur DNS au-dessus de lui pour lui donner la bonne réponse.
Ce qui s’est passé avec le cas de l’hameçonnage du porte-monnaie Ether, c’est que quelqu’un a réussi à faire croire aux résolveurs DNS de tout le monde qu’une fausse réponse était la vraie.

Comment simuler une réponse DNS ?

Les requêtes et les réponses DNS ne sont pas chiffrées et peuvent être lues par n’importe qui.
Si un attaquant réussit à intercepter votre requête DNS, il peut usurper la réponse et diriger votre ordinateur vers la mauvaise adresse IP. Pour ce faire, un attaquant devrait pirater le Fournisseur d’Accès à Internet (FAI) de sa cible, son DNS ou son fournisseur DNS.
Dans l’attaque du site du porte-monnaie Ether en avril 2018, toutes les requêtes DNS adressées au site attaqué ont reçu une réponse erronée. Quelqu’un a piraté les serveurs DNS du site.

Détournement de serveurs DNS

Le site en question utilisait les serveurs DNS d’un service web populaire comme serveurs DNS de leur domaine. Si un attaquant voulait voler des actifs Ether, une façon serait de pirater le serveur web du site et de changer le code. Ce serait plus facile, cependant, si un attaquant pouvait simplement pointer le DNS du site vers un nouveau site Web malveillant. S’ils étaient capables de pirater le fournisseur DNS, ils auraient un contrôle total sur le DNS du site et pourraient le diriger vers n’importe quel site Web.
Mais au lieu de cela, les responsables derrière l’attaque du site de porte-monnaie Ether en avril dernier ont choisi de fournir de fausses réponses aux requêtes DNS aux serveurs de noms déjà affectés au domaine du site de porte-monnaie Ether.
La façon dont ils ont fait les choses nous amène à un autre petit détail sur le fonctionnement de l’Internet.

Tables de routage

L’Internet n’est pas simplement un grand réseau. C’est un réseau de réseaux.
Cela signifie que lorsque vous vous connectez au Web à la maison, vous transmettez et recevez des données, y compris des requêtes DNS, vers et depuis votre réseau de FAI. Le routeur du réseau de votre fournisseur d’accès à Internet cherche alors à savoir comment acheminer ce que vous transmettez au bon endroit.
Ces routeurs ont des connexions directes à certains réseaux, mais pour envoyer des données à certains réseaux, ils doivent d’abord les envoyer par un autre réseau qui les envoie ensuite au bon réseau.
Fondamentalement, il dresse une carte de la façon dont il peut atteindre chaque réseau individuel. C’est ce qu’on appelle une table de routage. Ensuite, le routeur partage toutes ces informations avec tous les réseaux auxquels il est directement connecté, et donc ces tables de routage se propagent sur tous les réseaux sur l’Internet.
Vous savez probablement déjà que l’Internet utilise les adresses IP pour localiser un ordinateur donné sur l’Internet. Chaque adresse IP a un « préfixe » que l’on pourrait comparer à un code postal. Chaque réseau sur l’Internet annonce à tous les autres réseaux sur l’Internet qu’il peut fournir des données aux adresses IP dans ce préfixe.
Lors de l’envoi de données à une destination, un routeur réseau utilise ses tables de routage – sa carte de l’Internet – pour envoyer des données au bon réseau pour l’adresse IP de la destination et sur sa destination. C’est ainsi que toutes les communications se font sur l’Internet. Y compris les requêtes DNS. Après tout, les serveurs DNS ont aussi des adresses IP.
Tout comme avec le DNS, parce que le système est basé sur la fiabilité de l’information, lorsque des informations de routage incorrectes sont malveillantes ou même accidentellement envoyées par un réseau, cette information peut se retrouver dans les tables de routage sur l’Internet.
C’est exactement ce qui s’est produit lors de l’attaque du printemps dernier sur le site Web d’Ether. Les attaquants ont des routeurs centraux sur l’Internet pour acheminer le trafic vers les adresses IP du service DNS du site de porte-monnaie Ether vers un serveur qu’ils possédaient et contrôlaient.
Ensuite, quand quelqu’un envoyait une requête DNS pour un domaine géré sur l’adresse IP que l’attaquant avait piratée, le serveur de l’attaquant envoyait la réponse, pas le fournisseur du site  de porte-monnaie Ether. Et si quelqu’un envoyait aux attaquants une requête DNS pour le nom de domaine du site de cryptomonnaies Ether, le serveur des attaquants répondait avec l’adresse IP du faux site Web, puis volait les informations de la victime quand ils se connectaient au faux site.
En fin de compte, plus de 17 millions de dollars de cryptoconnaissance ont été volés.
Bien que certains pourraient dire que tout cela démontre que les cryptomonnaies sont intrinsèquement une proposition risquée, que les utilisateurs victimes de l’attaque auraient dû être mieux informés, ou que le fournisseur DNS ou le service de porte-monnaie électronique Ether n’ont pas réussi à protéger leurs utilisateurs, aucun de ces facteurs n’est pertinent pour le problème principal : même si chaque attaque offre des leçons pour des améliorations futures, il est important de se rappeler qu’à son niveau le plus basique, le hameçonnage exploite la confiance des utilisateurs.
Les leçons à retenir sont les suivantes. D’un côté, on ne peut faire confiance à rien, pas même au DNS. Mais d’un autre côté, la question se pose : comment pouvons-nous améliorer la fiabilité du système ?
C’est là qu’intervient le DNSSEC.

DNSSEC

Dans le DNS tel qu’il a été créé, il n’y avait aucun moyen de savoir si les réponses DNS que vous avez reçues provenaient réellement de la source qu’elles prétendaient être. Au fur et à mesure que l’Internet se développait, les gens ont commencé à se rendre compte qu’il s’agissait d’un oubli important, et les gens ont donc commencé à proposer des « extensions » au DNS, en particulier un ensemble d' »extensions DNS SECurity » ou DNSSEC.
Il a fallu un peu d’expérimentation pour y parvenir, mais le DNSSEC tel qu’il existe aujourd’hui consiste à signer des enregistrements DNS en utilisant la cryptographie à clé publique. Les propriétaires de domaine génèrent leurs propres paires de clés, puis envoient la clé publique à leur bureau d’enregistrement de domaine (généralement en les téléchargeant). Le bureau d’enregistrement envoie ensuite les clés au registre, qui les signe et les publie. C’est similaire à la façon dont les certificats SSL sont générés par les administrateurs de sites Web, puis envoyés et signés par une autorité de certification (CA).
Lorsqu’une zone DNS est signée en utilisant DNSSEC, chaque fois qu’un enregistrement DNS dans cette zone est recherché, on peut vérifier si l’enregistrement reçu provient réellement d’où il était censé provenir.
Cela signifie que n’importe quelle attaque peut être détectée lorsque DNSSEC est utilisé sur la zone.
Avant tout, DNSSEC vous permet d’être sûr que les réponses que vous recevez d’un serveur DNS sont correctes. Dans le cas du site Ether, le serveur DNS frauduleux n’aurait pas été en mesure de falsifier les enregistrements DNS signés et de diriger les utilisateurs vers un site frauduleux.
De plus, sans DNSSEC, les attaquants auraient pu utiliser leur contrôle des serveurs DNS du site Web attaqué pour créer un véritable certificat SSL qui semble aussi valide pour un navigateur que tout autre certificat valide laissant les utilisateurs sans aucun avertissement que la page était frauduleuse. Avec DNSSEC, cela ne serait pas possible.

Risque et confiance

Il est important de noter que ce qui est arrivé au site web du porte-monnaie électronique Ether n’est pas un risque inhérent à la cryptomonnaie. Le détournement de DNS n’arrive pas seulement aux cryptomonnaies. Fin 2016, une banque brésilienne a vu ses domaines détournés par le même type d’attaque que celle subie par le site Web du porte-monnaie électronique Ether, ce qui a eu un impact non seulement sur son site Web, mais aussi sur les distributeurs de billets du pays, des États-Unis et des îles Vierges, exposant des millions de personnes à un vol potentiel.
Mais ni l’une ni l’autre de ces attaques ne visaient une monnaie ou une chaîne, mais des sites Web ciblés. N’importe quel site Web pourrait être compromis de cette façon, pas seulement un site de cryptomonnaie, et pas seulement un site financier.
Le risque est présent chaque fois que l’exploitation des vulnérabilités de la technologie peut mener à d’énormes gains pour les voleurs potentiels.
Mais le revers de la médaille (fiat ou non) est la question de la confiance. Il est assez facile d’être blasé par les nombreuses cyberattaques et les vulnérabilités apparemment évidentes qui sont exploitées. Le type d’attaque subi par les utilisateurs du site Web de porte-monnaie Ether n’était pas si différent des escroqueries typiques courantes et réussies tous les jours.
Les gens transfèrent de l’argent à des princes nigérians parce qu’ils ont confiance que lorsqu’un courriel arrive dans leur boîte aux lettres, il doit être sûrement honnête et fiable. Ils cliquent sur les liens dans les courriels de hameçonnage parce qu’ils ont confiance en le domaine qu’ils voient dans le lien. Et ils ignorent les avertissements de certificat et se connectent de toute façon à leurs portefeuilles de cryptomonnaie parce qu’ils font confiance dans les services de base de l’Internet, comme le DNS et le routage réseau.
DNSSEC est une technologie utile parce qu’elle utilise la cryptographie pour accroître la confiance dans l’un de ces services de base et nous recommandons fortement à tous de l’utiliser, non seulement pour éviter ce type d’attaques, mais parce qu’elle nous aide tous à avoir plus confiance dans ce en quoi nous pouvons ou non avoir confiance. Mais ce n’est pas parfait.

Autres considérations

Une considération à avoir est que le nom de domaine du site Ether n’avait pas le HSTS activé. Cette protection aurait rendu plus difficile le contournement de l’avertissement de certificat auto-signé puisqu’aucune option n’aurait été présentée à l’utilisateur pour ignorer l’avertissement et continuer quand même.
D’un autre côté, le fait que les utilisateurs aient reçu un avertissement a été un coup de chance. Comme les attaquants redirigeaient tout le trafic DNS pour le domaine du site du portefeuille Ether vers leurs propres serveurs, cela signifie qu’ils auraient également pu acquérir un certificat SSL « valide » en utilisant la validation DNS.
Une autre considération est que si l’attaquant avait choisi de rediriger le trafic vers un résolveur DNS, tous les utilisateurs de ce résolveur pourraient voir leur trafic redirigé vers un site de phishing de leur choix et DNSSEC serait impuissant pour l’arrêter. C’est parce que la vérification DNSSEC est effectuée par le résolveur DNS lui-même, donc si le DNS est détourné n’importe où entre votre navigateur et le résolveur DNS lui-même, DNSSEC ne vous protège pas.
En fin de compte, aucune technologie de sécurité unique n’est jamais suffisante pour protéger contre tous les types d’attaques. Et une attaque peut toujours être déjouée de multiples façons. DNSSEC n’est pas la solution miracle pour arrêter toutes ces attaques.