Nmap スキャンのトラブルシューティング

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、パケットトレーシングとデバッグ技術を使って Nmap スキャンのトラブルシューティング方法を学びます。この実験では、--packet-trace オプションを使って Nmap スキャンを実行してネットワークパケットを観察し、-d2 でデバッグレベル 2 を有効にし、トレーシングとデバッグを組み合わせる方法を案内します。

また、-oN を使ってトレース出力をファイルに保存し、Xfce 端末内のパケット詳細を分析してスキャンの問題を特定する方法も学びます。この実験では、nmap --packet-trace 192.168.1.1nmap -d2 127.0.0.1nmap --packet-trace -oN trace.txt 127.0.0.1 などのコマンドを使って、Nmap スキャンの問題診断の実践的な経験を提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/stealth_scanning("Stealth and Covert Scanning") subgraph Lab Skills nmap/output_formats -.-> lab-547117{{"Nmap スキャンのトラブルシューティング"}} nmap/save_output -.-> lab-547117{{"Nmap スキャンのトラブルシューティング"}} nmap/port_scanning -.-> lab-547117{{"Nmap スキャンのトラブルシューティング"}} nmap/target_specification -.-> lab-547117{{"Nmap スキャンのトラブルシューティング"}} nmap/verbosity -.-> lab-547117{{"Nmap スキャンのトラブルシューティング"}} nmap/service_detection -.-> lab-547117{{"Nmap スキャンのトラブルシューティング"}} nmap/stealth_scanning -.-> lab-547117{{"Nmap スキャンのトラブルシューティング"}} end

nmap --packet-trace 192.168.1.1 を使ったパケットトレース付きのスキャン実行

このステップでは、Nmap に --packet-trace オプションを使って、スキャン中に送信および受信されるパケットを観察します。これは、Nmap がネットワークレベルで何をしているかを正確に理解できる強力なデバッグツールです。

始める前に、パケットトレーシングとは何かについて簡単に説明しましょう。パケットトレーシングとは、2 つ以上のデバイス間の通信を理解するために、ネットワークパケットをキャプチャして分析することです。Nmap の --packet-trace オプションは、Nmap 内から直接これらのパケットを表示する簡略化された方法を提供します。

パケットトレーシング付きでスキャンを実行するには、次の手順に従います。

  1. ターミナルを開く:既に開いていない場合は、Xfce ターミナルを起動します。
  2. Nmap コマンドを実行する:ターミナルで次のコマンドを入力して Enter キーを押します。
    sudo nmap --packet-trace 192.168.1.1
    • sudo:このコマンドは、ネットワークパケットをキャプチャするために root 権限が必要です。
    • nmap:これはコマンドラインの Nmap スキャナです。
    • --packet-trace:このオプションは、Nmap に送信および受信するパケットのトレースを表示するように指示します。
    • 192.168.1.1:これは対象の IP アドレスです。この IP アドレスがネットワーク上で利用できない場合は、LabEx VM からアクセス可能なデバイスの IP アドレスに置き換えることができます。一般的な代替としては 127.0.0.1(localhost)があります。
  3. 出力を観察する:Nmap は現在、対象の IP アドレスのスキャンを実行し、送信および受信された各パケットに関する詳細情報を表示します。出力には、パケットの種類(たとえば SYN、ACK)、送信元および宛先の IP アドレスとポート、その他の関連情報が表示されます。
    出力は次のようになります(正確な出力は、ネットワークと対象ホストによって異なります)。
    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
    SENT (0.0034s) to 192.168.1.1: TCP 192.168.1.100:54321 > 192.168.1.1:80 S ttl=64 id=12345 win=65535
    RECV (0.0045s) from 192.168.1.1: TCP 192.168.1.1:80 > 192.168.1.100:54321 SA ttl=64 id=67890 win=14600
    SENT (0.0045s) to 192.168.1.1: TCP 192.168.1.100:54321 > 192.168.1.1:80 A ttl=64 id=12346 win=65535
    ...
    Nmap done: 1 IP address (1 host up) scanned in 0.123 seconds
    各行は 1 つのパケットを表します。SENT は Nmap が送信したパケットを示し、RECV は Nmap が受信したパケットを示します。SENT または RECV の後に続く情報は、パケットのプロトコル(TCP)、送信元および宛先の IP アドレスとポート、フラグ(SYN の場合は S、ACK の場合は A、SYN-ACK の場合は SA)、TTL(Time To Live)、ID、およびウィンドウサイズを記述します。
  4. スキャンを中断する:スキャンはしばらく続きます。Ctrl+C を押すことで中断できます。

