
Resolvedor de DNS de alta velocidad y forzador bruto de subdominios con filtrado preciso de comodines y validación de envenenamiento de DNS para un reconocimiento preciso.

Resolvedor rápido de dominios y fuerza bruta de subdominios con filtrado preciso de comodines (wildcards)
Primeros pasos »
Uso
·
Cómo funciona
·
Patrocinio
·
Preguntas frecuentes
puredns es un resolvedor rápido de dominios y una herramienta de fuerza bruta de subdominios que puede filtrar con precisión subdominios comodín y entradas envenenadas de DNS.
Utiliza massdns, un potente resolvedor DNS auxiliar, para realizar búsquedas masivas. Con el ancho de banda adecuado y una buena lista de resolutores públicos, puede resolver millones de consultas en solo unos minutos. Desafortunadamente, los resultados de massdns son tan buenos como las respuestas proporcionadas por los resolutores públicos. Los resultados suelen estar contaminados con respuestas DNS incorrectas y falsos positivos de subdominios comodín.
puredns resuelve esto con su algoritmo de detección de comodines. Puede filtrar comodines basándose en las respuestas DNS obtenidas de un conjunto de resolutores de confianza. También intenta evitar el envenenamiento DNS validando las respuestas obtenidas mediante esos resolutores de confianza.
¿Crees que es útil? ⭐ ¡Danos una estrella en GitHub — ayuda!

|
Si mi trabajo te genera ingresos, ¡considera convertirte en patrocinador! ¡Puedes obtener ventajas exclusivas! Además significaría MUCHO ❤️ ya que me permitiría seguir trabajando gratis para la comunidad. Pero sin importar lo que hagas, ten la seguridad de que mi software seguirá siendo gratuito y de código abierto para que lo uses. |
Puredns requiere massdns en la máquina anfitriona. Si la ruta al binario de massdns está presente en la variable de entorno PATH, puredns funcionará sin problemas. Un buen lugar para copiar el ejecutable de massdns es /usr/local/bin en la mayoría de los sistemas. De lo contrario, deberás especificar la ruta al archivo binario de massdns usando el argumento de línea de comandos --bin.
Lo siguiente debería funcionar en la mayoría de los sistemas basados en Debian. Sigue las instrucciones oficiales para más información.
git clone https://github.com/blechschmidt/massdns.git
cd massdns
make
sudo make install
Necesitas obtener una lista de servidores DNS públicos para usar puredns. Consulta las preguntas frecuentes para aprender a seleccionar tu propia lista de servidores funcionales.
Puedes descargar un binario de la versión.
Alternativamente, puedes compilar la última versión fácilmente. Primero asegúrate de que Go esté instalado en tu sistema; se admiten las dos últimas versiones principales de Go. Consulta la página oficial de instalación de Go para obtener instrucciones de instalación. Luego ejecuta el siguiente comando:
go install github.com/d3mondev/puredns/v2@latest
Asegúrate de ver la lista completa de comandos y opciones disponibles usando puredns --help.
Si existe un archivo resolvers.txt en el directorio de trabajo actual, puredns lo usará por defecto. De lo contrario, si existen los archivos ~/.config/puredns/resolvers.txt o ~/.config/puredns/resolvers-trusted.txt, puredns los utilizará automáticamente como resolutores. Si ninguna de estas opciones está disponible, especifica los resolutores a usar con los argumentos --resolvers y --resolvers-trusted.
Especificar resolutores de confianza es opcional. Por defecto, puredns simplemente usará 8.8.8.8 y 8.8.4.4.
Así es como se realiza fuerza bruta sobre una lista masiva de subdominios usando un diccionario llamado all.txt:
puredns bruteforce all.txt domain.com
También puedes realizar fuerza bruta sobre varios dominios a la vez con la opción -d para cargar un archivo de texto que contenga dominios en lugar de especificar un solo dominio como argumento:
puredns bruteforce all.txt -d domains.txt
También puedes resolver una lista de dominios contenida en un archivo de texto (uno por línea).
puredns resolve domains.txt
Puedes pasar la lista de dominios a resolver a través de stdin:
cat domains.txt | puredns resolve
O una lista de palabras para usar en fuerza bruta:
cat wordlist.txt | puredns bruteforce domain.com
También puedes añadir el interruptor -q para mostrar solo los dominios encontrados y canalizarlos a otras herramientas:
cat domains.txt | puredns resolve -q | httprobe
Puedes guardar la siguiente información en archivos para reutilizarla en tus flujos de trabajo:
puredns resolve domains.txt --write valid_domains.txt \
--write-wildcards wildcards.txt \
--write-massdns massdns.txt

