Nmap の冗長度レベルでネットワークスキャンを徹底解説

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、強力なネットワークスキャンツールである Nmap を様々な詳細度レベルで使用する方法を学びます。Nmap は、コンピュータネットワーク上のホストとサービスを発見するためにセキュリティ専門家がよく選ぶツールです。Nmap の詳細度オプションを習得することで、スキャン中に表示される情報を調整でき、これは効率的なネットワーク分析とトラブルシューティングに不可欠です。

実験全体を通じて、スキャン練習用のローカルサーバーをセットアップします。また、異なる詳細度レベルがスキャン結果と表示される情報にどのように影響するかを調べます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/basic_syntax("Basic Command Syntax") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") subgraph Lab Skills nmap/installation -.-> lab-415939{{"Nmap の冗長度レベルでネットワークスキャンを徹底解説"}} nmap/basic_syntax -.-> lab-415939{{"Nmap の冗長度レベルでネットワークスキャンを徹底解説"}} nmap/save_output -.-> lab-415939{{"Nmap の冗長度レベルでネットワークスキャンを徹底解説"}} nmap/port_scanning -.-> lab-415939{{"Nmap の冗長度レベルでネットワークスキャンを徹底解説"}} nmap/verbosity -.-> lab-415939{{"Nmap の冗長度レベルでネットワークスキャンを徹底解説"}} end

ネットワークスキャンのための環境設定

この実験の最初のステップでは、あなたのマシン上にローカルウェブサーバーをセットアップします。このサーバーが、Nmap スキャンの対象となります。Nmap は、サイバーセキュリティ分野でコンピュータネットワーク上のホストとサービスを発見するために使用される強力なネットワークスキャンツールです。ローカルサーバーを用意することで、実際のネットワークに影響を与えることなく安全に Nmap の使用を練習できます。

HTTP サーバーの理解

サーバーを作成する前に、HTTP サーバーが何であるかを理解しましょう。HTTP は HyperText Transfer Protocol の略です。これは、ウェブブラウザがウェブサイトと通信するために使用するプロトコルです。HTTP サーバーは、URL(ウェブアドレス)と HTTP プロトコルを理解できるソフトウェアアプリケーションです。ブラウザにウェブアドレスを入力すると、ブラウザは対応する HTTP サーバーに HTTP リクエストを送信し、サーバーは要求されたウェブページを返します。この実験では、人気があり学びやすいプログラミング言語である Python を使用して、簡単な HTTP サーバーを作成します。

HTTP サーバーの作成

まず、正しい作業ディレクトリにいることを確認する必要があります。作業ディレクトリは、コマンドが動作するフォルダのようなものです。この場合、/home/labex/project ディレクトリにいる必要があります。このディレクトリに移動するには、次のコマンドを使用します。

cd /home/labex/project

正しい場所にいるので、Python の組み込み HTTP サーバーモジュールを使用して、簡単なウェブサーバーを作成します。このサーバーをポート 8080 で待機するように設定します。ポートは、コンピュータ上のドアのようなもので、ネットワークトラフィックが出入りすることができます。異なるサービスは異なるポートを使用します。次のコマンドを入力します。

python -m http.server --bind localhost 8080 &

このコマンドが何をするかを分解してみましょう。

  • python -m http.server: この部分は、Python の組み込み HTTP サーバーモジュールを起動します。Python に HTTP サーバー機能を実行するように指示します。
  • 8080: これは、サーバーがポート 8080 で待機するように指定します。つまり、このポートへのすべての着信 HTTP リクエストは、私たちのサーバーによって処理されます。
  • &: コマンドの最後にアンパサンドを置くと、サーバーがバックグラウンドで実行されます。これは、サーバーが実行中でもターミナルを他のコマンドに使用できるため便利です。

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

Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

この出力は、あなたの HTTP サーバーが現在実行中で、ポート 8080 で接続を受け入れる準備ができていることを示しています。このサーバーが起動して実行されているので、次のステップで Nmap を使用してスキャンできる対象ができました。

HTTP サーバーが実行中であることの確認

サーバーが実際に正しく実行されていることを確認することは重要です。これを行うには、次のコマンドを使用できます。

ss -tulwn | grep 8080

ss コマンドは、ソケット統計情報を表示するために使用されます。オプション -tulwn は、ss に TCP、UDP、待機中、および数値形式のソケット情報を表示するように指示します。| はパイプで、ss コマンドの出力を grep コマンドに渡します。grep コマンドは、出力内の文字列 8080 を検索します。サーバーが実行中の場合、このコマンドはポート 8080 で何かが待機していることを示す出力を表示し、あなたの HTTP サーバーがアクティブで Nmap スキャンの準備ができていることを確認します。

