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
© Copyright 2025 ExpyDoc