Nmap で TCP ACK スキャンを実行する

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、Nmap を使って TCP ACK 走査を行う方法を学びます。この実験では、基本的な ACK 走査の実行、特定のポート範囲の走査、走査に詳細度を追加する、走査結果の保存、フィルタリングされたポートの分析、および Xfce 端末での ACK 走査と SYN 走査の比較など、ACK 走査のさまざまな側面を扱います。TCP ACK パケットを対象ホストに送信し、ポートがフィルタリングされているかどうかを判断するための応答を分析することで、ACK 走査がどのように機能するかを理解します。


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/scan_types("Scan Types and Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") subgraph Lab Skills nmap/output_formats -.-> lab-547092{{"Nmap で TCP ACK スキャンを実行する"}} nmap/save_output -.-> lab-547092{{"Nmap で TCP ACK スキャンを実行する"}} nmap/port_scanning -.-> lab-547092{{"Nmap で TCP ACK スキャンを実行する"}} nmap/scan_types -.-> lab-547092{{"Nmap で TCP ACK スキャンを実行する"}} nmap/target_specification -.-> lab-547092{{"Nmap で TCP ACK スキャンを実行する"}} nmap/verbosity -.-> lab-547092{{"Nmap で TCP ACK スキャンを実行する"}} end

nmap -sA 192.168.1.1 を使って ACK 走査を実行する

このステップでは、Nmap を使って ACK 走査を行う方法を学びます。ACK 走査は、TCP ACK パケットを対象ホストに送信するタイプの TCP 走査です。他の走査タイプとは異なり、ACK 走査は完全な TCP 接続を確立しません。代わりに、ポートがフィルタリングされているかどうかを判断するために、応答(または応答のなし)を分析します。

ACK 走査の基本を理解する

  • ACK パケット:TCP ACK(確認)パケットは、通常、確立済みの TCP 接続におけるデータの受信を確認するために使用されます。
  • ファイアウォールの動作:ファイアウォールは、通常、不請求の着信 TCP 接続をブロックするルールを持っています。ACK 走査は、この動作を利用してファイアウォールのルールセットをマッピングします。
  • フィルタリングされたポートとフィルタリングされていないポート
    • フィルタリングされていない:対象ポートがフィルタリングされていない場合、Nmap は ACK プローブに応答して RST(リセット)パケットを受信します。これは、ファイアウォールが接続をブロックしていないことを示します。
    • フィルタリングされた:対象ポートがフィルタリングされている場合、Nmap は応答を受け取らず、または ICMP エラーメッセージを受け取ります。これは、ファイアウォールが接続をブロックしていることを示唆します。

