ドメインと Whois の列挙

はじめに

情報収集は、あらゆるセキュリティ評価において極めて重要な最初のステップです。ターゲットのサーバーに直接干渉する前に、セキュリティ専門家は「パッシブ・レコン(受動的偵察)」を行い、公開されている情報を収集します。

パッシブ・レコンが重要な理由は、ターゲットのインフラストラクチャに目立つ痕跡を残す前に、コンテキスト(背景情報)を構築できるためです。優れたオペレーターは、ドメインの所有者は誰か、どのレジストラが関与しているか、どのネームサーバーが名前空間を制御しているかといった基本的な疑問が公開記録から答えられる場合、いきなりパケットを送信するようなことはしません。

パッシブ・レコンの最も基本的な手法の一つが Whois 列挙です。Whois は、ドメインの所有者や連絡方法を特定するために広く利用されているインターネット上の記録リストです。ICANN(Internet Corporation for Assigned Names and Numbers)はドメイン名の登録と所有権を規制しており、レジストラに対してこれらの公開記録を維持することを義務付けています。

この実験では、Linux のコマンドラインを使用して Whois データベースにクエリを投げる方法を学びます。ターゲットドメインに関する基礎的なインテリジェンスを収集し、管理者の連絡先情報を抽出し、ターゲットのトラフィックをルーティングする権威ネームサーバーを特定します。

Whois ルックアップの実行

このステップでは、ターゲットドメインに対して基本的な Whois ルックアップを実行する方法を学びます。この学習演習では、ターゲットとして ubuntu.com を使用します。

Linux の whois コマンドは、Whois ディレクトリサービスにクエリを投げるクライアントユーティリティです。レジストラ、作成日、有効期限、所有組織など、ドメインの登録に関する情報を取得します。

Whois データは稼働中のシステムを直接マッピングしたものではありませんが、所有権や管理上の関係を明らかにします。これは、スコープの定義、帰属先の特定、およびターゲットのフットプリントの一部となっている可能性のある外部プロバイダーを理解するのに役立ちます。

調査結果を記録するために、出力リダイレクト演算子(>)を使用します。この演算子は、通常画面に表示されるコマンドの出力をファイルに保存します。

デフォルトの作業ディレクトリ(~/project)にいることを確認してください。次のコマンドを実行して ubuntu.com の Whois ルックアップを行い、出力を whois_full.txt という名前のファイルに保存します。

whois ubuntu.com > whois_full.txt

出力をリダイレクトしたため、画面には何も表示されません。コマンドが正常に動作したことを確認し、ファイルの最初の数行を表示するには、head コマンドを使用します。

head -n 15 whois_full.txt

以下のような出力が表示され、初期の登録詳細が確認できるはずです。

   Domain Name: UBUNTU.COM
   Registry Domain ID: 121365156_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.markmonitor.com
   Registrar URL: http://www.markmonitor.com
   Updated Date: 2024-04-27T10:28:21Z
   Creation Date: 2004-05-29T18:38:39Z
   Registry Expiry Date: 2026-05-29T18:38:39Z
   Registrar: MarkMonitor Inc.
   Registrar IANA ID: 292
   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
   Registrar Abuse Contact Phone: +1.2086851750
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
   Name Server: NS1.CANONICAL.COM

この生データには膨大な情報が含まれていますが、手作業で読み解くのは大変です。次のステップでは、このファイルから特定のインテリジェンスをフィルタリングする方法を学びます。

管理者連絡先の抽出

このステップでは、収集した生の Whois データから特定の連絡先情報を抽出する方法を学びます。

偵察中、管理者や技術担当者の連絡先を特定することは非常に価値があります。これらのメールアドレスや電話番号は、ターゲット組織の構造を把握する手がかりとなり、評価の後の段階(ソーシャルエンジニアリングや主要人物の特定など)で頻繁に使用されます。

現代のプライバシー規則によって個人情報が隠されている場合でも、残されたレジストラや不正利用(Abuse)に関する連絡先は、ドメインがどのように管理され、どの当事者が責任を負っているかを知る手がかりになります。

