Nmap を使用した UDP ポートスキャンを実行する

NmapNmapBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、ネットワークセキュリティの専門家にとって重要なスキルである、Nmap を使用した UDP (User Datagram Protocol) ポートスキャンの方法を学びます。UDP は接続指向ではないプロトコルで、データ転送前に専用のエンドツーエンド接続を確立しません。このため、TCP よりも高速ですが、信頼性は低くなります。

ネットワークスキャンはサイバーセキュリティにおいて重要で、専門家が開いているポート、稼働中のサービス、潜在的な脆弱性を特定することを可能にします。Nmap はネットワーク探索とセキュリティ監査のための強力なオープンソースツールで、システム管理者やサイバーセキュリティ専門家に広く使用されています。この実験の終了時には、UDP サーバーのセットアップ、Nmap を使用した基本的な UDP ポートスキャンの実行、およびスキャン結果の解釈を習得することができ、これらはネットワーク探索とセキュリティ評価に不可欠なものです。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/udp_scanning("UDP Scanning Techniques") subgraph Lab Skills nmap/installation -.-> lab-415938{{"Nmap を使用した UDP ポートスキャンを実行する"}} nmap/save_output -.-> lab-415938{{"Nmap を使用した UDP ポートスキャンを実行する"}} nmap/port_scanning -.-> lab-415938{{"Nmap を使用した UDP ポートスキャンを実行する"}} nmap/udp_scanning -.-> lab-415938{{"Nmap を使用した UDP ポートスキャンを実行する"}} end

UDP サーバーのセットアップ

このステップでは、UDP サーバーをセットアップします。このサーバーは、Nmap スキャンのターゲットとして機能します。これを行うことで、UDP サービスがどのように動作するか、およびスキャンツールがそれらをどのように検出できるかをより深く理解することができます。

UDP プロトコルの理解

サーバーのセットアップを開始する前に、UDP (User Datagram Protocol) が何であるかを理解しましょう。UDP はインターネットプロトコル (IP) スイートの重要な一部です。

  • UDP は接続指向ではないプロトコルです。これは、TCP とは異なり、データを送信する前に接続を確立しないことを意味します。TCP を使用する場合、送信者と受信者の間で最初に接続が確立されますが、UDP はこのステップを省略します。
  • UDP は TCP よりも高速です。接続を確立するプロセスを経る必要がないため、データをより迅速に送信することができます。ただし、この速度には代償が伴います。UDP は、データが確実に配信されること、正しい順序で到着すること、または重複したデータがないことが保証されないため、TCP よりも信頼性が低くなります。
  • UDP は、信頼性よりも速度が重要なアプリケーションで一般的に使用されます。たとえば、ビデオや音楽などのストリーミングメディア、オンラインゲーム、および DNS ルックアップはすべて UDP に依存しています。これらの場合、データ配信のわずかな遅延は、少量のデータ損失よりも目立ち、混乱を招く可能性があります。

UDP サーバーのセットアップ

UDP サーバーをセットアップするには、netcat と呼ばれるツールを使用します。これはしばしば nc と略されます。netcat は、TCP または UDP を使用してネットワーク接続から読み取り、書き込むことができる非常に便利なネットワーキングユーティリティです。

  1. まず、ターミナルウィンドウを開きます。ターミナルが開いたら、プロジェクトディレクトリに移動する必要があります。ここには、この実験に関連するすべてのファイルと設定が格納されています。次のコマンドをターミナルで実行することで、これを行うことができます。
cd /home/labex/project
  1. 次に、UDP サーバーを起動します。サーバーをポート 9999 で待機させたいと思います。次のコマンドでサーバーを起動できます。
nc -u -l -p 9999 -k

このコマンドの各オプションが何を意味するかを分解してみましょう。

  • -u: このオプションは、netcat にデフォルトの TCP ではなく UDP を使用するように指示します。UDP サーバーをセットアップしているので、これを指定する必要があります。
  • -l: これにより、netcat がリスンモードになります。リスンモードでは、netcat はサーバーとして機能し、着信接続を待機します。
  • -p 9999: このオプションは、サーバーが待機するポート番号を指定します。この場合、ポート 9999 を選択しました。
  • -k: このオプションは、クライアントが切断された後もサーバーを実行し続けるように指示します。これは、クライアントが離れるたびにサーバーを再起動する必要なく、新しい接続を受け入れることができるため便利です。

このコマンドを実行した後、ターミナルがフリーズまたはハングしているように見えるかもしれません。これは正常な動作です。これは、netcat が現在ポート 9999 で着信 UDP 接続をアクティブに待機していることを意味します。

次のステップで必要になるため、このターミナルウィンドウを開いたままにしておきます。実験を続けるには、新しいターミナルウィンドウを開く必要があります。

基本的な Nmap UDP スキャンの実行

このステップでは、前のステップでセットアップした UDP サーバーを Nmap でスキャンします。このプロセスは、Nmap が開いている UDP ポートとそれらのポートで動作しているサービスをどのように識別するかを理解するのに役立つため、非常に重要です。このステップの終了時には、サイバーセキュリティの分野で不可欠なスキルである、Nmap を使用した UDP スキャンの方法をより深く理解することができます。

Nmap UDP スキャンの理解

