スライド 1

踏み台攻撃だけを抑制できる
VMMレベル・パケットフィルタ
数理・計算科学専攻
学籍番号:08M54012
安積 武志
指導教員 千葉 滋
踏み台攻撃への対処

IaaS型サービスを提供するデータセンタにとって
踏み台攻撃は脅威



ユーザの仮想マシン(VM)に侵入されて外部を攻撃
被害者でありながら加害者になってしまう
攻撃を検出したらその通信を即座に制限すべき

できるだけ攻撃パケットだけを制限したい

サービスの可用性を保つため
外部
ホスト
大量の
パケット
VM
データセンタ
ポート
スキャン
一般的な対処法

外部のファイアウォールによる通信制限


ポートやIPアドレス単位で通信を制限
踏み台攻撃でない通信まで制限してしまう

制限が大雑把過ぎる
ファイア
ウォール port:25
外部
ホスト
deny ip A port 25
メールサーバ
SMTP
スキャン
port:25
sendmail
データセンタ
従来のきめ細かい対処法

サーバ内部のファイア
ウォールで通信制限

OS内部のパケット送信元
の情報も利用


踏み台攻撃を行っている
プロセスからのパケットの
み制限
攻撃者に通信制限を無効
化される恐れ

メールサーバ
send
mail
ファイアウォール
OS
port:25
管理者権限を取られると
ルールを削除できる
deny ip A port 25 pid 100
データセンタ
SMTP
スキャン
外部
ホスト
port:25
xFilter

仮想マシンモニタ(VMM)内で動作する
きめ細かいパケットフィルタ




VM
VMMにおける通信制限
すべてのパケットを検査できる
VMから隔離されているので安全
ゲストOS内の送信元情報を利用


プロセス
ゲスト OS
パケット
踏み台攻撃のみを抑制できる
VMのメモリを解析して取得
deny ip A port 25 pid 100
情報
xFilter
VMM
システム構成

xFilterは3つのコンポーネントからなる



モジュール、IDSを統括
SMTP
スキャン
xFilterモジュール

ゲストOSに合わせたメモリ解析



メールサーバ
xFilterコア
ゲスト OS
パケット送信元プロセスの特定
パケット
パケットをルールと照合

踏み台攻撃を検出
攻撃を防ぐルールを追加
情報
xFilter
IDS

send
mail
module
core
IDS
破棄
VMM
送信
xFilterモジュール

送信元プロセスによるパケットフィルタリング

型情報を用いてメモリ解析



デバッグ情報から取得
denyルールに指定された
プロセスを探す
対象パケットを送信した
ソケットが見つかれば拒否
ポート、IP
アドレスを
取得
sock
VM
socket
fdtable
files_struct
file
task_struct
pid、uid
を取得
メモリ解析
xFilter
deny ip A port 25 pid 100
module
core
IDS
VMM
フィルタリング結果のキャッシュ

性能向上のためにxFilterコアがフィルタリング結
果をキャッシュ


TCPの同一コネクション内のパケットについては結果
が変わらないことを利用
パケットのTCPヘッダのフラグで判断

SYN:コネクションの確立


フィルタリング結果をキャッシュ
FIN:コネクションの終了

packet
キャッシュからエントリを削除
xFilter
core miss
module
cache
hit
xFilterモジュールの開発支援

別VMでxFilterモジュールを動かせる

デバッグが容易になる



クラッシュしても立ち上げ
なおすだけで良い
フィルタリング性能は低下
プロセス
xFilter
module
ゲストOS
完成したらVMMに入れる
ことができる

パケット
xFilter
xFilter
core
変更は不要
破棄
送信
VMM
外部IDSを用いた場合の問題点

VMM内のIDSが踏み台攻撃を検出

パケット送信から検出までのタイムラグを小さくできる


外部のIDSで検出するとタイムラグが長い
送信元プロセスを特定できない可能性を減らす


ソケットのクローズ
プロセスの終了
VM
xFilter
外部
IDS
core
module
VMM
IDSによる攻撃元の特定

IDSが攻撃を検出したらパケットの送信元を特定

ゲストOSの全てのソケットを調べる


xFilterモジュールの機能を利用
攻撃を検出したら送信元特定フェーズに移行

以降は送信元を記録


常に記録すると性能に影響
VM
誤検知を防ぐ
xFilter
core
module
IDS
VMM
フィルタリングルールの自動登録

検出した攻撃を防ぐルールを自動的に追加

新しいルールの生成


検出した攻撃パケット(群)を包括するルールを生成
既存のルールとの統合

