Nmap での包括的なスキャン実行

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、Nmap を使って包括的なスキャンを行う方法を学びます。この実験では、さまざまなスキャンタイプを組み合わせて、対象に関する詳細な情報を収集することに焦点を当てています。

-sS(TCP SYN スキャン)、-sU(UDP スキャン)、-O(OS 検出)、-sV(サービスバージョン検出)などのオプションを使って完全なスキャンを実行します。また、-sCを使ってスクリプトを追加し、-T3を使ってタイミングを調整し、-vを使って詳細度を上げ、-oNを使ってスキャン結果をファイルに保存する方法も学びます。最後に、Xfce 端末でこれらのスキャンによって生成された包括的な出力を分析します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/timing_performance("Timing and Performance") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") nmap/NmapGroup -.-> nmap/syn_scan("SYN Scan") nmap/NmapGroup -.-> nmap/udp_scanning("UDP Scanning Techniques") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/save_output -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} nmap/port_scanning -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} nmap/timing_performance -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} nmap/verbosity -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} nmap/syn_scan -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} nmap/udp_scanning -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} nmap/os_version_detection -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} nmap/service_detection -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} nmap/script_management -.-> lab-547104{{"Nmap での包括的なスキャン実行"}} end

nmap -sS -sU -O -sV 192.168.1.1 で完全なスキャンを実行する

このステップでは、Nmap を使って対象の IP アドレスの完全なスキャンを行います。完全なスキャンでは、対象に関する包括的な情報を収集するためにいくつかのスキャンタイプを組み合わせます。これには、TCP SYN スキャン(-sS)、UDP スキャン(-sU)、OS 検出(-O)、およびサービスバージョン検出(-sV)が含まれます。

始める前に、これらの Nmap オプションについて簡単に説明しましょう:

  • -sS:TCP SYN スキャン(ステルススキャンまたは半開放スキャンとも呼ばれます)。TCP 接続を完了させない高速でステルスなスキャンです。
  • -sU:UDP スキャン。UDP パケットを対象に送信し、応答を待ち、開いている UDP ポートを特定します。
  • -O:OS 検出。対象ホストの TCP/IP スタックの指紋を分析して、そのオペレーティングシステムを特定しようとします。
  • -sV:サービスバージョン検出。開いているポートで実行されているソフトウェアのバージョンを特定します。

では、完全なスキャンコマンドを実行しましょう。IP アドレス 192.168.1.1 をスキャンします。対象の IP アドレスが LabEx VM から到達可能であることを確認してください。特定の対象がない場合は、自分のマシンの IP アドレスまたはローカルネットワーク内のテスト用 IP アドレスを使用できます。

Xfce 端末を開き、~/project ディレクトリに移動します。そして、次のコマンドを実行します:

nmap -sS -sU -O -sV 192.168.1.1

このコマンドは、対象の IP アドレス 192.168.1.1 の完全なスキャンを開始します。Nmap は TCP SYN スキャン、UDP スキャン、OS 検出、およびサービスバージョン検出を行います。

