DNS-Enumeration-Skript
DNSRecon ist eine Python-Portierung eines Ruby-Skripts, das ich Anfang 2007 geschrieben habe, um die Sprache und DNS zu lernen. Diesmal wollte ich Python lernen und die Funktionalität des ursprünglichen Tools erweitern und dabei wieder lernen, wie DNS funktioniert und wie es im Rahmen einer Sicherheitsbewertung und Netzwerkfehlerbehebung eingesetzt werden kann.
Dieses Skript bietet die Möglichkeit, Folgendes durchzuführen:
DNSRecon erfordert Python 3.12 oder höher.
Installieren Sie uv, falls noch nicht geschehen:
curl -LsSf https://astral.sh/uv/install.sh | sh
Klonen Sie das Repository:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
Abhängigkeiten installieren und virtuelle Umgebung erstellen:
uv sync
Führen Sie DNSRecon aus:
uv run dnsrecon
So installieren Sie die Entwicklungsabhängigkeiten:
uv sync --extra dev
So führen Sie Tests aus:
uv run pytest
So generieren Sie die Manpage (man/dnsrecon.1) nach Änderungen an den CLI-Optionen neu:
uv run python tools/generate_manpage.py
Die CI generiert sie außerdem automatisch bei Release-Tags und bei Pushes auf master, die die CLI ändern, neu.
So führen Sie Linting und Formatierung aus:
uv run ruff check
uv run ruff format
DNSRecon kann Shodan verwenden, um Netzblöcke zu erweitern, die während der Standardaufzählung aus SPF- (-s) und/oder WHOIS- (-w) Daten ermittelt wurden.
Passive Shodan-Anreicherung (verwendet SPF- + WHOIS-Netzblöcke):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Aktive Validierung der Shodan-Ergebnisse (löst Hosts erneut auf und bestätigt, dass sie noch zum abgefragten Netzblock passen):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
Sie können den API-Schlüssel auch über eine Umgebungsvariable anstelle von --shodan-key festlegen:
export SHODAN_API_KEY="your-shodan-api-key"
uv run dnsrecon -d example.com -t std -s -w --shodan
Starten Sie die REST-API:
uv run restdnsrecon
Rufen Sie /general_enum mit aktivierter Shodan-Erweiterung auf:
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"
Aktivieren Sie die aktive Validierung in der 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"
REST-API-Werte für thread_num sind auf 1..100 beschränkt. API-Parameter wordlist können auf mitgelieferte Dateien in dnsrecon/data oder auf Dateien in Verzeichnissen verweisen, die in DNSRECON_WORDLIST_DIRS aufgeführt sind, wobei das Pfadtrennzeichen der Plattform verwendet wird. Konfigurieren Sie nur dedizierte Wortlisten-Verzeichnisse; richten Sie DNSRECON_WORDLIST_DIRS nicht auf breite Pfade wie /, ein Home-Verzeichnis oder andere Orte, die sensible Dateien enthalten.
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"