はじめに
この実験では、Nmap スキャンにおけるターゲットホストの順番をランダム化する方法を学びます。スキャン順序をランダム化することで、基本的な侵入検知システム (IDS) を回避し、スキャンをより予測しにくくすることができます。
まず、標準的な Nmap スキャンを実行してベースラインを確立します。次に、--randomize-hosts オプションを使用して、サブネットおよび特定の範囲の IP アドレスを対象とする Nmap スキャンにおける IP アドレスの順番をシャッフルします。また、スキャンに詳細レベルを追加する方法と、結果をファイルに保存して後で分析する方法も学びます。出力結果を比較することで、ホストランダム化の影響を理解することができます。
標準的な Nmap スキャンを実行する
このステップでは、Nmap を使用して 127.0.0.1/24 サブネット内のアクティブなホストを識別する基本的なネットワークスキャンを実行します。これは、ネットワークの偵察と、ネットワーク上に存在するデバイスを理解するための基本的なテクニックです。
始める前に、Nmap とサブネットスキャンについて簡単に説明します。
- Nmap (Network Mapper): ネットワークの発見とセキュリティ監査のための無料かつオープンソースのユーティリティです。パケットを送信し、応答を分析することで、コンピュータネットワーク上のホストとサービスを発見するために使用されます。
- サブネット: IP ネットワークの論理的な分割です。
/24の表記 (CIDR 表記) はサブネットマスクを示し、この場合は255.255.255.0です。これは、最初の 3 つのオクテット (127.0.0) がネットワークを定義し、最後のオクテット (0-255) がそのネットワーク内のホストアドレスを定義することを意味します。 - サブネットスキャン: サブネット内のすべての可能な IP アドレスをスキャンして、アクティブなホストを識別するプロセスです。
それでは、スキャンを実行しましょう。Xfce ターミナルを開きます。デフォルトのディレクトリは ~/project です。
以下のコマンドを実行します。
sudo nmap 127.0.0.1/24
パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 権限を持っているため、そのまま Enter キーを押します。
このコマンドは、Nmap に 127.0.0.1 から 127.0.0.255 までのすべての IP アドレスをスキャンするように指示します。Nmap は、各 IP アドレスにさまざまなプローブを送信して、ホストがアクティブかどうかを判断します。
出力には、検出されたホストとそのステータス (例:"ホストは稼働中") のリストが表示されます。Nmap がそれらを特定できた場合、それらのホストのオープンポートも表示される場合があります。
出力例 (実際の出力はネットワーク設定によって異なりますが、127.0.0.1 と、場合によっては他のホストが表示されるはずです):
Nmap <バージョン> ( https://nmap.org ) を開始時刻 <日付>
Nmap スキャンレポート ホスト名 (127.0.0.1)
ホストは稼働中 (<遅延時間>秒の遅延)
表示されていない: 994 個のクローズドポート
ポート 状態 サービス
22/tcp オープン ssh
2121/tcp オープン ccproxy-ftp
2222/tcp オープン EtherNetIP-1
3001/tcp オープン nessus
8080/tcp オープン http-proxy
Nmap 完了: 256 個の IP アドレス (1 つのホストが稼働中) を <時間> 秒でスキャンしました
この出力は、127.0.0.1 が稼働中であり、22 (SSH)、2121 (FTP)、2222 (EtherNet/IP-1)、3001 (Nessus)、8080 (HTTP-proxy) などの複数のポートが開いていることを示しています。
サブネットのホストスキャン順序をランダム化する
このステップでは、127.0.0.1/24 サブネット内のホストを Nmap がスキャンする順番をランダム化することで、ネットワークスキャンを強化します。この手法は、基本的な侵入検知システム (IDS) を回避し、スキャンをより予測しにくくするために有効です。
デフォルトでは、Nmap はホストを順次スキャンします。これは、ネットワーク監視ツールによって簡単に検出される可能性があります。--randomize-hosts オプションを使用すると、スキャン前にターゲット IP アドレスの順番がシャッフルされるため、スキャンを特定しにくくなります。
ホストの順番をランダム化するには、Xfce ターミナルで以下のコマンドを実行します。
sudo nmap --randomize-hosts 127.0.0.1/24
前と同様に、パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 権限を持っているため、そのまま Enter キーを押します。
このコマンドは、前のステップと同じサブネット (127.0.0.1/24) をスキャンしますが、IP アドレスのスキャン順序がランダム化されます。
出力は、前のスキャンと同様に、検出されたホストとそのステータスが表示されます。ただし、複数のホストが検出された場合、ホストの表示順序は異なる場合があります。この特定の実験環境では、主要なアクティブホストとして 127.0.0.1 しか表示されない可能性がありますが、内部スキャンプロセスは、サブネット内の 256 個すべての IP アドレスの順番をランダム化しようとします。
出力例 (実際の出力はネットワークによって異なります):
Nmap <バージョン> ( https://nmap.org ) を開始時刻 <日付>
Nmap スキャンレポート ホスト名 (127.0.0.1)
ホストは稼働中 (<遅延時間>秒の遅延)
表示されていない: 994 個のクローズドポート
ポート 状態 サービス
22/tcp オープン ssh
2121/tcp オープン ccproxy-ftp
2222/tcp オープン EtherNetIP-1
3001/tcp オープン nessus
8080/tcp オープン http-proxy
Nmap 完了: 256 個の IP アドレス (1 つのホストが稼働中) を <時間> 秒でスキャンしました
単一のアクティブホストに対する最終的な出力は同じに見える場合でも、サブネット内の 256 個の IP アドレスに対する内部スキャンプロセスはランダム化されました。
特定範囲のホストスキャン順序をランダム化する
このステップでは、特定の IP アドレス範囲 (127.0.0.1 から 127.0.0.10) をスキャンし、これらのホストのスキャン順序をランダム化します。これは、ネットワークのより小さなサブセットを対象としながら、ある程度のステルス性を維持したい場合に便利です。
前のステップで見たように、--randomize-hosts オプションは、ターゲット IP アドレスの順番をシャッフルします。今回は、サブネット全体ではなく、特定の範囲に適用します。
127.0.0.1-10 の範囲内でホストの順番をランダム化するには、Xfce ターミナルで以下のコマンドを実行します。
sudo nmap --randomize-hosts 127.0.0.1-10
パスワードの入力を求められます。labex ユーザーは sudo 権限を持っているため、そのまま Enter キーを押します。
このコマンドは、127.0.0.1 から 127.0.0.10 までの IP アドレスをランダムな順序でスキャンするように Nmap に指示します。
出力には、その範囲内の検出されたホストとそのステータスが表示されます。ホストの表示順序は、コマンドの実行ごとにランダム化されます。
出力例 (実際の出力はネットワークによって異なります):
Nmap <バージョン> ( https://nmap.org ) を開始時刻 <日付>
Nmap スキャンレポート ホスト名 (127.0.0.1)
ホストは稼働中 (<遅延時間>秒の遅延)
表示されていない: 994 個のクローズドポート
ポート 状態 サービス
22/tcp オープン ssh
2121/tcp オープン ccproxy-ftp
2222/tcp オープン EtherNetIP-1
3001/tcp オープン nessus
8080/tcp オープン http-proxy
Nmap 完了: 10 個の IP アドレス (1 つのホストが稼働中) を <時間> 秒でスキャンしました
この例では、Nmap は 127.0.0.1 から 127.0.0.10 までの IP アドレスをランダムな順序でスキャンし、127.0.0.1 が稼働していることを検出しました。
詳細レベルを追加し、結果をファイルに保存する
このステップでは、Nmap スキャンに詳細レベルを追加し、結果をファイルに保存する方法を学びます。これは、後の分析、レポート作成、または以前のスキャンとの比較に不可欠です。これらの操作を行う際に、引き続きホストの順番をランダム化します。
Nmap の -v オプションは、スキャン処理の詳細な情報を提供することで、詳細レベルを高めます。-oN オプションは「通常の」出力形式を指定し、人間が読める形式で、シンプルなツールによるパースに適しています。
ランダム化されたホストスキャン結果を random_scan.txt というファイルに保存し、詳細レベルを追加するには、Xfce ターミナルで以下のコマンドを実行します。
sudo nmap -v --randomize-hosts -oN random_scan.txt 127.0.0.1/24
パスワードの入力を求められます。labex ユーザーはパスワードなしで sudo 権限を持っているため、そのまま Enter キーを押します。
このコマンドは、127.0.0.1/24 サブネットをスキャンし、ホストの順番をランダム化し、詳細な出力を提供し、現在のディレクトリ (~/project) にある random_scan.txt というファイルに「通常の」形式で出力を保存するように Nmap に指示します。
ターミナルの出力には、送信されたプローブ、スキャンされたポート、特定の決定に至った理由など、スキャン処理の詳細が含まれます。
詳細な出力例 (実際の出力はネットワークによって異なります):
Nmap <バージョン> ( https://nmap.org ) を開始時刻 <日付>
Ping スキャンを開始時刻 <時刻>
256 ホストをスキャン [2 ポート/ホスト]
Ping スキャン完了時刻 <時刻>、経過時間 <時間> (合計 256 ホスト)
256 ホストの並列 DNS 解決を開始時刻 <時刻>
256 ホストの並列 DNS 解決完了時刻 <時刻>、経過時間 <時間>
SYN スキャンを開始時刻 <時刻>
256 ホストをスキャン [1000 ポート/ホスト]
127.0.0.1 のオープンポート 22/tcp を検出
127.0.0.1 のオープンポート 2121/tcp を検出
127.0.0.1 のオープンポート 2222/tcp を検出
127.0.0.1 のオープンポート 3001/tcp を検出
127.0.0.1 のオープンポート 8080/tcp を検出
SYN スキャン完了時刻 <時刻>、経過時間 <時間> (合計 256 ホスト)
Nmap スキャンレポート ホスト名 (127.0.0.1)
ホストは稼働中 (<遅延時間>秒の遅延)
ポート 状態 サービス
22/tcp オープン ssh
2121/tcp オープン ccproxy-ftp
2222/tcp オープン EtherNetIP-1
3001/tcp オープン nessus
8080/tcp オープン http-proxy
Nmap 完了: 256 個の IP アドレス (1 つのホストが稼働中) を <時間> 秒でスキャンしました
スキャンが完了したら、cat コマンドを使用して random_scan.txt ファイルの内容を表示できます。
cat random_scan.txt
random_scan.txt ファイルには、スキャン中に画面に表示された同じ情報が含まれています。このファイルを使用して、さらに分析やレポート作成を行うことができます。
まとめ
この実験では、ネットワークスキャンとホスト検出のための Nmap の機能を、ターゲット選択のランダム化に焦点を当てて探求しました。
最初に、nmap 127.0.0.1/24 を使用して標準的なサブネットスキャンを実行し、アクティブなホストとそのオープンサービスを特定しました。これは、Nmap のデフォルト動作を理解するための基準となりました。
次に、--randomize-hosts オプションを使用して、Nmap がターゲットをスキャンする順番をランダム化する方法を学びました。これは、サブネット (127.0.0.1/24) と特定の IP 範囲 (127.0.0.1-10) の両方に対して適用しました。これにより、スキャンを予測しにくくする方法を実証しました。
最後に、詳細な出力を得るために詳細レベル (-v) を追加し、-oN オプションを使用して結果をファイル (random_scan.txt) に保存することで、スキャンを強化しました。これは、後の分析のために Nmap スキャンを制御および文書化する実用的なテクニックを強調しました。
これで、Nmap スキャンを実行し、ホストの順番をランダム化し、詳細レベルを高め、スキャン結果を保存するための基本的なスキルを習得しました。これは、ネットワークの偵察やセキュリティ監査に不可欠なスキルです。



