Nmap コマンドの構文を理解する

NmapBeginner
オンラインで実践に進む

はじめに

この実験では、Nmap コマンドの構文を理解する方法を学びます。まず、Xfce でターミナルを開き、コマンド nmap 127.0.0.1 を使ってローカル システムで基本的な Nmap スキャンを実行するように案内されます。また、-h でヘルプを表示したり、-v で詳細度を上げたり、-d でデバッグを有効にしたり、オプションを組み合わせるなど、様々なオプションを探ります。最後に、nmap -v 192.168.1.1 を使ってローカル ネットワークで構文をテストします。

Xfce でターミナルを開き、nmap 127.0.0.1 を実行する

このステップでは、Nmap(Network Mapper)ツールを使ってローカル システムをスキャンする方法を学びます。Nmap は、パケットを送信して応答を分析することで、コンピュータ ネットワーク上のホストとサービスを見つけることができる強力なネットワーク スキャン ユーティリティです。

Nmap の基本を理解する

Nmap は、システム管理者やセキュリティ プロフェッショナルが一般的に使用するもので、以下の目的に役立ちます。

  • ネットワークのインベントリ作成とマッピング
  • ネットワーク ホスト上の開いているポートを見つける
  • 実行中のサービスとそのバージョンを特定する
  • セキュリティ監査と脆弱性評価

Xfce でターミナルを開く

Nmap を使う前に、Xfce デスクトップ環境でターミナルを開く必要があります。

  1. Xfce パネル(通常は画面の上部または下部にあります)にあるターミナル アイコンを探します。
  2. あるいは、キーボード ショートカット Ctrl+Alt+T を使ってターミナル ウィンドウを開くこともできます。
  3. デスクトップ上で右クリックし、コンテキスト メニューから「ここでターミナルを開く」を選択することもできます。

最初の Nmap スキャンを実行する

ターミナルを開いたので、ローカル マシン(localhost)で最初の Nmap スキャンを実行します。IP アドレス 127.0.0.1 は常に、現在使用しているローカル マシンを指します。

  1. ターミナルで、デフォルト ディレクトリに移動していることを確認します。
cd ~/project
  1. 次のコマンドを実行して、localhost をスキャンします。
nmap 127.0.0.1
  1. スキャンが完了するのを待ちます。システムによっては数秒かかる場合があります。

出力を理解する

コマンドを実行した後、以下のような出力が表示されるはずです。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-21 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
3306/tcp open  mysql

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

この出力を分析してみましょう。

  • ヘッダーには Nmap のバージョンとスキャン開始時刻が表示されます。
  • "Host is up" は、対象(ローカル マシン)がオンラインであることを確認します。
  • "Not shown: 997 closed ports" は、ほとんどのポートが閉じていることを示しています。
  • リストには、どのポートが開いており、そこに何のサービスが実行されているかが表示されます。
  • サマリ ラインには、スキャン統計が表示されます。

注:実際の結果は異なる場合があります。開いているポートは、LabEx VM 上で現在実行されているサービスに依存します。

この基本的なスキャンは、システム上でどのネットワーク サービスがアクティブであるかに関する重要な情報を提供し、さらなるセキュリティ分析やトラブルシューティングの基礎を築きます。

nmap -h で Nmap のヘルプを表示する

このステップでは、Nmap の組み込みのヘルプ ドキュメントにアクセスする方法を学びます。ヘルプ情報をどのようにアクセスして使用するかを理解することは、Nmap を含む任意のコマンド ライン ツールを習得する上で重要です。

なぜヘルプ オプションを使うのか

コマンド ライン ツールには、多くのオプションと機能があり、覚えるのが難しい場合があります。ヘルプ オプションは、利用可能なコマンドとその構文、簡単な説明をすばやく参照できるようにします。Nmap の場合、ヘルプ ドキュメントは、さまざまなシナリオに対する多くのスキャン オプションがあるため、特に価値があります。

