Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
massdns — Un risolutore DNS stub ad alte prestazioni per interrogazioni massive e ricognizione (enumerazione dei sottodomini). | Kitploit
Strumenti/GitHubGitHub/blechschmidt/massdns
OSINT (Open Source Intelligence)RicognizioneEnumerazione DNS e SottodominiRaccolta InformazioniAnalisi DNS
GitHubblechschmidt/massdns

massdns

Un risolutore DNS stub ad alte prestazioni per interrogazioni massive e ricognizione (enumerazione dei sottodomini).

Vedi Repository
3.6k5044 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

MassDNS

Un resolver stub DNS ad alte prestazioni

MassDNS è un semplice resolver stub DNS ad alte prestazioni pensato per chi cerca di risolvere una quantità enorme di nomi di dominio, nell’ordine di milioni o addirittura miliardi. Senza configurazioni particolari, MassDNS è in grado di risolvere oltre 350.000 nomi al secondo utilizzando resolver pubblicamente disponibili.

Collaboratori

  • Quirin Scheitle, Technical University of Munich

Compilazione

Clona il repository git e cd nella cartella principale del progetto. Quindi esegui make per compilare dal codice sorgente. Se non sei su Linux, esegui make nolinux. Su Windows sono richiesti i pacchetti Cygwin gcc-core, git e make.

Utilizzo

root@kitploit:~
Usage: ./bin/massdns [options] [domainlist]
  -b  --bindto             Bind to IP address and port. (Default: 0.0.0.0:0)
      --busy-poll          Use busy-wait polling instead of epoll.
  -c  --resolve-count      Number of resolves for a name before giving up. (Default: 50)
      --drop-group         Group to drop privileges to when running as root. (Default: nogroup)
      --drop-user          User to drop privileges to when running as root. (Default: nobody)
      --extended-input     Input names are followed by a space-separated list of resolvers.
                           These are used before falling back to the resolvers file.
      --filter             Only output packets with the specified response code.
      --flush              Flush the output file whenever a response was received.
  -h  --help               Show this help.
      --ignore             Do not output packets with the specified response code.
  -i  --interval           Interval in milliseconds to wait between multiple resolves of the same
                           domain. (Default: 500)
  -l  --error-log          Error log file path. (Default: /dev/stderr)
      --norecurse          Use non-recursive queries. Useful for DNS cache snooping.
  -o  --output             Flags for output formatting.
      --predictable        Use resolvers incrementally. Useful for resolver tests.
      --processes          Number of processes to be used for resolving. (Default: 1)
  -q  --quiet              Quiet mode.
      --rand-src-ipv6      Use a random IPv6 address from the specified subnet for each query.
      --rand-src-ipv6-file Use a random IPv6 address from the specified file.
      --rcvbuf             Size of the receive buffer in bytes.
      --retry              Unacceptable DNS response codes.
                           (Default: All codes but NOERROR or NXDOMAIN)
  -r  --resolvers          Text file containing DNS resolvers.
      --root               Do not drop privileges when running as root. Not recommended.
  -s  --hashmap-size       Number of concurrent lookups. (Default: 10000)
      --sndbuf             Size of the send buffer in bytes.
      --status-format      Format for real-time status updates, json or ansi (Default: ansi)
      --sticky             Do not switch the resolver when retrying.
      --socket-count       Socket count per process. (Default: 1)
  -t  --type               Record type to be resolved. (Default: A)
      --verify-ip          Verify IP addresses of incoming replies.
  -w  --outfile            Write to the specified output file instead of standard output.

Output flags:
  L - domain list output
  S - simple text output
  F - full text output
  B - binary output
  J - ndjson output

Advanced flags for the domain list output mode:
  0 - Include NOERROR replies without answers.

Advanced flags for the simple output mode:
  d - Include records from the additional section.
  i - Indent any reply record.
  l - Separate replies using a line feed.
  m - Only output reply records that match the question name.
  n - Include records from the answer section.
  q - Print the question.
  r - Print the question with resolver IP address, Unix timestamp and return code prepended.
  s - Separate packet sections using a line feed.
  t - Include TTL and record class within the output.
  u - Include records from the authority section.

Advanced flags for the ndjson output mode:
  e - Write a record for each terminal query failure.

Per una descrizione dettagliata dell'interfaccia a riga di comando, consulta la pagina man usando man ./doc/massdns.1.

Esempio

Risolvi tutti i record AAAA dai domini contenuti in domains.txt utilizzando i resolver in resolvers.txt in lists e salva i risultati in results.txt:

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

Equivale a:

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

Esempio di output

Di default, MassDNS produce i pacchetti di risposta in formato testo, simile al seguente:

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'indirizzo IP del resolver è incluso per facilitare il filtraggio dell'output nel caso in cui rilevi che alcuni resolver producono risultati errati.

Risoluzione

Il repository include il file resolvers.txt costituito da un sottoinsieme filtrato dei resolver forniti dal progetto subbrute. Tieni presente che l'utilizzo di MassDNS può causare un carico significativo sui resolver usati e potrebbe portare all'invio di reclami per abuso al tuo ISP. Inoltre, i resolver forniti non sono garantiti come affidabili. La lista dei resolver è attualmente obsoleta e una grande parte di essi non funziona.

L'implementazione DNS personalizzata e senza malloc di MassDNS supporta attualmente solo i record più comuni. Sei invitato a contribuire per cambiare questa situazione collaborando.

Record PTR

MassDNS include uno script Python che consente di risolvere tutti i record PTR IPv4 stampando le relative query sullo standard output.

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

