Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
massdns — Un résolveur DNS stub haute performance pour les requêtes en masse et la reconnaissance (énumération de sous-domaines). | Kitploit
Outils/GitHubGitHub/blechschmidt/massdns
OSINT (Renseignement de Sources Ouvertes)ReconnaissanceÉnumération DNS et Sous-domaineCollecte d'InformationsÉnumération de Sous-domainesFuzzing DNSAnalyse DNSTop en Analyse DNS n°4Top en Fuzzing DNS n°1Top en Énumération DNS et Sous-domaine n°7
3.6k50422il y a 4 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Top en Énumération de Sous-domaines n°7
GitHubblechschmidt/massdns

massdns

Un résolveur DNS stub haute performance pour les requêtes en masse et la reconnaissance (énumération de sous-domaines).

Voir le dépôt

MassDNS

Un résolveur DNS à haute performance

MassDNS est un résolveur DNS simple et haute performance conçu pour ceux qui cherchent à résoudre un nombre massif de noms de domaine, de l'ordre de millions voire de milliards. Sans configuration spéciale, MassDNS est capable de résoudre plus de 350 000 noms par seconde en utilisant des résolveurs publics.

Contributeurs

  • Quirin Scheitle, Université technique de Munich

Compilation

Clonez le dépôt git et cd dans le dossier racine du projet. Exécutez ensuite make pour compiler depuis les sources. Si vous n'êtes pas sous Linux, exécutez make nolinux. Sous Windows, les paquets Cygwin gcc-core, git et make sont nécessaires.

Utilisation

root@kitploit:~
Usage: ./bin/massdns [options] [domainlist]
  -b  --bindto             Lier à une adresse IP et un port. (Défaut : 0.0.0.0:0)
      --busy-poll          Utiliser l'attente active au lieu d'epoll.
  -c  --resolve-count      Nombre de résolutions pour un nom avant d'abandonner. (Défaut : 50)
      --drop-group         Groupe pour abandonner les privilèges lorsqu'il est exécuté en root. (Défaut : nogroup)
      --drop-user          Utilisateur pour abandonner les privilèges lorsqu'il est exécuté en root. (Défaut : nobody)
      --extended-input     Les noms d'entrée sont suivis d'une liste de résolveurs séparés par des espaces.
                           Ceux-ci sont utilisés avant de revenir au fichier de résolveurs.
      --filter             N'afficher que les paquets avec le code de réponse spécifié.
      --flush              Vider le fichier de sortie dès qu'une réponse est reçue.
  -h  --help               Afficher cette aide.
      --ignore             Ne pas afficher les paquets avec le code de réponse spécifié.
  -i  --interval           Intervalle en millisecondes entre plusieurs résolutions du même
                           domaine. (Défaut : 500)
  -l  --error-log          Chemin du fichier de journal des erreurs. (Défaut : /dev/stderr)
      --norecurse          Utiliser des requêtes non récursives. Utile pour l'espionnage du cache DNS.
  -o  --output             Indicateurs de formatage de la sortie.
      --predictable        Utiliser les résolveurs de manière incrémentielle. Utile pour les tests de résolveurs.
      --processes          Nombre de processus à utiliser pour la résolution. (Défaut : 1)
  -q  --quiet              Mode silencieux.
      --rand-src-ipv6      Utiliser une adresse IPv6 aléatoire du sous-réseau spécifié pour chaque requête.
      --rand-src-ipv6-file Utiliser une adresse IPv6 aléatoire d'un fichier spécifié.
      --rcvbuf             Taille du tampon de réception en octets.
      --retry              Codes de réponse DNS inacceptables.
                           (Défaut : Tous les codes sauf NOERROR ou NXDOMAIN)
  -r  --resolvers          Fichier texte contenant les résolveurs DNS.
      --root               Ne pas abandonner les privilèges lorsqu'il est exécuté en root. Non recommandé.
  -s  --hashmap-size       Nombre de recherches simultanées. (Défaut : 10000)
      --sndbuf             Taille du tampon d'envoi en octets.
      --status-format      Format des mises à jour d'état en temps réel, json ou ansi (Défaut : ansi)
      --sticky             Ne pas changer de résolveur lors des tentatives.
      --socket-count       Nombre de sockets par processus. (Défaut : 1)
  -t  --type               Type d'enregistrement à résoudre. (Défaut : A)
      --verify-ip          Vérifier les adresses IP des réponses entrantes.
  -w  --outfile            Écrire dans le fichier de sortie spécifié au lieu de la sortie standard.

Indicateurs de sortie :
  L - sortie sous forme de liste de domaines
  S - sortie texte simple
  F - sortie texte complète
  B - sortie binaire
  J - sortie ndjson

