IDS/IPS の検知原理(シグネチャ vs アノマリ)
なぜ既知パターン照合だけでは侵入を防げないのか。シグネチャとアノマリ検知の原理、ステートフル再構成、フラグメントや挿入による回避、NIDS と HIDS の配置と限界まで一気に掴める。
- 1.検知はシグネチャ照合(既知の攻撃パターンに一致するか)とアノマリ検知(学習した正常からの逸脱か)に大別される。前者は既知を低誤検知で捕まえるが未知に弱く、後者は未知ゼロデイを捕まえる代わりに誤検知が多い。両者は精度と汎化のトレードオフ上にある。
- 2.パケット単位の照合は回避される。攻撃者は IP/TCP のフラグメント化や TTL 操作で IDS とエンドホストに別々の再構成をさせ、攻撃データを分割(フラグメント回避)したり無害なゴミを挿入(インサーション)して照合をすり抜ける。だから IDS はホストと同じ規則でストリームを再構成(ステートフル解析)しなければならない。
- 3.NIDS はネットワーク境界で多数のホストを一望できるが暗号化トラフィックの中身を見られず、HIDS は端末上で復号後のデータや挙動を見られるが各端末への配備が要る。IPS はインラインで遮断もできるが、遮断は誤検知が即サービス影響になる重い判断であり、検知と防御は別問題である。
「侵入が起きている」をどう判定するか
IDS/IPS の根本問題は、流れてくるトラフィックや端末上のイベントから攻撃が進行中かを判定することです。完璧な判定器は存在せず、現実の検知器はすべて近似です。判定の軸は二つに大別されます。シグネチャ検知(既知攻撃の特徴に一致するか)とアノマリ検知(学習した正常からどれだけ逸脱したか)です。前者は「悪いものの形」を、後者は「正常の形」をモデル化します。両者はマルウェア検知の静的シグネチャと挙動ベースの対立とまったく同じ構図にあり、**未知を捕まえる力(汎化)と誤検知を抑える力(精度)**のトレードオフ上に置かれます。
IDS(Intrusion Detection System)は監視・通報に徹し、トラフィックのコピーを解析します(ミラーポートや TAP 経由のパッシブ配置)。IPS(Intrusion Prevention System)は通信経路上にインラインで挿入され、検知したら遮断・改変まで行います。検知ロジックは共通でも、IPS は判定が即「通す/落とす」に直結するため、誤検知が正規通信の遮断という実害になります。
シグネチャ検知:既知の「形」に一致するか
シグネチャ検知は、既知攻撃から抽出した特徴(バイト列、正規表現、ヘッダ条件の組)を、観測したパケットやストリームに照合します。Snort/Suricata 系のルールが典型で、送信元・宛先・プロトコル・ポートの条件に加え、ペイロード中の文字列や content パターン、PCRE による正規表現を指定します。
多数のルールを同時に高速照合するため、エンジンは Aho-Corasick のような多パターン文字列マッチングで入力を 1 パス走査し、候補に当たったものだけを重い正規表現で精査します。利点はマルウェアのシグネチャと同じく、既知を低誤検知で正確に捕まえることです。
本質的弱点も同じで、既知のものしか捕まえられません。ルールに無い新種・ゼロデイは素通りし、攻撃者がペイロードを少し変えるだけ(エンコード、空白挿入、等価な表現)で照合を外せます。だからシグネチャは継続的なルール更新が前提で、未知への備えにはなりません。
アノマリ検知:正常からの逸脱を測る
アノマリ検知は逆に、正常な通信や挙動の統計的モデルを学習し、そこから大きく外れたものを異常とみなします。モデル化の対象はさまざまです。
- 統計ベース:パケット長やレートの分布、宛先ポートの出現頻度、フロー時間などの特徴量を学習し、平均からの乖離(しきい値や確率)で判定する。
- プロトコル仕様ベース:RFC が定める正しいプロトコル状態遷移をモデル化し、規格外のシーケンスや異常なフィールド値を検知する(仕様ベース検知)。
- 挙動ベース:通信先の組、時間帯、データ量といった「いつもの振る舞い」からの逸脱を見る。
利点は未知の攻撃を捕まえうることです。シグネチャが存在しないゼロデイでも、それが正常分布から外れれば異常として浮かびます。代償は**誤検知(false positive)**の多さです。正常の幅は広く時間とともに変わるため(特徴ドリフト)、業務の変化や新サービス導入が容易に「異常」を誘発します。さらに、攻撃を正常範囲に紛れ込ませる回避(後述)や、攻撃込みのデータで学習してしまう汚染にも弱いです。
| 観点 | シグネチャ検知 | アノマリ検知 |
|---|---|---|
| モデル化の対象 | 既知攻撃の「悪い形」 | 学習した「正常の形」 |
| 既知への強さ | 高精度・低誤検知で捕捉 | 正常に紛れると見逃しうる |
| 未知(ゼロデイ) | ルールが無く素通り | 逸脱として捕まえうる |
| 主な弱点 | ルール更新依存・小変形で回避 | 誤検知の多さ・特徴ドリフト・学習汚染 |
| 判定の説明性 | 高い(一致ルールが根拠) | 低い(なぜ異常かが曖昧になりがち) |
実運用のエンジンは両者を直列・並列に組みます。安価なシグネチャ照合で大量の既知を捌き、残りをアノマリや評判(レピュテーション)で精査する段階的なパイプラインが基本形です。どちらか一方では現代の脅威を覆えません。
ステートフル解析:パケットではなくストリームを見る
ここで決定的に重要なのが、何に対して照合するかです。攻撃データは複数の IP フラグメントや TCP セグメントにまたがって運ばれ、再送・順序入れ替え・重複も起こります。1 パケットだけ見て照合すると、攻撃文字列が境界で分断されて一致しません。
そこで IDS はステートフル解析を行います。IP フラグメントを組み立て直し、TCP コネクションを追跡してシーケンス番号順にバイトストリームを再構成し、その連続ストリームに対してシグネチャを当てます。これは TCP の順序保証・再構成を IDS 自身が再現する作業で、TLS レコード層が暗号化前にデータを断片化・再結合するのと同じく、境界をまたぐ意味を復元する必要があるからです。さらにアプリ層プロトコル(HTTP、DNS など)を解釈し、URL デコードや文字コード正規化を施してから照合するプロトコルデコード/正規化まで行って初めて、表層の変形に強くなります。
このステートフル再構成こそが、次の回避手法の主戦場になります。
回避手法:インサーションとエヴェイジョン
古典的な回避は Ptacek と Newsham(1998) が定式化した**インサーション(挿入)とエヴェイジョン(回避)**です。根本原因は一つ、IDS とエンドホストが同じパケット列を別々に解釈しうることです。
インサーション : IDSは受理するがエンドホストは破棄するパケットを混ぜる
→ IDSのストリームにだけゴミが入り、攻撃文字列が崩れて不一致
エヴェイジョン : IDSは破棄するがエンドホストは受理するパケットを使う
→ IDSが攻撃の一部を見落とし、ホスト側にだけ攻撃が届く
この食い違いを作る具体的な手口が次です。
- フラグメント化/セグメント分割:攻撃文字列を細かく分割し、IDS の再構成が甘ければ照合をすり抜ける。重複フラグメントを送り、IDS とホストでどちらのデータを採用するか(先着優先か後着優先か)の差を突く(オーバーラップ攻撃)。
- TTL 操作:途中のルータで失効する TTL を仕込み、IDS は通過を観測するがホストには届かない(または逆)パケットを作る。
- 不正なチェックサム・予約ビット:IDS が緩く受理しホストが破棄するパケット(またはその逆)でストリームを汚す。
- TCP オーバーラップとシーケンス操作:重複するシーケンス番号で異なるデータを送り、再構成の解釈差を作る。
回避が成立するのは IDS が攻撃を「見られない」からではなく、IDS の見たストリームとホストの見たストリームが食い違うからです。対策は、IDS が守る各ホストの再構成挙動(OS ごとのフラグメント再組立ポリシー、TTL、重複の扱い)を把握し、それに合わせて再構成するターゲットベースの正規化です。IPS なら、インラインで通信を**正規化(traffic normalization/scrubbing)**し、曖昧なパケットを矯正してから転送することで、解釈の余地そのものを消せます。
NIDS と HIDS:配置がもたらす可視性と限界
検知器をどこに置くかで、見えるものと限界が決まります。
NIDS(ネットワーク型)は境界やセグメント境に置き、流れるトラフィックを観測します。1 台で多数のホストを一望でき、端末に手を入れずに済むのが利点です。限界は二つ。第一に暗号化で、TLS で守られたペイロードは中身が見えず、シグネチャ照合が効きません(TLS 終端や復号を別途用意しない限り)。第二に取りこぼしで、高速回線では全パケットを追えず(パケットロス)、前述の再構成コストと相まって取り逃しが起きます。
**HIDS(ホスト型)**は各端末上で動き、復号後のデータ・システムコール・ファイル変更・ログ・プロセス系譜を観測します。暗号化の壁を越えてアプリ層の意味を見られ、端末上の挙動を直接捉えられるのが利点です。限界は、全端末への配備と運用が要ること、端末が侵害されれば HIDS 自身も無力化されうること、そしてネットワーク全体の俯瞰が効きにくいことです。
| 観点 | NIDS(ネットワーク型) | HIDS(ホスト型) |
|---|---|---|
| 配置 | 境界・セグメント境(ミラー/TAP/インライン) | 各端末上のエージェント |
| 可視範囲 | 多数ホストのトラフィックを一望 | 単一端末の復号後データ・挙動 |
| 暗号化 | 中身が見えない(要 TLS 終端) | 復号後を見られる |
| 主な限界 | 暗号化・高速回線でのロス・回避 | 全端末配備の運用負荷・侵害時の無力化 |
両者は補完関係にあり、NIDS でネットワークの筋を、HIDS で端末内の振る舞いを押さえ、両テレメトリを相関させて初めて死角が減ります。
検知と防御は別問題:IPS の重さ
IPS はインライン配置で遮断までできますが、それは「検知できる」とは別の難しさを抱えます。誤検知が即サービス影響になるため、しきい値は保守的にならざるをえず、結果として見逃しが増える方向に振れます。インラインである以上、IPS 自身が遅延・スループットの上限になり、過負荷時の挙動(フェイルオープン=素通り/フェイルクローズ=遮断)の設計が可用性とセキュリティのトレードオフを直撃します。
また検知ルールやアノマリの逸脱は、それ単体では攻撃の一段階しか示しません。偵察・初期侵入・横展開・C2 通信といった各段を攻撃キルチェーンと ATT&CKの技術へマッピングし、点ではなく**筋(chain)**として相関させて初めて、誤検知を抑えつつ深く捕まえられます。境界の一線で防ぎ切る発想ではなく、侵入を前提に常時監視・相関するゼロトラストの考え方と地続きです。
(1) 検知はシグネチャ(既知パターン照合・低誤検知だが未知に弱い)とアノマリ(正常逸脱・未知を捕まえるが誤検知多)に大別され、精度と汎化のトレードオフ上にある。(2) パケット単位照合は分断で外れるため、IDS は IP/TCP をステートフル再構成し、プロトコルデコード・正規化したストリームに照合する。(3) 回避の本質はIDS とホストの解釈不一致で、フラグメント化・TTL 操作・重複はインサーション/エヴェイジョンを生む。対策はターゲットベース正規化とトラフィック矯正。(4) NIDS は多数ホストを一望できるが暗号化で中身が見えない、HIDS は復号後を見られるが全端末配備が要る。(5) IPS はインラインで遮断できるが誤検知が即サービス影響になり、検知と防御は別問題。
まとめ
IDS/IPS が教えるのは、「攻撃が起きているか」という問いに完全な答えはなく、シグネチャ(既知の形)とアノマリ(正常からの逸脱)という二つの近似を多層で重ねるしかない、という一点です。そしてどちらの照合も、IDS がエンドホストと同じ規則でストリームを再構成できて初めて意味を持ちます。再構成に隙があれば、攻撃者はフラグメントと挿入で解釈の食い違いを突いてすり抜けます。配置(NIDS/HIDS)が可視性と限界を決め、暗号化と回避が常に死角を作る以上、境界の一点で防ぎ切る発想ではなく、ネットワークと端末のテレメトリを相関させ、攻撃の筋を時間軸で読む多層監視へと重心が移っていきます。
セキュリティ Article
IDS/IPS の検知原理(シグネチャ vs アノマリ)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
IDS
比較で見る軸
難易度: advanced / カテゴリ: セキュリティ / タグ数: 5
導入後に効く点
パケット単位の照合は回避される。攻撃者は IP/TCP のフラグメント化や TTL 操作で IDS とエンドホストに別々の再構成をさせ、攻撃データを分割(フラグメント回避)したり無害なゴミを挿入(インサーション)して照合をすり抜ける。だから IDS はホストと同じ規則でストリームを再構成(ステートフル解析)しなければならない。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- セキュリティ
- タグ数
- 5
判断チェックリスト
- 自社の用途が「IDS / IPS」に近いか確認する。
- 強みである「検知はシグネチャ照合(既知の攻撃パターンに一致するか)とアノマリ検知(学習した正常からの逸脱か)に大別される。前者は既知を低誤検知で捕まえるが未知に弱く、後者は未知ゼロデイを捕まえる代わりに誤検知が多い。両者は精度と汎化のトレードオフ上にある。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。