このステップでは、--packet-trace オプションを使って Nmap のネットワーク活動を洞察する方法を示しました。次のステップでは、他のデバッグオプションと技術を探ります。

nmap -d2 127.0.0.1 を使ってデバッグレベル 2 を有効にする

このステップでは、Nmap においてデバッグレベル 2 を有効にします。デバッグ出力は、Nmap の内部操作に関する詳細情報を提供します。これは、Nmap がどのように機能するかを理解し、問題のトラブルシューティングする際に役立ちます。

Nmap のデバッグレベルは 1 から 9 までです。レベルが高いほど、より詳細な出力が得られます。このステップでは、詳細と読みやすさのバランスが良いデバッグレベル 2 を使用します。

デバッグレベル 2 を有効にするには、次の手順に従います。

  1. ターミナルを開く:既に開いていない場合は、Xfce ターミナルを起動します。
  2. Nmap コマンドを実行する:ターミナルで次のコマンドを入力して Enter キーを押します。
    sudo nmap -d2 127.0.0.1
    • sudo:このコマンドは、スキャンの種類に応じて root 権限が必要になる場合があります。
    • nmap:これはコマンドラインの Nmap スキャナです。
    • -d2:このオプションは、デバッグレベルを 2 に設定します。
    • 127.0.0.1:これは対象の IP アドレスであり、ループバックアドレス(localhost)です。
  3. 出力を観察する:Nmap は現在、localhost のスキャンを実行し、デバッグ情報をターミナルに表示します。出力には、Nmap の設定の詳細、送信するプローブ、および受信する応答に関する情報が含まれます。
    出力は次のようになります(正確な出力は異なります)。
    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
    --------------- Timing report ---------------
      hostgroups: min 1, max 1024
      rtt-timeouts: init 1250, min 100, max 10000
      max-scan-delay: 0 ms, brtt 1250 ms, rttvar 625 ms
      parallelism: min 1, max 256
    ---------------------------------------------
    ...
    Nmap done: 1 IP address (1 host up) scanned in 0.123 seconds
    出力には、スキャン中に Nmap が行ったさまざまな内部パラメータと判断が表示されます。この詳細度は、Nmap がどのように動作しているかを理解し、問題を診断する際に役立ちます。
  4. スキャンを中断する:スキャンはしばらく続きます。Ctrl+C を押すことで中断できます。

このステップでは、Nmap においてデバッグレベル 2 を有効にする方法を示しました。次のステップでは、さらに詳細な分析のために、パケットトレーシングとデバッグ出力を組み合わせます。

nmap --packet-trace -d 192.168.1.1 を使ってトレースとデバッグを組み合わせる

このステップでは、--packet-trace-d オプションを組み合わせて、Nmap の操作を包括的に把握します。これにより、パケットレベルの詳細と内部デバッグ情報の両方が得られ、高度なトラブルシューティングや Nmap の動作を理解する際に非常に役立ちます。

