Nmap でのアイドルスキャンの実行

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、Nmap を使ってアイドルスキャンを行う方法を学びます。この実験では、ping スキャン(nmap -sn)を使ってネットワーク上のゾンビホストを特定するプロセスを案内します。この最初のステップは、アイドルスキャンに適したゾンビホストを選択するために、アクティブなホストを発見するのに役立ちます。

次に、この実験では、特定されたゾンビホストを使って対象に対してアイドルスキャン(nmap -sI)を実行する方法を示します。詳細度を高めるオプション(-v)、特定のポートを対象にする(-p)、およびスキャン結果をファイルに保存する(-oN)オプションを探ります。最後に、Xfce 端末内でアイドルスキャンの結果を分析します。


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/host_discovery("Host Discovery Techniques") 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-547105{{"Nmap でのアイドルスキャンの実行"}} nmap/save_output -.-> lab-547105{{"Nmap でのアイドルスキャンの実行"}} nmap/port_scanning -.-> lab-547105{{"Nmap でのアイドルスキャンの実行"}} nmap/host_discovery -.-> lab-547105{{"Nmap でのアイドルスキャンの実行"}} nmap/scan_types -.-> lab-547105{{"Nmap でのアイドルスキャンの実行"}} nmap/target_specification -.-> lab-547105{{"Nmap でのアイドルスキャンの実行"}} nmap/verbosity -.-> lab-547105{{"Nmap でのアイドルスキャンの実行"}} end

nmap -sn 192.168.1.0/24 を使ってゾンビホストを特定する

このステップでは、nmap を使って 192.168.1.0/24 のネットワーク上の稼働中のホストを発見します。これは、ネットワークスキャンと偵察の基本的なステップです。nmap-sn オプションはピングスキャンを実行します。つまり、ポートスキャンを行わずに、ホストが稼働しているかどうかを判定するだけです。これは、ネットワーク上のアクティブなホストを迅速に特定するのに役立ちます。

始める前に、コマンドを理解しましょう。

  • nmap:ネットワークマッパーツール。
  • -sn:このオプションは Nmap に対してピングスキャン(ホスト発見)のみを実行するように指示します。ポートスキャンを無効にします。
  • 192.168.1.0/24:これは CIDR 表記法で表された対象のネットワークです。/24 は、IP アドレスの最初の 24 ビットが固定され、最後の 8 ビットが変化することを意味します。これにより、256 個の IP アドレスの範囲(192.168.1.1 から 192.168.1.254、ネットワークアドレスとブロードキャストアドレスを除く)が得られます。

では、コマンドを実行しましょう。Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -sn 192.168.1.0/24

パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、Enter キーを押してください。

