Script de Enumeração de DNS
DNSRecon é uma porta em Python de um script Ruby que escrevi para aprender a linguagem e sobre DNS no início de 2007. Desta vez, quis aprender Python e estender a funcionalidade da ferramenta original e, no processo, reaprender como o DNS funciona e como poderia ser usado no processo de uma avaliação de segurança e resolução de problemas de rede.
Este script fornece a capacidade de realizar:
DNSRecon requer Python 3.12 ou superior.
Instale o uv se ainda não o fez:
curl -LsSf https://astral.sh/uv/install.sh | sh
Clone o repositório:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
Instale as dependências e crie um ambiente virtual:
uv sync
Execute o DNSRecon:
uv run dnsrecon
Para instalar dependências de desenvolvimento:
uv sync --extra dev
Para executar testes:
uv run pytest
Para executar linting e formatação:
uv run ruff check
uv run ruff format
DNSRecon pode usar o Shodan para expandir netblocks descobertos durante a enumeração padrão a partir de dados SPF (-s) e/ou WHOIS (-w).
Enriquecimento passivo do Shodan (usa netblocks SPF + WHOIS):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Validação ativa dos resultados do Shodan (resolve novamente os hosts e confirma que ainda correspondem ao netblock consultado):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
Você também pode definir a chave da API via variável de ambiente em vez de --shodan-key:
export SHODAN_API_KEY="your-shodan-api-key"
uv run dnsrecon -d example.com -t std -s -w --shodan
Inicie a API REST:
uv run restdnsrecon
Chame /general_enum com a expansão do Shodan ativada:
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"
Ative a validação ativa na 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"
Os valores de thread_num da API REST são limitados a 1..100. Os parâmetros wordlist da API podem referenciar arquivos incluídos em dnsrecon/data ou arquivos em diretórios listados em DNSRECON_WORDLIST_DIRS usando o separador de caminho da plataforma. Configure apenas diretórios dedicados de wordlists; não aponte DNSRECON_WORDLIST_DIRS para caminhos amplos como /, um diretório pessoal ou outros locais que contenham arquivos sensíveis.
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"