DNS情報収集ツール「DNSRecon」
2025年5月16日
セキュリティエンジニアの曽我です。今回のtoolsシリーズ第6回は、DNS情報収集(偵察)に特化した「DNSRecon」に ついて詳しく解説します。DNSは多くの組織のインターネットプレゼンスの基盤となるため、ドメイン名に関連する 情報を収集・分析することは、セキュリティ評価の重要な第一歩となります。
本記事では、DNSReconの基本から応用までの使い方を、具体的なコマンド例と出力結果を交えながら解説します。 ペネトレーションテスト、セキュリティ評価、インフラ調査などに携わるエンジニアの方々に役立つ内容となっています。
目次
- DNSReconとは
- インストール方法
- 基本的な使い方 3.1. 標準的なDNS情報収集 3.2. ゾーン転送 3.3. サブドメイン列挙
- 高度な使用方法 4.1. ブルートフォース探索 4.2. Google検索を活用した列挙 4.3. キャッシュスニッフィング
- 実践的な活用例 5.1. ドメインフットプリント調査 5.2. DNSサーバーの脆弱性検出 5.3. 内部ネットワーク侵入評価
- 検出結果の分析と対策
- まとめ
- 参考資料
1. DNSReconとは
DNSReconは、Carlos Perez氏によって開発されたPythonベースのDNS情報収集ツールです。Kali Linuxには標準で搭載されており、ドメイン名に関する幅広い情報収集機能を提供します。
DNSReconの主な特徴:
- 標準的なDNSレコード(A、AAAA、MX、NS、SOA、TXTなど)の収集
- ゾーン転送のテスト
- サブドメイン列挙(ワードリスト、DNSサービス)
- Google検索を活用したホスト情報の収集
- ブルートフォースによるサブドメイン・ホスト探索
- リバースDNS探索
- DNSキャッシュスニッフィング
- SRVレコード列挙
- トップレベルドメイン(TLD)列挙
このツールは、セキュリティ評価の初期段階(偵察フェーズ)での情報収集や、インフラストラクチャの可視化に非常に役立ちます。
2. インストール方法
Kali Linuxには標準でインストールされていますが、他のディストリビューションへのインストール方法も記載します。
Debian/Ubuntuベースのシステム:
sudo apt update
sudo apt install dnsrecon
GitHubからのインストール:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
pip install -r requirements.txt
インストールが完了したら、以下のコマンドでヘルプを確認できます:
dnsrecon -h
出力例(一部):
_____ ______ _____
| \ ____ / ____/ \ \
| |\ \ / / | /___ \ \
| | ) | | \___ \ \ \
| |/ /| | ___\ \ \____\
| / | | / ____/ / /
| |\ \ | | | \___ / /
| | \ \ \_ \___ \ / /
|__| \__\____\ \___\/____/
Version: 1.1.1
Usage: dnsrecon.py <options>
Options:
-h, --help show this help message and exit
-d DOMAIN, --domain=DOMAIN
Target domain.
-n NS_SERVER, --name_server=NS_SERVER
Domain server to use. If none is given, the SOA of the
target will be used. Multiple servers can be specified
using a comma separated list.
-r RANGE, --range=RANGE
IP range for reverse lookup brute force in formats
(first-last) or in CIDR format.
...
3. 基本的な使い方
3.1. 標準的なDNS情報収集
最も基本的な使用法は、ドメインの標準的なDNSレコードを収集することです:
dnsrecon -d example.com
このコマンドは、example.comドメインの基本的なDNSレコード(A、AAAA、MX、NS、SOA、TXTなど)を収集します。
出力例(一部):
[*] Performing General Enumeration of Domain: example.com
[*] DNSSEC is configured for example.com
[*] DNSKEYs:
[*] NSEC3RSASHA1 256 3600 20230701234916 20230601234916 12345 example.com...
[*] NSEC3RSASHA1 257 3600 20230701234916 20230601234916 12345 example.com...
[*] NS Records for example.com:
[*] ns1.example.com 93.184.216.34
[*] ns2.example.com 93.184.216.35
[*] MX Records for example.com:
[*] mail.example.com 93.184.216.36 10
[*] SOA Record:
[*] ns1.example.com dns-admin.example.com
[*] A Records for example.com:
[*] example.com 93.184.216.34
[*] AAAA Records for example.com:
[*] example.com 2606:2800:220:1:248:1893:25c8:1946
[*] TXT Records for example.com:
[*] example.com v=spf1 include:_spf.example.com ~all
3.2. ゾーン転送
DNSゾーン転送が可能かどうかをテストするには、-z
オプションを使用します:
dnsrecon -d example.com -z
ゾーン転送が許可されている場合、ドメインに関連するすべてのDNSレコードが表示されます。
出力例:
[*] Testing NS Servers for Zone Transfer
[*] Checking for Zone Transfer for example.com name servers
[*] Trying Zone Transfer for example.com from NS Server: ns1.example.com
[!] Zone Transfer Successful
[*] Zone Transfer for example.com from ns1.example.com successful (output abbreviated)
[*] example.com 3600 IN SOA
[*] example.com 3600 IN A 93.184.216.34
[*] www.example.com 3600 IN A 93.184.216.34
[*] mail.example.com 3600 IN A 93.184.216.36
[*] webmail.example.com 3600 IN A 93.184.216.37
[*] ftp.example.com 3600 IN A 93.184.216.38
3.3. サブドメイン列挙
既知のサブドメインリストを使用して列挙するには、-D
オプションを使用します:
dnsrecon -d example.com -D /usr/share/wordlists/subdomains.txt -t brt
このコマンドは、指定したワードリストを使用してサブドメイン(例:dev.example.com, test.example.com)を探索します。
出力例:
[*] Performing host and subdomain brute force against example.com
[+] A www.example.com 93.184.216.34
[+] A dev.example.com 93.184.216.39
[+] A test.example.com 93.184.216.40
[+] A staging.example.com 93.184.216.41
[+] A blog.example.com 93.184.216.42
4. 高度な使用方法
4.1. ブルートフォース探索
特定のIPレンジに対してリバースDNS探索を行うには、-r
オプションを使用します:
dnsrecon -r 93.184.216.30-93.184.216.50
出力例:
[*] Performing Reverse Lookup from 93.184.216.30 to 93.184.216.50
[+] PTR: example.com 93.184.216.34
[+] PTR: www.example.com 93.184.216.34
[+] PTR: mail.example.com 93.184.216.36
[+] PTR: webmail.example.com 93.184.216.37
[+] PTR: ftp.example.com 93.184.216.38
CIDR表記も使用可能です:
dnsrecon -r 93.184.216.0/24
4.2. Google検索を活用した列挙
Google検索を活用してホスト情報を収集するには、-g
オプションを使用します:
dnsrecon -d example.com -g
このコマンドは、Googleの検索結果からexample.comに関連するサブドメインやホスト名を抽出します。
出力例:
[*] Performing Google Search Enumeration against example.com
[*] Searching for subdomains and hosts...
[+] A support.example.com 93.184.216.43
[+] A docs.example.com 93.184.216.44
[+] A api.example.com 93.184.216.45
4.3. キャッシュスニッフィング
DNSキャッシュスニッフィングを実行するには、-c
オプションを使用します:
dnsrecon -d example.com -n 8.8.8.8 -c example-names.txt
このコマンドは、指定したDNSサーバー(ここでは8.8.8.8)のキャッシュに、example-names.txtファイルに記載された名前が存在するかを確認します。これにより、最近アクセスされたホスト名がわかる場合があります。
4.4. SRVレコードの列挙
SRVレコードを列挙するには、-t srv
オプションを使用します:
dnsrecon -d example.com -t srv
出力例:
[*] Enumerating SRV Records for example.com
[+] SRV _ldap._tcp.example.com ldap.example.com 389
[+] SRV _kerberos._tcp.example.com kdc.example.com 88
[+] SRV _sip._tcp.example.com sip.example.com 5060
このコマンドは、ドメインで使用される可能性のあるサービス(LDAP、Kerberos、SIPなど)の情報を収集します。
5. 実践的な活用例
5.1. ドメインフットプリント調査
新しい組織のセキュリティ評価を開始する際、まずドメインのフットプリントを調査します:
# 標準的なDNS情報収集
dnsrecon -d target-organization.com
# サブドメイン列挙
dnsrecon -d target-organization.com -D /usr/share/wordlists/subdomains.txt -t brt
# SRVレコード列挙
dnsrecon -d target-organization.com -t srv
# 結果をCSVファイルに保存
dnsrecon -d target-organization.com -t std,srv,axfr,goo,brt -D /usr/share/wordlists/subdomains.txt -o target-organization-dns.csv
これにより、対象組織のインターネット露出面(攻撃対象領域)を把握できます。
5.2. DNSサーバーの脆弱性検出
DNSサーバーの設定不備や脆弱性を検出します:
# ゾーン転送のテスト
dnsrecon -d target-organization.com -z
# DNSSECの検証
dnsrecon -d target-organization.com -k
# ワイルドカード解決のテスト
dnsrecon -d target-organization.com -w
ゾーン転送が許可されている場合や、DNSSECが適切に設定されていない場合は、セキュリティリスクとなります。
5.3. 内部ネットワーク侵入評価
内部ネットワークへのアクセスを取得後、内部DNSインフラストラクチャを調査します:
# 内部ネットワークのリバースDNS探索
dnsrecon -r 10.0.0.0/24 -n 10.0.0.2
# 内部ドメインの列挙
dnsrecon -d internal.local -n 10.0.0.2
これにより、内部ネットワークの構造や重要なサーバーの位置を特定できます。
6. 検出結果の分析と対策
DNSReconによる調査で以下のような問題が検出された場合、対応する対策を実施することが重要です:
-
ゾーン転送が許可されている:
- 対策: DNSサーバーの設定を変更し、必要な場合のみ特定のIPアドレスからのゾーン転送を許可する
- 例: BINDの場合は
/etc/named.conf
のallow-transfer
ディレクティブを設定
-
過剰なサブドメインの露出:
- 対策: 不要なサブドメインを削除し、必要なサブドメインのみをDNSに登録
- 例: テスト環境や開発環境のサブドメインを内部DNSのみに制限
-
DNSSECが適切に設定されていない:
- 対策: DNSSECを適切に実装し、定期的に鍵のローテーションを行う
- 例:
dnssec-keygen
とdnssec-signzone
ツールを使用してゾーンに署名
-
情報漏洩を含むTXTレコード:
- 対策: TXTレコードから機密情報を削除し、必要最小限の情報のみを公開
- 例: SPFレコードを適切に設定し、不要な情報を含めない
-
古いまたは使用されていないDNSレコード:
- 対策: 定期的にDNSレコードを監査し、古いレコードを削除
- 例: 四半期ごとにDNSレコードの完全な監査を実施
-
セキュアでないDNSサーバーソフトウェア:
- 対策: DNSサーバーソフトウェアを最新バージョンに更新
- 例: BINDの場合は最新の安定版にアップグレード
7. まとめ
DNSReconは、DNS情報収集に特化した強力なツールであり、セキュリティ評価やペネトレーションテストの初期段階で非常に有用です。標準的なDNSレコードの収集からサブドメイン列挙、ゾーン転送テスト、SRVレコード探索まで、幅広い機能を提供します。
このツールを効果的に活用することで、対象組織のインターネット露出面を包括的に把握し、潜在的なセキュリティリスクを特定することができます。また、DNSインフラストラクチャ自体の脆弱性も検出できます。
セキュリティエンジニアを目指す方は、DNSReconの使い方を習得することで、情報収集フェーズの効率と質を向上させることができるでしょう。DNSは多くの組織のインターネットプレゼンスの基盤であり、その分析はセキュリティ評価の重要な第一歩です。
8. 参考資料
- DNSRecon 公式GitHub リポジトリ
- Kali Linux Tools: DNSRecon
- SANS: DNS Reconnaissance – The First Step in the Penetration Testing Process
- RFC 1035: Domain Names - Implementation and Specification
- DNS Security: Defending the Domain Name System
- OWASP: Information Gathering
- DNS Zone Transfer Explained
※本記事の内容は、教育目的および正当なセキュリティテストのためのものです。DNSReconの使用は、自分が所有または正当な許可を得たドメインとネットワークに限定してください。許可なく他者のドメインに対して使用することは、利用規約違反や法律違反となる可能性があります。必ず適切な許可を得た上で実行してください。