はじめに
この実験では、Nmap のdns-bruteスクリプトを使って DNS レコードを列挙する方法を学びます。目的は、対象の IP アドレスに関連付けられた有効なホスト名とサブドメインを見つけ出し、対象のネットワークのインフラストラクチャに関する貴重な情報を明らかにすることです。
対象の IP に対してdns-bruteスクリプトを実行し、DNS ポートをスキャンし、詳細な出力のために冗長性を追加し、結果をファイルに保存し、Xfce 端末で DNS レコードを確認し、UDP スキャンの結果と比較します。この実践的な経験は、Nmap を使った DNS 列挙における実用的なスキルを提供します。
nmap --script dns-brute 192.168.1.1 を使って DNS 列挙を実行する
このステップでは、Nmap のdns-bruteスクリプトを使って、対象の IP アドレスに対して DNS 列挙を行います。DNS 列挙は、DNS サーバーに照会することで、与えられたドメインに対する有効なホスト名とサブドメインを見つけ出すプロセスです。これにより、対象のネットワークのインフラストラクチャに関する貴重な情報が明らかになる可能性があります。
dns-bruteスクリプトは、対象の DNS サーバーに対して、一般的なサブドメイン名の大きなリストを解決しようと試みることで機能します。サブドメインが存在する場合、DNS サーバーは IP アドレスを返し、そのサブドメインが有効であることを示します。
まず、使用するコマンドを理解しましょう:
nmap:これは私たちが使用するネットワークマッパーツールです。--script dns-brute:これは Nmap にdns-bruteスクリプトを使用するように指示します。192.168.1.1:これは対象の IP アドレスです。これを、実際にスキャンしたい IP アドレスに置き換えてください。
では、コマンドを実行しましょう。Xfce 端末を開き、次のコマンドを入力します:
nmap --script dns-brute 192.168.1.1
注:192.168.1.1を、実際にスキャンしたい対象の IP アドレスに置き換えてください。特定の対象がない場合、127.0.0.1(localhost)のようなローカル IP アドレスを使用することができますが、興味深い結果が得られない場合があります。
出力には、Nmap がさまざまなサブドメイン名を解決しようとしている様子が表示されます。サブドメインが見つかった場合、それらは対応する IP アドレスとともに表示されます。
出力の例(表示される出力は対象によって異なります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
NSE: Starting dns-brute scan
NSE: DNS Brute-force hostnames: 216.58.216.142
google.com A 216.58.216.142
www.google.com A 216.58.216.142
mail.google.com A 216.58.216.142
NSE: Finished dns-brute scan
Nmap done: 1 IP address (1 host up) scanned in 5.00 seconds
この出力は、dns-bruteスクリプトが IP アドレス216.58.216.142に関連付けられたサブドメインgoogle.com、www.google.com、およびmail.google.comを見つけたことを示しています。
nmap --script dns-brute -p 53 127.0.0.1 を使って DNS ポートをスキャンする
このステップでは、Nmap とdns-bruteスクリプトを使って DNS ポート(ポート 53)をスキャンすることに焦点を当てます。ポートを指定することで、通常よりも効率的な標準的な DNS ポートに対して DNS 列挙の作業を行うことができます。
コマンドを分解してみましょう:
nmap:ネットワークスキャニングツール--script dns-brute:DNS 列挙用のdns-bruteスクリプトを指定します-p 53:このオプションは Nmap に対して、DNS の標準ポートであるポート 53 のみをスキャンするように指示します127.0.0.1:これは対象の IP アドレスです。この場合、127.0.0.1はローカルマシン(localhost)を指します
では、Xfce 端末を開いて次のコマンドを実行しましょう:
nmap --script dns-brute -p 53 127.0.0.1
このコマンドは、localhost のポート 53 に対してdns-bruteスクリプトを実行します。127.0.0.1は通常、多くのレコードを持つ DNS サーバーをホストしていないため、結果は限られる場合があります。ただし、これは特定のポートを対象にした DNS 列挙の方法を示しています。
出力の例(表示される出力は異なる場合があります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/tcp open domain
| dns-brute:
|_ records-from-AXFR: No zone transfer allowed.
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds
この例では、Nmap がポート 53 が開いておりdomainサービス(DNS)が実行されていることを示しています。dns-bruteスクリプトはゾーン転送(AXFR)を試みますが、拒否されます。これは、DNS レコードへの不正なアクセスを防止するための一般的なセキュリティ対策です。
nmap -v --script dns-brute 192.168.1.1 を使って詳細度を追加する
このステップでは、Nmap コマンドに詳細表示を追加します。詳細表示により、Nmap がスキャン中に表示する情報量が増え、Nmap が何をしているかを理解したり、問題のトラブルシューティングに役立つ場合があります。
Nmap の-vオプションは詳細モードを有効にします。-vを 1 回使用すると詳細レベルが上がります。さらに詳細な出力を得るには-vvを使用します。
使用するコマンドを見てみましょう:
nmap:ネットワークスキャニングツール-v:詳細モードを有効にし、より詳細な出力を提供します--script dns-brute:DNS 列挙用のdns-bruteスクリプトを指定します192.168.1.1:対象の IP アドレス。実際にスキャンしたい IP アドレスに置き換えてください
では、Xfce 端末を開いて次のコマンドを入力しましょう:
nmap -v --script dns-brute 192.168.1.1
注:192.168.1.1を、実際にスキャンしたい対象の IP アドレスに置き換えてください。
出力は、前のステップよりも詳細になります。スキャンの進行状況、実行されているスクリプト、発生したエラーや警告に関する情報が表示されます。
出力の例(表示される出力は対象とネットワーク条件によって異なります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Starting dns-brute scan
NSE: Loaded 1795 records from /usr/share/nmap/nselib/data/dns-brute.lst
massdns: warning: id 4255 (inbound): query timed out
massdns: warning: id 4256 (inbound): query timed out
massdns: warning: id 4257 (inbound): query timed out
massdns: warning: id 4258 (inbound): query timed out
massdns: warning: id 4259 (inbound): query timed out
NSE: DNS Brute-force hostnames: 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.0020s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
22/tcp open ssh
NSE: Finished dns-brute scan
Nmap done: 1 IP address (1 host up) scanned in 10.00 seconds
詳細出力には、dns-bruteスクリプトの操作に関するさらに多くの詳細が表示され、読み込まれたレコード数や、スキャン中に遭遇した警告などが含まれます。これは、問題の診断やスクリプトの動作を理解するのに役立ちます。
nmap --script dns-brute -oN dns.txt 127.0.0.1 を使って DNS の結果を保存する
このステップでは、Nmap スキャンの結果をファイルに保存する方法を学びます。これは、後の分析やレポート作成に便利です。Nmap は、さまざまな形式で出力を保存するためのいくつかのオプションを提供しています。ここでは、通常の出力形式(-oN)を使用します。
コマンドを分解してみましょう:
nmap:ネットワークスキャニングツール--script dns-brute:DNS 列挙用のdns-bruteスクリプトを指定します-oN dns.txt:このオプションは、Nmap に対して通常の形式で出力をdns.txtという名前のファイルに保存するように指示します。ファイルは現在のディレクトリ(~/project)に保存されます。127.0.0.1:対象の IP アドレス。この場合、127.0.0.1はローカルマシン(localhost)を指します。
では、Xfce 端末を開いて次のコマンドを実行しましょう:
nmap --script dns-brute -oN dns.txt 127.0.0.1
スキャンが完了すると、~/projectディレクトリにdns.txtという名前のファイルが作成されます。このファイルには、人が読みやすい形式で Nmap の出力が含まれています。
ファイルが作成され、スキャン結果が含まれていることを確認するには、catコマンドを使ってファイルの内容を表示できます:
cat dns.txt
出力の例(表示される出力は異なる場合があります):
## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/tcp open domain
| dns-brute:
|_ records-from-AXFR: No zone transfer allowed.
## Nmap done at Fri Oct 27 10:15:02 2023 -- 1 IP address (1 host up) scanned in 2.50 seconds
この出力は、dns.txtファイルの内容を示しており、localhost の Nmap スキャンレポートが含まれています。
Xfce 端末で DNS レコードを確認する
このステップでは、前のステップで特定された DNS レコードを確認します。先ほど作成したdns.txtファイルの内容を表示するためにcatコマンドを使用します。これにより、dns-bruteスクリプトの出力を調べ、発見された情報を理解することができます。
Xfce 端末を開き、次のコマンドを入力します:
cat dns.txt
このコマンドにより、端末にdns.txtファイルの内容が表示されます。
出力はこのようになります(正確な出力は対象と DNS 列挙の結果によって異なります):
## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/tcp open domain
| dns-brute:
|_ records-from-AXFR: No zone transfer allowed.
## Nmap done at Fri Oct 27 10:20:02 2023 -- 1 IP address (1 host up) scanned in 2.50 seconds
出力を分析してみましょう:
Nmap scan report for localhost (127.0.0.1):これは、ローカルマシンでのスキャンが実行されたことを示しています。PORT STATE SERVICE:このセクションは、対象の開いているポートを示しています。53/tcp open domain:これは、ポート 53(標準的な DNS ポート)が開いており、ドメインサービスが実行されていることを示しています。dns-brute:このセクションは、dns-bruteスクリプトの結果を示しています。records-from-AXFR: No transfer transfer allowed.:これは、対象がゾーン転送を許可していないことを示しており、DNS 情報への不正アクセスを防止するためのセキュリティ対策です。
この例では、ゾーン転送が許可されていないため、dns-bruteスクリプトは特定の DNS レコードを見つけることができませんでした。ただし、対象がゾーン転送を許可していた場合や、dns-bruteスクリプトが他の DNS レコードを見つけた場合、それらはこのセクションにリストされます。
dns-bruteスクリプトの出力を確認することで、対象の DNS 構成に関する貴重な情報を得ることができ、潜在的な脆弱性を特定することができます。
Xfce 端末で UDP スキャンと比較する
このステップでは、DNS ポート(53)に対して UDP スキャンを実行し、先ほど行った TCP スキャンの結果と比較します。TCP と UDP スキャンの違いを理解することは、包括的なネットワーク調査にとって重要です。
DNS は通常、TCP と UDP の両方のプロトコルを使用します。UDP は一般的に標準的な DNS クエリに使用され、一方 TCP はゾーン転送や応答サイズが UDP の制限を超える場合に使用されます。
ポート 53 に対して UDP スキャンを実行するには、Xfce 端末で次の Nmap コマンドを使用します:
nmap -sU -p 53 127.0.0.1
コマンドを分解してみましょう:
nmap:ネットワークスキャニングツール-sU:UDP スキャンを指定します-p 53:ポート 53(DNS)を指定します127.0.0.1:対象の IP アドレス(localhost)
コマンドを実行して出力を観察しましょう。出力はこのようになるかもしれません:
Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:25:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/udp open|filtered domain
Nmap done: 1 IP address (1 host up) scanned in 3.50 seconds
では、この出力を先ほど行った TCP スキャン(--script dns-brute -p 53 127.0.0.1を使用)の結果と比較しましょう。ステップ 2 で見た出力を参照するか、TCP スキャンを再度実行してください:
nmap -sT -p 53 127.0.0.1
(注:-sTは TCP 接続スキャンを指定し、スキャンタイプが指定されていない場合のデフォルトです。)
TCP スキャンの出力はこのようになるかもしれません:
Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:26:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/tcp open domain
Nmap done: 1 IP address (1 host up) scanned in 0.50 seconds
注目すべき主な違い:
- STATE:UDP スキャンでは
open|filteredが表示される場合があり、TCP スキャンではopenが表示されます。open|filteredは、UDP の性質のために Nmap がポートが開いているかフィルタリングされているかを確実に判断できないことを意味します。UDP は接続無しであるため、Nmap は TCP の場合のように明確な「接続拒否」を受け取りません。 - 信頼性:TCP スキャンは、3-way ハンドシェイクのため、ポートが開いているかどうかを判断する際に一般的により信頼性が高いです。UDP スキャンは、パケットロスと接続指向型プロトコルの欠如のため、信頼性が低くなる場合があります。
要約すると、TCP と UDP スキャンを比較することで、対象のネットワークサービスのより完全な画像が得られます。TCP はその信頼性のために一般的に好まれますが、UDP スキャンは単独の TCP では明らかにならないサービスを明らかにすることができます。
まとめ
この実験では、Nmap のdns-bruteスクリプトを使って DNS 列挙を検討しました。DNS サーバーに問い合わせることで、与えられたドメインに対する有効なホスト名とサブドメインを見つける方法を学びました。この実験では、nmap --script dns-brute <target_ip>コマンドを実行して、対象の IP アドレスに関連付けられたサブドメインを特定する方法を示しました。
さらに、この実験では、正しく対象の IP アドレスを指定し、発見されたサブドメインとそれに対応する IP アドレスを特定するために出力を解釈する重要性を強調しました。また、冗長性を使用して出力をファイルに保存して後で確認する方法にも触れました。