Network Mapper の略称である Nmap は、ネットワーク探索とセキュリティ監査に使用される有名な無料のオープンソースツールです。UDP ポートのスキャンに関しては、Nmap は TCP ポートスキャンとは異なる動作をします。

UDP (User Datagram Protocol) は接続指向ではないプロトコルです。データ転送前に接続を確立する TCP とは異なり、UDP は最初に接続を設定せずにデータを送信します。これは、TCP ポートに使用される従来の接続ベースのスキャン方法が UDP には機能しないことを意味します。

Nmap が UDP ポートをスキャンするとき、空の UDP パケットをターゲットポートに送信し、応答を待ちます。ポートが閉じている場合、ターゲットシステムは通常、ICMP の「ポート到達不能」メッセージを返します。ただし、ポートが開いている場合、事情は少し複雑になります。応答がまったくないこともあり、ポートが本当に開いているかどうかを判断するのが難しくなります。また、ポートで動作している UDP サービスがパケット形式を認識した場合、応答を送信することもあります。

UDP スキャンは一般的に TCP スキャンよりも低速で信頼性が低いことに注意することが重要です。これは、UDP には TCP のようなエラーチェックと再送の組み込みメカニズムがないためです。

UDP スキャンの実行

  1. まず、新しいターミナルウィンドウを開きます。UDP サーバーが実行されている前のターミナルを開いたままにしておくことを確認してください。これは、現在そのターミナルでアクティブな UDP サーバーをスキャンするため、重要です。

  2. 次に、プロジェクトディレクトリに移動する必要があります。新しいターミナルで、次のコマンドを実行します。

cd /home/labex/project

このコマンドは、現在の作業ディレクトリを、関連するすべてのファイルと設定が格納されているプロジェクトディレクトリに変更します。

  1. 次に、Nmap UDP スキャンを実行します。ローカルホスト (127.0.0.1) のポート 9999 をターゲットにスキャンします。次のコマンドを実行します。
sudo nmap -sU -p 9999 127.0.0.1 > /home/labex/project/udp_scan_results.txt

このコマンドを分解して、各部分が何をするかを理解しましょう。

  • sudo: これは、コマンドを管理者権限で実行するために使用されます。UDP スキャンは、低レベルのネットワーク層でパケットを送信するため、これらの管理者権限が必要です。
  • nmap: これは、私たちが使用しているスキャンツールです。ネットワーク探索とセキュリティ監査のための操作の核心です。
  • -sU: このオプションは、Nmap に UDP スキャンを実行するように指示します。
  • -p 9999: このオプションは、ポート 9999 のみをスキャンすることを指定します。
  • 127.0.0.1: これはターゲットの IP アドレスです。この場合、ローカルホストであり、つまり自分自身のマシンをスキャンしています。
  • > /home/labex/project/udp_scan_results.txt: この部分は、Nmap スキャンの出力をプロジェクトディレクトリ内の udp_scan_results.txt という名前のファイルにリダイレクトします。これにより、後で結果を確認することができます。
  1. スキャンが完了したら、結果を表示することができます。次のコマンドを実行します。
cat /home/labex/project/udp_scan_results.txt

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-15 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000054s latency).

PORT     STATE         SERVICE
9999/udp open|filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

結果の理解

スキャン結果を詳しく見て、それらが何を意味するかを理解しましょう。

open|filtered 状態は、Nmap が ICMP の「ポート到達不能」メッセージを受信しなかったことを示しています。これにはいくつかの可能な説明があります。

  • ポートが開いており、UDP サービスが期待通りに動作しています。
  • ポートがファイアウォールによってフィルタリングされている可能性があります。ファイアウォールが ICMP の「ポート到達不能」メッセージまたは UDP トラフィック自体をブロックしている可能性があります。
  • 何らかの理由で、ターゲットシステムが ICMP の「ポート到達不能」メッセージを送信していない可能性があります。

私たちの場合、自分たちで UDP サーバーをセットアップしたので、ポートが開いていることがわかっています。unknown サービスラベルは、Nmap がサービスのフィンガープリントに基づいてそのポートで動作しているサービスを判断できなかったことを意味します。

前述のように、UDP スキャンは TCP スキャンよりも確定的ではありません。そのため、Nmap は UDP ポートに対してしばしば open|filtered 状態を表示し、UDP ポートの状態を正確に判断するのが少し難しくなります。

まとめ

この実験では、ネットワークセキュリティ評価において重要なスキルである、Nmap を使用した UDP ポートスキャンの方法を学びました。まず、netcat を使用して UDP サーバーをセットアップし、実際のスキャンターゲットを作成しました。次に、サーバーが待機している特定のポートに対して基本的な Nmap UDP スキャンを実施しました。

また、UDP プロトコルと TCP との違いを理解し、netcat を使用して基本的な UDP サーバーをセットアップし、Nmap を使用して開いている UDP ポートをスキャンし、UDP スキャン結果を解釈する実践的な経験を積みました。これらのスキルは、より高度なネットワークスキャンとセキュリティ評価の基礎となります。DNS、DHCP、ストリーミングプロトコルなどの多くの重要なサービスが UDP を使用しているため、UDP スキャンは非常に重要です。

サイバーセキュリティの旅を進めるにあたって、ネットワークスキャンは包括的なセキュリティ評価の一部に過ぎないことを忘れないでください。常に自分が所有するシステム、または明示的な許可を得たシステムのみをスキャンしてください。