Indicateurs avancés pour le mode de sortie liste de domaines :
  0 - Inclure les réponses NOERROR sans réponses.

Indicateurs avancés pour le mode de sortie simple :
  d - Inclure les enregistrements de la section supplémentaire.
  i - Indenter tout enregistrement de réponse.
  l - Séparer les réponses par un saut de ligne.
  m - N'afficher que les enregistrements de réponse correspondant au nom de la question.
  n - Inclure les enregistrements de la section réponse.
  q - Afficher la question.
  r - Afficher la question précédée de l'adresse IP du résolveur, du timestamp Unix et du code de retour.
  s - Séparer les sections de paquets par un saut de ligne.
  t - Inclure le TTL et la classe d'enregistrement dans la sortie.
  u - Inclure les enregistrements de la section autorité.

Indicateurs avancés pour le mode de sortie ndjson :
  e - Écrire un enregistrement pour chaque échec de requête terminal.

Pour une description détaillée de l'interface en ligne de commande, veuillez consulter la page de manuel en utilisant man ./doc/massdns.1.

Exemple

Résoudre tous les enregistrements AAAA des domaines dans domains.txt en utilisant les résolveurs dans resolvers.txt dans lists et stocker les résultats dans results.txt :

root@kitploit:~
$ ./bin/massdns -r lists/resolvers.txt -t AAAA domains.txt > results.txt

Cela équivaut à :

root@kitploit:~
$ ./bin/massdns -r lists/resolvers.txt -t AAAA -w results.txt domains.txt

Exemple de sortie

Par défaut, MassDNS affiche les paquets de réponse au format texte qui ressemble à ceci :

root@kitploit:~
;; Server: 77.41.229.2:53
;; Size: 93
;; Unix time: 1513458347
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51298
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
example.com. IN A

;; ANSWER SECTION:
example.com. 45929 IN A 93.184.216.34

;; AUTHORITY SECTION:
example.com. 24852 IN NS b.iana-servers.net.
example.com. 24852 IN NS a.iana-servers.net.

L'adresse IP du résolveur est incluse pour vous permettre de filtrer plus facilement la sortie si vous détectez que certains résolveurs produisent de mauvais résultats.

Résolution

Le dépôt inclut le fichier resolvers.txt constitué d'un sous-ensemble filtré des résolveurs fournis par le projet subbrute. Veuillez noter que l'utilisation de MassDNS peut entraîner une charge importante sur les résolveurs utilisés et entraîner des plaintes pour abus adressées à votre FAI. Notez également que les résolveurs fournis ne sont pas garantis dignes de confiance. La liste de résolveurs est actuellement obsolète avec une grande partie des résolveurs dysfonctionnels.

L'implémentation DNS personnalisée et sans malloc de MassDNS ne prend actuellement en charge que les enregistrements les plus courants. Vous êtes invité à aider à changer cela en collaborant.

Enregistrements PTR

MassDNS inclut un script Python vous permettant de résoudre tous les enregistrements PTR IPv4 en imprimant leurs requêtes respectives sur la sortie standard.

root@kitploit:~
$ ./scripts/ptr.py | ./bin/massdns -r lists/resolvers.txt -t PTR -w ptr.txt

Veuillez noter que les étiquettes dans in-addr.arpa sont inversées. Pour résoudre le nom de domaine de 1.2.3.4, MassDNS attend 4.3.2.1.in-addr.arpa comme nom de requête d'entrée. En conséquence, le script Python ne résout pas les enregistrements dans un ordre croissant, ce qui est un avantage car les pics soudains importants sur les serveurs de noms des sous-réseaux IPv4 sont évités.

Reconnaissance par force brute de sous-domaines

Effectuez les scans de reconnaissance de manière responsable et ajustez le paramètre -s pour ne pas submerger les serveurs de noms faisant autorité.

Similaire à subbrute, MassDNS vous permet de forcer brutalement les sous-domaines en utilisant le script subbrute.py inclus :

root@kitploit:~
$ ./scripts/subbrute.py example.com lists/names.txt | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txt

Comme méthode supplémentaire de reconnaissance, le script ct.py extrait les sous-domaines des journaux de transparence des certificats en récupérant les données de crt.sh :

root@kitploit:~
$ ./scripts/ct.py example.com | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txt

Les fichiers names.txt et names_small.txt, qui ont été copiés depuis le projet subbrute, contiennent des noms de sous-domaines couramment utilisés. Envisagez également d'utiliser la compilation de sous-domaines de Jason Haddix avec plus de 1 000 000 de noms ou la liste de mots Assetnote avec plus de 9 000 000 de noms.

