セッション追跡型IDSの設計と実装
The Design and Implementation of
Session Tracking IDS
mizutani@sing (B2) 親:true
背景
「侵入検知システム(IDS)は、コストがかかる非
効率的なセキュリティ対策である。2005年ま
でにIDSの導入は廃れるだろう」
「24時間7日間体制で監視の必要があるため、
情報システム担当部門の負担が大きい」
(“Information Security Hype Cycle“ Gartner [U.S.] )
背景
IDS (Network Based Intrusion Detection
System)
攻撃トラフィックのみでアラートを検知
既存IDSのアラートの内訳
攻撃が行われ,成功したアラート.
攻撃が行われ,失敗したアラート.
誤検知 (Positive False)
成功,失敗の判定は行わない
問題点
全てのアラートの成功・失敗を調査
リスクの大小に関わらず調査
IDSの運用には多大なコストが必要
インシデントレスポンスの遅れ
インシデントの見逃し
解決手法
セッションの追跡
Attackerの攻撃Traffic
Targetの応答Traffic
攻撃の発見&攻撃成功・失敗判別
Ex)
Backdoor “root.exe”
Nimda Warmが設置
HTTPで ”GET /root.exe” とすることで第三者
が侵入可能
アラート検知 (既存のIDS)
GET /root.exe
GET /root.exe
Target-A
Attacker
Alert
Alert
Normal IDS
Target-B
アラート検知 (セッション追跡IDS)
GET /root.exe
200 OK
GET /root.exe
Target-A
Attacker
Exploded
!
404 Not Found
Failur
e
Session Tracking IDS
Target-B
得られる結果
攻撃の成功を検知
管理者に即座に通知
成功・失敗確認の手間を省く
IDSの運用コストを削減
設計(想定される環境)
IDS
Segment α
Mirroring
Segment β
BackBone
Router
Segment γ
設計 (IDS Works)
Packet
Capture
Search Flow
Not Found
Detected
Add Flow
Search Unit Signature
Search Signature
Not Found
Detected
Add Unit Signature
設計(セッション管理機能)
内部ネットワークのノードをキーにして検索
Ex) 198.120.100.1 -> 203.178.143.109
Internal Network Segment Internal Network Nodes
203.178.139.192/26
203.178.143.0
External Network Nodes
203.196.192.168
203.178.143.1
192.120.100.1
203.178.143.0/25
203.178.143.109
203.178.143.127
203.178.143.128/25
203.178.143.128
211.10.16.64
Session Information
- Unit Signature
- Timestamp
設計 (セッション追跡)
Normal Signature
Unit Signature
Packet Detected
Pattern1
動的に生成
Packet Pattern2
Session
Detected
Packet
Pattern2
Pattern3
Packet Pattern3
Normal SignatureからPattern1にマッチするものを検索
Pattern1を検知後,Pattern2から動的にSignatureを生
成(Unit Signature)
以後,当該セッションではUnit Signatureを検索
設計(シグネチャ)
tcp IN (title:“Root.exe attempt”; dport=80; flags=AP; payload=“root.exe”;)
=[out:7]>
(flow=OUT; sport=80; flags=AP; payload!="404";);
基本設定
$Protocol = {tcp, udp, icmp, ip}
$Direction = {IN, OUT}
設計(シグネチャ)
tcp IN (title:“Root.exe attempt”; dport=80; flags=AP; payload=“root.exe”;)
=[out:7]>
(flow=OUT; sport=80; flags=AP; payload!="404";);
Packet Pattern
複数設定可能
title : アラートの名称
dport / sport : Distenation Port / Source Port
flags : TCP Flags
payload : TCP Payload or UDP Payload
flow : pattern2以降の方向
設計(シグネチャ)
tcp IN (title:“Root.exe attempt”; dport=80; flags=AP; payload=“root.exe”;)
=[out:7]>
(flow=OUT; sport=80; flags=AP; payload!="404";);
Keeping Condition
当該セッション中でー
out
: 外部ネットワーク宛のパケットをN個発見
in
: 内部ネットワーク宛のパケットをN個発見
time : N秒経過(タイムアウト)
実装
OS
RedHat Linux 9.0 (kernel 2.4.20-8)
Debian GNU/Linux 2.3 testing (kernel 2.2.21)
C言語
libpcap
http://www.sfc.wide.ad.jp/~mizutani/term20
03s/witch-0.0.2.tar.gz
デモ
root.exeを利用した侵入の例
今後の課題1
さらに高速化
シグネチャの検索方法
データ構造 / flow statusの持ち方
アラート機能の充実
リモートマネージャーへの出力
DBへのログ出力
メールでの通知
今後の課題2
シグネチャの設定項目の追加
Payload offset
IP Protocol,
IP Datagram size... etc.
シグネチャ数の充実
Snortのルール等参考に
RG-NETでの実運用
秋学期始まるまで目安に
© Copyright 2026 ExpyDoc