ACK 走査を実行する

  1. Xfce 端末を開く:既に開いていない場合は、デスクトップ環境から Xfce 端末を起動します。

  2. ACK 走査コマンドを実行する:端末で次のコマンドを入力し、Enter キーを押します。

    nmap -sA 192.168.1.1
    • nmap:Nmap のコマンドライン走査ツール。
    • -sA:ACK 走査タイプを指定します。
    • 192.168.1.1:対象の IP アドレス。これを、実際に走査したい IP アドレスに置き換えます。仮想環境でこれを実行している場合、ゲートウェイまたはネットワーク内の別のマシンを走査したい場合があります。別のマシンがない場合は、localhost の IP アドレス 127.0.0.1 を走査できます。
    nmap -sA 127.0.0.1
  3. 結果を分析する:Nmap は走査結果を表示します。「フィルタリングされていない」または「フィルタリングされた」とマークされたポートを探します。

    例の出力(対象によって異なる場合があります):

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
    Nmap scan report for 127.0.0.1
    Host is up (0.00020s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds

    この例では、ポート 22、80、111、および 631 はフィルタリングされていないことを意味し、これらのポートに送信された ACK パケットはおそらく RST 応答を受け取ります。

重要な留意点

  • ACK 走査は、ポートの正確な状態を判断するために必ずしも信頼性があるわけではありません。ファイアウォールやネットワークデバイスは、時々誤った結果を生み出すことがあります。
  • ACK 走査は主に、ファイアウォールのルールをマッピングし、ネットワークへの潜在的なエントリポイントを特定するために使用されます。

nmap -sA -p 1-100 127.0.0.1 を使ってポート範囲を走査する

このステップでは、特定のポート範囲を走査することで ACK 走査の知識を拡充します。これは、最も一般的に使用されるポートや関心のあるポートに絞って調査を行う際に役立ちます。

ポート範囲の理解

ポート範囲は、65535 個のすべてのポートを走査するのではなく、走査するポートのセットを指定します。これにより、走査時間を大幅に短縮し、分析を集中させることができます。一般的なポート範囲には以下があります。

  • 1-1024:システムサービスで頻繁に使用される、周知ポート。
  • 1-100:迅速なチェック用の小さな範囲。
  • 80,443,8080:関心のある特定のポート(HTTP、HTTPS、代替 HTTP)。

Nmap を使ってポート範囲を走査する

  1. Xfce 端末を開く:既に開いていない場合は、デスクトップ環境から Xfce 端末を起動します。

  2. ポート範囲付きの ACK 走査コマンドを実行する:端末で次のコマンドを入力し、Enter キーを押します。

    nmap -sA -p 1-100 127.0.0.1
    • nmap:Nmap のコマンドライン走査ツール。
    • -sA:ACK 走査タイプを指定します。
    • -p 1-100:走査するポート範囲(ポート 1 から 100)を指定します。
    • 127.0.0.1:対象の IP アドレス(この場合は localhost)。
  3. 結果を分析する:Nmap は、指定された範囲(1-100)内のポートのみに焦点を当てて走査結果を表示します。

    例の出力(対象によって異なる場合があります):

    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.00018s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT    STATE      SERVICE
    21/tcp  unfiltered ftp
    22/tcp  unfiltered ssh
    25/tcp  unfiltered smtp
    53/tcp  unfiltered domain
    80/tcp  unfiltered http
    
    Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds

    この出力は、localhost のポート 21、22、25、53、および 80 の状態を示しています。すべてのポートがフィルタリングされていません。

ポート範囲を走査する利点

  • 効率性:特定のポートに焦点を当てることで走査時間を短縮します。
  • ターゲット指向の分析:対象に実行されている特定のサービスやアプリケーションを調査できます。
  • ノイズの低減:関係のない情報をフィルタリングし、潜在的な脆弱性を特定しやすくします。

nmap -v -sA 192.168.1.1 で冗長モードを追加する

このステップでは、Nmap 走査の冗長度を増やす方法を学びます。冗長モードは、走査プロセスに関するより詳細な情報を提供し、トラブルシューティングや結果の理解を深めるのに役立ちます。

冗長度レベルの理解

Nmap は、-v オプションによって制御されるさまざまな冗長度レベルを提供します。-v を 1 回使用すると冗長度レベルが上がり、複数回使用すると(例えば -vv)さらに増えます。より高い冗長度レベルは、より詳細な出力を提供します。

ACK 走査に冗長モードを追加する

  1. Xfce 端末を開く:既に開いていない場合は、デスクトップ環境から Xfce 端末を起動します。

  2. 冗長モード付きの ACK 走査コマンドを実行する:端末で次のコマンドを入力し、Enter キーを押します。

    nmap -v -sA 192.168.1.1
    • nmap:Nmap のコマンドライン走査ツール。
    • -v:冗長出力を有効にします。
    • -sA:ACK 走査タイプを指定します。
    • 192.168.1.1:対象の IP アドレス。これを、実際に走査したい IP アドレスに置き換えます。仮想環境でこれを実行している場合、ゲートウェイまたはネットワーク内の別のマシンを走査したい場合があります。別のマシンがない場合は、localhost の IP アドレス 127.0.0.1 を走査できます。
    nmap -v -sA 127.0.0.1
  3. 結果を分析する:Nmap は、より詳細な情報付きで走査結果を表示します。走査プロセスに関するより多くの出力が表示され、例えば送信されるプローブや受信される応答などが見えます。

    例の出力(対象によって異なる場合があります):

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
    Initiating Ping Scan at 10:10
    Scanning 127.0.0.1 [4 ports]
    Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
    Initiating ACK Scan at 10:10
    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 111/tcp on 127.0.0.1
    Discovered open port 631/tcp on 127.0.0.1
    Completed ACK Scan at 10:10, 0.15s elapsed (1000 total ports)
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00016s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

    冗長出力は、ピング走査や ACK 走査などの走査の異なる段階と、見つけ出されたポートを示しています。

冗長モードの利点

  • トラブルシューティング:走査プロセス中の問題、例えばネットワーク接続問題やファイアウォールの干渉を特定するのに役立ちます。
  • 深い理解:Nmap がどのように機能し、ポートの状態をどのように判断するかについて、より深い洞察を提供します。
  • 詳細なレポート:レポート作成や分析により包括的な情報を提供します。

nmap -sA -oN ack.txt 127.0.0.1 で ACK 走査結果を保存する

このステップでは、Nmap の ACK 走査結果をファイルに保存する方法を学びます。これは、後の分析、レポート作成、または他の走査との比較に役立ちます。

Nmap の出力オプションの理解

Nmap は、さまざまな形式で走査結果を保存するためのいくつかのオプションを提供しています。-oN オプションは、「通常の」人間が読みやすい形式で結果を保存します。他のオプションには、XML 形式用の -oX や、スクリプトキッド用の形式(読みにくい)の -oS があります。

ACK 走査結果をファイルに保存する

  1. Xfce 端末を開く:既に開いていない場合は、デスクトップ環境から Xfce 端末を起動します。

  2. ファイル出力付きの ACK 走査コマンドを実行する:端末で次のコマンドを入力し、Enter キーを押します。

    nmap -sA -oN ack.txt 127.0.0.1
    • nmap:Nmap のコマンドライン走査ツール。
    • -sA:ACK 走査タイプを指定します。
    • -oN ack.txt:出力を通常の形式で ack.txt という名前のファイルに保存することを指定します。ファイルは現在のディレクトリ(~/project)に保存されます。
    • 127.0.0.1:対象の IP アドレス(この場合は localhost)。
  3. ファイル作成の確認:走査が完了した後、~/project ディレクトリに ack.txt ファイルが作成されたことを確認します。ディレクトリ内のファイルを一覧表示するには ls コマンドを使用できます:

    ls ~/project

    ファイル一覧の中に ack.txt が表示されるはずです。

  4. ファイルの内容を表示するack.txt ファイルの内容を表示するには、cat コマンドまたは nano のようなテキストエディタを使用できます:

    cat ~/project/ack.txt

    または

    nano ~/project/ack.txt

    ファイルには、人間が読みやすい形式で Nmap の走査結果が含まれています。

    ack.txt の例の内容(対象によって異なる場合があります):

    ## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00016s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    ## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 0.85 seconds

走査結果を保存する利点

  • 文書化:将来の参照のための走査結果の記録を提供します。
  • 分析:テキスト処理ツールやスクリプトを使って結果をより詳細に分析できます。
  • レポート作成:走査結果に基づいたレポート作成を容易にします。
  • 比較:ネットワークの変化を追跡するため、異なる時点の走査結果を比較できます。

Xfce 端末でフィルタリングされたポートを分析する

このステップでは、Nmap の ACK 走査中に特定されたフィルタリングされたポートをどのように分析するかを学びます。ポートがフィルタリングされる理由を理解することは、ネットワークセキュリティを評価し、潜在的な脆弱性を特定するために重要です。

フィルタリングされたポートの理解

Nmap において、「フィルタリングされた」ポートとは、パケットフィルタリングにより Nmap のプローブがポートに到達しないため、Nmap がポートが開いているか閉じているかを判断できないことを意味します。これは、多くの場合、Nmap が走査に使用している特定の種類のトラフィックをブロックするファイアウォールルールによるものです。ACK 走査では、フィルタリングされたポートは通常、ACK パケットをブロックしているファイアウォールや他のネットワークデバイスの存在を示しています。

ACK 走査からのフィルタリングされたポートの分析

  1. Xfce 端末を開く:既に開いていない場合は、デスクトップ環境から Xfce 端末を起動します。

  2. ack.txtファイルを確認する:前のステップでは、ACK 走査結果をack.txtファイルに保存しました。catコマンドまたはnanoを使用して、ファイルの内容を表示します:

    cat ~/project/ack.txt

    または

    nano ~/project/ack.txt
  3. フィルタリングされたポートを特定する:出力の中で、ポートが「フィルタリングされた」状態であることを示す行を探します。たとえば:

    PORT      STATE      SERVICE
    21/tcp    filtered  ftp
    23/tcp    filtered  telnet

    これは、ポート 21(FTP)と 23(Telnet)がフィルタリングされていることを示しています。

  4. フィルタリングの原因を調査する:ポートがフィルタリングされていることは、ファイアウォールや他のネットワークデバイスが、それらのポートに送信される ACK パケットをブロックしていることを示しています。さらに調査するために、以下のことを考慮できます:

    • ファイアウォールルール:対象のマシンまたはネットワークのファイアウォール設定を確認して、特定のポートへの ACK パケットをブロックするルールがあるかどうかを確認します。127.0.0.1を走査しているため、ローカルのファイアウォールルールを確認できます。ただし、LabEx 環境では、ファイアウォールルールを変更するアクセス権がない場合が多いでしょう。
    • ネットワークトポロジ:走査マシンと対象との間のネットワークトポロジを考慮します。トラフィックをフィルタリングする中間デバイス(たとえば、ルータ、ファイアウォール)はありますか?
    • 他の走査タイプ:他の Nmap 走査タイプ(たとえば、SYN 走査、TCP コネクト走査)を使用して、ポートの状態に関するより多くの情報が得られるかどうかを確認します。次のステップでこれを行います。
  5. 例の分析

    21(FTP)、23(Telnet)、80(HTTP)などの一般的なポートがフィルタリングされている場合、ファイアウォールが構成されて、これらのポートへの不請求の着信接続をブロックしている可能性があります。これは、対象のマシン上で実行されているサービスへの不正アクセスを防止するための一般的なセキュリティ対策です。

重要な考慮事項

  • ACK 走査は、しばしばファイアウォールルールセットをマッピングするために使用されます。異なるポートに ACK パケットを送信することで、どのポートがフィルタリングされているか、どのポートがそうでないかを判断できます。
  • ACK 走査の結果は、ネットワーク構成やファイアウォールの存在によって影響を受ける場合があります。
  • フィルタリングされたポートは必ずしも、サービスが実行されていないことを意味するわけではありません。ただ、フィルタリングのために Nmap がその状態を判断できないだけです。

Xfce 端末で ACK 走査と SYN 走査を比較する

このステップでは、Nmap の ACK 走査結果と SYN 走査結果を比較します。この比較により、これらの走査タイプの違いと、対象に関する異なる情報を収集するためにどのように使用できるかを理解できます。

ACK 走査と SYN 走査の理解

  • ACK 走査 (-sA):対象に TCP ACK パケットを送信します。主にファイアウォールルールセットをマッピングするために使用されます。ポートがフィルタリングされていない場合、通常、ファイアウォールが ACK パケットを通過させることを意味します。ポートがフィルタリングされている場合、ファイアウォールが ACK パケットをブロックしている可能性があります。ACK 走査は、ポートが開いているか閉じているかを判断しません。
  • SYN 走査 (-sS):対象に TCP SYN パケットを送信します。完全な TCP ハンドシェイクを行わないため、完全な TCP コネクト走査よりもステルス性の高い走査です。SYN/ACK パケットが受信された場合、ポートは開いていると見なされます。RST パケットが受信された場合、ポートは閉じていると見なされます。

SYN 走査を実行する

  1. Xfce 端末を開く:既に開いていない場合は、デスクトップ環境から Xfce 端末を起動します。

  2. SYN 走査コマンドを実行する:端末で次のコマンドを入力し、Enter キーを押します。

    nmap -sS 127.0.0.1
    • nmap:Nmap のコマンドライン走査ツール。
    • -sS:SYN 走査タイプを指定します。
    • 127.0.0.1:対象の IP アドレス(この場合は localhost)。
  3. ファイル出力付きの SYN 走査コマンドを実行する:端末で次のコマンドを入力し、Enter キーを押します。

    nmap -sS -oN syn.txt 127.0.0.1
    • nmap:Nmap のコマンドライン走査ツール。
    • -sS:SYN 走査タイプを指定します。
    • -oN syn.txt:出力を通常の形式で syn.txt という名前のファイルに保存することを指定します。ファイルは現在のディレクトリ(~/project)に保存されます。
    • 127.0.0.1:対象の IP アドレス(この場合は localhost)。

結果を比較する

  1. SYN 走査結果を表示する:SYN 走査が完了した後、端末で結果を表示します。開いている、閉じている、およびフィルタリングされたポートの一覧が表示されるはずです。

  2. ファイルの内容を表示するsyn.txt ファイルの内容を表示するには、cat コマンドまたは nano のようなテキストエディタを使用できます:

    cat ~/project/syn.txt

    または

    nano ~/project/syn.txt

    ファイルには、人間が読みやすい形式で Nmap の走査結果が含まれています。

  3. ACK 走査結果と比較する:前のステップで取得した ACK 走査結果(端末出力または ack.txt ファイルのいずれか)と SYN 走査結果を比較します。

  4. 違いを分析する

    • 開いているポート:SYN 走査は、対象上で実際に開いているポートを示します。ACK 走査は、直接開いているポートを明らかにしません。
    • フィルタリングされたポート:ACK 走査でポートがフィルタリングされているが、SYN 走査では開いている場合、ファイアウォールが ACK パケットをブロックしているが、そのポートに対して SYN パケットを許可していることを示しています。これは一般的なシナリオです。
    • 閉じているポート:SYN 走査は、閉じているポートを示します。ACK 走査は、直接閉じているポートを明らかにしません。

例の比較

ACK 走査ではポート 80(HTTP)がフィルタリングされているが、SYN 走査ではポート 80 が開いているとしましょう。これは、ファイアウォールがポート 80 への ACK パケットをブロックしているが、SYN パケットを許可していることを示しています。これは、着信 SYN パケットが接続を確立するために許可されるが、不請求の ACK パケットがブロックされる Web サーバの典型的な構成です。

要点

  • ACK 走査と SYN 走査は、対象に関する異なる種類の情報を提供します。
  • ACK 走査は、ファイアウォールルールセットをマッピングするのに役立ちます。
  • SYN 走査は、開いているポートを特定するのに役立ちます。
  • これらの走査結果を比較することで、対象のセキュリティ状況をより良く理解することができます。

まとめ

この実験では、Nmap を使って TCP ACK 走査を行う方法を学びます。まず、コマンド nmap -sA <target_ip> を使って基本的な ACK 走査を行い、ACK パケットがどのように機能するか、および応答に基づいてポートがフィルタリングされているかどうかを判断する方法を理解します。また、特定のポート範囲を走査したり、走査に詳細度を追加したり、結果をファイルに保存したりする方法も学びます。さらに、Xfce 端末でフィルタリングされたポートを分析し、ACK 走査と SYN 走査を比較します。