この情報を抽出するために grep コマンドを使用します。grep は、特定のパターンに一致する行を表示する強力なテキスト検索ユーティリティです。grep に -i フラグを付けることで大文字と小文字を区別しない検索が可能になり、「Email」、「email」、「EMAIL」のすべてにマッチするようになります。

次のコマンドを実行して whois_full.txt ファイル内から「email」という単語を検索し、結果を contacts.txt という新しいファイルに保存します。

grep -i "email" whois_full.txt > contacts.txt

次に、cat コマンドを使用して contacts.txt ファイルの内容を表示します。このコマンドはファイルを読み込み、その内容全体を画面に出力します。

cat contacts.txt

出力は以下のようになり、ドメインに関連付けられた連絡先メールアドレスが表示されます。

   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
Registrant Email: Select Request Email Form at https://domains.markmonitor.com/whois/ubuntu.com
Tech Email: Select Request Email Form at https://domains.markmonitor.com/whois/ubuntu.com
...

注:GDPR のような現代のプライバシー規制により、多くのレジストラは公開 Whois 記録から個人のメールアドレスを削除(編集)しています。しかし、不正利用に関する連絡先メールや一般的な管理用アドレスは依然として確認できることが多く、これらも有用なインテリジェンスとなります。

ターゲットネームサーバーの特定

最後のステップでは、ターゲットドメインの権威ネームサーバーを抽出します。

ネームサーバーはドメインネームシステム(DNS)の基本的な構成要素です。これらはインターネットの電話帳のような役割を果たし、人間が読み取れるドメイン名(ubuntu.com など)を、コンピュータが通信に使用する IP アドレスに変換します。ターゲットのネームサーバーを特定することで、どの企業が DNS インフラストラクチャをホストしているかがわかります。これにより、ターゲットが自社でサーバーを管理しているのか、それともサードパーティのクラウドプロバイダー(AWS、Cloudflare、特定のレジストラなど)を利用しているのかが判明します。

これは戦略的に非常に有用です。なぜなら、DNS プロバイダーは攻撃対象領域の一部となることが多いためです。DNS プロバイダーの設定によっては、転送設定や誤設定が露出していたり、ターゲットが外部サービスをどのように運用しているかについてのヒントが得られたりすることがあります。

ここでも grep コマンドを使用して、元の Whois データをフィルタリングします。今回は「Name Server」という用語を探します。

次のコマンドを実行して whois_full.txt からネームサーバーのレコードを抽出し、nameservers.txt という名前のファイルに保存します。

grep -i "Name Server" whois_full.txt > nameservers.txt

cat コマンドを使用して、抽出されたネームサーバーを表示します。

cat nameservers.txt

以下のような出力が表示されるはずです。

   Name Server: NS1.CANONICAL.COM
   Name Server: NS2.CANONICAL.COM
   Name Server: NS3.CANONICAL.COM
Name Server: ns1.canonical.com
Name Server: ns3.canonical.com
Name Server: ns2.canonical.com

この例では、ネームサーバーが CANONICAL.COM を指しています。Canonical は Ubuntu を開発・保守している企業です。これは、Canonical がサードパーティのサービスに依存せず、自社の DNS インフラストラクチャを管理していることを示しており、貴重な技術的インテリジェンスとなります。

まとめ

おめでとうございます!「ドメインと Whois の列挙」の実験を無事に完了しました。

この実験では、Linux のネイティブなコマンドラインツールを使用してパッシブ・レコンを行う方法を学びました。whois コマンドを使用して公開ドメイン登録データベースにクエリを投げ、出力リダイレクト(>)を使用して調査結果を保存しました。さらに、grep コマンドを使用して大量のテキストを解析し、管理者の連絡先メールアドレスや権威ネームサーバーといった、具体的で実用的なインテリジェンスを抽出する練習を行いました。

これらの基礎スキルは、アクティブなスキャンや本格的な調査を開始する前に、ターゲットの外部フットプリントをマッピングするために不可欠です。