
Script de Enumeración DNS
DNSRecon es un puerto en 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, en el proceso, reaprender cómo funciona DNS y cómo podría usarse en el proceso de una evaluación de seguridad y solución de problemas de red.
Este script proporciona la capacidad de realizar:
DNSRecon requiere Python 3.12 o superior.
Instale uv si aún no lo ha hecho:
curl -LsSf https://astral.sh/uv/install.sh | sh
Clone el repositorio:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
Instale las dependencias y cree el entorno virtual:
uv sync
Ejecute DNSRecon:
uv run dnsrecon
Para instalar las dependencias de desarrollo:
uv sync --extra dev
Para ejecutar las pruebas:
uv run pytest
Para ejecutar linting y formateo:
uv run ruff check
uv run ruff format
DNSRecon puede usar Shodan para expandir los netblocks descubiertos durante la enumeración estándar a partir de datos SPF (-s) y/o WHOIS (-w).
Enriquecimiento pasivo con Shodan (usa netblocks de SPF + WHOIS):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Validación activa de resultados de Shodan (re-resuelve hosts y confirma que aún coinciden con el netblock consultado):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
También puede establecer la clave API mediante la variable de entorno en lugar de --shodan-key:
export SHODAN_API_KEY="su-clave-api-shodan"
uv run dnsrecon -d example.com -t std -s -w --shodan
Inicie la API REST:
uv run restdnsrecon
Llame 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"
Habilite 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 en directorios listados en DNSRECON_WORDLIST_DIRS usando el separador de ruta de la plataforma. Configure únicamente directorios de listas de palabras dedicados; no apunte 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"