はじめに
この実験では、Nmap で攻撃的なスキャンを行う方法を学びます。この実験では、ターゲット IP アドレスに対して攻撃的なスキャンを実行し、特定のポートをスキャンし、スキャンに詳細度を追加し、スキャン結果を保存し、詳細な出力を分析し、基本的なスキャンと比較する方法について説明します。Xfce ターミナルで nmap -A
、nmap -A -p
、nmap -v -A
、nmap -A -oN
などのコマンドを使用してこれらのタスクを達成します。
この実験では、Nmap で攻撃的なスキャンを行う方法を学びます。この実験では、ターゲット IP アドレスに対して攻撃的なスキャンを実行し、特定のポートをスキャンし、スキャンに詳細度を追加し、スキャン結果を保存し、詳細な出力を分析し、基本的なスキャンと比較する方法について説明します。Xfce ターミナルで nmap -A
、nmap -A -p
、nmap -v -A
、nmap -A -oN
などのコマンドを使用してこれらのタスクを達成します。
このステップでは、Nmap を使って攻撃的なスキャンを行います。攻撃的なスキャンは、複数のスキャン技術を組み合わせてターゲットに関する包括的な情報を収集します。-A
オプションは、OS 検出、バージョン検出、スクリプトスキャン、トレーサールートを有効にします。この種のスキャンは、開いているポート、それらのポートで実行されているサービス、およびターゲットのオペレーティングシステムを特定するのに役立ちます。
始める前に、IP アドレスが何かを明確にしましょう。IP アドレスは、インターネットプロトコルを使用して通信するコンピュータネットワークに接続された各デバイスに割り当てられる数値のラベルです。私たちの場合、192.168.1.1
は、家庭や小規模オフィスネットワークで一般的に使用されるプライベート IP アドレスです。
では、攻撃的なスキャンを実行しましょう。Xfce ターミナルを開きます。~/project
ディレクトリにいることを確認します。
cd ~/project
次に、次の Nmap コマンドを実行します:
sudo nmap -A 192.168.1.1
パスワードを求められます。labex
ユーザーはパスワードなしで sudo
特権を持っているので、Enter キーを押します。
このコマンドは、ターゲット IP アドレス 192.168.1.1
に対して攻撃的なスキャンを開始します。Nmap は、オペレーティングシステムを識別し、実行中のサービスのバージョンを検出し、既定のスクリプトを実行し、トレーサールートを実行しようとします。
出力には、開いているポート、サービスバージョン、およびスキャン中に収集されたその他の情報を含む、スキャン結果の詳細なレポートが表示されます。正確な出力は、ターゲットシステムとその構成に依存します。以下は、出力の例です(ただし、あなたの結果はおそらく異なります):
Starting Nmap 7.80 ( https://nmap.org )
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)
| ssh-hostkey:
| 2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
|_ 256 SHA256:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
443/tcp open ssl/http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
| ssl-cert: Subject: commonName=localhost
| Not valid before: 2018-08-22T12:20:36
| Not valid after: 2028-08-19T12:20:36
| ...
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.00 ms 192.168.1.1
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds
この出力は、開いているポート(この例では 22、80、および 443)、それらのポートで実行されているサービス(SSH と HTTP)、およびオペレーティングシステム(Linux)に関する情報を示しています。トレーサールートのセクションは、ターゲットへのパスを示しています。
このステップでは、Nmap のスキャンを特定のポートに絞り込みます。すべてのポートをスキャンするか、Nmap の既定のポート選択に依存する代わりに、Nmap に対してターゲット IP アドレス 127.0.0.1
のポート 22 と 80 のみをスキャンするように指定します。既知のサービスの状態を迅速に確認したり、スキャン時間を短縮したりする場合に便利です。
進む前に、ポートが何かを理解しましょう。ネットワーキングにおいて、ポートはネットワーク接続が開始と終了する仮想的なポイントです。ポートはソフトウェアベースで、オペレーティングシステムによって管理されます。複数のアプリケーションが単一のネットワーク接続を同時に利用できるようにします。ポート 22 は一般的に SSH(Secure Shell)に使用され、リモートアクセス用のセキュアプロトコルであり、ポート 80 は通常、HTTP(Hypertext Transfer Protocol)に使用され、World Wide Web 上のデータ通信の基礎です。
127.0.0.1
はループバックアドレスで、localhost とも呼ばれます。作業中の現在のマシンを指します。127.0.0.1
をスキャンすることは、自分自身のマシン上で実行されているサービスのテストに役立ちます。
では、特定のポートをスキャンする Nmap コマンドを実行しましょう。Xfce ターミナルを開きます。~/project
ディレクトリにいることを確認します。
cd ~/project
次に、次の Nmap コマンドを実行します:
sudo nmap -A -p 22,80 127.0.0.1
パスワードを求められます。labex
ユーザーはパスワードなしで sudo
特権を持っているので、Enter キーを押します。
このコマンドは、攻撃的なスキャンを開始しますが、127.0.0.1
のポート 22 と 80 のみを対象とします。Nmap は、これらのポートで実行されているサービスを識別し、その他の情報を収集しようとします。
出力には、ポート 22 と 80 に特化したスキャン結果のレポートが表示されます。以下は、出力の例です(ただし、あなたの結果は異なる場合があります):
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (protocol 2.0)
| ssh-hostkey:
| 3072 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
|_ 256 SHA256:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.57 seconds
この出力は、ポート 22 が開いており SSH が実行されており、ポート 80 が開いており Apache HTTP Server が実行されていることを示しています。各サービスのバージョン情報も表示されています。
このステップでは、Nmap の攻撃的なスキャンに詳細表示を追加します。Nmap における詳細表示とは、スキャン中に表示される情報量を増やすことを意味します。これは、Nmap が何をしているかを理解するためや、問題のトラブルシューティングに役立ちます。-v
オプションは詳細度を上げます。-v
を複数回使用する(例えば、-vv
または vvv
)と、さらに詳細な出力が得られます。
詳細表示が役立つ理由を明確にしましょう。デフォルトでは、Nmap はスキャン結果の概要を提供します。ただし、トラブルシューティングやスキャンプロセスを理解しようとする際には、より詳細な情報が非常に役に立ちます。詳細な出力は、スキャンの進行状況、送信されるプローブ、および受信される応答を示します。
では、詳細表示付きで Nmap コマンドを実行しましょう。Xfce ターミナルを開きます。~/project
ディレクトリにいることを確認します。
cd ~/project
次に、次の Nmap コマンドを実行します:
sudo nmap -v -A 192.168.1.1
パスワードを求められます。labex
ユーザーはパスワードなしで sudo
特権を持っているので、Enter キーを押します。
このコマンドは、ターゲット IP アドレス 192.168.1.1
に対して攻撃的なスキャンを開始し、詳細度を上げます。Nmap は、進行につれてスキャンプロセスに関するより多くの情報を表示します。
出力は、以前の攻撃的なスキャンよりも詳細になります。送信されるプローブ、受信される応答、およびスキャンの各段階の進行状況に関する情報が表示されます。以下は、出力の例です(ただし、あなたの結果はおそらく異なります):
Starting Nmap 7.80 ( https://nmap.org )
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
NSE: Executing script msrpc-enum on 192.168.1.1
NSE: Starting runlevel 2 (of 3) scan.
NSE: Starting runlevel 3 (of 3) scan.
NSE: Finished script pre-scanning.
Initiating Ping Scan at 14:35
Scanning 192.168.1.1 [4 ports]
Completed Ping Scan at 14:35, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 14:35
Completed Parallel DNS resolution of 1 host. at 14:35, 0.00s elapsed
Initiating SYN Stealth Scan at 14:35
Scanning 192.168.1.1 [1000 ports]
Discovered open port 22/tcp on 192.168.1.1
Discovered open port 80/tcp on 192.168.1.1
Discovered open port 443/tcp on 192.168.1.1
Completed SYN Stealth Scan at 14:35, 0.15s elapsed (1000 total ports)
Initiating Service scan at 14:35
Scanning 3 services on 192.168.1.1
Completed Service scan at 14:35, 5.23s elapsed (3 services total)
Initiating OS detection at 14:35
Completed OS detection at 14:35, 5.18s elapsed
Nmap scan report for 192.168.1.1
Host is up (0.00078s latency).
Not shown: 997 closed ports
... (rest of the output) ...
詳細な出力は、ピングスキャン、ポートスキャン、サービス検出、OS 検出など、スキャンのさまざまな段階を示しています。また、Nmap スクリプトエンジン(NSE)によって実行されているスクリプトも表示されます。
このステップでは、Nmap の攻撃的なスキャン結果をファイルに保存する方法を学びます。これは、後の分析、レポート作成、または他のスキャンとの比較に役立ちます。Nmap は、さまざまな形式で出力を保存するためのいくつかのオプションを提供しています。ここでは、「通常の」人間が読みやすい形式で出力を保存する -oN
オプションを使用します。
ファイル名の後に続く -oN
オプションは、Nmap に対して通常の出力形式を使用して指定されたファイルにスキャン結果を保存するように指示します。この形式は、人間が読みやすく設計されています。
では、攻撃的なスキャン出力をファイルに保存する Nmap コマンドを実行しましょう。Xfce ターミナルを開きます。~/project
ディレクトリにいることを確認します。
cd ~/project
次に、次の Nmap コマンドを実行します:
sudo nmap -A -oN aggressive.txt 127.0.0.1
パスワードを求められます。labex
ユーザーはパスワードなしで sudo
特権を持っているので、Enter キーを押します。
このコマンドは、ターゲット IP アドレス 127.0.0.1
に対して攻撃的なスキャンを開始し、出力を通常の形式で ~/project
ディレクトリ内の aggressive.txt
という名前のファイルに保存します。
スキャンが完了した後、nano
や cat
のようなテキストエディタを使って aggressive.txt
ファイルの内容を表示できます。
nano
を使ってファイルの内容を表示するには、次のコマンドを実行します:
nano aggressive.txt
これにより、nano
テキストエディタで aggressive.txt
ファイルが開きます。ファイルをスクロールしてスキャン結果を表示できます。
あるいは、cat
コマンドを使ってターミナルにファイルの内容を表示することもできます:
cat aggressive.txt
これにより、aggressive.txt
ファイルの内容がターミナルに表示されます。
aggressive.txt
ファイルの内容は、-oN
オプションなしで Nmap を実行したときに画面に表示される出力と似ていますが、今回は後で使用するためにファイルに保存されています。
## Nmap 7.80 scan initiated Mon Nov 21 14:45:32 2023 as: nmap -A -oN aggressive.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (protocol 2.0)
| ssh-hostkey:
| 3072 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
|_ 256 SHA256:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
## Nmap done at Mon Nov 21 14:45:35 2023 -- 1 IP address (1 host up) scanned in 2.57 seconds
このステップでは、前のステップで保存した攻撃的なスキャンの詳細な出力を分析します。Nmap スキャンの出力を理解することは、システムに潜在的な脆弱性や設定ミスを特定するために重要です。Xfce ターミナルで cat
コマンドを使って aggressive.txt
ファイルの内容を表示し、出力の重要な部分について説明します。
攻撃的なスキャン (nmap -A
) は、いくつかの種類のスキャンを行います。それには以下が含まれます:
では、出力を分析しましょう。Xfce ターミナルを開きます。~/project
ディレクトリにいることを確認します。
cd ~/project
次に、cat
コマンドを使って aggressive.txt
ファイルの内容を表示します:
cat aggressive.txt
出力がターミナルに表示されます。重要な部分を分解してみましょう:
Nmap スキャンレポート:このセクションは、スキャンに関する一般的な情報を提供します。ターゲット IP アドレス、ホスト名(利用可能な場合)、およびスキャンの開始と終了時刻が含まれます。
## Nmap 7.80 scan initiated Mon Nov 21 14:45:32 2023 as: nmap -A -oN aggressive.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost (not scanned): ::1
ポートスキャン結果:このセクションは、ターゲットホストの開いている、閉じている、およびフィルタリングされたポートを一覧表示します。各開いているポートについて、Nmap はそのポートで動作しているサービスとそのバージョンを特定しようとします。
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (protocol 2.0)
| ssh-hostkey:
| 3072 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (RSA)
| 256 SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (ECDSA)
|_ 256 SHA256:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
PORT
:ポート番号とプロトコル(例:22/tcp
)。STATE
:ポートの状態(open
、closed
、filtered
)。SERVICE
:ポートで動作している特定されたサービス(例:ssh
、http
)。VERSION
:サービスのバージョン(例:OpenSSH 8.2p1
、Apache httpd 2.4.41
)。ssh-hostkey
:SSH ホストキーの指紋。http-server-header
:HTTP サーバーヘッダー。サービス情報:このセクションは、ターゲットホストで動作しているサービスに関する追加情報を提供します。たとえば、オペレーティングシステムです。
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS 検出:このセクションは、Nmap の OS 検出試行の結果を表示します。Nmap は、ターゲットホストから受け取った応答を既知の OS フィンガープリントのデータベースと比較して、オペレーティングシステムを識別します。
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap スクリプトエンジン (NSE) 結果:このセクションは、スキャン中に実行された NSE スクリプトの出力を示します。これらのスクリプトは、脆弱性の特定、ユーザー情報の収集、設定ミスの検出など、幅広い情報を提供できます。(スクリプトが実行されなかった場合や、出力がなかった場合、このセクションは表示されない場合があります。)
スキャンの概要:このセクションは、スキャン結果をまとめています。スキャンされた IP アドレスの数と、合計のスキャン時間が含まれます。
## Nmap done at Mon Nov 21 14:45:35 2023 -- 1 IP address (1 host up) scanned in 2.57 seconds
攻撃的なスキャンの詳細な出力を分析することで、ターゲットシステムのネットワークサービス、オペレーティングシステム、および潜在的な脆弱性を包括的に理解することができます。
このステップでは、基本的な Nmap スキャンを実行し、その出力を先ほど行った攻撃的なスキャンの出力と比較します。この比較により、各スキャンで収集される詳細度と情報の種類の違いが明らかになります。基本的なスキャンでは通常、TCP connect スキャンのみが行われます。これは攻撃的なスキャンよりも速く、情報量は少なくなります。
特定のオプションなしでの基本的な Nmap スキャンでは、最も一般的な 1000 個のポートに対して TCP connect スキャンが行われます。これらのポートが開いているか、閉じているか、またはフィルタリングされているかを識別します。デフォルトでは、サービスバージョン検出、OS 検出、または NSE スクリプトは実行されません。
では、基本的な Nmap スキャンを実行して結果を比較しましょう。Xfce ターミナルを開きます。~/project
ディレクトリにいることを確認します。
cd ~/project
次の Nmap コマンドを実行して、ターゲット IP アドレス 127.0.0.1
に対して基本的なスキャンを行います:
sudo nmap 127.0.0.1
パスワードを求められます。labex
ユーザーはパスワードなしで sudo
特権を持っているので、Enter キーを押します。
基本的なスキャンの出力がターミナルに表示されます。ターゲットホストの開いている、閉じている、およびフィルタリングされたポートが表示されます。
Starting Nmap 7.80 ( https://nmap.org ) at Mon Nov 21 15:00:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
では、この出力を aggressive.txt
ファイルに保存した攻撃的なスキャンの出力と比較しましょう。aggressive.txt
ファイルの内容を表示するには、再度 cat
コマンドを使用できます:
cat aggressive.txt
基本的なスキャンの出力と aggressive.txt
ファイルの内容を比較してください。次の違いに気付くでしょう:
OpenSSH 8.2p1
、Apache httpd 2.4.41
)。一方、基本的なスキャンでは、サービス名のみが識別されます(例:ssh
、http
)。要約すると、攻撃的なスキャンは基本的なスキャンよりもターゲットシステムの詳細で包括的なビューを提供します。ただし、完了に時間がかかり、侵入検知システムによって検出される可能性が高くなります。どのタイプのスキャンを使用するかは、評価の特定の目的と環境の制約に依存します。
この実験では、参加者は Nmap を使って攻撃的なスキャンを行う方法を学びました。彼らは nmap -A
のようなコマンドを実行して、OS 検出、バージョン検出、スクリプトスキャン、トレーサールートを組み合わせた包括的なスキャンを行いました。また、-p
を使って特定のポートをスキャンし、-v
を使って詳細度を上げ、-oN
を使ってスキャン結果をファイルに保存する方法も学びました。さらに、彼らは詳細なスキャン出力を分析し、Xfce ターミナルで基本的なスキャンと比較しました。