Nmap の基本とデフォルトの詳細度の理解

対象サーバーが起動して実行されているので、これから Nmap とその詳細度レベルを探索していきましょう。Nmap は Network Mapper の略で、強力なセキュリティスキャナーです。その主な目的は、コンピュータネットワーク上のホストとサービスを発見することです。これはサイバーセキュリティにおいて重要で、ネットワークの構成を理解し、潜在的なセキュリティリスクを特定することができます。

Nmap の詳細度とは何か?

Nmap では、詳細度によってスキャン中に表示される情報量が決まります。スキャン結果をどれだけ詳細にしたいかに応じて、異なる詳細度レベルを選択できます。以下は一般的な詳細度レベルの内訳です。

  • レベル 0:これはデフォルトのレベルです。標準出力を提供し、スキャンに関する基本的な情報が得られます。
  • レベル 1-v オプションを使用すると、スキャン出力により詳細な情報が表示されます。
  • レベル 2-vv オプションを使用すると、さらに詳細な情報が得られます。

デフォルトの詳細度(レベル 0)でのスキャンの実行

まずは、Nmap のデフォルトの詳細度レベルを使用して最初のスキャンを実行しましょう。これにより、追加の詳細度を指定しない場合にどのような情報が得られるかを基本的に理解できます。

nmap -p 8080 localhost > /home/labex/project/verbosity-0.txt

このコマンドを分解してみましょう。

  • nmap:これは Nmap スキャンツールを起動するコマンドです。システムに Nmap を使用してネットワークスキャンを行うように指示します。
  • -p 8080:このオプションは、Nmap にスキャンをポート 8080 のみに限定するように指示します。ポートはコンピュータ上のドアのようなもので、異なるサービスは異なるポートを使用します。ポート 8080 を指定することで、その特定のポートで実行されているサービスのみに関心があることを示します。
  • localhost:これは、ローカルマシンをスキャンしていることを示します。つまり、Nmap コマンドを実行しているのと同じコンピュータ上で実行されているサービスを確認しています。
  • > /home/labex/project/verbosity-0.txt:このコマンドの部分は、スキャンの出力を /home/labex/project ディレクトリにある verbosity-0.txt という名前のファイルにリダイレクトします。出力をファイルに保存することで、後で見直すことができます。

では、スキャン結果を表示しましょう。

cat /home/labex/project/verbosity-0.txt

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-10 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

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

この出力が何を意味するかを理解しましょう。

  • スキャンの開始時間:最初の行は、Nmap スキャンが開始された正確な時間を示しています。これは、情報が収集された時間を追跡するのに役立ちます。
  • スキャン対象localhost(IP アドレス 127.0.0.1)をスキャンしていたことがわかります。
  • ホストの状態:ホストが起動して応答しており、0.000097 秒という非常に低いレイテンシーであることを示しています。
  • ポートの状態:ポート 8080 が open 状態であり、そのポートでサービスが待機していることを示しています。
  • 実行中のサービス:ポート 8080 で実行されている可能性のあるサービスは http-proxy であることが示唆されています。
  • スキャン完了統計:最後の行は、スキャンにかかった時間に関する情報を提供しており、この場合は 0.05 秒でした。

デフォルトのレベルでは基本的な情報が提供されますが、詳細な洞察は欠けています。次のステップでは、より高い詳細度レベルがスキャンに関するより深い情報を提供する方法を探索します。

-v オプションで詳細度を上げる

ネットワークスキャンの世界では、詳細な情報を取得することが重要です。このステップでは、Nmap の詳細度レベルを上げることで、より深い詳細情報を取得する方法を学びます。Nmap の詳細度とは、スキャン中に表示される情報量を指します。詳細度レベルを 1 に設定する -v オプションを使用すると、ネットワーク分析に非常に役立つ追加情報が得られます。

詳細度を上げてスキャンを実行する

まずは、詳細度を上げてスキャンを実行しましょう。次のコマンドを使用します。

nmap -p 8080 localhost -v > /home/labex/project/verbosity-1.txt

このコマンドを分解してみましょう。

  • nmap は Nmap スキャンツールを起動するコマンドです。Nmap は強力で広く使用されているネットワーク探索およびセキュリティ監査ツールです。
  • -p 8080 は、Nmap にポート 8080 のみをスキャンするように指示します。ポートはネットワーク上のドアのようなもので、ポートを指定することで、そのポートで実行されている特定のサービスにスキャンを集中させます。
  • localhost は、ローカルマシンを対象としていることを示します。これは、Nmap が自分のシステムでどのように動作するかをテストし、理解するのに便利です。
  • -v は詳細度レベルを 1 に上げます。これは、Nmap がスキャンプロセスに関するより多くの情報を表示することを意味します。
  • > /home/labex/project/verbosity-1.txt は、スキャンの出力を /home/labex/project ディレクトリにある verbosity-1.txt という名前のファイルにリダイレクトします。出力をファイルに保存することで、後で見直すことができます。

