はじめに
この実験では、Nmap を使ってファイアウォールと IDS を回避する方法を学びます。この実験では、デコイスキャンの実行、パケットの断片化、IP アドレスの偽装、走査レートの調整、およびこれらの手法を組み合わせるなど、いくつかの手法が扱われます。Xfce 端末で様々な Nmap コマンドを実行し、回避結果を検証します。これらの手法は、倫理的に、適切な許可を得て使用することを忘れないでください。
この実験では、Nmap を使ってファイアウォールと IDS を回避する方法を学びます。この実験では、デコイスキャンの実行、パケットの断片化、IP アドレスの偽装、走査レートの調整、およびこれらの手法を組み合わせるなど、いくつかの手法が扱われます。Xfce 端末で様々な Nmap コマンドを実行し、回避結果を検証します。これらの手法は、倫理的に、適切な許可を得て使用することを忘れないでください。
このステップでは、Nmap を使ってデコイスキャンを行い、スキャンの元を隠す方法を探ります。デコイスキャンを行うことで、スキャンが複数の IP アドレスから発生しているかのように見えるようになり、実際のスキャナを特定するのが難しくなります。
Nmap の -D
オプションを使うと、デコイとなる IP アドレスを指定できます。RND:5
という引数は、実際の IP アドレスに加えて、5 つのランダムな非予約 IP アドレスをデコイとして使うよう Nmap に指示します。
対象に対してデコイスキャンを行いましょう。説明のために、対象の IP アドレスとして 192.168.1.1
を使います。ただし、192.168.1.1
は仮の IP アドレスです。実際のシナリオでは、これを許可された対象の実際の IP アドレスに置き換える必要があります。
Xfce 端末を開き、次のコマンドを実行します。
sudo nmap -D RND:5 192.168.1.1
このコマンドは、5 つのランダムな IP アドレスをデコイとして使って、192.168.1.1
に対する Nmap スキャンを開始します。端末に Nmap の出力が表示され、スキャンの進行状況が表示されます。
出力例(特定の出力は対象とネットワークによって異なります):
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.00043s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
重要な留意点:
このステップでは、Nmap を使ってパケットを断片化する方法を学びます。パケットの断片化とは、TCP または UDP データを送信する前に、より小さなピース(断片)に分割することです。この手法は、断片化されたパケットを適切に再構築できない場合がある一部のファイアウォールや侵入検知システム(IDS)を回避するために使用できます。
Nmap の -f
オプションを使用すると、パケットの断片化が可能になります。デフォルトでは、Nmap はパケットを 8 バイトのチャンクに断片化します。-mtu <サイズ>
を使用して、異なる MTU(最大送信単位)サイズを指定することもできます。
ループバックアドレス 127.0.0.1
に対して断片化されたスキャンを行いましょう。このアドレスは常にローカルマシンを指すため、テストには安全です。
Xfce 端末を開き、次のコマンドを実行します。
sudo nmap -f 127.0.0.1
このコマンドは、パケットを断片化しながら、127.0.0.1
に対する Nmap スキャンを開始します。端末に Nmap の出力が表示され、スキャンの進行状況が表示されます。
出力例(特定の出力はシステム構成によって異なります):
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.000028s latency).
Other addresses for localhost: ::1
PORT STATE SERVICE
139/tcp closed netbios-ssn
445/tcp closed microsoft-ds
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
解説:
sudo nmap
:スーパーユーザー権限で Nmap を実行します。これは、パケットの断片化のような raw ソケット操作には多くの場合必要です。-f
:断片化を有効にします。Nmap は、パケットを送信する前に断片化します。127.0.0.1
:対象の IP アドレス(ループバックアドレス)を指定します。重要な留意点:
-mtu
オプションを使用して、断片のカスタム MTU サイズを指定することができます。たとえば、nmap -f -mtu 32 127.0.0.1
は、パケットを 32 バイトのチャンクに断片化します。このステップでは、Nmap スキャンの送信元 IP アドレスを偽装する方法を探ります。IP アドレスの偽装とは、Nmap が送信するパケットの送信元 IP アドレスを偽造することです。これは、あなたの実際の IP アドレスを隠すため、またはネットワーク防御をテストするために使用できます。
Nmap の -S
オプションを使うと、送信元 IP アドレスを指定できます。IP アドレスを偽装することには深刻な結果があり得ることを理解しておくことが重要で、許可された環境でのみ行うべきです。また、偽装されたパケットに対する応答は通常受け取れません。なぜなら、それらは偽装されたアドレスに送信されるからです。したがって、この手法は応答を見る必要がない場合、SYN スキャン (-sS
) や接続スキャン (-sT
) のような「ブラインド」スキャン手法とともによく使用されます。
対象に対して偽装された IP アドレスを使って SYN スキャンを行いましょう。説明のために、偽装された IP アドレスとして 192.168.1.100
を、対象の IP アドレスとして 192.168.1.1
を使います。ただし、192.168.1.1
は仮の IP アドレスです。実際のシナリオでは、これを許可された対象の実際の IP アドレスに置き換える必要があります。また、192.168.1.100
はただの例であり、ネットワーク上で使用されていない IP アドレスを選択する必要があり、競合を避けるためです。
Xfce 端末を開き、次のコマンドを実行します。
sudo nmap -sS -S 192.168.1.100 192.168.1.1
このコマンドは、偽装された送信元 IP アドレスとして 192.168.1.100
を使って、192.168.1.1
に対する Nmap SYN スキャンを開始します。端末に Nmap の出力が表示され、スキャンの進行状況が表示されます。
出力例(特定の出力は対象とネットワークによって異なります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 2.12 seconds
解説:
sudo nmap
:IP アドレスの偽装のような raw ソケット操作には必要なスーパーユーザー権限で Nmap を実行します。-sS
:TCP ハンドシェイクを完了させないステルススキャンである SYN スキャンを指定します。-S 192.168.1.100
:偽装された送信元 IP アドレスを指定します。192.168.1.1
:対象の IP アドレスを指定します。重要な留意点:
このステップでは、Nmap の走査速度を制御する方法を学びます。走査速度を調整することは、検出を回避し、ネットワーク混雑を防止するために重要です。Nmap には、パケットを送信する速度を制御するためのいくつかのオプションがあります。
--max-rate
オプションは、Nmap が 1 秒間に送信するパケット数を制限します。これは、侵入検知システム(IDS)による検出を回避するため、またはバンド幅が制限されたネットワークを走査する際のネットワーク混雑を防止するために役立ちます。
対象の IP アドレスに対して走査を行い、最大パケット速度を 1 秒間 100 パケットに制限しましょう。説明のために、対象の IP アドレスとして 192.168.1.1
を使います。ただし、192.168.1.1
は仮の IP アドレスです。実際のシナリオでは、これを許可された対象の実際の IP アドレスに置き換える必要があります。
Xfce 端末を開き、次のコマンドを実行します。
sudo nmap --max-rate 100 192.168.1.1
このコマンドは、最大パケット速度を 1 秒間 100 パケットに制限しながら、192.168.1.1
に対する Nmap 走査を開始します。端末に Nmap の出力が表示され、走査の進行状況が表示されます。
出力例(特定の出力は対象とネットワークによって異なります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds
解説:
sudo nmap
:特定の走査タイプには必要なスーパーユーザー権限で Nmap を実行します。--max-rate 100
:送信速度を最大で 1 秒間 100 パケットに制限します。192.168.1.1
:対象の IP アドレスを指定します。その他の速度制限オプション:
Nmap には、走査速度を制御するためのいくつかのその他のオプションがあります。
--min-rate <数値>
:1 秒間に送信する最小パケット数を指定します。--scan-delay <時間>
:Nmap が送信する各プローブの後に待つ時間を調整します。--min-rtt-timeout <時間>
, --max-rtt-timeout <時間>
, --initial-rtt-timeout <時間>
:プローブのタイムアウト値を制御します。重要な留意点:
このステップでは、パケットの断片化と速度制限の手法を組み合わせて、Nmap の走査をさらに微調整します。手法を組み合わせることは、検出を回避し、走査性能を最適化するために役立ちます。
パケットを断片化するために -f
オプションを、送信速度を制限するために --max-rate
オプションを使います。パケットの断片化は、TCP ヘッダを複数のパケットに分割して、パケットフィルタやファイアウォールが走査を検出しにくくします。速度を制限することで、走査がネットワークを圧倒したり、警報を引き起こしたりしないようになります。
ループバックアドレス (127.0.0.1
) に対して、パケットの断片化を行い、最大パケット速度を 1 秒間 50 パケットに制限して走査を行いましょう。
Xfce 端末を開き、次のコマンドを実行します。
sudo nmap -f --max-rate 50 127.0.0.1
このコマンドは、パケットを断片化し、最大パケット速度を 1 秒間 50 パケットに制限しながら、127.0.0.1
に対する Nmap 走査を開始します。端末に Nmap の出力が表示され、走査の進行状況が表示されます。
出力例(特定の出力は対象とネットワークによって異なります):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000070s latency).
Other addresses for localhost: ::1
Not shown: 999 closed ports
PORT STATE SERVICE
135/tcp open msrpc
Nmap done: 1 IP address (1 host up) scanned in 1.85 seconds
解説:
sudo nmap
:特定の走査タイプには必要なスーパーユーザー権限で Nmap を実行します。-f
:パケットを小さな断片に分割します。--max-rate 50
:送信速度を最大で 1 秒間 50 パケットに制限します。127.0.0.1
:対象の IP アドレス(ループバックアドレス)を指定します。重要な留意点:
このステップでは、前のステップで使用した回避手法の有効性をどのように検証するかについて説明します。走査が完全に検出されないことを確実に証明することはできませんが、様々な方法を使って回避の可能性を評価することができます。
回避の検証方法:
ネットワークモニタリング:tcpdump
や Wireshark
などのツールを使ってネットワークトラフィックをキャプチャし、Nmap 走査の特性を分析します。断片化されたパケット、偽装用の IP アドレス、速度制限されたトラフィックを探します。これには、対象と同じネットワーク上の別のマシンが必要です。今回のようにコンテナ環境では、これは実行不可能です。
IDS/IPSログ:侵入検知/防止システム(IDS/IPS)のログにアクセスできる場合、Nmap 走査に関連する警報を調べます。警報がないことは回避を保証するものではありませんが、好ましい兆候です。これにはまた、外部システムへのアクセスが必要で、今回は持っていません。
対象システムのログ:対象システムのログを調べて、Nmap 走査の証拠を探します。これには、特定のポートへの接続試行や異常なネットワーク活動が含まれる場合があります。また、これには対象システムへのアクセスが必要です。
第三者のオンラインサービス:一部のオンラインサービスは、ネットワークトラフィックを分析して潜在的なセキュリティ脅威を特定することができます。Nmap 走査トラフィックのサンプルをこれらのサービスに提出して分析を依頼することができます。
実験環境の制限:
LabEx VM 環境の制限(例えば、別のモニタリングマシンがないこと、IDS/IPS や対象システムのログへのアクセスができないこと)のため、回避の包括的な検証を行うことはできません。しかし、実行したコマンドを見直して、回避にどのように寄与するかを理解することができます。
回避手法のレビュー:
偽装走査 (nmap -D RND:5 192.168.1.1
):この手法は、走査が複数の IP アドレス、ランダムに生成されたものを含む複数の IP アドレスから発信されているかのように見せることができます。これにより、ネットワーク管理者を混乱させ、走査の実際のソースを追跡するのを困難にします。
パケット断片化 (nmap -f 127.0.0.1
):この手法は、TCP ヘッダを複数のパケットに分割して、パケットフィルタやファイアウォールが走査を検出しにくくします。
IP スプーフィング (nmap -S 192.168.1.100 192.168.1.1
):この手法は、異なるソース IP アドレスを使って実際の IP アドレスを隠します。
速度制限 (nmap --max-rate 100 192.168.1.1
):この手法は、走査速度を落として、警報を引き起こしたりネットワーク混雑を引き起こしたりする可能性を減らします。
組み合わせた手法 (nmap -f --max-rate 50 127.0.0.1
):断片化と速度制限を組み合わせることで、回避に対する多層的なアプローチが可能になります。
結論:
LabEx VM 環境で回避を確実に検証することはできませんが、これらの手法の背後にある原理とそれがどのように機能するかを理解することは、隠密性の高く効果的な Nmap 走査を行うために重要です。実際のシナリオでは、上記の方法を使って回避の効果を評価します。
このステップは、コンセプトと制限を理解することに焦点が当てられており、端末で特定のアクションを行うことではありません。したがって、検証ステップでは、実験でこのステップにアクセスしたことを確認するだけです。
この実験では、参加者は Nmap を使ってファイアウォールと IDS を回避する方法を学びます。彼らは、nmap -D RND:5
を使った偽装走査、nmap -f
を使ったパケットの断片化、nmap -S
を使った IP アドレスのスプーフィング、nmap --max-rate
を使った走査速度の調整、およびこれらの手法を組み合わせるなど、様々な手法を検討します。各コマンドは Xfce 端末で実行され、参加者には倫理的な使用の重要性、ネットワークへの影響、およびこれらの回避方法の限界について注意が喚起されます。