パケットトレーシングとデバッグを組み合わせるには、次の手順に従います。

  1. ターミナルを開く:既に開いていない場合は、Xfce ターミナルを起動します。
  2. Nmap コマンドを実行する:ターミナルで次のコマンドを入力して Enter キーを押します。
    sudo nmap --packet-trace -d 192.168.1.1
    • sudo:このコマンドは、ネットワークパケットをキャプチャするために root 権限が必要です。
    • nmap:これはコマンドラインの Nmap スキャナです。
    • --packet-trace:このオプションは、Nmap に送信および受信するパケットのトレースを表示するように指示します。
    • -d:このオプションはデバッグ出力を有効にします。デフォルトでは、デバッグレベルを 1 に設定します。-d2-d3 などを使って、デバッグレベルを上げることができます。この場合、デフォルトのレベル 1 を使用しています。
    • 192.168.1.1:これは対象の IP アドレスです。この IP アドレスがネットワーク上で利用できない場合は、LabEx VM からアクセス可能なデバイスの IP アドレスに置き換えることができます。一般的な代替としては 127.0.0.1(localhost)があります。
  3. 出力を観察する:Nmap は現在、対象の IP アドレスのスキャンを実行し、パケットトレースとデバッグ情報の両方をターミナルに表示します。出力は、パケットの詳細(ステップ 1 で見た通り)と Nmap の内部メッセージ(ステップ 2 で見た通り)の混合になります。
    出力は次のようになります(正確な出力は、ネットワークと対象ホストによって異なります)。
    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
    SENT (0.0034s) to 192.168.1.1: TCP 192.168.1.100:54321 > 192.168.1.1:80 S ttl=64 id=12345 win=65535
    RECV (0.0045s) from 192.168.1.1: TCP 192.168.1.1:80 > 192.168.1.100:54321 SA ttl=64 id=67890 win=14600
    NSE: Using Lua engine for script processing.
    SENT (0.0045s) to 192.168.1.1: TCP 192.168.1.100:54321 > 192.168.1.1:80 A ttl=64 id=12346 win=65535
    ...
    Nmap done: 1 IP address (1 host up) scanned in 0.123 seconds
    SENTRECV の行が、NSE: Using Lua engine for script processing. のようなデバッグメッセージと交錯して表示されます。
  4. スキャンを中断する:スキャンはしばらく続きます。Ctrl+C を押すことで中断できます。

このステップでは、Nmap においてパケットトレーシングとデバッグ出力を組み合わせる方法を示しました。この組み合わせは、Nmap スキャンの理解とトラブルシューティングに強力なツールを提供します。

nmap --packet-trace -oN trace.txt 127.0.0.1 でトレース出力を保存する

このステップでは、パケットトレース出力をファイルに保存して、後で分析します。これは、パケットの詳細をもっと詳しく調べたい場合や、出力を他の人と共有したい場合に便利です。Nmap は、さまざまな形式でスキャン結果を保存するためのいくつかのオプションを提供しています。ここでは、通常の出力形式 (-oN) を使ってパケットトレースを保存します。

パケットトレース出力をファイルに保存するには、次の手順に従います。

  1. ターミナルを開く:既に開いていない場合は、Xfce ターミナルを起動します。
  2. Nmap コマンドを実行する:ターミナルで次のコマンドを入力して Enter キーを押します。
    sudo nmap --packet-trace -oN trace.txt 127.0.0.1
    • sudo:このコマンドは、スキャンの種類に応じて root 権限が必要になる場合があります。
    • nmap:これはコマンドラインの Nmap スキャナです。
    • --packet-trace:このオプションは、Nmap に送信および受信するパケットのトレースを表示するように指示します。
    • -oN trace.txt:このオプションは、出力を通常の形式で trace.txt ファイルに保存することを指定します。ファイルは現在のディレクトリ (~/project) に作成されます。
    • 127.0.0.1:これは対象の IP アドレスであり、ループバックアドレス(localhost)です。
  3. 出力を観察する:Nmap は localhost のスキャンを実行し、パケットトレースをターミナルに表示すると同時に、trace.txt ファイルに保存します。
    ターミナル出力は次のようになります。
    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
    SENT (0.0034s) to 127.0.0.1: TCP 127.0.0.1:54321 > 127.0.0.1:80 S ttl=64 id=12345 win=65535
    RECV (0.0045s) from 127.0.0.1: TCP 127.0.0.1:80 > 127.0.0.1:54321 SA ttl=64 id=67890 win=14600
    SENT (0.0045s) to 127.0.0.1: TCP 127.0.0.1:54321 > 127.0.0.1:80 A ttl=64 id=12346 win=65535
    ...
    Nmap done: 1 IP address (1 host up) scanned in 0.123 seconds
  4. ファイルの作成を確認する:スキャンが完了した後、~/project ディレクトリに trace.txt ファイルが作成されたことを確認します。確認するには、ls コマンドを使います。
    ls ~/project
    出力に trace.txt が表示されるはずです。
  5. ファイルの内容を表示するtrace.txt ファイルの内容を表示するには、cat コマンドまたは nano のようなテキストエディタを使います。
    cat ~/project/trace.txt
    または
    nano ~/project/trace.txt
    ファイルには、ターミナルに表示されたのと同じパケットトレース出力が含まれています。

