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