DNS インテリジェンス収集

NmapBeginner
オンラインで実践に進む

はじめに

ドメインネームシステム(DNS)インテリジェンス収集は、サイバーセキュリティにおける偵察フェーズの極めて重要な第一歩です。DNS はインターネットの電話帳のような役割を果たし、人間が読み取れるドメイン名を IP アドレスに変換します。セキュリティ専門家は DNS レコードをクエリすることで、メールサーバー、サブドメイン、セキュリティ設定など、ターゲットのインフラストラクチャに関する豊富な情報を明らかにできます。

DNS が偵察において特に価値があるのは、単一のエンドポイントだけでなく、インフラストラクチャ間の関係性を明らかにできる点です。1 つのドメインから、Web サーバー、メールプロバイダー、検証トークン、エイリアス、さらには忘れ去られた環境全体までたどり着くことができます。そのため、DNS インテリジェンスは評価の範囲を劇的に拡大させることがよくあります。

この実験では、host と dig という 2 つの強力なコマンドラインツールを使用して DNS 偵察を行う方法を学びます。ターゲットには、セキュリティ研究者が DNS クエリとゾーン転送を安全に練習するために特別に設計した、意図的に脆弱なドメイン zonetransfer.me を使用します。基本的な IP レコードやメールサーバーの詳細、テキストレコードの抽出方法を学び、さらにはターゲットの DNS フットプリント全体をマッピングするためにゾーン転送を試みます。

基本的な IP レコード(A/AAAA)のクエリ

このステップでは、最も基本的な DNS レコードである A レコードと AAAA レコードを取得する方法を学びます。A レコードはドメイン名を IPv4 アドレスにマッピングし、AAAA レコードは IPv6 アドレスにマッピングします。これらの IP アドレスを見つけることは、ターゲットのメイン Web サーバーがどこでホストされているかを正確に把握するために不可欠です。

ドメインとホストは同じ概念ではないことに注意してください。ドメイン名は DNS 上のラベルであり、IP アドレスはトラフィックが最終的にルーティングされる場所です。偵察は、これら 2 つの視点を変換することから始まることがよくあります。

まずは、DNS ルックアップを行うためのシンプルなユーティリティである host コマンドを使用します。デフォルトの作業ディレクトリ ~/project にいることを確認してください。

次のコマンドを実行して、ターゲットドメインの基本的なルックアップを行います。

host zonetransfer.me

以下のような出力が表示され、IPv4 アドレスとドメインに関連付けられたメールサーバーが確認できるはずです。

zonetransfer.me has address 5.196.105.14
zonetransfer.me mail is handled by 10 alt2.aspmx.l.google.com.
zonetransfer.me mail is handled by 20 aspmx2.googlemail.com.
zonetransfer.me mail is handled by 10 alt1.aspmx.l.google.com.
zonetransfer.me mail is handled by 20 aspmx3.googlemail.com.
zonetransfer.me mail is handled by 0 aspmx.l.google.com.
zonetransfer.me mail is handled by 20 aspmx4.googlemail.com.
zonetransfer.me mail is handled by 20 aspmx5.googlemail.com.

host は簡単な確認には適していますが、dig (Domain Information Groper) コマンドを使用すると、より詳細な出力と柔軟性が得られます。dig を使用して、特に A レコードを要求してみましょう。+short フラグを使用して出力を整理し、IP アドレスのみを表示させます。

後で分析するために偵察データを保存するため、dig コマンドの出力を a_records.txt という名前のテキストファイルにリダイレクトします。以下のコマンドを実行してください。

dig A zonetransfer.me +short > ~/project/a_records.txt

作成したファイルの内容は cat コマンドで確認できます。

cat ~/project/a_records.txt

ターゲットドメインの IPv4 アドレスが表示されます。調査結果を保存することは、インテリジェンス収集において重要な習慣です。これにより、時間をかけてターゲットの包括的なプロファイルを構築できるようになります。

5.196.105.14

メールおよびテキストレコード(MX、TXT)のクエリ

このステップでは、Mail Exchange(MX)レコードと Text(TXT)レコードをクエリすることで、ターゲットのインフラストラクチャをさらに深く掘り下げます。

MX レコードは、ドメインに代わって電子メールメッセージを受け取る責任を持つメールサーバーを指定します。これらのサーバーを特定することで、ターゲットがどのサードパーティ製メールプロバイダー(Google Workspace や Microsoft 365 など)を使用しているか、あるいは独自のメールインフラストラクチャをホストしているかを明らかにできます。

TXT レコードも同様に価値があります。これらは多くの場合、どのシステムがメール送信を許可されているか、どの外部サービスがドメインに対して検証済みであるかといった信頼関係を記述しているためです。

dig を使用して、ターゲットドメインの MX レコードをクエリしてみましょう。

dig MX zonetransfer.me +short

メールサーバーのリストと、その優先順位番号(数値が小さいほど優先度が高い)が表示されます。

20 aspmx5.googlemail.com.
10 alt1.aspmx.l.google.com.
10 alt2.aspmx.l.google.com.
20 aspmx2.googlemail.com.
20 aspmx3.googlemail.com.
0 aspmx.l.google.com.
20 aspmx4.googlemail.com.