Nmap のヘルプ情報を表示する

Nmap のヘルプ情報を表示するには、次の手順に従います。

  1. 前のステップで使用していたターミナル ウィンドウで作業していることを確認します。

  2. 必要に応じて、デフォルト ディレクトリに戻ります。

cd ~/project
  1. 次のコマンドを実行して、Nmap のヘルプ情報を表示します。
nmap -h

出力を理解する

コマンドを実行すると、次のような包括的なヘルプ出力が表示されます。

  • 基本的な使用構文
  • 対象指定オプション
  • ホスト探索オプション
  • スキャン手法
  • ポート指定オプション
  • サービス/バージョン検出
  • タイミングとパフォーマンス オプション
  • その他の多くのカテゴリ

以下は、表示される内容の一部の例です。

Nmap 7.80 ( https://nmap.org )
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
  Can pass hostnames, IP addresses, networks, etc.
  Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename>: Input from list of hosts/networks
  -iR <num hosts>: Choose random targets
 ...

注目すべき重要なセクション

ヘルプ情報を見直しているときは、次の重要なセクションに特に注意してください。

  1. 対象指定:異なる種類の対象(単一のホスト、IP 範囲など)を指定する方法を示します。
  2. スキャン手法:Nmap が実行できる異なる種類のスキャン
  3. 出力オプション:Nmap が結果を表示する方法を制御する方法
  4. タイミング テンプレート:スキャン速度と攻撃性を制御するオプション

ヘルプ情報を効果的に使用する

ヘルプ ドキュメントは広範囲であるため、すべてのオプションを暗記する必要はありません。代わりに、一般的なカテゴリを理解し、必要に応じてすばやくヘルプにアクセスできる方法を知ることに焦点を当てましょう。

この実験の次のステップでは、このヘルプ ドキュメントで見たオプションの一部、特に詳細度 (-v) とデバッグ (-d) オプションを使用します。

nmap -v 127.0.0.1 で詳細度を上げる

このステップでは、-v オプションを使って Nmap スキャンの詳細度を上げる方法を学びます。詳細度は、Nmap がスキャン プロセス中に表示する情報量を制御します。これは、裏で何が起こっているかを理解するのに非常に役立ちます。

Nmap における詳細度の理解

Nmap のようなコマンド ライン ツールを実行すると、デフォルトの出力には通常、必要な最低限の情報のみが表示されます。ただし、以下のことに関するより詳細な情報が必要な場合があります。

  • ツールが各ステップで何をしているか
  • スキャンのタイミング情報
  • 見つけられたホストとサービスに関する追加の詳細
  • 警告メッセージと小さな問題

-v フラグ(「verbose」の略)は、Nmap に対して、その操作中により詳細な出力を提供するよう指示します。

詳細度を上げる利点

詳細度を上げると、以下の場合に特に役立ちます。

  1. スキャンの問題をトラブルシューティングするとき
  2. Nmap の仕組みを学ぶとき
  3. ネットワークの動作に関するより深い洞察を得るとき
  4. スキャン設定に潜在的な問題を特定するとき
  5. 分析用のより包括的なデータを収集するとき

詳細度を上げて Nmap を実行する

詳細度を上げて Nmap スキャンを実行しましょう。

  1. 前のステップで使用していたターミナル ウィンドウにいることを確認します。

  2. 必要に応じて、デフォルトのプロジェクト ディレクトリに戻ります。

cd ~/project
  1. 次のコマンドを実行して、localhost の詳細なスキャンを行います。
nmap -v 127.0.0.1

詳細な出力を分析する

詳細オプションが有効になっていると、ステップ 1 で行った基本的なスキャンと比べて、はるかに多くの出力が表示されることに気付きます。以下は、表示される内容の一部の例です。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-21 16:45 UTC
Initiating Ping Scan at 16:45
Scanning 127.0.0.1 [2 ports]
Completed Ping Scan at 16:45, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 16:45
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Discovered open port 3306/tcp on 127.0.0.1
Completed Connect Scan at 16:45, 0.03s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
3306/tcp open  mysql

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

詳細な出力における主な違い

標準的なスキャンにはなかった以下の追加情報に注目してください。

  1. スキャン フェーズ:詳細な出力には、「Initiating Ping Scan」や「Initiating Connect Scan」などの明確なフェーズが表示されます。
  2. リアルタイムの発見:最終レポートではなく、各開いたポートが見つかるたびに表示されます。
  3. タイミング情報:各フェーズにかかった時間に関するより詳細な情報
  4. 技術的な詳細:スキャンがどのように行われたかに関する情報

複数の詳細度レベル

Nmap は複数の詳細度レベルをサポートしています。複数の -v オプションを使うことで、さらに詳細度を上げることができます。

nmap -vv 127.0.0.1  ## さらに詳細
nmap -vvv 127.0.0.1 ## 非常に詳細

ほとんどの場合、単一の -v が、過度の詳細で圧倒されることなく、適切な情報のバランスを提供します。

次のステップでは、スキャン プロセスに関するさらに多くの情報を提供する追加の Nmap オプションを探ります。

nmap -d 127.0.0.1 でデバッグを有効にする

このステップでは、-d オプションを使って Nmap のデバッグ モードを有効にする方法を学びます。前のステップで使用した詳細度オプション -v は、より多くの操作の詳細を提供しますが、デバッグは Nmap の内部動作を明らかにすることでさらに深入りします。

Nmap におけるデバッグの理解

デバッグは、詳細度よりも高度なレベルの情報出力です。詳細度は、Nmap が何をしているかに関するより多くの操作の詳細を提供することに焦点を当てていますが、デバッグは以下を明らかにします。

  • 内部アルゴリズムと意思決定プロセス
  • パケット レベルの情報
  • Nmap がシステムとどのように相互作用しているかに関する技術的詳細
  • 低レベルのプロトコル情報
  • メモリとリソース割り当ての詳細

デバッグ モードを使用する場合

デバッグ出力は、以下のシナリオで特に役立ちます。

  1. 複雑なスキャンの問題をトラブルシューティングするとき
  2. Nmap が特定の方法で動作する理由を理解するとき
  3. ネットワーク プロトコルとスキャン手法を学ぶとき
  4. Nmap 用のスクリプトや拡張機能を開発するとき
  5. 異常なネットワークの動作を調査するとき

デバッグを有効にして Nmap を実行する

デバッグを有効にして Nmap スキャンを実行しましょう。

  1. 前のステップで使用していたターミナル ウィンドウにいることを確認します。

  2. 必要に応じて、デフォルトのプロジェクト ディレクトリに戻ります。

cd ~/project
  1. 次のコマンドを実行して、localhost のデバッグ有効なスキャンを行います。
nmap -d 127.0.0.1

デバッグ出力を分析する

コマンドを実行すると、前のステップで使用した詳細モードと比べて、出力が大幅に増えることに気付きます。デバッグ情報は非常に技術的で、以下の詳細な情報を含みます。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-21 17:30 UTC
--------------- Timing report ---------------
  hostgroups: min 1, max 100000
  rtt-timeouts: init 1000, min 100, max 10000
  max-scan-delay: TCP 1000, UDP 1000, SCTP 1000
  parallelism: min 0, max 0
  max-retries: 10, host-timeout: 0
  min-rate: 0, max-rate: 0
---------------------------------------------
NSOCK INFO [0.0100s] nsock_iod_new2(): nsock_iod_new (IOD #1)
NSOCK INFO [0.0100s] nsock_connect_tcp(): TCP connection requested to 127.0.0.1:80 (IOD #1) EID 8
NSOCK INFO [0.0100s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [127.0.0.1:80]
NSOCK INFO [0.0100s] nsock_read(): Read request from IOD #1 [127.0.0.1:80] (timeout: -1ms) EID 18
NSOCK INFO [0.0100s] nsock_iod_delete(): nsock_iod_delete (IOD #1)
...

デバッグ出力の主要なコンポーネント

デバッグ出力には、いくつかの主要なコンポーネントが含まれます。

  1. タイミング レポート:スキャンで使用されるタイミング パラメータに関する詳細情報
  2. NSOCK 情報:ネットワーク ソケット操作の詳細
  3. 生のパケット データ:送信および受信されているパケットに関する情報
  4. メモリ操作:メモリ割り当てと使用に関する詳細
  5. プロトコル固有の情報:Nmap がさまざまなプロトコルとどのように相互作用するかに関する低レベルの詳細

Nmap のデバッグ レベル

詳細度と同様に、Nmap は複数のデバッグ レベルをサポートしています。以下を使うことで、デバッグの詳細度をさらに高めることができます。

nmap -dd 127.0.0.1  ## より詳細なデバッグ
nmap -ddd 127.0.0.1 ## 非常に詳細なデバッグ

ほとんどのトラブルシューティング シナリオでは、単一の -d が、過度の技術的詳細で圧倒されることなく、十分な情報を提供します。

デバッグ情報の実際の使用

デバッグ情報は最初は圧倒的に見えるかもしれませんが、特定のコンポーネントは非常に役立つ場合があります。

  • ネットワーク接続の問題は、多くの場合、NSOCK セクションに表示されます。
  • スキャンのタイミングの問題は、タイミング レポートを使用して診断できます。
  • プロトコル固有の問題は、プロトコル セクションで特定できます。

次のステップでは、詳細度とデバッグ オプションを組み合わせて、スキャン プロセスのさらに包括的なビューを得る方法を学びます。

nmap -v -d 127.0.0.1 でオプションを組み合わせる

このステップでは、Nmap の複数のコマンド ライン オプションを組み合わせて、1 回のスキャンで詳細度とデバッグの両方の利点を得る方法を学びます。この強力なアプローチは、Nmap スキャン中に何が起こっているかを最も包括的に把握するためのものです。

Nmap におけるコマンド ライン オプションの組み合わせ

Nmap のようなコマンド ライン ツールの大きな強みの 1 つは、異なるオプションを組み合わせてコマンドの動作と出力をカスタマイズする能力です。前のステップでは、以下のオプションを使用していました。

  • -v(詳細度)で、より多くの操作の詳細を取得する
  • -d(デバッグ)で、内部の技術情報を表示する

これらのオプションを 1 つのコマンドで組み合わせることで、別々のスキャンを実行する必要なく、両方の利点を得ることができます。

オプションを組み合わせる利点

詳細度とデバッグを組み合わせると、いくつかの利点があります。

  1. 完全な情報:高レベルの操作の詳細と低レベルの技術情報の両方を得ることができます。
  2. 効率的なスキャン:複数のスキャンを実行する代わりに、1 回の操作ですべての情報を収集できます。
  3. 相関のある出力:情報が時系列順に表示されるため、イベントを結び付けるのが容易になります。
  4. 包括的なトラブルシューティング:ネットワークの問題を解決する際に、すべての情報がすぐに利用できることで、問題解決のスピードを上げることができます。

組み合わせたオプションで Nmap を実行する

詳細度とデバッグの両方を有効にして Nmap スキャンを実行しましょう。

  1. 前のステップで使用していたターミナル ウィンドウにいることを確認します。

  2. 必要に応じて、デフォルトのプロジェクト ディレクトリに戻ります。

cd ~/project
  1. 次のコマンドを実行して、詳細度とデバッグの両方を有効にしたスキャンを行います。
nmap -v -d 127.0.0.1

組み合わせた出力を分析する

コマンドを実行すると、両方のオプションの利点を組み合わせた非常に詳細な出力が表示されます。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-21 18:15 UTC
--------------- Timing report ---------------
  hostgroups: min 1, max 100000
  rtt-timeouts: init 1000, min 100, max 10000
  max-scan-delay: TCP 1000, UDP 1000, SCTP 1000
  parallelism: min 0, max 0
  max-retries: 10, host-timeout: 0
  min-rate: 0, max-rate: 0
---------------------------------------------
Initiating Ping Scan at 18:15
Scanning 127.0.0.1 [2 ports]
NSOCK INFO [0.0100s] nsock_iod_new2(): nsock_iod_new (IOD #1)
NSOCK INFO [0.0100s] nsock_connect_tcp(): TCP connection requested to 127.0.0.1:80 (IOD #1) EID 8
NSOCK INFO [0.0100s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [127.0.0.1:80]
Completed Ping Scan at 18:15, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 18:15
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
...

組み合わせた出力を比較する

出力には、以下のようになっていることに注目してください。

  1. タイミング レポート:デバッグ オプション (-d) から
  2. スキャン フェーズ情報:詳細度オプション (-v) から
  3. NSOCK 情報:デバッグ オプション (-d) から
  4. ポート発見情報:詳細度オプション (-v) から

この組み合わせた出力は、高レベルと低レベルの両方の視点から、Nmap が何をしているかを最も包括的に把握するためのものです。

代替の順序と形式

オプションを異なる順序で指定したり、1 つのフラグに組み合わせたりすることもできます。これらのコマンドはすべて同等です。

nmap -v -d 127.0.0.1
nmap -d -v 127.0.0.1
nmap -vd 127.0.0.1

読みやすさや入力しやすさが最適な形式を選択してください。

両方のレベルを同時に増やす

詳細度とデバッグ レベルの両方を同時に増やすこともできます。

nmap -vv -dd 127.0.0.1

これにより、さらに詳細な情報が得られますが、ほとんどの場合、それぞれの 1 つのレベルで十分です。

実際の応用例

この組み合わせたアプローチは、以下の場合に特に役立ちます。

  1. 学習:Nmap が何をしているかとそれがどのように行われているかを理解すること
  2. トラブルシューティング:利用可能なすべての情報を使って複雑なスキャンの問題を診断すること
  3. ネットワーク分析:ネットワークがさまざまな種類のスキャンにどのように応答するかに関する詳細な洞察を得ること
  4. ドキュメント作成:分析や比較のためのネットワークの動作の包括的な記録を作成すること

次のステップでは、学んだことを応用して、ネットワーク上の別のターゲットをスキャンします。

nmap -v 192.168.1.1 を使ってローカルネットワークで構文をテストする

このステップでは、localhost だけでなく、ローカル ネットワーク上のデバイスを対象にして Nmap スキャンの知識を拡充します。これは重要な進歩です。なぜなら、Nmap のようなネットワーク スキャン ツールは主にリモート ホストを発見して分析するために設計されているからです。

ローカル ネットワーク スキャンの理解

これまで、あなたは自分自身のマシンを指すループバック アドレス 127.0.0.1 をスキャンしてきました。ローカル ネットワークをスキャンするには、コンピュータと同じネットワークに接続されている他のデバイスを対象にする必要があります。

アドレス 192.168.1.1 は、多くの家庭や小規模オフィス ネットワークでデフォルト ゲートウェイ(ルーター)アドレスとして一般的に使用されています。このため、多くの場合応答するため、練習のための便利な対象になります。

ネットワーク アドレスと localhost の違い

ここでは、ネットワーク アドレスをスキャンすることと localhost をスキャンすることの違いを説明します。

項目 localhost (127.0.0.1) ネットワーク アドレス (192.168.1.1)
対象 自分自身のマシン ネットワーク上の別のデバイス
トラフィック 内部のみ(ネットワーク パケットなし) インターフェイスを介したネットワーク トラフィック
セキュリティ ファイアウォール/NAT トラバーサルなし ネットワーク境界を越える場合があります
応答時間 非常に速い ネットワーク状況に依存します
結果 予測可能性が高い 対象の設定によって異なります

ネットワーク スキャンの実行

これまで学んだ詳細度を使って、一般的なネットワーク アドレスをスキャンしましょう。

  1. 前のステップで使用していたターミナル ウィンドウにいることを確認します。

  2. 必要に応じて、デフォルトのプロジェクト ディレクトリに戻ります。

cd ~/project
  1. 次のコマンドを実行して、詳細度を有効にして一般的なデフォルト ゲートウェイ アドレスをスキャンします。
nmap -v 192.168.1.1

出力の分析

LabEx 環境でこのコマンドを実行すると、以下のような出力が表示される場合があります。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-21 19:30 UTC
Initiating Ping Scan at 19:30
Scanning 192.168.1.1 [2 ports]
Completed Ping Scan at 19:30, 3.01s elapsed (1 total hosts)
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.12 seconds

"Host seems down" の意味

LabEx 環境(コンテナ)では、「Host seems down」というメッセージが表示される場合があります。これは以下の理由によるものです。

  1. コンテナ ネットワークは通常の LAN 環境から隔離されています。
  2. コンテナのネットワークに IP アドレス 192.168.1.1 が存在しない場合があります。
  3. 外部アドレスへのネットワーク トラフィックがフィルタリングされる場合があります。

これは、実験環境における通常の予想される動作です。192.168.1.1 が存在する実際のネットワークでは、異なる結果が表示されます。

-Pn を使ってホスト検出をスキップする

Nmap がホストが起動しているかどうかを判断できない場合、-Pn オプションを使ってホスト検出フェーズをスキップし、ポート スキャンを続行することができます。

nmap -v -Pn 192.168.1.1

これにより、Nmap に対象ホストが起動していると仮定させ、ピング応答に関係なくポートをスキャンするように指示します。

代替の対象をスキャンする

コンテナ環境では、一般的なネットワーク アドレスに到達できない場合があります。以下は試すことができる代替策です。

  1. 公開 DNS サーバをスキャンする(注意:教育目的のみで、注意深く実施してください):
nmap -v 8.8.8.8
  1. 別のループバック アドレスをスキャンする:
nmap -v 127.0.0.2

学んだこと

この実験環境でスキャンが実際のホストに到達しなかったとしても、重要な概念を学びました。

  1. Nmap を使って localhost 以外のネットワーク アドレスをスキャンする方法
  2. localhost とネットワーク デバイスをスキャンする違い
  3. "host seems down" のような一般的なスキャン結果を解釈する方法
  4. ネットワーク スキャンで詳細度を使う方法
  5. スキャン ツールを使用する際のネットワーク コンテキストの重要性

これらのスキルは、許可を得ている実際の環境でのより高度なネットワーク スキャンの基礎を形成します。

倫理的な配慮事項

現実のシナリオでは、自分が所有しているか、許可を得ているネットワークとデバイスのみをスキャンすることを忘れないでください。不正なスキャンは以下のような場合があります。

  1. ネットワーク プロバイダの利用規約に違反する場合
  2. 一部の管轄区域では潜在的に違法な場合
  3. ネットワーク管理者にとって疑わしいまたは敵対的と見なされる場合
  4. ネットワーク操作に対して潜在的な混乱を引き起こす場合

常に責任感を持ってスキャンを行ってください。

まとめ

この実験では、参加者は Nmap コマンドの構文を学びます。まず、Xfce デスクトップ環境でターミナルを開き、nmap 127.0.0.1 コマンドを使用してローカル マシンで基本的な Nmap スキャンを実行します。また、Nmap の一般的な用途、たとえばネットワーク インベントリ、開いているポートの検索、セキュリティ監査などについても学びます。さらに、-h でヘルプを表示したり、-v で詳細度を増やしたり、-d でデバッグを有効にしたり、オプションを組み合わせたり、nmap -v 192.168.1.1 でローカル ネットワークで構文をテストしたりするなど、さまざまなオプションを探ります。