MassDNS inclut également un script wrapper recon.py (statut bêta) dans le dossier scripts, qui effectue l'énumération des sous-domaines directement contre les serveurs de noms faisant autorité et ne nécessite donc pas de résolveurs tiers. La concurrence est déterminée automatiquement par MassDNS et supporte des centaines de milliers de requêtes par seconde, tout en fournissant des résultats fiables. Sur un serveur dédié bon marché, la liste de mots Assetnode peut être énumérée en moins d'une minute. Une limitation actuelle est que la délégation de zone n'est gérée que jusqu'au point de délégation. Par exemple, si example.org est énuméré et que sub.example.org est délégué à un autre serveur de noms, abc.sub.example.org ne sera pas trouvé par ce script si abc.sub est contenu dans la liste de mots. Cependant, le script signalera ce fait comme ?.sub.example.org dans ce cas.

root@kitploit:~
$ ./scripts/recon.py -d google.com -l lists/best-dns-wordlist.txt > google.txt

Captures d'écran

Capture d'écran

Sécurité

MassDNS ne nécessite pas de privilèges root et abandonnera donc les privilèges à l'utilisateur appelé "nobody" par défaut lorsqu'il est exécuté en root. Si l'utilisateur "nobody" n'existe pas, MassDNS refusera l'exécution. Dans ce cas, il est recommandé d'exécuter MassDNS en tant qu'autre utilisateur non privilégié. L'abandon de privilèges peut être contourné à l'aide de l'argument --root qui n'est pas recommandé. Notez également que les autres branches que master ne doivent pas du tout être utilisées en production.

Considérations pratiques

Réglage des performances

MassDNS est une application simple monothread conçue pour des scénarios où le réseau est le goulot d'étranglement. Il est conçu pour être exécuté sur des serveurs avec une bande passante montante et descendante élevée. En interne, MassDNS utilise une table de hachage qui contrôle la concurrence des recherches. Définir le paramètre de taille -s vous permet donc de contrôler le taux de recherche. Si vous rencontrez des problèmes de performances, essayez d'ajuster le paramètre -s pour obtenir un meilleur taux de succès.

Contournement de la limitation de débit

Si la limitation de débit par les résolveurs IPv6 pose problème, vous pouvez utiliser --rand-src-ipv6 <votre_préfixe_ipv6>. MassDNS utilisera alors un socket brut pour envoyer et recevoir des paquets DNS et choisira aléatoirement une adresse IPv6 source du préfixe spécifié pour chaque requête. Cela nécessite que MassDNS soit exécuté avec les privilèges CAP_NET_RAW. Lorsque vous utilisez cette méthode, vous devriez avoir iptables ou nftables qui bloquent le trafic DNS reçu par MassDNS afin qu'aucune réponse ICMP Port unreachable ne soit générée par le système d'exploitation, par exemple en utilisant ip6tables -p udp --sport 53 -I INPUT -j DROP. Notez que cette règle est juste un exemple et supprimerait tout le trafic DNS, y compris celui des autres applications. Vous voudrez peut-être adapter la règle pour être plus précise en fonction de votre cas d'utilisation.

Authenticité des résultats

Si l'authenticité des résultats est hautement essentielle, vous ne devriez pas vous fier à la liste de résolveurs incluse. Configurez plutôt un résolveur unbound local et fournissez son adresse IP à MassDNS. Si vous utilisez MassDNS comme outil de reconnaissance, vous pouvez d'abord l'exécuter avec la liste de résolveurs par défaut, puis le ré-exécuter sur les noms trouvés avec une liste de résolveurs de confiance afin d'éliminer les faux positifs.

Si vous énumérez des sous-domaines pour un seul nom, par exemple pour example.com, vous pouvez simplement omettre les résolveurs tiers. Dans ce cas, vous pouvez sonder directement les serveurs de noms faisant autorité comme suit :

root@kitploit:~
$ ./bin/massdns -r <(./scripts/auth-addrs.sh example.com) --norecurse -o Je example-com-subdomaines.txt > results.txt

À faire

  • Empêcher l'inondation des résolveurs qui imposent des limites de débit ou refusent les résolutions après un certain temps
  • Implémenter des limites de bande passante
  • Utiliser des vérifications inter-résolveurs pour détecter l'empoisonnement DNS et le spam DNS (par exemple, le détournement DNS de Level 3)
  • Ajouter la détection de jokers pour la reconnaissance
  • Améliorer la fiabilité de la reconnaissance en ajoutant un mode qui re-résout les domaines trouvés via une liste de résolveurs (locaux) de confiance afin d'éliminer les faux positifs
  • Détecter automatiquement la concurrence optimale
  • Analyser correctement la ligne de commande et permettre l'utilisation/la combinaison d'options courtes sans espaces
Télécharger l’outil