Gobuster でワイルドカード DNS レコードを処理する

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

はじめに

この実験では、Gobuster を使用して DNS サブドメイン列挙を効果的に行う方法を学びます。特にワイルドカード DNS レコードの処理に焦点を当てます。ワイルドカード DNS レコードは、サブドメインスキャンで多数の偽陽性を引き起こすことが多く、正当なサブドメインを特定することが困難になります。Gobuster は --wildcard フラグを提供しており、これらの応答をフィルタリングするのに役立ち、よりクリーンで正確な結果を保証します。ワイルドカードレコードを持つドメインを特定し、標準スキャンの影響を観察し、次に --wildcard フラグを使用して違いを確認します。

ワイルドカード DNS レコードを持つドメインの特定

このステップでは、ワイルドカード DNS レコードを使用しているドメインを特定します。ワイルドカード DNS レコード(*.example.com)は、特定の DNS レコードを持たないサブドメインがすべて、事前に定義された IP アドレスに解決されることを意味します。これは、多くの存在しないサブドメインが解決されるように見えるため、サブドメイン列挙中に問題を引き起こし、偽陽性につながる可能性があります。

ターゲットドメイン wildcard.labex.io の存在しないサブドメインをクエリするために dig を使用して、そのワイルドカードの動作を確認します。

まず、ターゲットドメインファイルのコンテンツを確認しましょう。

cat ~/project/target_domain.txt

出力には wildcard.labex.io が表示されるはずです。

次に、例えば nonexistent.wildcard.labex.io のような存在しないサブドメインを dig を使用してクエリします。これが IP アドレスに解決される場合、ワイルドカードレコードが設定されていることを示します。

dig nonexistent.wildcard.labex.io

出力の ANSWER SECTION を観察してください。nonexistent.wildcard.labex.io の IP アドレスが表示されている場合、ワイルドカード DNS レコードの存在が確認されます。

; <<>> DiG 9.18.1-1ubuntu1.7-Ubuntu <<>> nonexistent.wildcard.labex.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;nonexistent.wildcard.labex.io. IN      A

;; ANSWER SECTION:
nonexistent.wildcard.labex.io. 300 IN   A       192.0.2.123  ## Example IP, will vary

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jan 01 12:00:00 UTC 2023
;; MSG SIZE  rcvd: 78

明らかに存在しないサブドメインに対する ANSWER SECTION の存在は、wildcard.labex.io にワイルドカード DNS レコードがあることを確認します。

標準 DNS スキャンを実行し、偽陽性を観察する

このステップでは、ワイルドカードフィルタリングなしで Gobuster を使用して wildcard.labex.io に対して標準的な DNS サブドメイン列挙スキャンを実行します。これにより、ワイルドカード DNS レコードがどのように多数の偽陽性を引き起こし、正当なサブドメインとワイルドカードによって解決されたものを区別することを困難にするかが実証されます。

ドメインには -d フラグ、単語リストには -w フラグを使用して gobuster dns コマンドを使用します。

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt

出力を観察してください。単語リストのほぼすべてのエントリが、それが「実際の」サブドメインでなくても、IP アドレスに解決されるのがわかるでしょう。これは、ワイルドカード DNS レコードがこれらのクエリすべてを捕捉し、解決するためです。

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
2023/01/01 12:00:00 Starting gobuster
Found: test.wildcard.labex.io (192.0.2.123)
Found: dev.wildcard.labex.io (192.0.2.123)
Found: www.wildcard.labex.io (192.0.2.123)
Found: mail.wildcard.labex.io (192.0.2.123)
Found: blog.wildcard.labex.io (192.0.2.123)
Found: admin.wildcard.labex.io (192.0.2.123)
Found: api.wildcard.labex.io (192.0.2.123)
Found: cdn.wildcard.labex.io (192.0.2.123)
Found: ftp.wildcard.labex.io (192.0.2.123)
Found: vpn.wildcard.labex.io (192.0.2.123)
2023/01/01 12:00:05 Finished

ご覧のとおり、単語リストのすべてのエントリが「見つかった」と表示されていますが、これはワイルドカード DNS レコードのため誤解を招きます。これは、サブドメイン列挙における偽陽性の問題を示しています。

--wildcard フラグを使用してスキャンを再実行する

このステップでは、Gobuster DNS スキャンを再実行しますが、今回は --wildcard フラグを含めます。このフラグは、Gobuster に最初のワイルドカード DNS レコードチェックを実行し、その後、ワイルドカードと同じ IP アドレスに解決される後続の結果をすべてフィルタリングするように指示します。これにより、偽陽性が大幅に減少し、はるかにクリーンな出力が得られます。

--wildcard フラグを追加して、Gobuster コマンドを再度実行します。

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt --wildcard

出力に注意深く目を向けてください。Gobuster が最初にワイルドカード IP を特定し、その後、それに一致する結果のフィルタリングに進むことに気づくはずです。

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 ## Example IP
2023/01/01 12:00:00 Starting gobuster
2023/01/01 12:00:05 Finished