類似の攻撃を遮断できるように
必要に応じてルールをまとめる
deny ip A port 22 pid 100
deny ip B port 25 pid 100
deny ip A port 22 pid 100 uid 1000
deny ip B port 22 pid 101 uid 1000
deny ip * port * pid 100
deny ip * port 22 pid * uid 1000
実装

xFilterをXen3.4.2に実装

xFilterコア



real
driver
netback
xFilter core

ドメイン0内に実装
netfront
IDS
hypervisor call
VMM内に実装
IDS
domain U
プロセス
xFilterモジュール


ドメイン0のnetbackと
実ドライバの間に実装
ハイパーコールを使って
モジュールを呼び出し
domain0
stab
送信
xFilter
module
Xen VMM
実験

ポートスキャンの検出



実験環境
Intel Core i7 860
Xen 3.4.2 (x86_64)
domain0:Linux 2.6.18.8, 7Gbyte
domainU:Linux 2.6.18.8, 1Gbyte
nmapを用いてドメインUからポートスキャン
フィルタリングルールの最適化
アプリケーションの性能への影響



ドメインUでApache 2.0
ApacheBenchで50KBのサイズのHTTPファイルを
リクエスト
xFilterモジュール、IDSそれぞれについて
ポートスキャンの検出

nmapを用いて特定ホストへポートスキャン

1つのプロセスで実験



deny ip xx.xx.xx.xx port * pid 16532
ポートスキャンを検出、遮断
ssh等の他のプロセスからの通信は行える
VM
forkしながら実験



ポートスキャンを検出、遮断
ルールの統合が行われ、以降の攻撃も遮断
別のユーザからの通信は行える
ポート
ssh スキャン
xFilter
deny ip xx.xx.xx.xx port * pid 27904 uid 0
deny ip xx.xx.xx.xx port * pid 28281 uid 0
deny ip xx.xx.xx.xx port * pid * uid 0
VMM
送信
メモリ解析時間
メモリ解析を行うハイ
パーコールの実行時間


プロセスのリストのみ解析
ソケット情報まで解析
メモリ解析時間(us)
50
40
us

30
20
10
0
100
結果

プロセス数に比例


1プロセスにつき約28ns
ソケット数に比例

300
ソケット数
400
500
4000
5000
メモリ解析時間
1ソケットにつき約41ns
200
150
us

200
100
50
0
1000
2000
3000
プロセス数
プロセス数を変えて測定



IDSは動作していない
xFilterなしでは
スループット 961req/s
レスポンス 1.04ms
結果


キャッシュが有効であれば
500プロセスにつき約2.5%
キャッシュが無効であれば
500プロセスにつき約15%
1000
800
600
400
no cache
cache on
200
0
1000
2000
3000
4000
プロセス数
5000
5
レスポンス(ms)

スループット(req/s)
フィルタリングによる性能低下
no cache
cache on
4
3
2
1
0
1000
2000
3000
プロセス数
4000
5000
IDSによる性能低下
プロセス数を変えて測定


ポートスキャンを検出する
IDSを用いて実験
xFilterモジュールは動作し
ていない
1000
スループット(req/s)

xFilterなしでは
スループット 960.82req/s
レスポンス 1.041ms
800
600
400
200
0
1000
結果


攻撃検出フェーズでは
スループット 950req/s
レスポンス 1.05ms
攻撃元特定フェーズでは
500プロセスにつき約3%
3000
4000
プロセス数
5000
2
レスポンス(ms)

2000
1.5
1
0.5
0
1000
2000
3000
プロセス数
4000
5000
関連研究

Amazon EC2



ステートフルインスペクション


ドメイン0上で動作するファイアウォール
踏み台攻撃に対応できない
SYNパケットはルールベースで、それ以降はステート
テーブルでチェック
Chorus[Rozierら ‘92]/CAPELA[kouraiら ‘98]


カーネルモジュールの開発支援システム
プロセスとして実装し、変更なしにカーネルに移植
まとめ

VMMレベル・パケットフィルタのxFilterを提案

踏み台攻撃に対して安全かつきめ細かい通信制限が
可能



VMM内のIDSにより、ルール追加を自動化


送信元プロセスの情報を用いてフィルタリング
VMのメモリを解析してゲストOS内の情報を取得
ルールの統合を行い、以降の同様の攻撃を防ぐ
今後の課題

ポートスキャン以外の踏み台攻撃用のIDSを追加
成果

論文








DSW08summer@北海道
ソフトウェア科学会 2009@島根
OS研究会 2010@伊東
PRDC 2010@Tokyo (不採録)
OS研究会 2011@福岡
ACS論文誌 2011(投稿中)
ESORICS 2011@Belgium (執筆中)
ポスター


Comsys2008@品川
Comsys2010@大阪