
Script di enumerazione DNS
DNSRecon è un porting Python di uno script Ruby che ho scritto per imparare il linguaggio e il DNS all'inizio del 2007. Questa volta volevo imparare Python ed estendere le funzionalità dello strumento originale, e nel processo re-imparare come funziona il DNS e come può essere utilizzato nel corso di una valutazione della sicurezza e nella risoluzione dei problemi di rete.
Questo script fornisce la capacità di eseguire:
DNSRecon richiede Python 3.12 o superiore.
Installa uv se non lo hai già fatto:
curl -LsSf https://astral.sh/uv/install.sh | sh
Clona il repository:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
Installa le dipendenze e crea un ambiente virtuale:
uv sync
Esegui DNSRecon:
uv run dnsrecon
Per installare le dipendenze di sviluppo:
uv sync --extra dev
Per eseguire i test:
uv run pytest
Per eseguire linting e formattazione:
uv run ruff check
uv run ruff format
DNSRecon può utilizzare Shodan per espandere i netblock scoperti durante l'enumerazione standard dai dati SPF (-s) e/o WHOIS (-w).
Arricchimento passivo Shodan (usa netblock SPF + WHOIS):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Validazione attiva dei risultati Shodan (risolve nuovamente gli host e conferma che corrispondano ancora al netblock interrogato):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
Puoi anche impostare la chiave API tramite variabile d'ambiente invece di --shodan-key:
export SHODAN_API_KEY="your-shodan-api-key"
uv run dnsrecon -d example.com -t std -s -w --shodan
Avvia l'API REST:
uv run restdnsrecon
Chiama /general_enum con l'espansione Shodan abilitata:
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"
Abilita la validazione attiva nell'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"
I valori thread_num dell'API REST sono limitati a 1..100. I parametri wordlist dell'API possono fare riferimento ai file inclusi in dnsrecon/data o a file in directory elencate in DNSRECON_WORDLIST_DIRS usando il separatore di percorso della piattaforma. Configura solo directory dedicate per wordlist; non puntare DNSRECON_WORDLIST_DIRS a percorsi ampi come /, una home directory o altre posizioni contenenti file sensibili.
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"