[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 という行に注目してください。これは、Gobuster がワイルドカード IP を正常に特定し、それに解決される結果を積極的にフィルタリングしていることを示しています。この特定の例では、すべてのサブドメインがワイルドカード IP に解決されるため、「Found」エントリが表示されない可能性がありますが、これは完全なワイルドカード設定を持つドメインで、単語リストに正当なサブドメインがない場合の正しい動作です。

Gobuster がワイルドカード応答をどのようにフィルタリングするかを観察する

このステップでは、わずかに変更されたシナリオでその動作を観察することにより、Gobuster の --wildcard フラグがどのように機能するかをさらに深く掘り下げます。前回の例では完全なフィルタリングを示しましたが、メカニズムを理解することが重要です。Gobuster は最初にランダムで存在しないサブドメイン(例:randomstring.yourdomain.com)をクエリします。このクエリが IP アドレスに解決される場合、Gobuster はその IP アドレスをワイルドカード IP と見なします。列挙中に見つかった後続のサブドメインで、この同じワイルドカード IP に解決されるものはすべてフィルタリングされます。異なる IP アドレスに解決されるサブドメインのみが報告されます。

これを説明するために、wildcard.labex.io ドメインに、異なる IP アドレスを指す正当な www.wildcard.labex.io サブドメインも存在すると想像してみましょう。もしそうであれば、Gobuster は他のすべてのワイルドカードエントリを引き続きフィルタリングしますが、www.wildcard.labex.io は報告します。

この実験の目的上、wildcard.labex.io はすべてのサブドメインが同じワイルドカード IP に解決されるように構成されているため、前回のステップからの出力(サブドメインが「見つからなかった」もの)は期待される正しい動作であり、効果的なフィルタリングを示しています。

コマンドを再実行し、ワイルドカード検出を確認する最初の出力行に焦点を当てましょう。

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt --wildcard

観察すべき重要な行は次のとおりです:[+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS>。これは、Gobuster がワイルドカード IP を特定し、それを使用して結果を積極的にフィルタリングしていることを確認します。

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 ## Example IP
2023/01/01 12:00:00 Starting gobuster
2023/01/01 12:00:05 Finished

このステップは、Gobuster の --wildcard フラグが、ワイルドカード DNS レコードを持つドメインで正確なサブドメイン列挙結果を取得するために不可欠であることを理解することを強化します。

よりクリーンで正確な結果を分析する

この最終ステップでは、標準の Gobuster スキャンと --wildcard フラグを使用して実行されたスキャンの結果の違いを分析します。目標は、--wildcard フラグが偽陽性を排除することで、よりクリーンで正確な結果をどのように提供するかを理解することです。

ステップ 2(--wildcard なし)からの出力を思い出してください。 単語リストのすべてのエントリは、「Found」として報告されましたが、これらはワイルドカード DNS レコードのために解決されただけでした。この出力はノイズが多く、実際に存在するサブドメインを特定することを不可能にします。

ステップ 3 および 4(--wildcard あり)からの出力を思い出してください。 Gobuster は明確に [+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS> と述べていました。私たちの特定のケースでは、すべてのサブドメインがワイルドカード IP に解決されるため、「Found」エントリは報告されませんでした。これは正しいかつ正確な結果であり、単語リストのサブドメインのいずれも正当ではなく、一意の IP アドレスに解決されないことを示しています。

正当なサブドメイン(例:ワイルドカードとは異なる IP に解決される www.wildcard.labex.io)が存在する場合、--wildcard フラグを使用したときにそれらは出力にリストされます。これは、実際のサブドメインとワイルドカードエントリを区別する上でのフラグの力を示しています。

--wildcard フラグは、特に大規模な単語リストやワイルドカード DNS レコードを広範囲に使用するドメインを扱う場合、効率的で正確なサブドメイン列挙に不可欠です。偽陽性の手動フィルタリングの必要性を減らすことで時間を節約し、列挙の取り組みが真に適切なサブドメインに焦点を当てることを保証します。

ワイルドカード DNS レコードを識別し、Gobuster の --wildcard フラグを使用して正確なサブドメイン列挙結果を取得する方法を習得しました。

まとめ

この実験では、Gobuster を使用したサブドメイン列挙中にワイルドカード DNS レコードを処理する実践的な経験を積みました。ワイルドカードレコードを持つドメインを識別する方法を学び、標準スキャンがどのように偽陽性を生成するかを観察し、そして最も重要なことに、これらの誤解を招く結果をフィルタリングするために --wildcard フラグの使用を習得しました。このスキルは、偵察またはペネトレーションテストを実行するすべての人にとって不可欠です。なぜなら、サブドメイン発見プロセスの精度と効率を保証するからです。--wildcard フラグを適用することで、正当なサブドメインに焦点を当て、貴重な時間とリソースを節約できます。