はじめに
この実験では、Nmap を使って UDP スキャンを実行する方法を学びます。まず、-sU オプションを使って対象の IP アドレスに対して基本的な UDP スキャンを行います。次に、特定の UDP ポートをスキャンし、UDP と TCP のスキャンを組み合わせ、バージョン検出を追加します。最後に、Xfce 端末で UDP スキャン結果を表示し、Xfce のテキストエディタで出力を比較します。
nmap -sU 192.168.1.1 で UDP スキャンを実行する
このステップでは、Nmap を使って基本的な UDP スキャンを行います。UDP(User Datagram Protocol)は接続型ではないプロトコルで、TCP とは異なり、データを送信する前に接続を確立するためのハンドシェイクがありません。このため、UDP スキャンは TCP スキャンとは異なります。Nmap の -sU オプションは UDP スキャンを開始するために使用されます。
始める前に、UDP スキャンは TCP スキャンよりも信頼性が低いことを理解することが重要です。UDP は接続型ではないため、Nmap はポートが開いていたとしても必ずしも応答を受け取れない場合があります。ファイアウォールやネットワーク状況も UDP スキャンの精度に影響を与える可能性があります。
次のコマンドを使って対象の IP アドレス 192.168.1.1 をスキャンして始めましょう。
sudo nmap -sU 192.168.1.1
このコマンドは Nmap に対して、IP アドレス 192.168.1.1 に対して UDP スキャン (-sU) を実行するように指示します。UDP スキャンでは通常、生のパケットを送信するために特権昇格が必要なので、sudo が必要です。
コマンドを実行した後、以下に似た出力が表示されます。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0010s latency).
Not shown: 997 closed udp ports
PORT STATE SERVICE
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds
出力の解説:
- **
Starting Nmap...**:Nmap のバージョンとスキャンの開始時刻を表示します。 - **
Nmap scan report for 192.168.1.1**:対象の IP アドレスを示します。 - **
Host is up**:対象のホストに到達可能であることを確認します。 - **
Not shown: 997 closed udp ports**:Nmap が 997 個の閉じた UDP ポートを表示しなかったことを示します。デフォルトでは、Nmap は開いている、open|filtered、またはフィルタリングされたポートのみを表示します。 - **
PORT STATE SERVICE**:ポート番号、その状態、およびそのポートで動作しているサービス(既知の場合)をリストします。- **
open**:Nmap がそのポートから応答を受け取ったことを示し、そのポートでサービスが待ち受けていることを示唆します。 - **
open|filtered**:ポートが開いているかフィルタリングされていることを示します。Nmap はその状態を判断できません。これは多くの場合、ファイアウォールが Nmap のプローブをブロックしていることを意味します。 - **
filtered**:ファイアウォールが Nmap のプローブをブロックしており、Nmap はポートが開いているか閉じているかを判断できないことを示します。
- **
- **
Nmap done**:スキャンの完了時刻とスキャンした IP アドレスの数を表示します。
重要な留意点:
192.168.1.1を、実際にスキャンしたい対象の IP アドレスに置き換えてください。- UDP スキャンの結果は、ネットワーク状況やファイアウォールの設定によって異なる場合があります。
- 許可なくネットワークをスキャンすることは違法で不道徳です。自分が所有しているネットワークまたは明示的な許可を得ているネットワークのみをスキャンしてください。
nmap -sU -p 53,123 127.0.0.1 で UDP ポートをスキャンする
このステップでは、特定のポートに対する UDP スキャンに焦点を当てます。すべての UDP ポートをスキャンすることは時間がかかる場合があるため、特定のサービスが対象マシン上で実行されているかどうかを確認したい場合にこれが便利です。ここでは、localhost(127.0.0.1)のポート 53(DNS)と 123(NTP)をスキャンします。
Nmap の -p オプションを使用すると、スキャンしたいポートを指定できます。単一のポート、ポートの範囲(例:1-100)、またはコンマ区切りのポートのリスト(例:21,22,80)を指定できます。
127.0.0.1 の UDP ポート 53 と 123 をスキャンするには、次のコマンドを使用します。
sudo nmap -sU -p 53,123 127.0.0.1
このコマンドは Nmap に対して、IP アドレス 127.0.0.1(localhost)のポート 53 と 123(-p 53,123)に対して UDP スキャン (-sU) を実行するように指示します。再び、UDP スキャンでは sudo が必要な場合が多いです。
コマンドを実行した後、次のような出力が表示される場合があります。
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.000047s latency).
PORT STATE SERVICE
53/udp open|filtered domain
123/udp closed ntp
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
出力の解説:
- **
Nmap scan report for localhost (127.0.0.1)**:対象が localhost であることを示します。 - **
PORT STATE SERVICE**:ポート番号、その状態、およびそのポートで動作しているサービス(既知の場合)をリストします。- **
53/udp open|filtered domain**:ポート 53(DNS)は開いているかフィルタリングされています。これは、潜在的なファイアウォール規則やネットワーク状況のため、Nmap がポートが開いているかどうかを確定的に判断できなかったことを意味します。 - **
123/udp closed ntp**:ポート 123(NTP)は閉じています。これは、そのポートでサービスが待ち受けていないことを意味します。
- **
要点:
-pオプションを使用すると、特定のポートを対象にでき、スキャンを効率的に行うことができます。- 出力には、各スキャンされたポートの状態(開いている、閉じている、フィルタリングされているなど)に関する情報が提供されます。
- 一般的なポート(DNS の場合は 53、NTP の場合は 123)に関連付けられたサービスを理解することで、スキャン結果を解釈するのに役立ちます。
nmap -sU -sT 192.168.1.1 を使って UDP と TCP を組み合わせる
このステップでは、単一の Nmap コマンドで UDP と TCP のスキャンを組み合わせます。これにより、対象マシン上で実行されているサービスのより包括的なビューを得ることができます。なぜなら、一部のサービスは UDP を使用し、他のサービスは TCP を使用するからです。
Nmap の -sT オプションは TCP 接続スキャンを実行します。これは TCP スキャンの最も基本的な形式で、Nmap が対象ポートとの完全な TCP 接続を確立しようと試みます。一般的に信頼性が高いですが、簡単に検出される可能性があります。
192.168.1.1 で UDP スキャンと TCP 接続スキャンの両方を実行するには、次のコマンドを使用します。
sudo nmap -sU -sT 192.168.1.1
このコマンドは Nmap に対して、IP アドレス 192.168.1.1 に対して UDP スキャン (-sU) と TCP 接続スキャン (-sT) を実行するように指示します。sudo は、特にスキャンの UDP 部分については、しばしば必要です。
コマンドを実行した後、UDP と TCP の両方のスキャン結果が含まれる出力が表示されます。出力は次のようになる場合があります。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0010s latency).
Not shown: 997 closed udp ports
PORT STATE SERVICE
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 7.23 seconds
出力の解説:
- 出力は以前のスキャンと似ていますが、今回は UDP と TCP の両方のポートの結果が含まれています。
- 最初のセクションは UDP スキャン結果を示し、ポートとその状態(開いている、閉じている、フィルタリングされているなど)が表示されます。
- 2 番目のセクションは TCP スキャン結果を示し、同様にポートとその状態が表示されます。
- 同じ IP アドレスが異なるプロトコル(UDP と TCP)で異なるサービスが実行されていることに注意してください。
UDP と TCP のスキャンを組み合わせる利点:
- より包括的な結果:対象上で実行されているサービスのより完全な画像が得られます。
- 異なるサービスタイプの識別:UDP を使用するサービス(例:DNS、NTP)と TCP を使用するサービス(例:HTTP、SSH)を識別できます。
重要な注意事項:
スキャンタイプを組み合わせると、スキャン時間が増える場合があります。より速い結果が必要な場合は、特定のポートを対象にすることを検討してください。
nmap -sUV 192.168.1.1 を使ってバージョン検出を追加する
このステップでは、UDP スキャンにバージョン検出を追加します。バージョン検出により、Nmap は開いているポートで実行されているアプリケーション名とバージョン番号を特定しようと試みます。これにより、潜在的な脆弱性に関する貴重な情報が得られる場合があります。
Nmap の -sV オプションを使用すると、バージョン検出が可能になります。UDP スキャン用の -sU と組み合わせると、-sUV になります。Nmap は開いている UDP ポートにプローブを送信して、サービスとそのバージョンを特定しようと試みます。
192.168.1.1 でバージョン検出付きの UDP スキャンを実行するには、次のコマンドを使用します。
sudo nmap -sUV 192.168.1.1
このコマンドは Nmap に対して、IP アドレス 192.168.1.1 に対して UDP スキャン (-sU) とバージョン検出 (-sV) を実行するように指示します。組み合わせたオプションは -sUV です。以前と同様、UDP スキャンでは sudo が必要な場合が多いです。
コマンドを実行した後、次のような出力が表示される場合があります。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00088s latency).
Not shown: 997 closed udp ports
PORT STATE SERVICE VERSION
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf Apple Bonjour
Service Info: OS: Apple embedded
Nmap done: 1 IP address (1 host up) scanned in 12.54 seconds
出力の解説:
- 出力には現在、検出されたサービスのバージョン(利用可能な場合)を表示する
VERSION列が含まれています。 - **
5353/udp open|filtered zeroconf Apple Bonjour**:Nmap は、ポート 5353 で実行されているサービスを Apple Bonjour と特定しました。 - **
Service Info: OS: Apple embedded**:Nmap はまた、サービス情報に基づいてオペレーティングシステムを特定しようと試みます。
要点:
-sVオプション(UDP スキャンと組み合わせる場合は-sUV)により、バージョン検出が可能になります。- バージョン検出により、開いているポートで実行されている特定のアプリケーションとバージョンを特定することができます。
- この情報は、潜在的な脆弱性を評価してさらなるアクションを計画するために使用できます。
重要な考慮事項:
- バージョン検出は、単純なポートスキャンよりも時間がかかる場合があります。なぜなら、Nmap は各開いているポートに追加のプローブを送信する必要があるからです。
- バージョン検出の精度は、サービスと利用可能な Nmap シグネチャに依存します。場合によっては、Nmap がサービスまたはそのバージョンを正確に特定できない場合があります。
Xfce ターミナルで UDP の結果を表示する
このステップでは、Xfce ターミナル内で直接 UDP スキャン結果を表示して分析することに焦点を当てます。Nmap は直接ターミナルに出力を提供しますが、時にはより簡単なレビューと分析のために出力をファイルに保存すると便利です。スキャンの UDP 固有の部分をフィルタリングして表示するために、ターミナルコマンドを使用します。
まず、UDP スキャンを実行して出力をファイルに保存しましょう。これにより、結果を扱いやすくなります。出力を「通常」の形式で保存するには -oN オプションを使用します。
sudo nmap -sUV 192.168.1.1 -oN udp_scan_results.txt
このコマンドは、192.168.1.1 に対してバージョン検出付きの UDP スキャンを実行し、出力を現在のディレクトリ(~/project)内の udp_scan_results.txt という名前のファイルに保存します。
結果をファイルに保存したので、ターミナルコマンドを使って UDP 固有の情報を表示してフィルタリングできます。
ファイルの内容全体を表示するには、cat コマンドを使用できます。
cat udp_scan_results.txt
これにより、ターミナルに Nmap のスキャンレポート全体が表示されます。ただし、主に UDP の結果に興味があります。出力をフィルタリングして、「udp」を含む行のみを表示するには、grep コマンドを使用します。
grep "udp" udp_scan_results.txt
このコマンドは、udp_scan_results.txt ファイルを検索して、文字列「udp」を含む行を探し、それらの行をターミナルに表示します。出力には、開いているまたはフィルタリングされた UDP ポートと、Nmap が検出できたバージョン情報が表示されます。
出力の例:
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf Apple Bonjour
また、less コマンドを使ってファイルをページごとに表示することもできます。
less udp_scan_results.txt
less の中では、/udp と入力して Enter キーを押すことで「udp」を検索できます。次の一致箇所に移動するには n を押します。less を終了するには q を押します。
これらの簡単なターミナルコマンドを使用することで、Nmap によって生成された UDP スキャン結果を効果的に表示して分析することができます。これにより、開いている UDP ポートと関連するサービス情報を迅速に特定できます。
Xfce のテキストエディタで出力を比較する
このステップでは、Xfce テキストエディタを使って異なる Nmap スキャンの出力を比較します。これは、時間の経過に伴う開いているポート、サービス、またはバージョンの変化を特定するため、または異なるオプションでのスキャン結果を比較するために役立ちます。
まず、2 回の Nmap スキャンを既に実行し、それぞれの出力を別々のファイルに保存したとします。たとえば、基本的な UDP スキャンとバージョン検出付きの UDP スキャンを実行し、それぞれの結果を udp_scan_basic.txt と udp_scan_version.txt に保存した場合があります。これらのファイルがない場合は、次のコマンドを使って作成してください。
sudo nmap -sU 192.168.1.1 -oN udp_scan_basic.txt
sudo nmap -sUV 192.168.1.1 -oN udp_scan_version.txt
次に、xfce4-terminal コマンドを使って Xfce テキストエディタ(mousepad)を開き、比較のために両方のファイルを読み込みます。
mousepad udp_scan_basic.txt udp_scan_version.txt
このコマンドにより、mousepad の 2 つのインスタンスが開き、それぞれが Nmap 出力ファイルの 1 つを表示します。
出力を比較する:
- 基本的なスキャン出力(
udp_scan_basic.txt)を調べる:このファイルには、基本的な UDP スキャンの結果が含まれており、開いているまたはフィルタリングされた UDP ポートが表示されます。 - バージョン検出スキャン出力(
udp_scan_version.txt)を調べる:このファイルには、バージョン検出付きの UDP スキャンの結果が含まれています。開いているまたはフィルタリングされた UDP ポートに加えて、検出されたサービスのバージョンも表示される場合があります。 - 横並びに比較する:両方のファイルを別々のウィンドウで開くことで、結果を簡単に横並びに比較できます。開いているポート、ポートの状態(開、フィルタリング、閉)、およびサービス情報の違いを探します。
比較の例:
udp_scan_basic.txtは次のように表示される場合があります:137/udp open|filtered netbios-ns 138/udp open|filtered netbios-dgm 5353/udp open|filtered zeroconfudp_scan_version.txtは次のように表示される場合があります:137/udp open|filtered netbios-ns 138/udp open|filtered netbios-dgm 5353/udp open|filtered zeroconf Apple Bonjour Service Info: OS: Apple embedded
この例では、バージョン検出スキャンがポート 5353 で実行されているサービスを「Apple Bonjour」と特定し、基本的なスキャンでは利用できなかった OS 情報を提供することができました。
Xfce テキストエディタで出力を比較することで、スキャン間の違いと異なる Nmap オプションによって提供される追加情報をより良く理解することができます。これは、潜在的な脆弱性を特定してさらなるアクションを計画するために役立ちます。
まとめ
この実験では、参加者は Nmap を使って UDP スキャンを実行する方法を学びました。彼らは、IP 192.168.1.1 で -sU オプションを使った基本的な UDP スキャンから始め、UDP が接続無しであり、TCP スキャンよりも信頼性が低い可能性があることを理解しました。また、特定の UDP ポートをスキャンし、UDP と TCP のスキャンを組み合わせ、バージョン検出を追加し、Xfce ターミナルとテキストエディタで結果を表示して比較しました。