では、スキャン結果を見てみましょう。

cat /home/labex/project/verbosity-1.txt

このコマンドを実行すると、次のようなより詳細な出力が表示されるはずです。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-10 15:35 UTC
Initiating Ping Scan at 15:35
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 15:35, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 15:35
Scanning localhost (127.0.0.1) [1 port]
Discovered open port 8080/tcp on 127.0.0.1
Completed Connect Scan at 15:35, 0.00s elapsed (1 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000089s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

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

追加情報の理解

詳細度レベル 1 では、出力に豊富な追加詳細情報が含まれています。以下に見られる内容を説明します。

  1. スキャンプロセスが段階別に分解されています。たとえば、Ping Scan と Connect Scan があります。Ping Scan はホストが到達可能かどうかを確認するために使用され、Connect Scan は特定のポートに接続を試みます。
  2. 各段階のタイミング情報が提供されています。これにより、スキャンの各部分にかかった時間を理解することができます。
  3. 開いているポートが発見された正確な時刻を見ることができます。これは、スキャンの明確なタイムラインを把握するために重要です。
  4. スキャン中に Nmap が使用したデータファイルも表示されます。これらのファイルには、Nmap がスキャンを実行するために使用するサービス、ポート、その他のネットワーク関連のデータに関する情報が含まれています。

この追加情報は非常に役立ちます。なぜなら、以下のことができるからです。

  • Nmap がスキャンを実行する方法を理解することができます。異なる段階とその発生順序を見ることで、スキャンプロセスをよりよく把握することができます。
  • スキャン中のイベントの正確なタイムラインを知ることができます。これはトラブルシューティングやネットワークの動作を理解するのに役立ちます。
  • 特定のポートとサービスがいつ発見されたかを判断することができます。これはセキュリティ評価やネットワーク管理において重要です。

詳細度レベルの比較

通常のスキャンと詳細度を上げたスキャンの違いをより明確に見るために、2 つの出力ファイルを比較しましょう。次のコマンドを使用します。

diff /home/labex/project/verbosity-0.txt /home/labex/project/verbosity-1.txt

diff コマンドは 2 つのファイルの内容を比較し、それらの違いを表示します。このコマンドの出力は、詳細度レベルを上げることでスキャンプロセスに関するより深い洞察が得られることを示します。この追加情報は、ネットワークの問題をトラブルシューティングしたり、詳細なセキュリティ評価を行ったりするときに特に役立ちます。

追加の詳細度レベル

Nmap は詳細度レベル 1 で止まるわけではありません。さらに高い詳細度レベルもサポートしています。

  • -vv は詳細度レベルを 2 に設定します。
  • -vvv は詳細度レベルを 3 に設定します。

詳細度レベルを上げるにつれて、Nmap はスキャンプロセスに関するますます詳細な情報を提供します。これは、ネットワークを深く掘り下げ、スキャンのすべての側面を理解する必要があるときに非常に役立ちます。

より高い詳細度レベルの探索と実用的なアプリケーション

このステップでは、Nmap の機能をさらに深く掘り下げます。まず、さらに高い詳細度レベルを使用して、スキャンプロセス中により詳細な情報を取得します。次に、異なる詳細度設定の実用的なアプリケーションについて学び、実際のシナリオでいつどのレベルを使用するかを理解します。

最大詳細度でスキャンを実行する

詳細度レベル 2 でスキャンを実行しましょう。Nmap では、-vv オプションを使用して詳細度レベルを設定できます。詳細度レベル 2 では、スキャンに関する大量の詳細情報が提供されます。スキャンを実行するコマンドは次の通りです。

nmap -p 8080 localhost -vv > /home/labex/project/verbosity-2.txt

このコマンドでは、-p 8080 は Nmap にポート 8080 をスキャンするように指示します。localhost はスキャン対象で、ローカルマシンを指します。-vv オプションは詳細度をレベル 2 に上げます。> 記号はスキャンの出力を /home/labex/project/verbosity-2.txt ファイルにリダイレクトします。

では、スキャン結果を調べてみましょう。cat コマンドを使用してファイルの内容を表示できます。

cat /home/labex/project/verbosity-2.txt

出力を見ると、スキャンプロセスに関するさらに多くの技術的な詳細が含まれていることに気づくでしょう。これらの詳細には以下のものが含まれます。

  • より詳細なタイミング情報:これにより、スキャンの異なる部分にかかった時間を理解することができます。
  • 追加のデバッグ情報:スキャン中に何かがうまくいかなかった場合に役立ちます。
  • より詳細なプロトコル情報:これにより、スキャンに関与するネットワークプロトコルをよりよく理解することができます。

異なる詳細度レベルの実用的なアプリケーション

異なる詳細度レベルは、異なるシナリオで役立ちます。各レベルとその実用的なアプリケーションを見てみましょう。

  1. デフォルトレベル (0):

    • デフォルトの詳細度レベルは、迅速なスキャンに最適です。ターゲットに関する基本的な情報、たとえば特定のポートが開いているか閉じているかだけが必要な場合、このレベルで十分です。
    • 定期的なチェックや簡単なネットワークマッピングにも役立ちます。たとえば、サーバーのポートの基本的な状態を迅速に確認したい場合、デフォルトレベルを使用できます。
    • 具体的なユースケースとしては、サーバー上の特定のポートが開いているかどうかを確認することが挙げられます。細かい詳細に煩わされることなく、迅速な概要を把握できます。
  2. 詳細度レベル 1 (-v):

    • このレベルは、より詳細な分析に役立ちます。デフォルトレベルよりも多くの情報を提供し、スキャンのタイムラインをよりよく理解するのに役立ちます。
    • 接続性の問題をトラブルシューティングする場合、このレベルの追加情報は非常に役立ちます。スキャンのどの部分が時間がかかっているか、またはエラーがあるかを確認できます。
    • 具体的なユースケースとしては、接続性の問題をトラブルシューティングすることが挙げられます。追加の詳細を使用して、問題の原因を特定することができます。
  3. より高い詳細度レベル (-vv, -vvv):

    • これらのレベルは、詳細な分析とデバッグに最適です。最大限の情報を提供し、セキュリティ監査に非常に役立ちます。
    • 詳細なセキュリティ評価を行う場合、またはスキャンがターゲットとどのように相互作用しているかを正確に理解する必要がある場合、より高い詳細度レベルが適しています。
    • 具体的なユースケースとしては、詳細なセキュリティ評価や、スキャンがターゲットとどのように相互作用しているかを正確に理解する必要がある場合が挙げられます。スキャンプロセスの包括的なビューを取得できます。

詳細度と他の Nmap オプションの組み合わせ

詳細度オプションは、他の Nmap オプションと組み合わせて、より強力なスキャンを実行することができます。次のコマンドを使用して、より高度なスキャンを試してみましょう。

nmap -p 8080 -sV localhost -v > /home/labex/project/advanced-scan.txt

このコマンドを分解してみましょう。

  • -p 8080 は、ポート 8080 をスキャンすることを指定します。
  • -sV はバージョン検出を有効にします。このオプションは、スキャンされたポートで実行されているサービスのバージョンを判断しようとします。
  • -v は詳細度をレベル 1 に上げるので、スキャンプロセスに関するより詳細な情報が得られます。
  • > 記号はスキャンの出力を /home/labex/project/advanced-scan.txt ファイルにリダイレクトします。

では、スキャン結果を見てみましょう。

cat /home/labex/project/advanced-scan.txt

-sV を追加することで、ポート 8080 で実行されているサービスのバージョンに関する情報が提供されることに気づくでしょう。同時に、-v オプションにより、スキャンプロセスに関する詳細情報が得られ、結果の分析が容易になります。

クリーンアップ

この実験を終える前に、先ほど作成した HTTP サーバーを適切にシャットダウンする必要があります。これには次のコマンドを使用できます。

pkill -f "python -m http.server"

このコマンドは、ポート 8080 で実行されている Python HTTP サーバープロセスを終了します。将来的な競合やリソース使用の問題を避けるために、適切にクリーンアップすることが重要です。

まとめ

この実験では、ネットワークスキャン中に表示される情報を制御するために、Nmap の詳細度レベルをどのように効果的に使用するかを学びました。基本的なローカル HTTP サーバーのセットアップから始めて、異なる詳細度レベルが Nmap のスキャン出力にどのように影響するかを調べました。

デフォルトの詳細度レベル (0) では、開いているポートとサービスに関する基本的な詳細情報が得られることがわかりました。-v オプションを使用すると詳細度が上がり、スキャンプロセスに関するより多くの洞察が得られます。-vv-vvv のようなより高いレベルでは、詳細な技術情報が提供され、詳細な分析が可能になります。詳細度オプションは、他の Nmap の手法と組み合わせて、より強力なネットワーク分析を行うこともできます。これらのスキルは、ネットワーク管理者やセキュリティ専門家にとって重要であり、効率的にネットワークデータを収集し、特定のタスクに合わせたスキャンを行うことができます。