ネットワークセキュリティの現場において、ペネトレーションテストや脆弱性診断を遂行する際、ターゲット環境に導入されたファイアウォールやIPS(侵入防止システム)をどのように考慮するかは極めて重要な課題です。
本記事では、ネットワークスキャンツールのデファクトスタンダードであるNmapに備わっている、各種回避オプションの挙動とその実効性について詳しく検証します。
セキュリティエンジニアは、攻撃者がどのような手法で防御網を擦り抜けようとするのか、そのメカニズムを深く理解しておく必要があります。
Nmapにおける回避技術の重要性と基本概念
現代の企業ネットワークでは、外部境界だけでなく内部ネットワークにおいても強力なフィルタリング機能を持つデバイスが配置されています。
単にデフォルト設定のNmapを実行するだけでは、これらのデバイスによって通信が遮断され、正確なポートスキャンの結果を得ることは困難です。
さらに、多くのIPSや次世代ファイアウォールは、短時間に大量のパケットを送信するスキャンの挙動を即座に検知し、送信元のIPアドレスを一時的にブラックリストに登録します。
このような制限を回避し、隠密性を保ちながら情報を収集するためには、パケットの構造や送信タイミングを細かく制御することが不可欠となります。
Nmapには、TCP/IPプロトコルの仕様を逆手に取った回避オプションが多数用意されており、これらを適切に組み合わせることで、検知の網を潜り抜ける可能性を高めることができます。
ただし、これらのオプションは魔法の杖ではなく、ターゲット環境の防御レベルや設定によってその有効性は大きく変動することを理解しておかなければなりません。
今回の検証では、主要な回避オプションが実際にパケットレベルでどのような変化をもたらし、それが防御側にどう映るのかを掘り下げていきます。
パケット断片化(Fragmentation)による回避の検証
ファイアウォール回避の古典的かつ強力な手法の一つに、パケットの断片化(フラグメンテーション)があります。
Nmapで-fオプションを使用すると、TCPヘッダを複数のIPパケットに分割して送信することが可能になります。
具体的には、20バイトのTCPヘッダを8バイトずつの小さな断片に分けることで、一部のパケットフィルタリング型ファイアウォールのルールをバイパスできる場合があります。
多くの旧式なファイアウォールやルーターのACL(アクセスコントロールリスト)は、パケットの先頭のみを検査対象とするという特性を持っています。
ヘッダ情報が分断されている場合、フィルタリングエンジンがパケットを正しく再構成できない限り、ポリシーとの照合に失敗し、パケットを通過させてしまうという脆弱性が生じます。
以下に、断片化オプションを指定したスキャンの実行例を示します。
# -f オプションによるパケット断片化スキャンの実行
nmap -f -sS -p 80,443 192.168.10.50
このコマンドを実行した際のパケットキャプチャ結果を確認すると、IPヘッダのFlagsフィールドにMore fragmentsがセットされていることがわかります。
Frame 1: IP payload 8 bytes (Fragment 0)
Frame 2: IP payload 8 bytes (Fragment 8)
Frame 3: IP payload 4 bytes (Fragment 16)
しかし、近年のステートフル・パケット・インスペクション(SPI)機能を備えたファイアウォールに対しては、この手法の効果は限定的です。
現代のデバイスは、断片化されたパケットを受信すると、メモリ上で一度再構成してからセキュリティチェックを行うため、容易にスキャンが検知・遮断される傾向にあります。
そのため、より高度な回避を試みる場合は、--mtuオプションを使用して、さらに小さい、あるいは特殊な最大転送単位を指定して挙動を観察する必要があります。
デコイ(おとり)機能を用いたスキャン源の隠蔽
自身のIPアドレスを完全に隠すことはできませんが、大量の偽装IPアドレスの中に本物のスキャンパケットを紛れ込ませる手法が「デコイ」です。
Nmapの-Dオプションを使用することで、複数の偽装IPアドレス(おとり)を指定し、あたかも複数のホストから同時にスキャンが行われているように見せかけることができます。
これにより、ターゲット側のログには大量のスキャン履歴が記録されますが、どれが真の攻撃者のIPアドレスであるかを特定することが極めて困難になります。
管理者がIDSのログを確認した際、数十から数百の異なるIPアドレスから同様のスキャンを受けているように見えるため、対応の優先順位を判断できなくなる効果があります。
デコイを使用する際は、自分自身のIPアドレスを意味するMEというキーワードをリストのどこに配置するかが重要です。
# デコイとして複数のIPアドレスを指定してスキャン
nmap -D 10.0.0.1,10.0.0.2,ME,10.0.0.5 -sS 192.168.10.50
このオプションは、単純な接続レート制限を行っているIPSを混乱させるのに非常に有効です。
ただし、ターゲットの管理者が逆経路フィルタリング(uRPF)などを適切に設定している場合、偽装されたパケットの多くは途中のルーターで破棄される可能性があります。
また、実際に稼働しているホストのIPをおとりに使用すると、そのホストに対してターゲットからICMPエラーメッセージやRSTパケットが送信され、周囲に迷惑をかける可能性がある点には注意が必要です。
送信元ポートおよびMACアドレスの偽装技術
ファイアウォールの設定ミスを突く手法として、送信元ポート番号の固定化が挙げられます。
一部のネットワーク管理者は、DNS(UDP 53)やHTTP(TCP 80)などの特定のサービス用パケットを無条件で信頼し、内部ネットワークへの通過を許可するように設定している場合があります。
Nmapの--source-port(または-g)オプションを使用すると、スキャンに使用するエフェメラルポートではなく、特定のポート番号を指定して通信を開始できます。
# 送信元ポートをDNSの53番に固定してスキャン
nmap --source-port 53 -sS 192.168.10.50
もしファイアウォールが「送信元ポート53番のパケットはDNSレスポンスである」と誤認して通過させる設定になっていれば、本来遮断されるはずのポートへの到達が可能になります。
同様の考え方で、同一セグメント内での調査においては、--spoof-macオプションによるMACアドレスの偽装も有効です。
スイッチのポートセキュリティやMACアドレスフィルタリングが施されている環境では、許可されているデバイス(例えばプリンタやIP電話)のMACアドレスを模倣することで、検知を回避できる確率が高まります。
これらの手法は、プロトコルの中身を厳密に検査しない「古いタイプのACL設定」に対して特効薬となります。
データ長とダミーデータの付加による検知回避
多くのIDS(侵入検知システム)は、特定のツールのシグネチャ(特徴的なパケットパターン)をベースに検知を行います。
Nmapのデフォルトのスキャンパケットは非常にサイズが小さく、特有の構造を持っているため、シグネチャ型検知エンジンに容易に捕捉されます。
これに対抗する手段として、パケットにランダムなデータを付加し、パケットサイズを意図的に変更する--data-lengthオプションが存在します。
# 各パケットに25バイトのランダムデータを追加してスキャン
nmap --data-length 25 192.168.10.50
パケットのサイズが変わることで、「特定のサイズのスキャンパケットのみをブロックする」という簡易的なフィルタを無効化できます。
また、通常のアプリケーション通信に近いパケットサイズを模倣することで、アノマリ型検知エンジンによる「異常なパケット長」という判断を回避できる可能性が生じます。
このオプションを使用する際は、あまりにも大きな値を指定すると、ネットワークの帯域を圧迫し、かえって目立ってしまうため、適切な値の選定が重要となります。
タイミング制御によるIPSの監視回避
IPSやWAFがスキャンを検知する際の最も一般的な基準は、一定時間内におけるパケットの送信密度です。
Nmapには、スキャンの速度を制御するための-Tオプションが用意されており、0から5までの「タイミングテンプレート」を選択できます。
特に-T0(Paranoid)や-T1(Sneaky)は、パケットの送信間隔を非常に長く設定するため、多くのIPSが持つタイムアウトしきい値を下回り、検知されずにスキャンを完了させることが可能です。
以下の表は、タイミングテンプレートの主な特徴をまとめたものです。
| テンプレート名 | オプション | 特徴 | 主な用途 |
|---|---|---|---|
| Paranoid | -T0 | 5分間隔でパケットを送信 | 極めて厳重なIDSの回避 |
| Sneaky | -T1 | 15秒間隔でパケットを送信 | 一般的なIDSの回避 |
| Polite | -T2 | パケット送信間隔を広げ、負荷を抑制 | ターゲットへの負荷低減 |
| Normal | -T3 | デフォルト設定 | 通常のネットワーク環境 |
| Aggressive | -T4 | 高速スキャン、タイムアウトを短縮 | 高速なネットワーク環境 |
当然ながら、-T0などの低速スキャンを使用した場合、数千のポートをスキャンするには数日から数週間という膨大な時間が必要になります。
実戦においては、ターゲットとするポートを絞り込んだ上で、--scan-delayオプションを使い、ミリ秒単位で細かく送信タイミングを調整することが推奨されます。
「急がば回れ」という格言通り、スキャンの速度を落とすことが、最強の回避策になる場面は少なくありません。
検証:近代的なIPS/WAFに対する回避オプションの実効性
ここまでの検証を踏まえ、近代的な防御デバイスに対してこれらのオプションがどれほど通用するのかを整理します。
結論から述べれば、単一のオプションのみで最新の次世代ファイアウォール(NGFW)を完全に欺くことは非常に困難です。
例えば、パケット断片化を行っても、現代のIPSはパケットの正規化(Normalization)を行い、元のストリームを再現した上でシグネチャを照合します。
しかし、複数のオプションを組み合わせることで、検知の精度を低下させることは可能です。
「デコイ」で送信元を攪乱しつつ、「タイミング制御」でパケットの密度を下げ、さらに「データ長」を調整してパケットの形を崩すといった複合的なアプローチが求められます。
また、ファイアウォールの回避に成功しても、その背後にあるホストのOSやアプリケーションが独自のログを出力している場合、攻撃の予兆は必ずどこかに残ります。
検証の結果、回避オプションの真の価値は、「防御側に検知させないこと」ではなく、「検知の感度を下げさせ、分析の負担を増大させること」にあると言えます。
防御側の対策:回避テクニックを封じ込める設定
一方で、システムの管理・防御を行う側としては、これらの回避オプションへの対策を講じておく必要があります。
まず、エッジデバイスにおいてパケットの再構成(Reassembly)を強制し、断片化パケットによる攻撃を無効化することが第一歩です。
次に、外部から内部への不要なICMPメッセージや不自然な送信元ポート(53番など)を持つパケットを、アプリケーション層の情報を基にフィルタリングすることが重要です。
さらに、単一のIPアドレスだけでなく、類似した複数のIPアドレスから発生する低速なスキャンを相関分析できるSIEM(セキュリティ情報イベント管理)の導入が効果を発揮します。
Nmapの回避オプションを知ることは、そのまま「堅牢な防御設定」を設計するためのガイドラインとなります。
攻撃側と防御側は常にイタチごっこの関係にありますが、パケットレベルでの挙動を把握することで、より精度の高いセキュリティ対策が可能となります。
まとめ
Nmapのファイアウォール・IPS回避オプションは、ネットワークプロトコルの柔軟性と防御システムの脆弱な隙間を突く強力な機能です。
パケットの断片化、デコイの使用、送信元情報の偽装、そしてタイミングの制御といった各技術は、適切に組み合わせて使用することで、セキュリティ診断の質を大きく向上させます。
しかし、防御側の技術も日々進歩しており、ステートフル検査やディープパケットインスペクションによって、多くの単純な回避策は無効化されつつあります。
そのため、検証においては単にツールを動かすだけでなく、Wiresharkなどのパケットアナライザを併用し、どのような通信が発生しているかを常に監視する姿勢が求められます。
今回の検証を通じて、回避オプションの理論的な背景と実環境での限界を正しく理解し、より高度なセキュリティ検証の実施に役立ててください。
最終的に、最も優れたセキュリティ対策は、こうした攻撃手法を知り尽くした上での多層防御の構築にあるということを再確認しておきましょう。
