
DNS-Enumeration-Skript
DNSRecon ist ein Python-Port eines Ruby-Skripts, das ich Anfang 2007 geschrieben habe, um die Sprache und DNS zu lernen. Dieses Mal wollte ich Python lernen und die Funktionalität des ursprünglichen Tools erweitern, dabei DNS neu verstehen und herausfinden, wie es bei Sicherheitsbewertungen und Netzwerk-Fehlerbehebung eingesetzt werden kann.
Dieses Skript bietet die Möglichkeit:
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
DNSRecon ausführen:
uv run dnsrecon
Um die Entwicklungsabhängigkeiten zu installieren:
uv sync --extra dev
Um Tests auszuführen:
uv run pytest
Um Linting und Formatierung durchzuführen:
uv run ruff check
uv run ruff format
DNSRecon kann Shodan verwenden, um Netblocks zu erweitern, die bei der Standard-Enumeration aus SPF (-s) und/oder WHOIS (-w)-Daten entdeckt werden.
Passive Shodan-Anreicherung (verwendet SPF- + WHOIS-Netblocks):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Aktive Validierung der Shodan-Ergebnisse (Hosts werden erneut aufgelöst und es wird bestätigt, dass sie noch mit dem abgefragten Netblock übereinstimmen):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
Sie können den API-Key auch über die Umgebungsvariable anstelle von --shodan-key setzen:
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"
Aktive Validierung in der API aktivieren:
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 thread_num-Werte sind auf 1..100 begrenzt. API- wordlist-Parameter können auf gebündelte Dateien in dnsrecon/data oder auf Dateien in Verzeichnissen verweisen, die in DNSRECON_WORDLIST_DIRS mit dem plattformspezifischen Pfadtrennzeichen aufgeführt sind. Konfigurieren Sie nur dedizierte Wortlistenverzeichnisse; setzen 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"