
Un service DNS pratique écrit en Go pour aider à la détection de plusieurs types de vulnérabilités aveugles. Il surveille le serveur d'un pentester pour les interactions DNS hors bande et envoie des notifications de recherche via Slack.
Un service DNS pratique écrit en Go pour aider à la détection de plusieurs types de vulnérabilités aveugles. Il surveille le serveur d'un pentester pour les interactions DNS hors bande et envoie des notifications avec les détails de la requête reçue via Slack. DNSObserver peut vous aider à trouver des bugs tels que l'injection de commandes OS aveugle, les SQLi aveugles, les XXE aveugles, et bien d'autres encore !

Pour un aperçu plus détaillé et des instructions de configuration, voir :
https://www.allysonomalley.com/2020/05/22/dnsobserver/
Ce dont vous aurez besoin :
Si vous n'avez pas encore de VPS prêt à l'emploi, créez un nouveau VPS Linux avec votre fournisseur préféré. Notez son adresse IP publique.
Enregistrez un nouveau nom de domaine auprès de votre bureau d'enregistrement préféré - n'importe quel bureau d'enregistrement devrait convenir tant qu'il permet de définir des serveurs de noms personnalisés et des enregistrements glue.
Accédez aux paramètres DNS de votre nouveau domaine et trouvez la section 'enregistrements glue'. Ajoutez deux entrées ici, une pour chaque nouveau serveur de noms, et fournissez les deux avec l'adresse IP publique de votre VPS.
Ensuite, changez les serveurs de noms par défaut pour :
ns1.<VOTRE-DOMAINE>
ns2.<VOTRE-DOMAINE>
Connectez-vous en SSH à votre VPS et effectuez les étapes suivantes :
Installez Go si vous ne l'avez pas déjà. Les instructions d'installation se trouvent ici
Assurez-vous que les ports DNS par défaut sont ouverts - 53/UDP et 53/TCP. Exécutez :
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
Obtenez DNSObserver et ses dépendances :
go get github.com/allyomalley/dnsobserver/...
Il y a deux arguments obligatoires et deux arguments facultatifs :
domain [OBLIGATOIRE]
Votre nouveau nom de domaine.
ip [OBLIGATOIRE]
L'adresse IP publique de votre VPS.
webhook [Facultatif]
Si vous souhaitez recevoir des notifications, fournissez l'URL de votre webhook Slack. Vous serez notifié de toute recherche de votre nom de domaine, ou de tout sous-domaine de votre domaine (j'ai exclu les notifications pour les requêtes concernant d'autres domaines racine et pour vos serveurs de noms personnalisés afin d'éviter les notifications excessives ou aléatoires). Si vous ne fournissez pas de webhook, les interactions seront enregistrées dans la sortie standard à la place. Les instructions de configuration du webhook se trouvent ici.
recordsFile [Facultatif]
Par défaut, DNSObserver ne répondra qu'aux requêtes pour votre nom de domaine, ou pour l'un de ses serveurs de noms. Pour tout autre hôte, il vous notifiera toujours de l'interaction (tant qu'il s'agit de votre domaine ou d'un sous-domaine), mais renverra une réponse vide. Si vous souhaitez que DNSObserver réponde aux requêtes A pour certains hôtes avec une adresse, vous pouvez soit modifier le fichier config.yml inclus dans ce projet, soit créer le vôtre basé sur ce modèle :
a_records:
- hostname: ""
ip: ""
- hostname: ""
ip: ""
Actuellement, l'outil n'utilise que les enregistrements A - à l'avenir, j'ajouterai peut-être CNAME, AAAA, etc. Voici un exemple de fichier d'enregistrements personnalisés complet :
a_records:
- hostname: "google.com"
ip: "1.2.3.4"
- hostname: "github.com"
ip: "5.6.7.8"
Ces paramètres signifient que je souhaite répondre aux requêtes pour 'google.com' avec '1.2.3.4', et aux requêtes pour 'github.com' avec '5.6.7.8'.
Maintenant, nous sommes prêts à écouter ! Si vous souhaitez pouvoir faire d'autres travaux sur votre VPS pendant que DNSObserver s'exécute, démarrez d'abord une nouvelle session tmux.
Pour la configuration standard, transmettez les arguments obligatoires et votre webhook :
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX
Pour obtenir ce qui précède, mais aussi inclure des réponses de recherche A personnalisées, ajoutez l'argument pour votre fichier d'enregistrements :
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX --recordsFile my_records.yml
En supposant que vous ayez tout configuré correctement, DNSObserver devrait maintenant être en cours d'exécution. Pour confirmer son bon fonctionnement, ouvrez un terminal sur votre bureau et effectuez une recherche de votre nouveau domaine ('example.com' dans cette démo) :
dig example.com
Vous devriez maintenant recevoir une notification Slack avec les détails de la requête !