Nmap で TCP スキャンと UDP スキャンを組み合わせる

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、Nmap における TCP と UDP のスキャンを組み合わせる方法を学びます。この実験では、対象の IP アドレスに対して組み合わせたスキャンを実行し、特定のポートをスキャンし、スキャンに詳細度を追加し、組み合わせた結果を保存し、TCP と UDP の出力を比較し、Xfce 端末で結果を分析します。nmap -sS -sU のようなコマンドを異なるオプションで使用して、さまざまなスキャンタスクを実行します。

実際のシナリオでは、明示的な許可がある場合にのみネットワークとホストをスキャンする必要があります。この実験では、192.168.1.1 を使用できます。必要に応じて、LabEx VM の IP アドレスに置き換えることもできます。

nmap -sS -sU 192.168.1.1 を使った組み合わせたスキャンを実行する

このステップでは、Nmap を使って TCP SYN(ステルス)スキャンと UDP スキャンを組み合わせる方法を学びます。この種のスキャンは、対象のホストで実行されている TCP と UDP サービスを特定するのに役立ちます。

始める前に、コマンドで使用されるフラグを簡単に説明しましょう。

  • -sS:このフラグは Nmap に対象に TCP SYN スキャンを実行させるように指示します。これはステルススキャンとも呼ばれます。「ステルス」と呼ばれるのは、完全な TCP ハンドシェイクを完了しないため、対象によるログ記録の可能性が低くなるからです。
  • -sU:このフラグは Nmap に UDP スキャンを実行させるように指示します。UDP は接続型でないプロトコルであるため、UDP スキャンは一般的に TCP スキャンよりも遅く、信頼性が低いです。
  • 192.168.1.1:これは対象の IP アドレスです。:実際のシナリオでは、明示的な許可がある場合にのみネットワークとホストをスキャンする必要があります。この実験では、192.168.1.1 がテスト環境内の有効な対象であると仮定します。このアドレスにホストがない場合は、LabEx VM の IP アドレス(通常は 127.0.0.1 または localhost)に置き換えることができます。

では、組み合わせたスキャンを実行しましょう。Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -sS -sU 192.168.1.1

パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、エンターキーを押してください。

出力には、対象のホスト上の TCP と UDP プロトコルのオープン、クローズ、またはフィルタリングされたポートが表示されます。特に UDP スキャンの場合、数分かかる場合があります。

出力の例(実際の出力は対象のホストによって異なります):

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.00020s latency).
Not shown: 998 closed tcp ports (reset)
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 996 closed udp ports (reset)
PORT      STATE         SERVICE
53/udp    open|filtered domain
67/udp    open|filtered dhcps
137/udp   open|filtered netbios-ns

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

この例では、Nmap は TCP ポート 22 と 80 がオープンで、UDP ポート 53、67、および 137 がオープンまたはフィルタリングされていることを検出しました。open|filtered の状態は、ネットワーク状況やファイアウォールルールのために、ポートがオープンかフィルタリングされているかを Nmap が判断できなかったことを意味します。

nmap -sS -sU -p 22,53 127.0.0.1 を使って特定のポートをスキャンする

前のステップでは、対象のホストに対して TCP と UDP の組み合わせたスキャンを行いました。ここでは、Nmap を使って特定のポートをスキャンする方法を学びます。特定のサービスや脆弱性に焦点を当てたい場合に役立ちます。

Nmap の -p オプションを使うと、スキャンするポートを指定できます。単一のポート、ポートの範囲、またはコンマ区切りのポートのリストを指定できます。

このステップでは、localhost(127.0.0.1)のポート 22(SSH)と 53(DNS)をスキャンします。

Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -sS -sU -p 22,53 127.0.0.1

再びパスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、エンターキーを押してください。

このコマンドは Nmap に対して、localhost のポート 22 と 53 に対して TCP SYN スキャンと UDP スキャンを実行するよう指示します。

出力の例(実際の出力は異なる場合があります):

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.000027s latency).

PORT   STATE SERVICE
22/tcp open  ssh

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).

PORT   STATE         SERVICE
53/udp open|filtered domain

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

この例では、Nmap は TCP ポート 22(SSH)がオープンで、UDP ポート 53(DNS)がオープンまたはフィルタリングされていることを検出しました。open|filtered の状態は、ネットワーク状況やファイアウォールルールのために、ポートがオープンかフィルタリングされているかを Nmap が判断できなかったことを意味します。localhost をスキャンしているので、サービスが実行されている可能性が高いですが、ファイアウォールがスキャンを妨害している可能性もあります。

