
DNSReconは、2007年初頭に言語とDNSについて学ぶために書いたRubyスクリプトのPython移植版です。 今回はPythonを学び、元のツールの機能を拡張し、その過程でDNSの仕組みと、セキュリティ評価やネットワークトラブルシューティングのプロセスでどのように利用できるかを再学習したいと考えました。
このスクリプトは以下の機能を提供します:
DNSReconにはPython 3.12以上が必要です。
uvがまだインストールされていない場合はインストールします:
curl -LsSf https://astral.sh/uv/install.sh | sh
リポジトリをクローンします:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
依存関係をインストールし、仮想環境を作成します:
uv sync
DNSReconを実行します:
uv run dnsrecon
開発用依存関係をインストールするには:
uv sync --extra dev
テストを実行するには:
uv run pytest
リンターとフォーマッターを実行するには:
uv run ruff check
uv run ruff format
DNSReconは、標準的な列挙中にSPF(-s)および/またはWHOIS(-w)データから発見されたネットブロックを拡張するためにShodanを利用できます。
パッシブなShodanエンリッチメント(SPF + WHOISネットブロックを使用):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Shodan結果のアクティブな検証(ホストを再解決し、クエリされたネットブロックと一致することを確認):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
--shodan-keyの代わりに環境変数でAPIキーを設定することもできます:
export SHODAN_API_KEY="your-shodan-api-key"
uv run dnsrecon -d example.com -t std -s -w --shodan
REST APIを起動:
uv run restdnsrecon
Shodan展開を有効にして/general_enumを呼び出す:
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"
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のthread_num値は1..100に制限されています。APIのwordlistパラメータは、dnsrecon/data内のバンドルファイル、またはDNSRECON_WORDLIST_DIRSにリストされたディレクトリ下のファイルをプラットフォームのパス区切り文字を使用して参照できます。専用のワードリストディレクトリのみを設定してください。DNSRECON_WORDLIST_DIRSを/、ホームディレクトリ、または機密ファイルを含むその他の場所のような広いパスに向けないでください。
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"