Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
massdns — Un resolvedor DNS stub de alto rendimiento para consultas masivas y reconocimiento (enumeración de subdominios) | Kitploit
Herramientas/GitHubGitHub/blechschmidt/massdns
OSINT (Inteligencia de Fuentes Abiertas)ReconocimientoEnumeración de DNS y SubdominiosRecopilación de InformaciónAnálisis de DNS
GitHubblechschmidt/massdns

massdns

Un resolvedor DNS stub de alto rendimiento para consultas masivas y reconocimiento (enumeración de subdominios)

Ver Repositorio
3.6k504hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

MassDNS

Un resolvedor de stub DNS de alto rendimiento

MassDNS es un resolvedor de stub DNS simple y de alto rendimiento dirigido a aquellos que buscan resolver una cantidad masiva de nombres de dominio en el orden de millones o incluso miles de millones. Sin una configuración especial, MassDNS es capaz de resolver más de 350.000 nombres por segundo utilizando resolvedores disponibles públicamente.

Colaboradores

  • Quirin Scheitle, Universidad Técnica de Múnich

Compilación

Clona el repositorio git y cd a la carpeta raíz del proyecto. Luego ejecuta make para compilar desde el código fuente. Si no estás en Linux, ejecuta make nolinux. En Windows, se requieren los paquetes gcc-core, git y make de Cygwin.

Uso

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.

Para una descripción detallada de la interfaz de línea de comandos, consulta la página del manual usando man ./doc/massdns.1.

Ejemplo

Resuelve todos los registros AAAA de los dominios en domains.txt usando los resolvedores dentro de resolvers.txt en lists y almacena los resultados en results.txt:

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

Esto es equivalente a:

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

Ejemplo de salida

Por defecto, MassDNS mostrará los paquetes de respuesta en formato de texto que se ve similar a lo siguiente:

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.

La dirección IP del resolvedor se incluye para facilitarte el filtrado de la salida en caso de que detectes que algunos resolvedores producen malos resultados.

Resolución

El repositorio incluye el archivo resolvers.txt que consiste en un subconjunto filtrado de los resolvedores proporcionados por el proyecto subbrute. Ten en cuenta que el uso de MassDNS puede causar una carga significativa en los resolvedores utilizados y resultar en quejas por abuso enviadas a tu ISP. Ten en cuenta también que los resolvedores proporcionados no están garantizados para ser fiables. La lista de resolvedores está actualmente desactualizada y una gran parte de los resolvedores no funciona.

La implementación personalizada de DNS de MassDNS, sin malloc, actualmente solo soporta los registros más comunes. Eres bienvenido a ayudar cambiando esto colaborando.

Registros PTR

MassDNS incluye un script de Python que te permite resolver todos los registros PTR de IPv4 imprimiendo sus respectivas consultas en la salida estándar.

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

Ten en cuenta que las etiquetas dentro de in-addr.arpa están invertidas. Para resolver el nombre de dominio de 1.2.3.4, MassDNS espera 4.3.2.1.in-addr.arpa como nombre de consulta de entrada. Como consecuencia, el script de Python no resuelve los registros en orden ascendente, lo cual es una ventaja porque se evitan picos repentinos de carga en los servidores de nombres de las subredes IPv4.

Reconocimiento mediante fuerza bruta de subdominios

Realiza escaneos de reconocimiento de manera responsable y ajusta el parámetro -s para no abrumar a los servidores de nombres autoritativos.

Similar a subbrute, MassDNS te permite hacer fuerza bruta en subdominios usando el script incluido subbrute.py:

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

Como método adicional de reconocimiento, el script ct.py extrae subdominios de los registros de transparencia de certificados al raspar los datos de crt.sh:

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

Los archivos names.txt y names_small.txt, que han sido copiados del proyecto subbrute, contienen nombres de subdominios comúnmente utilizados. Considera también usar la recopilación de subdominios de Jason Haddix con más de 1.000.000 de nombres o la lista de palabras de Assetnote con más de 9.000.000 de millones de nombres.

