IDS/IPS Evasion Techniques

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

TTL Manipulation

IDS/IPSには到達するが最終ホストには到達しないようなTTL値のパケットを送信します。続いて同じシーケンス値のパケットを送ることで、IDS/IPSはそれらを重複と判断して検査を省略し、実際には悪意のある内容を含ませることができます。

Nmap option: --ttlvalue <value>

Avoiding signatures

パケットにゴミデータを追加し、IPS/IDSのシグネチャに一致しないようにします。

Nmap option: --data-length 25

Fragmented Packets

パケットを分割して送るだけです。IDS/IPSが再構築できなければ、パケットは最終ホストに届いてしまいます。

Nmap option: -f

Invalid checksum

センサーは性能上の理由でチェックサムを計算しないことが多いです。したがって攻撃者は、センサーには解釈されるが最終ホストでは破棄されるようなパケットを送信できます。例:

RSTフラグを立て、かつ無効なチェックサムを付けたパケットを送ると、IPS/IDSは接続を切断するパケットだと解釈するかもしれませんが、最終ホストはチェックサム不一致でそのパケットを破棄します。

Uncommon IP and TCP options

センサーはIP/TCPヘッダ内の特定のフラグやオプションをもつパケットを無視する一方、宛先ホストは受信時にそれらを受け入れることがあります。

Overlapping

パケットをフラグメントすると、パケット間でオーバーラップが発生することがあります(例えばパケット2の最初の8バイトがパケット1の最後の8バイトと重なり、パケット2の最後の8バイトがパケット3の最初の8バイトと重なる等)。IDS/IPSがそれらを最終ホストと異なる方法で再構築すると、別のパケットとして解釈されます。あるいは、同じオフセットを持つ2つのパケットが到着し、ホストがどちらを採るか判断しなければならない場合もあります。

  • BSD: 小さいオフセットのパケットを優先します。同じオフセットでは最初に来たものを選びます。
  • Linux: BSDに似ていますが、同じオフセットでは最後に来たパケットを優先します。
  • First (Windows): 先に来た値を採用します。
  • Last (cisco): 後から来た値を採用します。

TCP Stream Overlap / Reassembly Mismatch

IPフラグメントと同様に、オーバーラップするTCPセグメントはIDS/IPSと宛先ホストで異なる方法で再構築されることがあります。センサーとホストがオーバーラップ部でどのバイトが優先されるかで不一致になる場合、IDS/IPSが見る場所には無害なバイトを置き、ホストが最終的に再構築する場所に悪意あるバイトを配置できます。

  • 対象OSの再構築ポリシーに応じて、まず無害なセグメントを送信し、その後に悪意のあるオーバーラップするセグメントを送る(または順序を逆にする)。
  • ホストにとってストリームを有効に保ちつつ、センサーに対する曖昧さを最大化するために、小さなオーバーラップを利用します。

IPv6 Extension Headers & Fragment Tricks

IPv6は任意のヘッダチェインを許容しており、上位レイヤ(TCP/UDP/ICMPv6)のヘッダはすべての拡張ヘッダの後ろに現れます。デバイスがチェイン全体を解析しない場合、拡張ヘッダを挿入したり、フラグメント化して上位レイヤヘッダがデバイスが期待する位置に見えないようにすることで回避できます。RFC 7112はIPv6ヘッダチェイン全体が最初のフラグメントに含まれることを要求していますが、準拠していない小さなフラグメントを受け入れるデバイスは、L4ヘッダを後続のフラグメントに押しやることで回避可能です。

Practical patterns:

  • 長い拡張ヘッダチェインで上位レイヤヘッダをパケット内でより深く押し込む。
  • IPv6 + Fragment + optionsのみを含む小さな最初のフラグメントを作り、L4ヘッダを後続フラグメントに残す。
  • 拡張ヘッダとフラグメンテーションを組み合わせ、最初のフラグメントのみを検査するデバイスから実際の上位レイヤプロトコルを隠す。

Tools

References

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする