Nmap でカスタムポートをスキャンする

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、強力なネットワークスキャニングツールである Nmap を使ってカスタムポートをスキャンする方法を学びます。この実験では、スキャン対象のポートを指定すること、効率化のためにカスタムポートスキャンと SYN スキャンを組み合わせること、そして後で分析するためにスキャン結果を保存することに焦点が当てられています。

まずは、-p オプションを使って localhost(127.0.0.1)の 1000 と 2000 のような特定のポートをスキャンします。次に、これを SYN スキャン(-sS)と組み合わせて、1000 - 2000 のようなポート範囲をスキャンします。この実験では、-v オプションを使って詳細度を追加することと、-oN オプションを使ってスキャン結果をファイルに保存することも扱います。最後に、保存された結果を確認し、トップポートのスキャン結果と比較します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/common_ports("Common Ports Scanning") nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") nmap/NmapGroup -.-> nmap/syn_scan("SYN Scan") subgraph Lab Skills nmap/common_ports -.-> lab-547112{{"Nmap でカスタムポートをスキャンする"}} nmap/output_formats -.-> lab-547112{{"Nmap でカスタムポートをスキャンする"}} nmap/save_output -.-> lab-547112{{"Nmap でカスタムポートをスキャンする"}} nmap/port_scanning -.-> lab-547112{{"Nmap でカスタムポートをスキャンする"}} nmap/target_specification -.-> lab-547112{{"Nmap でカスタムポートをスキャンする"}} nmap/verbosity -.-> lab-547112{{"Nmap でカスタムポートをスキャンする"}} nmap/syn_scan -.-> lab-547112{{"Nmap でカスタムポートをスキャンする"}} end

nmap を使ってカスタムポートをスキャンする -p 1000,2000 192.168.1.1

このステップでは、Nmap を使ってターゲット マシンの特定のポートをスキャンする方法を学びます。Nmap は、パケットを送信して応答を分析することにより、コンピュータ ネットワーク上のホストとサービスを見つけるために使用される強力なネットワーク スキャニング ツールです。デフォルトでは、Nmap は一般的に知られているポートのセットをスキャンします。ただし、関心のある特定のポートをターゲットにするようにスキャンをカスタマイズすることができます。

カスタム ポートをスキャンするには、-p オプションの後にコンマ区切りのポート番号のリストまたはポートの範囲を指定します。

まず、ターゲット IP アドレス 192.168.1.1 のポート 1000 と 2000 をスキャンしましょう。これは実験環境なので、デモ目的で 127.0.0.1(localhost)をターゲットとして使用します。つまり、現在作業しているマシンをスキャンすることになります。

Xfce ターミナルを開き、次のコマンドを実行します。

nmap -p 1000,2000 127.0.0.1

このコマンドは、Nmap に対して localhost(127.0.0.1)のポート 1000 と 2000 をスキャンするように指示します。

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000082s latency).

PORT     STATE  SERVICE
1000/tcp closed unknown
2000/tcp closed cisco-sccp

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

出力には、各スキャンされたポートの状態が表示されます。この例では、両方のポートが閉じています。これらのポートのいずれかにサービスが実行されていた場合、状態はおそらく open と表示されます。

では、ポートの範囲をスキャンしてみましょう。

nmap を使って SYN スキャンと組み合わせる -sS -p 1000-2000 127.0.0.1

このステップでは、カスタム ポート スキャンと SYN スキャンを組み合わせます。SYN スキャンは、半開きスキャンとも呼ばれ、Nmap スキャンの一種で、SYN パケットをターゲット マシンに送信しますが、TCP 接続を完了させません。この手法は、完全な TCP 接続スキャンよりも高速で検出されにくいです。

Nmap の -sS オプションは SYN スキャンを指定します。このオプションを -p オプションと一緒に使って、特定のポート範囲をスキャンします。

Xfce ターミナルを開き、次のコマンドを実行します。

sudo nmap -sS -p 1000-2000 127.0.0.1

このコマンドは、Nmap に対して localhost(127.0.0.1)の 1000 番ポートから 2000 番ポートまで SYN スキャンを実行するよう指示します。SYN スキャンには raw パケットを送信する必要があるため、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.000079s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE
1000/tcp open  iss-realsecure

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

出力には、指定された範囲内の各スキャンされたポートの状態が表示されます。この例では、1000 番ポートが開いており、iss-realsecure サービスが実行されており、他の 999 個のポートは閉じています。「Not shown: 999 closed ports」のメッセージは、Nmap が閉じたポートの表示を抑制して混乱を減らしていることを示しています。

nmap を使って冗長モードを追加する -v -p 1000,2000 192.168.1.1

このステップでは、Nmap スキャンに冗長モードを追加します。冗長モードにより、Nmap がスキャン中に提供する情報量が増えます。これは、Nmap が何をしているかを理解したり、問題のトラブルシューティングに役立ちます。

Nmap の -v オプションは冗長モードを有効にします。-v を 1 回使用すると冗長レベルが上がります。さらに詳細な出力を得るには、-vv-vvv を使用できます。

Xfce ターミナルを開き、次のコマンドを実行します。

nmap -v -p 1000,2000 127.0.0.1

このコマンドは、Nmap に対して localhost(127.0.0.1)の 1000 番ポートと 2000 番ポートをスキャンし、冗長な出力を提供するよう指示します。