出力には、開いているポート、それらのポートで実行されているサービス、対象のオペレーティングシステム、およびその他の関連情報が表示されます。

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

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.0012s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2 (protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.29 ((Ubuntu))
139/tcp  open  netbios-ssn Samba netbios-ssn (workgroup: WORKGROUP)
445/tcp  open  microsoft-ds Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5353/udp open  mdns    Avahi mDNS/DNS-SD

OS details: Linux 3.2 - 4.9
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   1.20 ms 192.168.1.1

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

この出力は、開いているポート(例:22、80、139、445)、それらのポートで実行されているサービス(例:ssh、http、netbios-ssn、microsoft-ds)、および対象のオペレーティングシステム(Linux)を示しています。UDP スキャンの結果では、ポート 5353 が開いていることがわかります。

nmap -sS -sU -sC -p 22,80 127.0.0.1 でスクリプトを追加する

このステップでは、Nmap スクリプトを組み込むことで Nmap スキャンを強化します。Nmap スクリプトは、脆弱性検出、サービス列挙など、さまざまなタスクを自動化できる強力なツールです。-sC オプションは、Nmap に対象に対して既定のスクリプトセットを使用するように指示します。また、-p オプションを使用してスキャンするポートを指定します。

進む前に、-sC-p オプションの目的を明確にしましょう:

  • -sC:このオプションは、Nmap に対象に対して既定のスクリプトセットを実行するように指示します。これらのスクリプトは、対象で実行されているサービスに関する基本情報を提供するように設計されています。
  • -p:このオプションを使用すると、スキャンしたいポートを指定できます。この場合、ポート 22 と 80 を指定しています。

では、コマンドを実行しましょう。既定のスクリプトを使用して、ポート 22 と 80 の 127.0.0.1(localhost)をスキャンします。

Xfce 端末を開き、~/project ディレクトリに移動します。そして、次のコマンドを実行します:

nmap -sS -sU -sC -p 22,80 127.0.0.1

このコマンドは、localhost(127.0.0.1)のポート 22 と 80 に対して SYN スキャン(-sS)と UDP スキャン(-sU)を実行し、それらのポートに対して既定のスクリプト(-sC)も実行します。

出力には、開いているポート、それらのポートで実行されているサービス、および実行されたスクリプトの結果が表示されます。

出力例(実際の出力は localhost で実行されているサービスによって異なります):

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

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey:
|   2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
|_  256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
80/tcp closed http

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

この例では、ポート 22(SSH)が開いており、ssh-hostkey スクリプトが SSH ホストキーに関する情報を提供しています。ポート 80(HTTP)は閉じています。UDP スキャンでは開いているポートは見つかりませんでした。

nmap -sS -sU -T3 192.168.1.1 でタイミングを調整する

このステップでは、-T オプションを使って Nmap スキャンのタイミングを調整する方法を学びます。-T オプションは、スキャンの積極性を制御し、結果の速度と正確さに影響を与えます。より高いタイミングテンプレートを使うと、スキャンを高速化できますが、検出される可能性や一部の結果を見落とす可能性も高まります。

-T オプションは 0 から 5 の値を受け付け、それぞれの値が異なるタイミングテンプレートを表します:

  • -T0:パラノイド(非常に遅い、侵入検知システムに使用)
  • -T1:こっそり(遅い、検出を回避)
  • -T2:丁寧(スキャンを遅くして、対象を圧倒しないようにする)
  • -T3:通常(デフォルト、速度と正確さがバランスしている)
  • -T4:積極的(高速、検出や不正確な結果のリスクが高まる)
  • -T5:狂気的(非常に高速、検出と不正確な結果のリスクが高い)

このステップでは、「通常」のタイミングテンプレートを表す -T3 オプションを使用します。これはデフォルト設定ですが、説明のために明示的に指定します。また、対象の IP アドレス 192.168.1.1 に対して SYN スキャン(-sS)と UDP スキャン(-sU)を行います。

Xfce 端末を開き、~/project ディレクトリに移動します。そして、次のコマンドを実行します:

nmap -sS -sU -T3 192.168.1.1

このコマンドは、「通常」のタイミングテンプレートを使って、対象の IP アドレス 192.168.1.1 に対して SYN スキャンと UDP スキャンを行います。

出力には、開いているポートとそれらのポートで実行されているサービスが表示され、以前のスキャンと同様です。主な違いは、デフォルトのタイミング設定でスキャンが行われることです。

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

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.0012s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2 (protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.29 ((Ubuntu))
139/tcp  open  netbios-ssn Samba netbios-ssn (workgroup: WORKGROUP)
445/tcp  open  microsoft-ds Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5353/udp open  mdns    Avahi mDNS/DNS-SD

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

この出力は、最初のステップの出力と似ていますが、-T オプションを使ってタイミングテンプレートを明示的に設定する方法を示しています。

nmap -v -sS -sU -O 127.0.0.1 で詳細表示を追加する

このステップでは、-v オプションを使って Nmap スキャンに詳細表示機能を追加します。詳細表示は、スキャン中に表示される情報量を増やし、プロセスと結果に関するより多くの詳細を提供します。これはトラブルシューティングや Nmap が何をしているかを深く理解するのに役立ちます。

-v オプションは詳細度を上げます。複数回使用することができます(例えば、-vv)。これによりさらに詳細度を上げることができます。

このステップでは、対象の IP アドレス 127.0.0.1(localhost)に対して SYN スキャン(-sS)、UDP スキャン(-sU)、および OS 検出(-O)を行い、-v オプションを使って詳細表示を追加します。

Xfce 端末を開き、~/project ディレクトリに移動します。そして、次のコマンドを実行します:

nmap -v -sS -sU -O 127.0.0.1

このコマンドは、詳細度を上げて指定されたスキャンを実行します。スキャンプロセスに関するより詳細な出力が表示され、送信されるプローブ、受信される応答、および OS 検出の試行などが表示されます。

出力例(実際の出力は対象とそこで実行されているサービスによって異なります):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
NSE: Loaded 0 scripts for scanning.
Initiating SYN Stealth Scan
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Completed SYN Stealth Scan
Initiating UDP Scan
Scanning localhost (127.0.0.1) [1000 ports]
Completed UDP Scan
Initiating OS detection.
Scanning localhost (127.0.0.1)
Completed OS detection.
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000039s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
5353/udp open  mdns

Device type: General purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.15

Read data files from: /usr/bin/../share/nmap
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.24 seconds

「Initiating SYN Stealth Scan」、「Completed UDP Scan」、「Initiating OS detection」など、スキャンプロセスに関する追加情報が表示されていることに注目してください。これが詳細度を上げた結果です。

nmap -sS -sU -sV -oN full.txt 192.168.1.1 で完全なスキャンを保存する

このステップでは、-oN オプションを使って Nmap スキャンの出力をファイルに保存する方法を学びます。これは、後での分析やスキャン結果の文書化に便利です。

-oN オプションは、出力を指定されたファイルに「通常」の形式で保存することを指定します。「通常」の形式は、読みやすく解析しやすい人間が読める形式です。

このステップでは、対象の IP アドレス 192.168.1.1 に対して SYN スキャン(-sS)、UDP スキャン(-sU)、およびサービスバージョン検出(-sV)を行い、出力を ~/project ディレクトリ内の full.txt という名前のファイルに保存します。

Xfce 端末を開き、~/project ディレクトリに移動します。そして、次のコマンドを実行します:

nmap -sS -sU -sV -oN full.txt 192.168.1.1

このコマンドは、指定されたスキャンを実行し、出力を full.txt ファイルに保存します。

スキャンが完了した後、cat コマンドや nano のようなテキストエディタを使って full.txt ファイルの内容を表示できます。

cat full.txt

または

nano full.txt

full.txt ファイルには、人間が読める形式で Nmap スキャンの出力が含まれています。

full.txt の例の内容(実際の内容は対象によって異なります):

## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2 (protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.29 ((Ubuntu))
139/tcp  open  netbios-ssn Samba netbios-ssn (workgroup: WORKGROUP)
445/tcp  open  microsoft-ds Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5353/udp open  mdns    Avahi mDNS/DNS-SD
Service Info: Host: MYSERVER; OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

この出力は、端末に表示される出力と似ていますが、後で使用するためにファイルに保存されています。

Xfce 端末で包括的な出力を分析する

このステップでは、前のステップで行った Nmap スキャンで生成された包括的な出力を分析します。出力を理解することは、潜在的な脆弱性を特定し、対象システムに関する情報を収集するために重要です。Xfce 端末内で Nmap 出力の重要要素を解釈することに焦点を当てます。

まず、行った異なる種類のスキャンとそれが提供する情報を見直しましょう:

  • SYN スキャン (-sS): これは、TCP ハンドシェイクを完了させることなく、迅速に開いているポートを識別するステルススキャンです。対象の開いているポートを迅速にマッピングするのに役立ちます。
  • UDP スキャン (-sU): このスキャンは、開いている UDP ポートを識別します。UDP は接続無しプロトコルであるため、このスキャンは TCP スキャンよりも信頼性が低く、速度が遅くなる場合があります。
  • OS 検出 (-O): これは、対象で実行されているオペレーティングシステムを特定しようとします。
  • サービスバージョン検出 (-sV): これは、開いているポートで実行されているサービスのバージョンを特定しようとします。
  • スクリプトスキャン (-sC): これは、脆弱性を特定し、対象に関するさらなる情報を収集するために、一連の Nmap スクリプトを実行します。

次に、出力を分析しましょう。前のステップで作成した full.txt ファイルを参照するか、スキャンを再実行して端末内で直接出力を観察することができます。たとえば、cat コマンドを使って full.txt の内容を表示できます:

cat ~/project/full.txt

または、ステップ 1 の完全なスキャンコマンドを再実行することもできます:

nmap -sS -sU -O -sV 192.168.1.1

出力で探す重要要素:

  • 開いているポート: Nmap は、対象システム上の開いているポートをリスト表示します。これは、実行されている潜在的なサービスを特定する最初のステップです。
  • サービス情報: Nmap は、各開いているポートで実行されているサービスを特定しようとします。この情報は、それらのサービスにおける既知の脆弱性を特定するために使用できます。
  • オペレーティングシステム: Nmap は、対象で実行されているオペレーティングシステムを特定しようとします。この情報は、OS 固有の脆弱性を特定するために使用できます。
  • スキャンレイテンシ: 出力には、Nmap が対象と通信するのにかかる時間であるレイテンシが表示されます。レイテンシが高いと、ネットワーク混雑や接続が遅いことを示す場合があります。

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:25 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2 (protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.29 ((Ubuntu))
139/tcp  open  netbios-ssn Samba netbios-ssn (workgroup: WORKGROUP)
445/tcp  open  microsoft-ds Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5353/udp open  mdns    Avahi mDNS/DNS-SD
Service Info: Host: MYSERVER; OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS CPE: cpe:/o:linux:linux_kernel
Aggressive OS guesses: Linux 3.10 - 4.11 (95%), Linux 3.16 (95%), Linux 4.4 (95%), Linux 4.6 - 4.7 (95%), Linux 4.8 (95%), Linux 4.9 (95%), Linux 4.12 (95%), Linux 4.13 (95%), Linux 4.14 (95%), Linux 4.15 (95%)
No exact OS matches for host.

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.34 seconds

この例の出力では:

  • ポート 22 は開いており、OpenSSH 7.6p0 が実行されています。
  • ポート 80 は開いており、Apache httpd 2.4.29 が実行されています。
  • ポート 139 と 445 は開いており、Samba が実行されています。
  • ポート 5353 は開いており、Avahi mDNS/DNS-SDが実行されています。
  • Nmap は OS について積極的な推測を行っており、3.10 から 4.15 の間の Linux カーネルである可能性が高いことを示唆しています。

Nmap 出力を注意深く分析することで、対象システムのセキュリティ状況に関する貴重な洞察を得ることができます。

まとめ

この実験では、Nmap を使って包括的なスキャンを行い、TCP SYN スキャン(-sS)、UDP スキャン(-sU)、OS 検出(-O)、およびサービスバージョン検出(-sV)を組み合わせて、対象の IP アドレスに関する広範な情報を収集しました。nmap -sS -sU -O -sV 192.168.1.1 というコマンドを使って完全なスキャンを実行し、開いているポート、実行中のサービス、対象のオペレーティングシステムを含む出力を解釈する方法を学びました。

さらに、この実験では、-sC を使ったスクリプトの追加、-T3 を使ったタイミングの調整、-v を使った冗長性の増加、および -oN を使ったスキャン結果のファイルへの保存についても扱いました。これらの技術は、詳細なネットワーク分析とレポート作成における Nmap の機能を強化します。