Tieni presente che le etichette all'interno di in-addr.arpa sono invertite. Per risolvere il nome di dominio di 1.2.3.4, MassDNS si aspetta 4.3.2.1.in-addr.arpa come nome di query in input. Di conseguenza, lo script Python non risolve i record in ordine crescente, il che è un vantaggio perché si evitano improvvisi picchi di carico sui name server dei sottoinsiemi IPv4.

Ricognizione tramite brute-forcing di sottodomini

Esegui le scansioni di ricognizione in modo responsabile e regola il parametro -s per non sovraccaricare i name server autorevoli.

Similmente a subbrute, MassDNS permette di fare brute force dei sottodomini utilizzando lo script subbrute.py incluso:

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

Come metodo aggiuntivo di ricognizione, lo script ct.py estrae i sottodomini dai log di trasparenza dei certificati, recuperando i dati da crt.sh:

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

I file names.txt e names_small.txt, copiati dal progetto subbrute, contengono nomi di sottodomini comunemente usati. Considera anche l'uso della compilazione di sottodomini di Jason Haddix con oltre 1.000.000 di nomi o la wordlist di Assetnote con oltre 9.000.000 di milioni di nomi.

MassDNS include anche uno script wrapper recon.py (stato beta) nella cartella scripts, che esegue l'enumerazione dei sottodomini direttamente contro i name server autorevoli e quindi non richiede resolver di terze parti. La concorrenza è determinata automaticamente da MassDNS e supporta centinaia di migliaia di query al secondo, fornendo risultati affidabili. Su un server dedicato economico, la wordlist di Assetnode può essere enumerata in meno di un minuto. Una limitazione attuale è che la delega di zona viene gestita solo fino al punto di delega. Ad esempio, se example.org viene enumerato e sub.example.org è delegato a un altro name server, abc.sub.example.org non verrà trovato da questo script se abc.sub è contenuto nella wordlist. Tuttavia, lo script segnalerà questo fatto come ?.sub.example.org in questo caso.

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

Screenshot

Screenshot

Sicurezza

MassDNS non richiede privilegi di root e quindi, se eseguito come root, per impostazione predefinita abbasserà i privilegi all'utente chiamato "nobody". Se l'utente "nobody" non esiste, MassDNS rifiuterà l'esecuzione. In tal caso, si consiglia di eseguire MassDNS come altro utente non privilegiato. L'abbassamento dei privilegi può essere evitato usando l'argomento --root, cosa sconsigliata. Inoltre, si noti che rami diversi da master non dovrebbero essere utilizzati in produzione.

Considerazioni pratiche

Ottimizzazione delle prestazioni

MassDNS è una semplice applicazione single-thread progettata per scenari in cui la rete è il collo di bottiglia. È progettata per essere eseguita su server con elevate larghezze di banda in upload e download. Internamente, MassDNS utilizza una mappa hash che controlla la concorrenza delle ricerche. Impostando il parametro -s è quindi possibile controllare il tasso di ricerca. Se si verificano problemi di prestazioni, prova a regolare il parametro -s per ottenere un tasso di successo migliore.

Elusione del rate limiting

Se il rate limiting da parte dei resolver IPv6 è un problema, puoi utilizzare --rand-src-ipv6 <your_ipv6_prefix>. MassDNS userà allora un socket grezzo per inviare e ricevere pacchetti DNS e sceglierà casualmente un indirizzo sorgente IPv6 dal prefisso specificato per ogni query. Ciò richiede che MassDNS venga eseguito con privilegi CAP_NET_RAW. Quando si utilizza questo metodo, si dovrebbe fare in modo che iptables o nftables scartino il traffico DNS ricevuto da MassDNS in modo che il sistema operativo non generi risposte ICMP Port unreachable, ad esempio usando ip6tables -p udp --sport 53 -I INPUT -j DROP. Nota che questa regola è solo esemplificativa e scarterebbe tutto il traffico DNS, incluso quello di altre applicazioni. Potresti voler adattare la regola per renderla più granulare in base al tuo caso d'uso.

Autenticità dei risultati

Se l'autenticità dei risultati è fondamentale, non dovresti fare affidamento sulla lista di resolver inclusa. Invece, configura un resolver unbound locale e fornisci a MassDNS il suo indirizzo IP. Se stai usando MassDNS come strumento di ricognizione, potresti voler eseguirlo prima con la lista di resolver predefinita e poi rieseguirlo sui nomi trovati con una lista di resolver affidabili per eliminare i falsi positivi.

Se stai enumerando sottodomini per un singolo nome, ad esempio per example.com, potresti semplicemente omettere i resolver di terze parti. In questo caso, puoi sondare direttamente i name server autorevoli in questo modo:

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

Da fare

  • Impedire di inondare i resolver che applicano limiti di frequenza o che rifiutano le risoluzioni dopo un po' di tempo
  • Implementare limiti di banda
  • Utilizzare controlli incrociati tra resolver per rilevare avvelenamento DNS e spam DNS (ad esempio il dirottamento DNS di Level 3)
  • Aggiungere rilevamento wildcard per la ricognizione
  • Migliorare l'affidabilità della ricognizione aggiungendo una modalità che ri-risolve i domini trovati attraverso una lista di resolver (locali) affidabili per eliminare i falsi positivi
  • Rilevare automaticamente la concorrenza ottimale
  • Analizzare correttamente la riga di comando e permettere l'uso/la combinazione di opzioni brevi senza spazi
Scarica lo strumento