次に、TXT レコードを確認します。管理者は TXT レコードを使用して、ドメインの DNS に任意のテキストを追加します。サイバーセキュリティにおいて、TXT レコードは Sender Policy Framework(SPF)ルール、DomainKeys Identified Mail(DKIM)設定、さまざまなサイト検証トークンなどが含まれていることが多いため、非常に価値があります。これらは、メール送信を許可されている内部 IP 範囲や、ドメインと統合されているサードパーティサービスを明らかにするのに役立ちます。

TXT レコードをクエリし、出力を作業ディレクトリ内の txt_records.txt というファイルに保存します。

dig TXT zonetransfer.me +short > ~/project/txt_records.txt

ファイルの内容を表示して、管理者が TXT レコードにどのような情報を残しているかを確認します。

cat ~/project/txt_records.txt

v=spf1 で始まるエントリ(メール送信ポリシーを定義)や、さまざまな検証文字列に気づくかもしれません。この情報は、ターゲットドメインが他のサービスとどのような信頼関係にあるかをマッピングするのに役立ちます。

"google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA"

サブドメインの発見(CNAME)

このステップでは、Canonical Name(CNAME)レコードについて学びます。CNAME レコードは、エイリアス名を真の(正規の)ドメイン名にマッピングするために使用されます。例えば、www.example.com は example.com を指す CNAME である可能性があります。

サブドメインの発見は、攻撃対象領域を拡大する上で重要な部分です。組織はメインの Web サイトを保護していても、古い、忘れ去られたサブドメイン(dev.target.com や testing.target.com など)の更新や保護を忘れていることがよくあります。

練習用ターゲットに存在することがわかっている特定のサブドメインをクエリして、CNAME レコードがどのように動作するかを確認しましょう。testing.zonetransfer.me をクエリし、結果を保存します。

以下のコマンドを実行して CNAME レコードをクエリし、cname_records.txt に保存します。

dig CNAME testing.zonetransfer.me +short > ~/project/cname_records.txt

作成したファイルを確認します。

cat ~/project/cname_records.txt

www.zonetransfer.me. のような出力が表示されるはずです。これは、testing.zonetransfer.me が実際には別のドメインを指すエイリアスに過ぎないことを示しています。このような関係を見つけることで、セキュリティ研究者はサードパーティのホスティングプロバイダーや、ターゲットが所有する隠れたインフラストラクチャを発見できる可能性があります。

DNS ゾーン転送の試行

最後のステップでは、DNS ゾーン転送を試みます。ゾーン転送(特に AXFR クエリタイプを使用)は、DNS サーバーが複数のサーバー間で DNS データベースを複製するために使用するメカニズムです。

ゾーン転送は、正当な管理機能がアクセス制御の不備によってセキュリティ問題となる典型的な例です。メカニズム自体は正常ですが、外部の第三者が全データを要求することを許可してしまう設定ミスが問題となります。

DNS サーバーの設定が不適切である場合、匿名ユーザーがゾーンファイルの完全なコピーを要求できる可能性があります。これは、攻撃者にサブドメイン、IP アドレス、ドメインに関連するすべてのレコードの完全なマップを即座に提供してしまうため、非常に重大なセキュリティ脆弱性となります。これにより、サブドメインを推測したりブルートフォースしたりする必要がなくなります。

ゾーン転送を試みるには、まずそのドメインの権威ネームサーバー(NS)を知る必要があります。NS レコードをクエリしてみましょう。

dig NS zonetransfer.me +short

以下のように、ネームサーバーがリストアップされた出力が表示されます。

nsztm1.digi.ninja.
nsztm2.digi.ninja.

ネームサーバー(nsztm1.digi.ninja)がわかったので、axfr レコードタイプを使用して直接完全なゾーン転送を要求できます。dig の構文では、ターゲットドメインとクエリ対象の特定のネームサーバー(@ 記号を使用)を指定する必要があります。

以下のコマンドを実行してゾーン転送を試み、大量の出力を zone_transfer.txt に保存します。

dig axfr zonetransfer.me @nsztm1.digi.ninja > ~/project/zone_transfer.txt

コマンドが完了したら、head コマンドを使用してファイルの最初の数行を表示します。

head -n 20 ~/project/zone_transfer.txt

隠れたサブドメイン、内部 IP アドレス、管理者が残したさまざまなテキストメモなど、ドメインの DNS レコードの完全なダンプが表示されます。現実のシナリオにおいて、オープンなゾーン転送を発見することは、偵察フェーズを大幅に加速させる極めて重要な発見となります。

まとめ

おめでとうございます!DNS インテリジェンス収集の実験を無事に完了しました。

この実験では、host および dig コマンドを活用してターゲットドメインのパッシブ偵察を行う方法を学びました。基本的な IPv4 アドレス(A レコード)の抽出、メールインフラストラクチャ(MX レコード)の特定、セキュリティポリシーやサードパーティ統合(TXT レコード)の解明方法を探求しました。また、ドメインエイリアス(CNAME レコード)を追跡して隠れたサブドメインを発見する方法も学びました。最後に、設定不備のあるネームサーバーに対して DNS ゾーン転送(AXFR)を実行し、単一の脆弱性が組織の外部ネットワークトポロジ全体をどのように露呈させるかを実証しました。

これらのスキルは外部ネットワークマッピングの基礎を形成するものであり、ペネトレーションテストや脆弱性評価を行うすべてのサイバーセキュリティ専門家にとって不可欠なものです。