スライド 1 - 米澤研究室

Download Report

Transcript スライド 1 - 米澤研究室

Detecting Intrusions on
Windows Operating Systems by
Monitoring System Services
米澤研究室
島本 大輔
2005年2月8日
1
現在のセキュリティ事情
 インターネットの成長による attack による
危険性の増大
 ウィルス、不正侵入、スパイウェア、など
⇒ Intrusion Detection System
(IDS)の重要性
2
Intrusion Detection System(IDS)
 侵入検知システム
 Signature based = 既存のデータベースとの
パターンマッチ
 アンチウィルスソフト、など
 Anomaly based = 通常と異なる、
異常な動作を検知
3
既存の IDS
 既存のWindows 用 IDS
 Signature based が主流
=新種への対応が困難
 Linux、UNIX における IDS の研究
 新種への対応を含めた先進的な研究が多数
4
Linux、UNIX における IDS
 プロセスの様々な情報を監視
 [Forrest 96] の System Call の監視
 [Feng 03] のスタックの監視
 [Sekar 01] のプログラムカウンタの監視
 これらのWindows への応用が少ない
 ブラックボックスなOS
 公式に提供されているモジュールでは
不十分
5
モチベーション
 『Linux、UNIX における先進的な
IDS の研究を Windows へ応用
したい』
Windows における System Call などの
情報を使って異常を検出
6
研究内容
 Windows 用先進的な IDS への第一歩
 Windows 版 System Call である
System Service を Intercept
 System Service のパターンを調査
7
System Service
 Windows の根本的な機能を提供
 ファイル操作、レジストリ操作、プロセス操作、など
例:NtWriteFile ― ファイルへの書き込みはすべて
これを利用
 UNIX 系 OS の System Call に対応
8
System Service の動作
System Service のコード
アドレスを引く
XXXXXX
NtOpenFile
NtDeleteFile
:
Kernel
Mode
User
アプリケーション
Mode
9
System Service の Interception
 主に2通りの手法が存在
1. System Service のアドレステーブル
(System Service Descriptor Table)を
書換
 System Call Table の書き換えと同等
2. Kernel mode へスイッチする瞬間に
Intercept
 Windows 2000 以前ではソフトウェア割り込み
 Windows XP 以降は SYSENTER 命令
10
System Service の Interception
System Service のコード
アドレスを引く
1番の手法
XXXXXX
NtOpenFile
NtDeleteFile
アドレスを書換
:
Kernel
2番の手法
Mode
スイッチした後の
JUMP先を変更
User
アプリケーション
Mode
11
System Service の Interception
 2番の SYSENTER 命令を利用した
Interception を採用
 既存研究が少数
 監視する System Service の追加・削除が容易
 一箇所において監視可能
※SYSENTER 命令
 Fast System Call・・・System Call への遷移を
1命令で完了
12
System Service の Interception
System Service のコード
XXXXXX
NtOpenFile
NtDeleteFile
アドレスを引く
:
挿入したコード
Kernel
Mode
User
SYSENTER
アプリケーション
Mode
13
実装内容
 Interception はデバイスドライバとして動作
 記録の出力のために別途、User Mode
プログラムを開発
 System Service の記録を出力
 検出もこのプログラムで行う予定
14
System Service のパターンの取得
 取得方法
 VMWare上でウィルスと今回のプログラムを
実行
 様々なウィルスのパターンを取得
 WORM_MUMU.B, WORM_NETSKY.Z,
WORM_BEGLE.AT, WORM_SASSER.B など
 今後、より多くのパターンの調査が必要
15
出力の例(WORM_MUMU.B)
0112 0112 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 0074
0074 0074 0074 0074 0074 0074 0074 0074 0074 0074 00b7
0112 = NtWriteFile, 0074 = NtOpenFile, 00b7 = NtReadFile
16
まとめ
 モチベーション
 Windows における先進的なIDSの実装
 今回の研究内容
 Interception の手法を調査・実装
 ウィルスなどのパターンを取得
 今後の予定
 IDS への拡張
17
以上です。
ご清聴ありがとうございました。
18
19
概要





背景
関連研究
研究内容
実験内容
まとめ
20
SYSENTER で Interception
 次の IP を自分のコードへ変更
 WRMSR 命令で変更
 自分のコードが終了後に本当のコードへ
Jump
⇒引き続き元の動作を実行
21
SYSENTER
 Fast System Call
 System Call をするために必要な権限の移行に
特化した命令
 セグメントセレクタ、インストラクションポインタ(IP)、
スタックポインタを1命令であらかじめ設定された
値に変更
22
コード例
sti
mov ecx, 176h
rdmsr
mov SYSENTER_EIP_MSR_H, edx
mov SYSENTER_EIP_MSR_L, eax
cli
mov ecx, 176h
xor edx, edx
mov eax, stub
wrmsr
sti
jmp endasm
stub:
pushad
cmp eax, 30h /* CreateProcess の Service ID */
je log
normal:
popad
jmp [SYSENTER_EIP_MSR_L]
log:
jmp normal
endasm:
ここにコードを追加する
ことにより拡張可能
23
実験
 ウィルスに感染した状態でログを収集
1. VMWare 上でウィルスを実行
2.
〃
監視プログラムを実行
3. ログを抽出
24
これからの予定
 パターンの収集
 ウィルスのパターン
 侵入のパターン
 通常の操作によるパターン
 パターンを実装し、IDSを完成させる
25