出力には、ネットワーク上の稼働中のホストが表示されます。出力は次のようになるかもしれません。

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.00023s latency).
Nmap scan report for 192.168.1.2
Host is up (0.00031s latency).
Nmap scan report for 192.168.1.100
Host is up (0.00045s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.50 seconds

この出力は、192.168.1.1192.168.1.2、および 192.168.1.100 がネットワーク上で稼働していることを示しています。稼働している特定の IP アドレスは、あなたの環境では異なる場合があります。次のステップでは、ゾンビホストとして 192.168.1.2 を使用し、対象として 192.168.1.1 を使用します。

nmap -sI 192.168.1.2 192.168.1.1 を使ってアイドルスキャンを実行する

このステップでは、nmap を使ってアイドルスキャンを行います。アイドルスキャンは、独自の IP アドレスを明かさずに対象をスキャンできる高度なスキャン技術です。これは、「ゾンビ」ホストを利用してスキャンを行うことで機能します。

以下はその仕組みです。

  1. ゾンビホストを選択する:ほとんどアイドル状態で、予測可能な IP ID(IP 識別子)シーケンス生成を持つホストが必要です。前のステップでは、192.168.1.2 を潜在的なゾンビホストとして特定しました。
  2. ゾンビに SYN-ACK を送信する:Nmap は SYN-ACK パケットをゾンビホストに送信します。ゾンビホストは、SYN-ACK を期待していない場合、RST パケットで応答し、その IP ID をインクリメントします。
  3. ゾンビを介して対象に SYN を送信する:Nmap は、対象ホストに向けた SYN パケットを作成しますが、ソース IP アドレスをゾンビホストの IP アドレスに偽装します。
  4. ゾンビの IP ID を分析する
    • 対象ホストのポートが閉じている場合、それはゾンビに RST パケットで応答します。ゾンビの IP ID は 1 増加します。
    • 対象ホストのポートが開いている場合、それはゾンビに SYN-ACK パケットで応答します。その後、ゾンビは対象に RST パケットを送信します(接続を開始していないため)。ゾンビの IP ID は 2 増加します。
  5. ポートの状態を判断する:ゾンビの IP ID の変化を観察することで、Nmap は対象のポートが開いているか閉じているかを判断できます。

では、アイドルスキャンコマンドを実行しましょう。Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -sI 192.168.1.2 192.168.1.1

このコマンドの解説を以下に示します。

  • nmap:ネットワークマッパーツール。
  • -sI 192.168.1.2:このオプションはアイドルスキャンを指定し、192.168.1.2 をゾンビホストとして設定します。
  • 192.168.1.1:これはスキャンしたい対象ホストです。

パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、Enter キーを押してください。

出力には、アイドルスキャンによって特定された対象ホスト(192.168.1.1)の開いているポートが表示されます。結果は次のようになるかもしれません。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

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

この出力は、対象ホスト 192.168.1.1 のポート 22(SSH)と 80(HTTP)が開いていることを示しています。特定の開いているポートは、対象システムの設定によって異なる場合がありますのでご注意ください。

nmap -v -sI 192.168.1.2 192.168.1.1 で詳細表示を追加する

このステップでは、前のステップのアイドルスキャンコマンドに詳細表示を追加します。nmap の詳細表示は、スキャンプロセスに関するより詳細な情報を提供します。これは、何が起こっているかを理解したり、問題のトラブルシューティングに役立ちます。

-v オプションは詳細度を上げます。さらに詳細な出力を得るには、これを複数回使用できます(例えば、-vv または -vvv)。この実験では、単一の -v を使用します。

では、詳細表示付きでコマンドを実行しましょう。Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -v -sI 192.168.1.2 192.168.1.1

このコマンドの解説を以下に示します。

  • nmap:ネットワークマッパーツール。
  • -v:このオプションは詳細度を上げます。
  • -sI 192.168.1.2:このオプションはアイドルスキャンを指定し、192.168.1.2 をゾンビホストとして設定します。
  • 192.168.1.1:これはスキャンしたい対象ホストです。

パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、Enter キーを押してください。

出力は、前のアイドルスキャンよりも詳細になります。送信されるパケットの情報、ゾンビホストの IP ID 値、およびポート状態の判定の根拠が表示されます。出力は次のようになるかもしれません(正確な出力は異なります)。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 0 scripts for scanning.
Initiating Idle scan for 192.168.1.1
Scanning 192.168.1.1 [1000 ports]
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Sending TCP SYN to 192.168.1.1:22
Got SYN-ACK from 192.168.1.1:22
PORT   STATE SERVICE
22/tcp open  ssh
Sending TCP SYN to 192.168.1.1:80
Got SYN-ACK from 192.168.1.1:80
PORT   STATE SERVICE
80/tcp open  http
Nmap done: 1 IP address (1 host up) scanned in 16.54 seconds

詳細な出力は、スキャンプロセスの洞察を提供し、アイドルスキャンがどのように機能するかを理解したり、潜在的な問題を診断するのを容易にします。

nmap -sI 192.168.1.2 -p 80 192.168.1.1 で特定のポートをスキャンする

このステップでは、特定のポートに対するアイドルスキャンに焦点を当てます。これは、すべてのポートをスキャンすることなく、特定のサービスの状態を迅速に確認したい場合に便利です。対象ホストのポート 80(HTTP)をスキャンします。

nmap-p オプションを使用すると、スキャンしたいポートを指定できます。単一のポート、ポートの範囲(例えば、1-100)、またはコンマ区切りのポートのリスト(例えば、22,80,443)を指定できます。この場合、ポート 80 のみをスキャンします。

では、アイドルスキャン技術を使ってポート 80 をスキャンするコマンドを実行しましょう。Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -sI 192.168.1.2 -p 80 192.168.1.1

このコマンドの解説を以下に示します。

  • nmap:ネットワークマッパーツール。
  • -sI 192.168.1.2:このオプションはアイドルスキャンを指定し、192.168.1.2 をゾンビホストとして設定します。
  • -p 80:このオプションは、ポート 80 のみをスキャンしたいことを指定します。
  • 192.168.1.1:これはスキャンしたい対象ホストです。

パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、Enter キーを押してください。

出力には、対象ホスト(192.168.1.1)のポート 80 が開いているか閉じているかが表示されます。結果は次のようになるかもしれません。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Nmap scan report for 192.168.1.1
Host is up (0.00031s latency).

PORT   STATE SERVICE
80/tcp open  http

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

この出力は、対象ホスト 192.168.1.1 のポート 80(HTTP)が開いていることを示しています。ポートが閉じている場合、出力は open の代わりに closed が表示されます。

nmap -sI 192.168.1.2 -oN idle.txt 192.168.1.1 でアイドルスキャンの結果を保存する

このステップでは、アイドルスキャンの結果をファイルに保存します。これは、後で分析するためやレポート作成目的に便利です。結果を「通常」の形式で idle.txt という名前のファイルに保存するには、-oN オプションを使用します。

-oN オプションは、nmap に対して出力を人間が読みやすい形式で保存するよう指示します。他の出力形式もあります(例えば、XML 用の -oX、Grep 可能な出力用の -oG)が、この実験では通常の形式を使用します。

では、アイドルスキャンの結果をファイルに保存するコマンドを実行しましょう。Xfce 端末を開き、次のコマンドを入力します。

sudo nmap -sI 192.168.1.2 -oN idle.txt 192.168.1.1

このコマンドの解説を以下に示します。

  • nmap:ネットワークマッパーツール。
  • -sI 192.168.1.2:このオプションはアイドルスキャンを指定し、192.168.1.2 をゾンビホストとして設定します。
  • -oN idle.txt:このオプションは、nmap に対して出力を通常の形式で idle.txt という名前のファイルに保存するよう指示します。
  • 192.168.1.1:これはスキャンしたい対象ホストです。

パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 特権を持っているため、Enter キーを押してください。

スキャンが完了すると、結果は現在のディレクトリ(~/project)の idle.txt という名前のファイルに保存されます。出力がファイルにリダイレクトされるため、端末には何も出力されません。

ファイルが作成され、スキャン結果が含まれていることを確認するには、cat コマンドを使用してファイルの内容を表示できます。

cat idle.txt

出力には、前のステップで見たものと同様のスキャン結果が表示されますが、今回はファイルに保存されています。出力は次のようになるかもしれません。

## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023 as: nmap -sI 192.168.1.2 -oN idle.txt 192.168.1.1
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Nmap scan report for 192.168.1.1
Host is up (0.00031s latency).
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
## Nmap done at Fri Oct 27 10:20:15 2023 -- 1 IP address (1 host up) scanned in 15.00 seconds

これで、アイドルスキャンの結果がファイルに保存され、さらなる分析のために利用できるようになりました。

Xfce 端末でアイドルスキャンを分析する

このステップでは、前のステップで idle.txt ファイルに保存したアイドルスキャンの結果を分析します。grep コマンドを使ってファイルから特定の情報を抽出し、結果の解釈方法について説明します。

まず、cat コマンドを使って idle.txt ファイルの内容を表示し、スキャン結果を思い出しましょう。Xfce 端末を開き、次のコマンドを入力します。

cat idle.txt

nmap スキャンの出力が表示され、対象ホストの情報やスキャンしたポートの状態が表示されるはずです。

次に、grep を使って特定の情報を見つけましょう。例えば、開いているポートを見つけるには、grep を使って "open" という単語が含まれる行を検索します。

grep "open" idle.txt

このコマンドは、idle.txt ファイルの中で "open" という単語が含まれるすべての行を表示します。出力は次のようになるかもしれません。

80/tcp open  http

これは、対象ホストのポート 80(HTTP)が開いていることを示しています。

また、grep を使って対象ホストの IP アドレスを見つけることもできます。

grep "Nmap scan report for" idle.txt

このコマンドは、対象ホストの IP アドレスが含まれる行を表示します。

Nmap scan report for 192.168.1.1

結果の解釈:

アイドルスキャンの結果は、対象ホストの開いているポートに関する情報を提供します。この情報は、ホスト上で実行されている潜在的な脆弱性やサービスを特定するために使用できます。

  • 開いているポート: 開いているポートは、そのポートでサービスが待ち受けており、接続を受け付けていることを示します。これは、Web サーバー(ポート 80)、SSH サーバー(ポート 22)、またはその他のサービスである可能性があります。
  • 閉じているポート: 閉じているポートは、そのポートでサービスが待ち受けていないことを示します。
  • フィルタリングされたポート: フィルタリングされたポートは、ファイアウォールが接続をブロックしているため、nmap がそのポートが開いているか閉じているかを判断できないことを意味します。

開いているポートを分析することで、対象ホスト上で実行されているサービスを理解し、潜在的な脆弱性を特定することができます。アイドルスキャンは隠密な手法ですが、完全には信頼できるものではありません。ネットワーク管理者がネットワークトラフィックを監視している場合、スキャンを検出できる可能性があります。

これで、nmap を使ったアイドルスキャンの実験は終了です。ゾンビホストを特定し、アイドルスキャンを実行し、冗長性を追加し、特定のポートをスキャンし、結果をファイルに保存し、Xfce 端末で結果を分析する方法を学びました。

まとめ

この実験では、まず nmap -sn 192.168.1.0/24 を使って 192.168.1.0/24 ネットワーク上の稼働中のホストを特定しました。このピングスキャンにより、192.168.1.1、192.168.1.2、192.168.1.100 などのアクティブなホストを迅速に発見することができました。これらのホストは、後続のスキャン活動にとって不可欠です。次に、ゾンビホストとして 192.168.1.2 を使い、対象として 192.168.1.1 を使ってアイドルスキャンを実行する準備をしました。