Nmap でファイアウォールと IDS を回避する

NmapNmapBeginner
今すぐ練習

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

はじめに

この実験では、Nmap を使ってファイアウォールと IDS を回避する方法を学びます。この実験では、デコイスキャンの実行、パケットの断片化、IP アドレスの偽装、走査レートの調整、およびこれらの手法を組み合わせるなど、いくつかの手法が扱われます。Xfce 端末で様々な Nmap コマンドを実行し、回避結果を検証します。これらの手法は、倫理的に、適切な許可を得て使用することを忘れないでください。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/scan_types("Scan Types and Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/timing_performance("Timing and Performance") nmap/NmapGroup -.-> nmap/syn_scan("SYN Scan") nmap/NmapGroup -.-> nmap/firewall_evasion("Firewall Evasion Techniques") nmap/NmapGroup -.-> nmap/stealth_scanning("Stealth and Covert Scanning") subgraph Lab Skills nmap/scan_types -.-> lab-530178{{"Nmap でファイアウォールと IDS を回避する"}} nmap/target_specification -.-> lab-530178{{"Nmap でファイアウォールと IDS を回避する"}} nmap/timing_performance -.-> lab-530178{{"Nmap でファイアウォールと IDS を回避する"}} nmap/syn_scan -.-> lab-530178{{"Nmap でファイアウォールと IDS を回避する"}} nmap/firewall_evasion -.-> lab-530178{{"Nmap でファイアウォールと IDS を回避する"}} nmap/stealth_scanning -.-> lab-530178{{"Nmap でファイアウォールと IDS を回避する"}} end

nmap -D RND:5 192.168.1.1 を使ってデコイスキャンを実行する

このステップでは、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

重要な留意点

  • 倫理的な使用:常にネットワークやシステムをスキャンする明示的な許可を得てください。無許可のスキャンは違法で倫理的にも問題があります。
  • ネットワークへの影響:デコイスキャンは大量のネットワークトラフィックを生成する可能性があります。責任感を持って使用し、対象のネットワークを過負荷にしないようにしてください。
  • 有効性:デコイスキャンはスキャンの元を特定するのを難しくすることができますが、完全には騙せるものではありません。高度な侵入検知システム(IDS)でも、実際のソースを特定できる場合があります。

nmap -f 127.0.0.1 を使ってパケットを断片化する

このステップでは、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 アドレス(ループバックアドレス)を指定します。

重要な留意点

  • ファイアウォール/IDS 回避:パケットの断片化は、断片を適切に再構築できない単純なファイアウォールや IDS を回避することができる場合があります。ただし、現代のセキュリティデバイスは一般的に断片化されたパケットを処理できます。
  • パフォーマンスへの影響:断片化はネットワークのオーバーヘッドを増やし、スキャンを遅くする可能性があります。
  • MTU オプション-mtu オプションを使用して、断片のカスタム MTU サイズを指定することができます。たとえば、nmap -f -mtu 32 127.0.0.1 は、パケットを 32 バイトのチャンクに断片化します。

nmap -S 192.168.1.100 192.168.1.1 を使って IP アドレスを偽装する

このステップでは、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 アドレスを指定します。

重要な留意点

  • 倫理的な使用:IP アドレスの偽装は、セキュリティテストなどの正当な目的のために、許可された環境でのみ使用すべきです。
  • root 権限:IP アドレスを偽装するには root 権限が必要です。
  • 機能の制限:偽装されたパケットに対する応答を受け取れないため、対象に関する情報を収集するために他の手法を使用する必要がある場合があります。
  • ネットワーク構成:ネットワークが偽装を防止するように構成されている場合、偽装は機能しない場合があります。ルーターやファイアウォールは、偽装された送信元アドレスを持つパケットがネットワークを離れるのを防ぐメカニズムを持っていることが多いです。

nmap --max-rate 100 192.168.1.1 を使って速度を調整する

このステップでは、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 <時間>:プローブのタイムアウト値を制御します。

重要な留意点

  • ネットワーク状況:最適な走査速度はネットワーク状況に依存します。ネットワークが混雑している場合、パケットロスを回避するためにより低い速度が必要になる場合があります。
  • IDS/IPS回避:走査速度を調整することで、侵入検知/防止システムによる検出を回避するのに役立ちます。
  • 走査時間:走査速度を低下させると、全体的な走査時間が増えます。

nmap -f --max-rate 50 127.0.0.1 を使って手法を組み合わせる

このステップでは、パケットの断片化と速度制限の手法を組み合わせて、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 アドレス(ループバックアドレス)を指定します。

重要な留意点

  • 断片化のオーバーヘッド:パケットの断片化は、より多くのパケットを送信する必要があるため、走査のオーバーヘッドを増やす可能性があります。
  • ファイアウォールの動作:一部のファイアウォールは、断片化されたパケットを検査する前に再構築する場合があり、断片化の効果を無効にします。
  • 速度制限の有効性:速度制限の有効性は、ネットワーク状況と対象システムの感度に依存します。
  • 手法の組み合わせ:異なる回避手法を組み合わせることで、セキュリティ対策を回避する確率が増えますが、走査の複雑さも増えます。

Xfce 端末で回避の検証を行う

このステップでは、前のステップで使用した回避手法の有効性をどのように検証するかについて説明します。走査が完全に検出されないことを確実に証明することはできませんが、様々な方法を使って回避の可能性を評価することができます。

回避の検証方法

  1. ネットワークモニタリングtcpdumpWireshark などのツールを使ってネットワークトラフィックをキャプチャし、Nmap 走査の特性を分析します。断片化されたパケット、偽装用の IP アドレス、速度制限されたトラフィックを探します。これには、対象と同じネットワーク上の別のマシンが必要です。今回のようにコンテナ環境では、これは実行不可能です。

  2. IDS/IPSログ:侵入検知/防止システム(IDS/IPS)のログにアクセスできる場合、Nmap 走査に関連する警報を調べます。警報がないことは回避を保証するものではありませんが、好ましい兆候です。これにはまた、外部システムへのアクセスが必要で、今回は持っていません。

  3. 対象システムのログ:対象システムのログを調べて、Nmap 走査の証拠を探します。これには、特定のポートへの接続試行や異常なネットワーク活動が含まれる場合があります。また、これには対象システムへのアクセスが必要です。

  4. 第三者のオンラインサービス:一部のオンラインサービスは、ネットワークトラフィックを分析して潜在的なセキュリティ脅威を特定することができます。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 端末で実行され、参加者には倫理的な使用の重要性、ネットワークへの影響、およびこれらの回避方法の限界について注意が喚起されます。