スキャンするポートを指定することで、スキャン時間を大幅に短縮し、関心のあるサービスに焦点を当てることができます。

nmap -v -sS -sU 192.168.1.1 で詳細度を上げる

このステップでは、Nmap スキャンの詳細度を上げる方法を学びます。詳細度は、スキャンプロセスに関するより詳細な情報を提供し、トラブルシューティングや Nmap の動作を理解するのに役立ちます。

Nmap の -v オプションは詳細度レベルを上げます。さらに詳細な出力を得るには、複数回使用できます(例えば、-vv)。

最初のステップで行った TCP SYN と UDP の組み合わせたスキャンに詳細度を追加しましょう。Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -v -sS -sU 192.168.1.1

パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、エンターキーを押してください。

このコマンドは、以前と同じ組み合わせたスキャンを実行しますが、詳細度が上がっています。

出力の例(実際の出力は対象のホストと詳細度レベルによって異なります):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 0 scripts for scanning.
Initiating SYN Stealth Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Completed SYN Stealth Scan at 10:10, 0.00s elapsed (1000 total ports)
Initiating UDP Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Completed UDP Scan at 10:10, 5.00s elapsed (1000 total ports)
Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 998 closed tcp ports (reset)
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 996 closed udp ports (reset)
PORT      STATE         SERVICE
53/udp    open|filtered domain
67/udp    open|filtered dhcps
137/udp   open|filtered netbios-ns

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

出力には、スキャンの開始、スキャン対象のポート数、各スキャンフェーズにかかった時間に関する情報が含まれていることに注意してください。これは、スキャンの進行状況を監視し、潜在的な問題を特定するのに役立ちます。

nmap -sS -sU -oN tcpudp.txt 127.0.0.1 で結果を保存する

このステップでは、Nmap のスキャン結果をファイルに保存する方法を学びます。これは、後の分析、レポート作成、または以前のスキャンとの比較に役立ちます。

Nmap は、さまざまな形式でスキャン結果を保存するためのいくつかのオプションを提供しています。-oN オプションは、結果を「通常の」人間が読みやすい形式で保存します。

このステップでは、localhost(127.0.0.1)の TCP SYN と UDP の組み合わせたスキャン結果を、~/project ディレクトリ内の tcpudp.txt という名前のファイルに保存します。

Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -sS -sU -oN tcpudp.txt 127.0.0.1

パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、エンターキーを押してください。

このコマンドは組み合わせたスキャンを実行し、結果を tcpudp.txt ファイルに保存します。

スキャンが完了した後、cat コマンドを使ってファイルの内容を表示できます。

cat tcpudp.txt

出力の例(実際の出力は異なる場合があります):

## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023 as: nmap -sS -sU -oN tcpudp.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).
PORT   STATE SERVICE
22/tcp open  ssh

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).

PORT   STATE         SERVICE
53/udp open|filtered domain

## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 1.50 seconds

出力は、人間が読みやすい形式でスキャン結果を表示しており、開いているポートとそれに関連付けられたサービスが含まれています。また、ファイルには Nmap のバージョン、スキャン開始時間、およびスキャン期間に関する情報も含まれています。

これで、このファイルをさらなる分析やレポート作成に使用できます。

Xfce 端末で TCP と UDP の出力を比較する

このステップでは、TCP と UDP のスキャン結果を比較して、各プロトコルで動作しているサービスの違いを理解します。前のステップで作成した tcpudp.txt ファイルの出力をフィルタリングするために grep コマンドを使用し、違いを観察します。

まず、cat コマンドを使って tcpudp.txt ファイルの内容を表示しましょう。

cat tcpudp.txt

localhost(127.0.0.1)の TCP と UDP の組み合わせたスキャン結果が表示されるはずです。

次に、出力をフィルタリングして TCP のスキャン結果のみを表示しましょう。「tcp」を含む行を検索するために grep コマンドを使用します。

grep "tcp" tcpudp.txt

出力の例:

22/tcp open  ssh

これは、localhost の開いている TCP ポートを示しています。この例では、ポート 22(SSH)が開いています。

次に、出力をフィルタリングして UDP のスキャン結果のみを表示しましょう。「udp」を含む行を検索するために grep コマンドを使用します。

