Script de Enumeración DNS
DNSRecon es un port a Python de un script en Ruby que escribí para aprender el lenguaje y sobre DNS a principios de 2007. Esta vez quería aprender sobre Python y ampliar la funcionalidad de la herramienta original y, de paso, volver a aprender cómo funciona DNS y cómo podría usarse en el proceso de una evaluación de seguridad y en la resolución de problemas de red.
Este script proporciona la capacidad de realizar:
DNSRecon requiere Python 3.12 o superior.
Instala uv si aún no lo has hecho:
curl -LsSf https://astral.sh/uv/install.sh | sh
Clona el repositorio:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
Instala las dependencias y crea el entorno virtual:
uv sync
Ejecuta DNSRecon:
uv run dnsrecon
Para instalar las dependencias de desarrollo:
uv sync --extra dev
Para ejecutar las pruebas:
uv run pytest
Para regenerar la página de manual (man/dnsrecon.1) después de cambiar las opciones de la CLI:
uv run python tools/generate_manpage.py
La CI también la regenera automáticamente en las etiquetas de versión y en las subidas a master que cambian la CLI.
Para ejecutar el linting y el formateo:
uv run ruff check
uv run ruff format
DNSRecon puede usar Shodan para expandir los bloques de red descubiertos durante la enumeración estándar a partir de datos de SPF (-s) y/o WHOIS (-w).
Enriquecimiento pasivo con Shodan (usa bloques de red de SPF + WHOIS):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Validación activa de los resultados de Shodan (vuelve a resolver los hosts y confirma que siguen coincidiendo con el bloque de red consultado):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
También puedes establecer la clave de API mediante una variable de entorno en lugar de --shodan-key:
export SHODAN_API_KEY="your-shodan-api-key"
uv run dnsrecon -d example.com -t std -s -w --shodan
Inicia la API REST:
uv run restdnsrecon
Llama a /general_enum con la expansión de Shodan habilitada:
curl -s \
-H "X-Shodan-Api-Key: $SHODAN_API_KEY" \
"http://127.0.0.1:5000/general_enum?domain=example.com&do_spf=true&do_whois=true&do_shodan=true"
Habilita la validación activa en la API:
curl -s \
-H "X-Shodan-Api-Key: $SHODAN_API_KEY" \
"http://127.0.0.1:5000/general_enum?domain=example.com&do_spf=true&do_whois=true&do_shodan=true&shodan_active=true"
Los valores de thread_num de la API REST están limitados a 1..100. Los parámetros wordlist de la API pueden hacer referencia a archivos incluidos en dnsrecon/data o a archivos dentro de directorios listados en DNSRECON_WORDLIST_DIRS usando el separador de rutas de la plataforma. Configura únicamente directorios dedicados a listas de palabras; no apuntes DNSRECON_WORDLIST_DIRS a rutas amplias como /, un directorio personal u otras ubicaciones que contengan archivos sensibles.
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"