MassDNS también incluye un script envolvente recon.py (en estado beta) en la carpeta scripts, que realiza enumeración de subdominios directamente contra los servidores de nombres autoritativos y, por lo tanto, no requiere resolvedores de terceros. La concurrencia se determina automáticamente por MassDNS y soporta cientos de miles de consultas por segundo, mientras ofrece resultados fiables. En un servidor dedicado económico, la lista de palabras de Assetnode se puede enumerar en menos de un minuto. Una limitación actual es que la delegación de zona solo se maneja hasta el punto de delegación. Por ejemplo, si se enumera example.org y sub.example.org es delegado a otro servidor de nombres, abc.sub.example.org no será encontrado por este script si abc.sub está contenido en la lista de palabras. Sin embargo, el script reportará este hecho como ?.sub.example.org en este caso.

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

Capturas de pantalla

Captura de pantalla

Seguridad

MassDNS no requiere privilegios de root y, por lo tanto, reducirá privilegios al usuario llamado "nobody" por defecto cuando se ejecute como root. Si el usuario "nobody" no existe, MassDNS rechazará la ejecución. En este caso, se recomienda ejecutar MassDNS como otro usuario no privilegiado. La reducción de privilegios se puede evitar mediante el argumento --root, lo cual no se recomienda. También ten en cuenta que otras ramas que no sean master no deben usarse en producción en absoluto.

Consideraciones prácticas

Ajuste de rendimiento

MassDNS es una aplicación simple de un solo hilo diseñada para escenarios en los que la red es el cuello de botella. Está diseñada para ejecutarse en servidores con altos anchos de banda de subida y bajada. Internamente, MassDNS utiliza un mapa hash que controla la concurrencia de las consultas. Establecer el parámetro de tamaño -s te permite controlar la tasa de consultas. Si estás experimentando problemas de rendimiento, intenta ajustar el parámetro -s para obtener una mejor tasa de éxito.

Evasión de limitación de velocidad

En caso de que la limitación de velocidad por parte de los resolvedores IPv6 sea un problema, puedes usar --rand-src-ipv6 <tu_prefijo_ipv6>. MassDNS utilizará entonces un socket en bruto para enviar y recibir paquetes DNS y elegirá aleatoriamente una dirección IPv6 de origen del prefijo especificado para cada consulta. Esto requiere que MassDNS se ejecute con privilegios CAP_NET_RAW. Al hacer uso de este método, deberías tener iptables o nftables para descartar el tráfico DNS recibido por MassDNS para que el sistema operativo no genere respuestas ICMP Puerto no alcanzable, por ejemplo usando ip6tables -p udp --sport 53 -I INPUT -j DROP. Ten en cuenta que esta regla es solo un ejemplo y descartaría todo el tráfico DNS, incluido el tráfico de otras aplicaciones. Es posible que desees adaptar la regla para que sea más específica y se ajuste a tu caso de uso.

Autenticidad de resultados

Si la autenticidad de los resultados es altamente esencial, no deberías confiar en la lista de resolvedores incluida. En su lugar, configura un resolvedor local unbound y proporciona a MassDNS su dirección IP. En caso de que estés usando MassDNS como herramienta de reconocimiento, es posible que desees ejecutarlo primero con la lista de resolvedores predeterminada y volver a ejecutarlo en los nombres encontrados con una lista de resolvedores de confianza para eliminar falsos positivos.

En caso de que estés enumerando subdominios para un solo nombre, por ejemplo para example.com, puedes simplemente omitir los resolvedores de terceros. En este caso, puedes sondear directamente los servidores de nombres autoritativos de la siguiente manera:

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

Pendientes

  • Prevenir la inundación de resolvedores que aplican límites de velocidad o se niegan a resolver después de un tiempo
  • Implementar límites de ancho de banda
  • Emplear comprobaciones entre resolvedores para detectar envenenamiento de DNS y spam DNS (por ejemplo, secuestro DNS de Level 3)
  • Añadir detección de comodines para reconocimiento
  • Mejorar la fiabilidad del reconocimiento añadiendo un modo que vuelva a resolver los dominios encontrados a través de una lista de resolvedores de confianza (locales) para eliminar falsos positivos
  • Detectar la concurrencia óptima automáticamente
  • Analizar la línea de comandos correctamente y permitir el uso/combinación de opciones cortas sin espacios
Descargar herramienta