Puedes ver puredns en acción contra el dominio google.com usando un pequeño diccionario de los 100k subdominios más comunes en la imagen de arriba.
Como parte de su flujo de trabajo, puredns realiza tres pasos automáticamente:
Usando massdns, puredns realizará una resolución masiva de todos los dominios y subdominios. Alimenta los datos a massdns a través de stdin, lo que le permite limitar el número de consultas por segundo si es necesario y realizar una sanitización básica en la lista de dominios generada.
Por defecto, los dominios de entrada se convierten a minúsculas y solo se aceptan entradas que contengan caracteres válidos (esencialmente [a-z0-9.-]). Puedes deshabilitar esto con la bandera --skip-sanitize.
Después de este paso, los resultados suelen estar contaminados: algunos resolutores públicos devuelven respuestas incorrectas y los subdominios comodín pueden inflar rápidamente los resultados.
Puredns luego usa su algoritmo de detección de comodines para detectar y extraer todas las raíces de subdominios comodín del archivo de resultados de massdns.
Usará la salida de massdns del paso 1 como caché DNS para minimizar el número de consultas que necesita realizar. Para garantizar resultados precisos, puede tener que validar los resultados de la caché realizando una consulta DNS.
Puedes omitir este paso usando la bandera --skip-wildcard.
Para protegerse contra el envenenamiento DNS, puredns usa massdns una última vez para validar los resultados restantes usando resolutores DNS de confianza. Actualmente, los resolutores de confianza internos utilizados son 8.8.8.8 y 8.8.4.4. Este paso se realiza a un ritmo más lento para evitar superar algún límite de velocidad en los resolutores de confianza.
Puedes omitir este paso usando la bandera --skip-validation.
En este punto, los archivos resultantes deberían estar libres de subdominios comodín y respuestas envenenadas de DNS.
Trickest mantiene una lista de resolutores válidos aquí: https://github.com/trickest/resolvers
Alternativamente, puedes obtener una lista de resolutores públicos desde public-dns.info, luego usar el proyecto DNS Validator para conservar solo los resolutores que proporcionan respuestas válidas.
Si tus resolutores públicos proporcionan información incorrecta a puredns, por ejemplo enviando respuestas envenenadas, algunos subdominios pueden perderse ya que serán filtrados. Consejo: Evita resolutores de países que censuran internet, como China.
Una vez que tengas una lista de resolutores personalizados, puedes pasarlos a puredns con el argumento -r o colocándolos en un archivo ubicado en ~/.config/puredns/resolvers.txt:
puredns resolve domains.txt -r resolvers.txt
Los resolutores de confianza por defecto son actualmente 8.8.8.8 y 8.8.4.4. Si deseas cambiarlos, también puedes especificar una lista personalizada con el argumento --resolvers-trusted o colocándolos en un archivo ubicado en ~/.config/puredns/resolvers-trusted.txt. He realizado muchas pruebas para encontrar los mejores resolutores de confianza para puredns; asegúrate de validar tus resultados cuidadosamente si decides cambiarlos, y ajusta el límite de velocidad con --rate-limit-trusted.
puredns resolve domains.txt -r resolvers.txt --resolvers-trusted trusted.txt
Puredns no ignora simplemente las respuestas DNS que contienen NXDOMAIN. A veces, esas respuestas NXDOMAIN tienen registros CNAME válidos que apuntan a dominios caducados. Si esos registros están presentes, pueden apuntar a un dominio no registrado, permitiendo tomas de control de subdominios.
Si obtienes dominios que no se resuelven a una dirección IP, verifica si contienen un registro CNAME de interés:
dig @8.8.8.8 CNAME ejemplo.com
La causa más probable es el balanceo de carga DNS: a veces obtendrás diferentes direcciones IP para cada consulta DNS única realizada. Esto puede dificultar mucho la detección de subdominios comodín al comparar sus registros DNS.
Puedes especificar el número de pruebas que puredns realizará para recopilar todas las diferentes direcciones IP para un subdominio durante la detección de comodines. El número por defecto es 3 pruebas, que es muy bajo. He visto dominios con mucho balanceo que requieren más de 50 consultas para devolver resultados que no eran perfectos pero sí suficientes.
Puedes intentar aumentar el número de pruebas realizadas para detectar subdominios comodín con el argumento --wildcard-tests:
puredns resolve domains.txt --wildcard-tests 50
Para detectar comodines, puredns necesita mantener una caché de las respuestas DNS encontradas. Si tu lista de dominios tiene cientos de millones y contiene muchos subdominios comodín, el anfitrión puede quedarse sin memoria. Pero hay una solución fácil.
Por defecto, puredns coloca todos los dominios en un solo lote para ahorrar en el número de consultas DNS y tiempo de ejecución. Si la memoria es un problema, es posible procesar los dominios en múltiples lotes más pequeños con el argumento --wildcard-batch. He encontrado que un buen tamaño está entre 1M y 2M de subdominios para un VPS con 1GB de RAM.
puredns resolve domains.txt --wildcard-batch 1000000
Puredns no elimina duplicados en ninguna parte de su tubería. Si el archivo de entrada contiene elementos duplicados, como palabras o dominios idénticos, puredns generará elementos duplicados. Puedes asegurarte de que los archivos de entrada proporcionados a puredns estén libres de duplicados usando una herramienta como sort -u.
Probablemente se deba a los resolutores públicos utilizados. Algunos de ellos a veces devuelven respuestas no relacionadas con las consultas, lo que genera nombres de dominio aleatorios en la salida. Puredns actualmente no maneja este caso y deja al usuario la tarea de sanitizar la salida para asegurar que los dominios encontrados respeten el alcance.
public-dns.info actualiza continuamente una lista de resolutores DNS públicos y gratuitos.
DNS Validator se puede usar para seleccionar tu propia lista de resolutores DNS públicos.
all.txt wordlist El icónico diccionario all.txt de Jhaddix se usa comúnmente para la enumeración de subdominios.
shuffleDNS es una buena alternativa escrita en Go que maneja subdominios comodín usando un algoritmo diferente.
Puedes contribuir a puredns de las siguientes maneras:
¿Tienes una idea para una nueva funcionalidad increíble? ¿Encontraste un error que quieres corregir? ¡Genial! Siéntete libre de abrir una incidencia para discutir antes de hacer una solicitud de extracción.
No aceptaré solicitudes de extracción para cambios triviales como correcciones de errores tipográficos, mejores prácticas, correcciones menores, etc.
Cualquier resolutor incluido en este repositorio está presente solo como referencia. El autor no es responsable del mal uso de los resolutores en esa lista. Es responsabilidad del usuario seleccionar una lista de resolutores que esté autorizado a usar.
El uso de este programa para atacar objetivos sin consentimiento es ilegal. Es responsabilidad del usuario cumplir con todas las leyes aplicables. El desarrollador no asume ninguna responsabilidad y no se hace responsable de ningún mal uso o daño causado por este programa. Por favor, úsalo de manera responsable.
El material contenido en este repositorio está licenciado bajo GNU GPLv3.