
Un kit d'outils JavaScript front-end pour créer des attaques de rebinding DNS.
Démo | Avis de sécurité | Payloads inclus | FAQ
AVERTISSEMENT : Ce logiciel est fourni à des fins éducatives uniquement. Ce logiciel ne doit pas être utilisé pour des activités illégales. L'auteur n'est pas responsable de son utilisation. Ne soyez pas un con.
DNS Rebind Toolkit est un framework JavaScript frontend pour développer des exploits de DNS Rebinding contre des hôtes et services vulnérables sur un réseau local (LAN). Il peut être utilisé pour cibler des appareils comme Google Home, Roku, les enceintes WiFi Sonos, les routeurs WiFi, les thermostats « intelligents » et autres appareils IoT. Avec cette boîte à outils, un attaquant distant peut contourner le pare-feu d'un routeur et interagir directement avec les appareils du réseau domestique de la victime, exfiltrant des informations privées et, dans certains cas, contrôlant même les appareils vulnérables eux-mêmes.
L'attaque exige que la victime sur le réseau cible suive simplement un lien, ou qu'elle voie une publicité HTML contenant une iframe malveillante. De là, le navigateur web de la victime est utilisé comme un proxy pour accéder directement à d'autres hôtes connectés à son réseau domestique. Ces machines et services cibles seraient autrement indisponibles pour l'attaquant depuis Internet. L'attaquant distant peut ne pas savoir quels sont ces services, ni quelles adresses IP ils occupent sur le réseau de la victime, mais DNS Rebind Toolkit gère cela en testant par force brute des centaines d'adresses IP probables.
Sous le capot, cet outil utilise un serveur DNS whonow public tournant sur rebind.network:53 pour exécuter l'attaque de DNS rebinding et tromper le navigateur web de la victime afin qu'il viole la politique de même origine. De là, il utilise WebRTC pour divulguer l'adresse IP privée de la victime, disons 192.168.1.36. Il utilise les trois premiers octets de cette adresse IP locale pour deviner le sous-réseau du réseau, puis injecte 256 iframes, de 192.168.1.0 à 255, délivrant un payload à chaque hôte qui pourrait se trouver sur le sous-réseau.
Cette boîte à outils peut être utilisée pour développer et déployer vos propres attaques de DNS rebinding. Plusieurs payloads d'attaque réels sont inclus avec cette boîte à outils dans le répertoire payloads/. Ces payloads comprennent des attaques d'exfiltration d'informations (et de rickroll) contre quelques appareils IoT populaires, notamment les produits Google Home et Roku.
Cette boîte à outils est le produit d'une recherche de sécurité indépendante sur les attaques de DNS Rebinding. Vous pouvez lire cette recherche originale ici.
# clone the repo
git clone https://github.com/brannondorsey/dns-rebind-toolkit.git
cd dns-rebind-toolkit
# install dependencies
npm install
# run the server using root to provide access to privileged port 80
# this script serves files from the www/, /examples, /share, and /payloads directories
sudo node server
Par défaut, server.js sert des payloads ciblant Google Home, Roku, les enceintes Sonos, les ampoules Phillips Hue et les appareils Radio Thermostat faisant tourner leurs services sur les ports 8008, 8060, 1400, 80 et 80 respectivement. Si vous avez l'un de ces appareils sur votre réseau domestique, rendez-vous sur http://rebind.network pour une belle surprise ;). Ouvrez la console de développement et regardez ces services être exploités sans danger, leurs données étant volées et exfiltrées vers server.js.
Cette boîte à outils fournit deux objets JavaScript qui peuvent être utilisés ensemble pour créer des attaques de DNS rebinding :
DNSRebindAttack : Cet objet est utilisé pour lancer une attaque contre un service vulnérable tournant sur un port connu. Il génère un payload pour chaque adresse IP que vous choisissez de cibler. Les objets DNSRebindAttack sont utilisés pour créer, gérer et communiquer avec plusieurs objets DNSRebindNode. Chaque payload lancé par DNSRebindAttack doit contenir un objet DNSRebindNode.DNSRebindNode : Cet objet de classe statique doit être inclus dans chaque fichier de payload HTML. Il est utilisé pour cibler un service tournant sur un hôte. Il peut communiquer avec l'objet DNSRebindAttack qui l'a généré et il dispose de fonctions d'aide pour exécuter l'attaque de DNS rebinding (via DNSRebindNode.rebind(...)) ainsi que pour exfiltrer vers server.js les données découvertes pendant l'attaque (DNSRebindNode.exfiltrate(...)).Ces deux scripts sont utilisés ensemble pour exécuter une attaque contre des hôtes inconnus sur un LAN protégé par un pare-feu. Une attaque de base ressemble à ceci :
http://example.com/launcher.html. launcher.html contient une instance de DNSRebindAttack.http://example.com/launcher.html est intégrée en tant qu'iframe. Cela amène le DNSRebindAttack sur launcher.html à commencer l'attaque.DNSRebindAttack utilise une fuite WebRTC pour découvrir l'adresse IP locale de la machine de la victime (par ex. 192.168.10.84). L'attaquant utilise cette information pour choisir une plage d'adresses IP à cibler sur le LAN de la victime (par ex. 192.168.10.0-255).launcher.html lance l'attaque de DNS rebinding (via DNSRebindAttack.attack(...)) contre une plage d'adresses IP sur le sous-réseau de la victime, ciblant un seul service (par ex. l'API REST Google Home non documentée disponible sur le port 8008).DNSRebindAttack intègre une iframe contenant payload.html dans la page launcher.html. Chaque iframe contient un objet DNSRebindNode qui exécute une attaque contre le port 8008 d'un seul hôte défini dans la plage d'adresses IP attaquée. Ce processus d'injection se poursuit jusqu'à ce qu'une iframe ait été injectée pour chaque adresse IP ciblée par l'attaque.payload.html injecté utilise DNSRebindNode pour tenter une attaque de rebinding en communiquant avec un serveur DNS whonow. Si elle réussit, la politique de même origine est violée et payload.html peut communiquer directement avec le produit Google Home. En général, payload.html est écrit de manière à faire quelques appels API à l'appareil cible et à exfiltrer les résultats vers server.js tournant sur example.com avant de terminer l'attaque et de s'auto-détruire.Notez que si un utilisateur possède un appareil Google Home sur son réseau avec une adresse IP inconnue et qu'une attaque est lancée contre tout le sous-réseau 192.168.1.0/24, alors l'attaque de rebinding d'un seul DNSRebindNode réussira et 254 échoueront.
Une attaque se compose de trois scripts et fichiers coordonnés :