はじめに
この実験では、Nmap における走査タイミングとパフォーマンスを最適化することを目的としています。 -T4
を使った高速テンプレートを用いた迅速なネットワーク走査、並列度の増加、遅延の設定、進捗の追跡、ステルスのテスト、および Xfce 端末でのタイミング比較を含む、Nmap 走査を強化するための様々な技術を学びます。これらの手順は、Nmap 走査において速度と精度をどのようにバランスさせるかを理解するのに役立ちます。
この実験では、Nmap における走査タイミングとパフォーマンスを最適化することを目的としています。 -T4
を使った高速テンプレートを用いた迅速なネットワーク走査、並列度の増加、遅延の設定、進捗の追跡、ステルスのテスト、および Xfce 端末でのタイミング比較を含む、Nmap 走査を強化するための様々な技術を学びます。これらの手順は、Nmap 走査において速度と精度をどのようにバランスさせるかを理解するのに役立ちます。
このステップでは、Nmap を使ってネットワークを迅速に走査するために高速テンプレートオプションを使用します。 -T4
オプションは、速度と精度をバランスさせるタイミングテンプレートを指定するために使用されます。デフォルトのテンプレートよりも速く、場合によっては精度が低くなる可能性があります。
始める前に、タイミングテンプレートが何かを理解しましょう。Nmap は、ターゲットを走査する際の積極性を制御するためにタイミングテンプレートを使用します。これらのテンプレートは、プローブ間の遅延、リトライ回数、タイムアウト値などのパラメータに影響を与えます。 -T
オプションを使うと、 -T0
(慎重)から -T5
(無謀)までの事前定義済みのテンプレートを選択できます。数字が大きいほど積極的な走査を意味します。
-T4
テンプレートは、ほとんどのネットワークにとって良い妥協点です。デフォルトのテンプレート( -T3
)よりも速く、パケットのドロップや侵入検知システムをトリガーする可能性のある過度の積極性を避けます。
では、走査を実行しましょう。192.168.1.0/24 ネットワークを走査するには、 nmap -T4 192.168.1.0/24
コマンドを使用します。
LabEx VM の端末を開きます。 ~/project
ディレクトリにいることを確認します。
次のコマンドを実行します:
sudo nmap -T4 192.168.1.0/24
このコマンドは、Nmap に対して -T4
タイミングテンプレートを使用して 192.168.1.0/24 範囲内のすべての IP アドレスを走査するように指示します。 /24
はサブネットマスク 255.255.255.0 を指定しており、Nmap は 256 個の IP アドレス(192.168.1.0 から 192.168.1.255 まで)を走査します。
出力には、各ホストで開いているポートとサービスを含む走査結果が表示されます。192.168.1.0/24 ネットワークはおそらくあなたのローカルネットワークであり、結果は接続されているデバイスによって異なります。
出力の例(ネットワークによって異なります):
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.00028s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
Nmap scan report for 192.168.1.100
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 256 IP addresses (2 hosts up) scanned in 5.23 seconds
この出力は、Nmap が 256 個の IP アドレスを走査し、2 つのホストがアップであることを示しています:192.168.1.1 と 192.168.1.100。ホスト 192.168.1.1 はポート 80(http)が開いており、ホスト 192.168.1.100 はポート 22(ssh)が開いています。走査には約 5.23 秒かかりました。
このステップでは、 --min-parallelism
オプションを使って Nmap 走査の並列度を高めます。このオプションを使うと、Nmap が並列で送信するプローブの最小数を指定できます。並列度を高めることで、走査速度を大幅に向上させることができます。特に、多くのホストやポートがあるネットワークでは効果的です。
デフォルトでは、Nmap はネットワーク状況に基づいて並列度を動的に調整します。ただし、 --min-parallelism
を使うことで、Nmap が常に少なくとも一定数のプローブを同時に送信するようにすることができます。
Nmap のコンテキストで並列度が何を意味するかを理解しましょう。Nmap がターゲットを走査するとき、それはさまざまなポートやホストにプローブを送信します。並列度を使うことで、Nmap は次のプローブを送信する前に各プローブからの応答を待たずに、複数のプローブを同時に送信できます。これにより、全体的な走査時間を大幅に短縮できます。
では、並列度を高めた走査を実行しましょう。 nmap --min-parallelism 20 127.0.0.1
コマンドを使って、最小並列度 20 で localhost(127.0.0.1)を走査します。
LabEx VM の端末を開きます。 ~/project
ディレクトリにいることを確認します。
次のコマンドを実行します:
sudo nmap --min-parallelism 20 127.0.0.1
このコマンドは、Nmap に対して 127.0.0.1 を走査し、少なくとも 20 個のプローブを並列で維持するように指示します。Nmap はまだネットワーク状況に基づいて並列度を動的に調整するかもしれませんが、指定された最小値を超えるように努力します。
出力には、走査結果が表示されます。それには、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.000027s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
この出力は、Nmap が localhost(127.0.0.1)を走査し、3 つのポートが開いていることを示しています:22(ssh)、631(ipp)、および 9000(cslistener)。並列度の増加により、走査は比較的迅速に完了しました。実際に節約された時間は、ネットワーク状況と走査対象によって異なります。
このステップでは、Nmap の --scan-delay
オプションを使ってプローブ間の遅延を設定します。このオプションを使うと、Nmap が各プローブを送信する間に待つ時間を指定できます。走査遅延を増やすことは、侵入検知システム(IDS)による検出を回避するため、またはネットワークトラフィックに敏感なホストを走査するために役立ちます。
デフォルトでは、Nmap はネットワーク状況に基づいて走査遅延を自動的に調整します。ただし、 --scan-delay
を使って特定の遅延を手動で設定することもできます。遅延はミリ秒(ms)または秒(s)で指定します。
走査遅延を使う理由を理解しましょう。非常に高速な走査は、ターゲットホストを圧倒したり、セキュリティアラートをトリガーしたりする可能性があります。遅延を追加することで、走査が攻撃的でなくなり、気付かれにくくなります。これは、走査の影響を最小限に抑えたい本番システムやネットワークを走査する際に特に重要です。
では、指定された遅延で走査を実行しましょう。 nmap --scan-delay 500ms 192.168.1.1
コマンドを使って、各プローブ間に 500 ミリ秒の遅延で 192.168.1.1 のホストを走査します。
LabEx VM の端末を開きます。 ~/project
ディレクトリにいることを確認します。
次のコマンドを実行します:
sudo nmap --scan-delay 500ms 192.168.1.1
このコマンドは、Nmap に対して 192.168.1.1 を走査し、各プローブを送信する間に 500 ミリ秒待つように指示します。これにより、遅延なしの走査と比較して走査速度が大幅に低下します。
出力には、走査結果が表示されます。それには、192.168.1.1 で開いているポートとサービスも含まれます。
出力の例(ネットワークによって異なります):
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.00031s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 5.50 seconds
この出力は、Nmap が 192.168.1.1 を走査し、ポート 80(http)が開いていることを示しています。 --scan-delay
オプションがなかった場合よりも走査に時間がかかっていることに注意してください(5.50 秒)。正確な時間は、ターゲットとネットワーク状況によって異なります。
このステップでは、 -v
(詳細モード)と --stats-every
オプションを使って Nmap 走査の進捗を追跡する方法を学びます。これらのオプションは、走査の進捗に関するリアルタイムフィードバックを提供します。これは、長時間の走査に対して特に役立ちます。
-v
オプションは、Nmap の出力の詳細レベルを増やします。 -v
を使うと、Nmap は走査に関するより多くの情報を表示します。それには、送信されるプローブ、受信される応答、および各ホストの状態が含まれます。さらに詳細な出力を得るには、 -vv
を使うことができます。
--stats-every
オプションを使うと、Nmap が走査の進捗に関する統計情報をどのくらいの間隔で表示するかを指定できます。値は秒(s)、分(m)、または時間(h)で指定します。たとえば、 --stats-every 5s
は 5 秒ごとに統計情報を表示します。
進捗を追跡することが重要な理由を理解しましょう。大規模なネットワークを走査する場合、Nmap の走査にはかなりの時間がかかることがあります。進捗情報がないと、走査がどれくらい進んでいるか、また進捗しているかどうかを知るのが難しくなります。 -v
と --stats-every
オプションは、走査の状態に関する貴重な洞察を提供します。
では、進捗追跡付きで走査を実行しましょう。 nmap -v --stats-every 5s 192.168.1.0/24
コマンドを使って、192.168.1.0/24 のネットワークを走査し、5 秒ごとに統計情報を表示します。
LabEx VM の端末を開きます。 ~/project
ディレクトリにいることを確認します。
次のコマンドを実行します:
sudo nmap -v --stats-every 5s 192.168.1.0/24
このコマンドは、Nmap に対して 192.168.1.0/24 の範囲内のすべての IP アドレスを走査し、詳細な出力を表示し、5 秒ごとに統計情報を表示するように指示します。
出力には、走査の進捗が表示されます。それには、走査されたホスト数、起動しているホスト数、および残りの推定時間が含まれます。
出力の例(ネットワークによって異なります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Initiating Ping Scan at 10:20
Scanning 256 hosts [2 ports/host]
Completed Ping Scan at 10:20, 0.23s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 256 hosts. at 10:20
Completed Parallel DNS resolution of 256 hosts. at 10:20, 1.42s elapsed
Initiating SYN Stealth Scan at 10:20
Scanning 256 hosts [1000 ports/host]
5s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
10s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
15s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
20s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
25s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.100
Host is up (0.00032s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
30s elapsed; 2 hosts completed (0.07/s). 2 hosts up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 32.50 seconds
この出力は、5 秒ごとの走査の進捗を示しています。走査されたホスト数、走査速度(ホスト/秒)、および起動しているホスト数がわかります。走査は、見つかった開いているポートも報告します。
このステップでは、 -T1
タイミングテンプレートを使って Nmap を使ってステルス走査を行う方法を探ります。ステルス走査は、侵入検知システム(IDS)やファイアウォールによって検出される可能性を最小限に抑えることを目的としています。
-T1
オプションは、「こっそり」というタイミングテンプレートとして知られています。デフォルトのテンプレートよりも遅く、目立たないように設計されています。これは、プローブ間の遅延を増やすことで達成され、対象システムの負荷を軽減し、走査が悪意のあるものとしてフラグ付けされる可能性を低くします。
本当に目に見えない走査はないことを理解することが重要です。ステルス技術を使っても、常に検出されるリスクがあります。ただし、 -T1
オプションを使うことで、そのリスクを大幅に軽減することができます。
では、 -T1
タイミングテンプレートを使って、ローカルホスト(127.0.0.1)のステルス走査を行いましょう。
LabEx VM の端末を開きます。 ~/project
ディレクトリにいることを確認します。
次のコマンドを実行します:
sudo nmap -T1 127.0.0.1
このコマンドは、Nmap に対して -T1
タイミングテンプレートを使ってローカルホスト(127.0.0.1)を走査するように指示します。ローカルホストを走査しているので、より速いタイミングテンプレート( -T4
など)を使った場合と比べて、走査は比較的早く完了するはずです。
出力には、走査結果が表示されます。それには、ローカルホストで開いているポートとサービスが含まれます。
出力の例(システム設定によって異なる場合があります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 10.50 seconds
この出力は、Nmap がローカルホストを走査し、3 つのポートが開いていることを示しています。22(ssh)、631(ipp)、9000(cslistener)です。走査には約 10.50 秒かかりました。 -T4
のようなより速いタイミングテンプレートを使った場合と比べると、走査時間が長くなる場合があります。
このステップでは、異なるタイミングテンプレートを使った Nmap 走査の実行時間を比較します。Xfce 端末を使って走査を実行し、各走査が完了するまでの時間を観察します。これにより、タイミングテンプレートが走査速度に与える影響を理解することができます。
-T1
(こっそり)と-T4
(高速)のタイミングテンプレートを比較します。この比較のために、ローカルホスト(127.0.0.1)を走査します。
LabEx VM の端末を開きます。~/project
ディレクトリにいることを確認します。
まず、-T1
タイミングテンプレートを使って走査を実行しましょう。実行時間を測定するためにtime
コマンドを使います。
次のコマンドを実行します:
time sudo nmap -T1 127.0.0.1
time
コマンドは Nmap 走査を実行し、その後完了までにかかった時間を表示します。time
コマンドが報告する「実際の」時間に注目してください。これは経過した合計時間を表します。
出力の例(時間は異なります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 10.50 seconds
real 0m10.552s
user 0m0.103s
sys 0m0.032s
この例では、「実際の」時間は 0 分 10.552 秒です。
次に、同じ走査を-T4
タイミングテンプレートを使って実行しましょう。
次のコマンドを実行します:
time sudo nmap -T4 127.0.0.1
再び、time
コマンドが報告する「実際の」時間に注目してください。
出力の例(時間は異なります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:01 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
real 0m1.285s
user 0m0.098s
sys 0m0.029s
この例では、「実際の」時間は 0 分 1.285 秒です。
2 つの走査の「実際の」時間を比較してください。-T4
タイミングテンプレートを使った走査が-T1
タイミングテンプレートを使った走査よりもはるかに速く完了することがわかるはずです。これは、速度とステルスのトレードオフを示しています。-T1
は遅いですが、よりステルス性が高く、-T4
は速いですが、おそらくより目立ちます。
この実験では、参加者は Nmap 走査のタイミングとパフォーマンスを最適化する方法を学びました。彼らは、192.168.1.0/24 ネットワークを高速かつバランスの良い走査に-T4
オプションを使い、より高い-T
値がより積極的な走査を意味することを理解しました。また、--min-parallelism 20
で並列度を高め、--scan-delay 500ms
で走査遅延を設定し、-v --stats-every 5s
で進捗を追跡し、-T1
でステルス走査をテストし、Xfce 端末でタイミングを比較しました。