次のような出力が表示されるはずです(正確な出力は異なる場合があります)。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Initiating Ping Scan at 10:10
Scanning localhost (127.0.0.1) [4 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating SYN Stealth Scan at 10:10
Scanning localhost (127.0.0.1) [2 ports]
Discovered open port 1000/tcp on 127.0.0.1
Completed SYN Stealth Scan at 10:10, 0.06s elapsed (2 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000079s latency).

PORT     STATE SERVICE
1000/tcp open  iss-realsecure
2000/tcp closed cisco-sccp

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

Nmap によって提供される追加情報に注目してください。たとえば、スキャン開始時間、実行されているスキャンの種類、経過時間などです。この冗長な出力は、スキャン プロセスを理解したり、潜在的な問題を特定するのに非常に役立ちます。

nmap を使ってカスタム ポート スキャンの結果を保存する -p 1000-2000 -oN custom_ports.txt 127.0.0.1

このステップでは、カスタム ポート スキャンの結果をファイルに保存します。これは、後で分析するためや、結果を他の人と共有するために便利です。

Nmap の -oN オプションは、出力を通常の形式で指定されたファイルに保存することを指定します。

Xfce ターミナルを開き、次のコマンドを実行します。

nmap -p 1000-2000 -oN custom_ports.txt 127.0.0.1

このコマンドは、Nmap に対して localhost(127.0.0.1)の 1000 番ポートから 2000 番ポートまでをスキャンし、結果を通常の形式で現在のディレクトリ(~/project)内の custom_ports.txt という名前のファイルに保存するよう指示します。

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

cat custom_ports.txt

ターミナルに Nmap のスキャン結果が表示されるはずで、-oN オプションなしでスキャンを実行した場合と同じように見えます。違いは、結果が現在 custom_ports.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.000079s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE
1000/tcp open  iss-realsecure

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

Xfce ターミナルでカスタム ポートの結果を確認する

このステップでは、前のステップで custom_ports.txt ファイルに保存したカスタム ポート スキャンの結果を確認します。Xfce ターミナルで cat コマンドを使用して、ファイルの内容を表示します。

Xfce ターミナルを開き、次のコマンドを実行します。

cat custom_ports.txt

このコマンドにより、ターミナルに custom_ports.txt ファイルの内容が表示されます。スキャン中に見つかったオープンポートとクローズドポートを含む Nmap スキャン結果が表示されるはずです。

出力は次のようになります。

## 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.000079s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE
1000/tcp open  iss-realsecure

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

出力を確認して、オープンポートを特定します。この例では、1000 番ポートがオープンしています。「SERVICE」列は、そのポートで実行されている可能性のあるサービスに関するヒントを提供します。この場合、「iss-realsecure」が表示されます。

また、grep などの他のコマンドライン ツールを使用して、結果をフィルタリングして特定の情報を見つけることもできます。たとえば、「open」という単語を含むすべての行を見つけるには、次のコマンドを使用します。

grep open custom_ports.txt

これにより、custom_ports.txt から「open」という単語を含む行のみが出力されます。

1000/tcp open  iss-realsecure

これにより、スキャン結果からオープンポートを迅速に特定できます。

Xfce ターミナルでトップ ポート スキャンと比較する

このステップでは、最も一般的な 1000 個のポートをスキャンし、その結果を以前のカスタム ポート スキャンの結果と比較します。これにより、カスタム ポートで実行されているサービスが一般的に使用されるポートでも実行されているかどうかを理解するのに役立ちます。

まず、次のコマンドを使用して localhost(127.0.0.1)の最も一般的な 1000 個のポートをスキャンします。

nmap -F 127.0.0.1

-F オプションは、Nmap に対して nmap-services ファイルにリストされているポートのみをスキャンするよう指示します。このファイルには、最も一般的なポートのリストが含まれています。これは、トップ 100 個のポートをスキャンするのと同等です。トップ 1000 個のポートをスキャンするには、--top-ports 1000 オプションを使用できます。ただし、この実験では、より高速なスキャンのために -F オプションを使用します。

出力は次のようになります。

Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:20:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000079s latency).
Not shown: 97 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http

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

次に、これらの結果を custom_ports.txt のカスタム ポート スキャンの結果と比較しましょう。前のステップで 1000 番ポートがオープンしていることがわかっています。トップ ポート スキャンでも 1000 番ポートがオープンしていることを確認しましょう。

トップ ポート スキャンの出力で 1000 番ポートを検索するには、grep コマンドを使用できます。出力は直接ターミナルに表示されるため、出力を grep にパイプすることができます。

nmap -F 127.0.0.1 | grep 1000

コマンドが何か出力を返す場合、それはトップ ポート スキャンで 1000 番ポートが見つかったことを意味します。出力が返さない場合、1000 番ポートはトップ ポートに含まれていないことを意味します。

この場合、おそらく出力は見られません。なぜなら、1000 番ポートは一般的なポートではないからです。これは、一般的なポートをスキャンすることとカスタム ポートをスキャンすることの違いを示しています。一般的なポートをスキャンすることは、よく知られたサービスを迅速に特定するのに役立ちますが、カスタム ポートをスキャンすることは、あまり一般的でないまたは意図的に隠されたサービスを見つけるのに役立ちます。

まとめ

この実験では、Nmap の -p オプションを使用して、個々のポートまたは範囲を指定して、対象マシンの特定のポートをスキャンする方法を学びました。localhost(127.0.0.1)を対象として、1000 番ポートと 2000 番ポート、そして 1000 から 2000 の範囲をスキャンする練習を行いました。

さらに、-sS オプションを使用して、カスタム ポート スキャンと SYN スキャンを組み合わせることで、指定されたポート範囲のより高速で検出しにくいスキャンを行うことができました。この実験では、関心のある特定のポートを対象にし、各ポートの状態を判断するためにスキャン結果を分析する方法を示しました。