Script di enumerazione DNS
DNSRecon è un port in Python di uno script Ruby che scrissi per imparare il linguaggio e approfondire il DNS nei primi mesi del 2007. Questa volta volevo imparare Python ed estendere le funzionalità dello strumento originale e, nel frattempo, reimparare come funziona il DNS e come potrebbe essere utilizzato nel processo di una valutazione di sicurezza e nella risoluzione dei problemi di rete.
Questo script offre la possibilità 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 l'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 rigenerare la pagina man (man/dnsrecon.1) dopo aver modificato le opzioni della CLI:
uv run python tools/generate_manpage.py
La CI la rigenera anche automaticamente sui tag di rilascio e sui push verso master che modificano la CLI.
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 con Shodan (utilizza i netblock SPF + WHOIS):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Validazione attiva dei risultati di 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 a file inclusi in dnsrecon/data o a file all'interno di directory elencate in DNSRECON_WORDLIST_DIRS utilizzando il separatore di percorso della piattaforma. Configura solo directory dedicate alle wordlist; non impostare DNSRECON_WORDLIST_DIRS su percorsi ampi come /, la directory home o altre posizioni contenenti file sensibili.
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"