このステップでは、Nmap のパケットトレース出力をファイルに保存する方法を示しました。次のステップでは、Xfce ターミナルでパケットの詳細を分析します。

Xfce ターミナルでパケットの詳細を分析する

このステップでは、Nmap の--packet-traceオプションによってキャプチャされたパケットの詳細を分析します。パケットトレース出力を理解することで、ネットワークの問題を診断したり、Nmap のプローブがどのように機能するかを理解したり、潜在的なセキュリティ脆弱性を特定したりすることができます。Xfce ターミナルでgrepコマンドを使って、特定のパケットをフィルタリングして調べます。

パケットの詳細を分析するには、次の手順に従います。

  1. ターミナルを開く:既に開いていない場合は、Xfce ターミナルを起動します。
  2. trace.txtファイルを確認する:前のステップでは、パケットトレース出力を~/projectディレクトリのtrace.txtファイルに保存しました。まだそのステップを行っていない場合は、戻って最初に完了させてください。
  3. grepを使ってパケットをフィルタリングするgrepコマンドは、テキストファイルを検索する強力なツールです。これを使ってtrace.txtファイルをフィルタリングし、特定の基準に一致するパケットを見つけることができます。
    たとえば、ポート 80 に送信されたすべてのパケットを見つけるには、次のコマンドを使います。
    grep " > 127.0.0.1:80" ~/project/trace.txt
    • grep:これは、テキストを検索するコマンドラインユーティリティです。
    • " > 127.0.0.1:80":これは検索パターンです。> 127.0.0.1:80を含む行を探します。これは、localhost(127.0.0.1)のポート 80 に送信されたパケットを示します。>の前のスペースは、ソースポートとの一致を避けるために重要です。
    • ~/project/trace.txt:パケットトレース出力を含むファイルへのパスです。
      出力には、検索パターンに一致するtrace.txtファイルのすべての行が表示されます。たとえば:
    SENT (0.0034s) to 127.0.0.1: TCP 127.0.0.1:54321 > 127.0.0.1:80 S ttl=64 id=12345 win=65535
    RECV (0.0045s) from 127.0.0.1: TCP 127.0.0.1:80 > 127.0.0.1:54321 SA ttl=64 id=67890 win=14600
    SENT (0.0045s) to 127.0.0.1: TCP 127.0.0.1:54321 > 127.0.0.1:80 A ttl=64 id=12346 win=65535
  4. パケットの詳細を分析する:出力を調べて、パケットの詳細を理解します。出力には、パケットの方向(SENTまたはRECV)、ソースおよび宛先の IP アドレスとポート、プロトコル(TCP)、その他のフラグとオプションが表示されます。
    • SENT:Nmap によって送信されたパケットを示します。
    • RECV:Nmap によって受信されたパケットを示します。
    • TCP 127.0.0.1:54321 > 127.0.0.1:80:ソース IP アドレスとポート(127.0.0.1:54321)と宛先 IP アドレスとポート(127.0.0.1:80)を示します。
    • S:SYN フラグが設定されていることを示し、TCP 接続を開始するために使用されます。
    • SA:SYN-ACK フラグが設定されていることを示し、SYN パケットに対する応答です。
    • A:ACK フラグが設定されていることを示し、受信したデータを確認するために使用されます。
    • ttl:生存時間。
    • id:IP 識別番号。
    • win:ウィンドウサイズ。
  5. さまざまなgrepパターンを試す:特定のニーズに基づいて、パケットトレース出力をフィルタリングするために、さまざまなgrepパターンを試してみましょう。たとえば:- すべての SYN パケットを見つけるには:
    bash grep "S ttl=" ~/project/trace.txt - ポート 80 から受信されたすべてのパケットを見つけるには:
    bash grep "from 127.0.0.1:80" ~/project/trace.txt - 特定の IP ID を持つすべてのパケットを見つけるには:
    bash grep "id=12345" ~/project/trace.txt
    grepを使ってパケットトレース出力をフィルタリングして分析することで、Nmap の動作とそれが生成するネットワークトラフィックをより深く理解することができます。

Xfce ターミナルでスキャンの問題を特定する

