
PolarDNS est un serveur DNS faisant autorité spécialisé, adapté aux tests d'intrusion et à la recherche de vulnérabilités.
PolarDNS est un serveur DNS faisant autorité spécialisé écrit en Python 3.x, développé à l'origine comme un outil de test de sécurité des résolveurs DNS récursifs depuis le côté serveur.
_
PolarDNS peut être utilisé pour tester :
Il prend en charge les protocoles UDP et TCP, et donne à l'opérateur un contrôle total sur la couche protocole DNS.
Le serveur PolarDNS peut produire une variété de réponses DNS non standard et non conformes, des réponses DNS violant les spécifications RFC, y compris des réponses DNS hautement anormales et malformées.
Cela peut être utile pour :
Il existe trois méthodes disponibles pour installer PolarDNS.
PolarDNS nécessite Python 3.11 ou plus récent et n'a aucune dépendance supplémentaire.
C'est la façon la plus simple d'installer et d'exécuter PolarDNS :
pip install polardns
polardns
Vous pouvez également cloner le dépôt et exécuter PolarDNS directement :
git clone https://github.com/oryxlabs/PolarDNS.git
cd PolarDNS
python polardns.py
Cette méthode est recommandée si vous prévoyez de déboguer ou modifier le code, ou ajouter de nouvelles fonctionnalités.
Vous pouvez également exécuter PolarDNS dans un conteneur Docker :
docker run -p 53:53/tcp -p 53:53/udp oryxlabs/polardns
Le serveur PolarDNS est configurable via le fichier de configuration polardns/polardns.toml.
Au démarrage de PolarDNS, vous devriez voir une sortie similaire à celle-ci :
python polardns.py
1741599804.9039893 | PolarDNS v1.6.1 server starting up
1741599804.9039893 | Using '/path/to/your/polardns/polardns.toml' config file
1741599804.9039893 | Starting listener at tcp://0.0.0.0:53
1741599804.9039893 | Starting listener at udp://0.0.0.0:53
Cela indique que le serveur est opérationnel.
Par défaut, le serveur commence à écouter sur toutes les interfaces sur les ports UDP et TCP 53 (0.0.0.0:53), prêt à répondre aux requêtes DNS.
Vous pouvez le tester localement en demandant l'exemple de requête suivant, qui devrait toujours résoudre quelque chose.
Demandez en mode UDP :
dig always.yourdomain.com @127.0.0.1
Demandez en mode TCP :
dig always.yourdomain.com @127.0.0.1 +tcp
Vous devriez recevoir un enregistrement A avec l'adresse IP 2.3.4.5, comme dans cette capture d'écran :
Cela indique que le serveur fonctionne correctement.
En demandant au serveur PolarDNS de résoudre quelque chose, vous lui donnez essentiellement des instructions sur la façon dont il doit vous répondre. Cela signifie que vous (le client) dictez au serveur PolarDNS le type de réponse qu'il doit produire pour vous.
Par exemple, considérez la requête suivante :
dig always.ttl2000000000.slp1500.yourdomain.com @127.0.0.1
Vous devriez recevoir à nouveau un enregistrement A avec l'adresse IP 2.3.4.5, mais cette fois avec une valeur TTL de 2 000 000 000 (63,4 ans) et après un délai de 1,5 seconde :
Dans l'exemple ci-dessus, nous avons utilisé la fonctionnalité de base always (qui résout toujours quelque chose), et nous l'avons combinée avec le modificateur ttl pour ajuster la valeur TTL et le modificateur slp pour attendre avant d'envoyer la réponse.
PolarDNS possède les fonctionnalités principales suivantes :
Il y a actuellement plus de 70 fonctionnalités différentes et 19 modificateurs de réponse implémentés. En utilisant différentes fonctionnalités et en les combinant avec différents modificateurs de réponse, il est possible de produire d'innombrables variantes d'une réponse donnée.
Voir le catalogue inclus de toutes les fonctionnalités et modificateurs de réponse implémentés.
Cela donne à PolarDNS la capacité de produire des réponses DNS hautement inhabituelles, anormales et même malformées, permettant à l'opérateur de voir comment le côté récepteur gère de telles situations et s'il est techniquement robuste et mature.
Quelques exemples de réponses DNS que PolarDNS peut produire incluent :
Cela peut conduire à la découverte de diverses vulnérabilités telles que :
Voir les présentations BlackHat MEA 2023 (y compris les diapositives BONUS) pour plus de détails, de nombreux autres exemples et cas d'utilisation.
Voici un aperçu de haut niveau de ce dont vous avez besoin pour commencer à tester les serveurs DNS récursifs.