
Script d'énumération DNS
DNSRecon est un portage Python d'un script Ruby que j'ai écrit pour apprendre le langage et le DNS au début de 2007. Cette fois, je voulais apprendre Python et étendre les fonctionnalités de l'outil original, et ce faisant, réapprendre comment fonctionne le DNS et comment il peut être utilisé dans le cadre d'une évaluation de sécurité et de dépannage réseau.
Ce script permet d'effectuer :
DNSRecon nécessite Python 3.12 ou supérieur.
Installez uv si ce n'est pas déjà fait :
curl -LsSf https://astral.sh/uv/install.sh | sh
Clonez le dépôt :
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
Installez les dépendances et créez l'environnement virtuel :
uv sync
Exécutez DNSRecon :
uv run dnsrecon
Pour installer les dépendances de développement :
uv sync --extra dev
Pour exécuter les tests :
uv run pytest
Pour exécuter le linting et le formatage :
uv run ruff check
uv run ruff format
DNSRecon peut utiliser Shodan pour étendre les netblocks découverts lors de l'énumération standard à partir des données SPF (-s) et/ou WHOIS (-w).
Enrichissement passif Shodan (utilise les netblocks SPF + WHOIS) :
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Validation active des résultats Shodan (re-résout les hôtes et confirme qu'ils correspondent toujours au netblock interrogé) :
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
Vous pouvez également définir la clé API via une variable d'environnement au lieu de --shodan-key :
export SHODAN_API_KEY="your-shodan-api-key"
uv run dnsrecon -d example.com -t std -s -w --shodan
Démarrez l'API REST :
uv run restdnsrecon
Appelez /general_enum avec l'expansion Shodan activée :
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"
Activez la validation active dans l'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"
Les valeurs thread_num de l'API REST sont limitées à 1..100. Les paramètres wordlist de l'API peuvent référencer des fichiers inclus dans dnsrecon/data ou des fichiers sous des répertoires listés dans DNSRECON_WORDLIST_DIRS en utilisant le séparateur de chemin de la plateforme. Configurez uniquement des répertoires dédiés aux wordlists ; ne pointez pas DNSRECON_WORDLIST_DIRS vers des chemins larges tels que /, un répertoire personnel ou d'autres emplacements contenant des fichiers sensibles.
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"