このステップでは、Nmap のパケットトレースとデバッグ出力を使って、潜在的なスキャンの問題を特定します。これには、パケット交換における異常、たとえば再送信、予期しない応答、または応答の欠如を探すことが含まれます。これらの問題を分析することで、スキャンの問題をトラブルシューティングし、Nmap スキャンの精度と信頼性を向上させることができます。

スキャンの問題を特定するには、次の手順に従います。

  1. ターミナルを開く:既に開いていない場合は、Xfce ターミナルを起動します。
  2. trace.txtファイルを確認する:前のステップでは、パケットトレース出力を~/projectディレクトリのtrace.txtファイルに保存しました。このファイルが存在し、パケットトレース情報が含まれていることを確認してください。
  3. 再送信を探す:パケットが対象ホストによって確認されず、Nmap がパケットを再送信するときに再送信が発生します。これは、ネットワーク混雑、パケットロス、またはファイアウォールによるトラフィックのブロッキングを示す可能性があります。再送信を検索するにはgrepを使用します。
    grep "Retransmission" ~/project/trace.txt
    "Retransmission"を含む行が見つかると、Nmap がパケットを再送信しなければならなかったことを示します。これは、ネットワークの問題またはファイアウォールの兆候かもしれません。
  4. TCP フラグを分析する:TCP 接続の状態を理解するために、パケットトレース内の TCP フラグを調べます。予期しないフラグの組み合わせや欠落しているフラグを探します。たとえば、対応する SYN-ACK 応答がない SYN パケットは、ファイアウォールが接続をブロッキングしていることを示す場合があります。
    特定の TCP フラグをフィルタリングするにはgrepを使用できます。たとえば、SYN パケットを見つけるには:
    grep "S ttl=" ~/project/trace.txt
    また、SYN-ACK パケットを見つけるには:
    grep "SA ttl=" ~/project/trace.txt
    送信された SYN パケットの数と受信された SYN-ACK パケットの数を比較します。SYN-ACK パケットが SYN パケットよりも大幅に少ない場合、問題がある可能性があります。
  5. 予期しない応答を確認する:場合によっては、対象ホストが ICMP エラーメッセージなどの予期しない応答を送信することがあります。これらの応答は、スキャンが失敗している理由に関する貴重な情報を提供することができます。
    ICMP パケットを探すには、次のコマンドを使用します。
    grep "ICMP" ~/project/trace.txt
    ICMP メッセージを分析して、エラーの性質を理解します。たとえば、"Destination Unreachable"は、対象ホストに到達できないことを示します。
  6. 欠落している応答を探す:Nmap がプローブを送信して応答を受け取らない場合、対象ホストがダウンしている、ファイアウォールがトラフィックをブロッキングしている、またはプローブが送信途中で失われたことを示す場合があります。
    応答を受け取らなかったプローブを特定するために、パケットトレースを調べます。たとえば、ポート 80 に SYN パケットを送信して SYN-ACK パケットを受け取らなかった場合、ポート 80 が閉じているかフィルタリングされていることを示す場合があります。
  7. デバッグ出力を検討する:前の手順はパケットトレースに焦点を当てていましたが、デバッグ出力(-dまたは-d2から)も貴重な手がかりを提供することができます。それには、Nmap の内部の意思決定プロセスに関する情報が含まれており、それが特定の方法で動作する理由を理解するのに役立ちます。残念ながら、前の手順ではデバッグ出力をファイルに保存していませんでしたが、実際のシナリオでは、その出力をパケットトレースとともに分析します。

パケットトレースとデバッグ出力を注意深く分析することで、潜在的なスキャンの問題を特定し、解決策を講じることができます。これにより、Nmap スキャンの精度と信頼性が向上します。

まとめ

この実験では、スキャン中に交換されるネットワークパケットを観察するために、--packet-traceオプションを使用して Nmap のデバッグ機能を調べました。これには、Xfce ターミナルでコマンドsudo nmap --packet-trace 192.168.1.1(または代替として127.0.0.1)を実行し、パケットの種類、ソースおよび宛先の IP アドレスとポート、その他の関連情報を含む詳細な出力を分析することが含まれました。

重要なポイントは、--packet-traceが Nmap 内から直接ネットワークパケットを表示する簡単な方法をどのように提供するかを理解することで、Nmap のネットワークレベルの操作をより深く理解し、潜在的なスキャンの問題の特定を容易にすることができます。