grep "udp" tcpudp.txt

出力の例:

53/udp open|filtered domain

これは、localhost の開いているまたはフィルタリングされた UDP ポートを示しています。この例では、ポート 53(ドメイン)が開いているかまたはフィルタリングされています。

TCP と UDP の出力を比較することで、各プロトコルでどのサービスが動作しているかを確認できます。TCP は通常、SSH のような信頼性の高い接続指向型サービスに使用されますが、UDP は DNS(ドメイン)のような接続なしサービスによく使用されます。UDP の「open|filtered」状態は、UDP プロトコルの性質上、ポートが開いているかフィルタリングされているかを Nmap が判断できなかったことを示しています。

要約すると、grep を使って TCP と UDP の組み合わせたスキャンの出力をフィルタリングすることで、各プロトコルで動作しているサービスを簡単に識別でき、対象ホスト上の利用可能なネットワークサービスをよりよく理解することができます。

Xfce 端末で結果を分析する

このステップでは、Nmap のスキャン結果を分析して、潜在的な脆弱性を特定し、対象システム上で動作しているサービスを理解します。前のステップで収集した情報を使って、対象のセキュリティ状況について結論を導き出します。

まず、localhost(127.0.0.1)の TCP と UDP の組み合わせたスキャン結果が含まれる tcpudp.txt ファイルの内容を見直してみましょう。

cat tcpudp.txt

出力を基に、以下のことが判明します。

  • 開いているポート:スキャンにより、対象システム上でどのポートが開いているかが明らかになります。開いているポートは、接続を待ち受けているサービスを示しています。
  • サービス:Nmap は、各開いているポートで動作しているサービスを特定しようとします。この情報は、各ポートの目的とそれらのサービスに関連する潜在的な脆弱性を理解するために使用できます。
  • TCP と UDP の比較:スキャンは TCP と UDP のサービスを区別します。TCP は接続指向型で、通常、信頼性の高いデータ転送に使用されますが、UDP は接続なしで、より高速で信頼性の低い通信によく使用されます。
  • フィルタリングされたポート:UDP スキャンでは、Nmap はポートを「open|filtered」と報告する場合があります。これは、UDP が接続を確立するためのハンドシェイクを必要としないため、Nmap がポートが開いているかフィルタリングされているかを判断できなかったことを意味します。

次に、結果をもう少し詳細に分析してみましょう。

前のステップで、localhost(127.0.0.1)をスキャンして、ポート 22/tcp(SSH)と 53/udp(ドメイン)が開いているかまたはフィルタリングされていることがわかりました。

  • ポート 22(SSH):SSH は、リモート管理とファイル転送に使用されるセキュアなシェルプロトコルです。SSH が動作している場合、不正アクセスを防止するために、強力なパスワードまたはキーベースの認証で安全に構成されていることを確認することが重要です。
  • ポート 53(ドメイン):ポート 53 は通常、DNS(ドメイン名システム)サービスに使用されます。このポートが開いている場合、システムが DNS サーバーを実行している可能性があります。DNS サーバーは、DNS スプーフィングやキャッシュ汚染など、さまざまな攻撃の対象になりやすいため、最新のセキュリティパッチで最新状態に保つことが重要です。

結果をさらに分析するには、Nmap のスクリプトエンジン(NSE)を使ってより詳細な脆弱性スキャンを実行できます。ただし、これはこの実験の範囲外です。

要約すると、Nmap のスキャン結果を分析することで、対象システム上で動作しているサービスに関する貴重な洞察を得ることができ、対処する必要のある潜在的な脆弱性を特定することができます。どのネットワークやシステムも常に適切な承認を得てからスキャンすることを忘れないでください。

まとめ

この実験では、Nmap を使って TCP と UDP のスキャンを組み合わせる方法を学びました。対象の IP アドレスに対して nmap -sS -sU コマンドで組み合わせたスキャンを実行しました。ここで -sS は TCP SYN スキャンを、-sU は UDP スキャンを行います。また、特定のポートをスキャンしたり、スキャンに冗長性を追加したり、組み合わせた結果をファイルに保存する方法も学びました。

さらに、Xfce 端末で TCP と UDP の出力を比較し分析するよう指示されました。忘れないでください、実際のシナリオでは、明示的な許可がある場合にのみネットワークとホストをスキャンしてください。