卒業論文に向けて(5) 学部4年生 島本 大輔 2004年12月14日.

Slides:



Advertisements
Similar presentations
全体ミーティング 03/04 澤崎 純也. 紹介する論文 Stealthy Malware Detection Through VMM- based "Out-of-the-Box" Semantic View Reconstruction[Xuxian Jiang et al., CCS'07]
Advertisements

「図書管理」のための Webアプリケーション開発 -Apache/Tomcat/MySQL/Java on Windows XP-
Improvement of bootup time using Power Management - Project Update -
Windows PEファイル感染及び発見的手法による検知 Nicolas BRULEZ / Digital River
・ω・.
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
揮発性情報 2003/05/25 伊原 秀明(Port139).
コンパイラの解析 (1) プログラムのリンクと実行.
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
Samba日本語版の設定と運用のノウハウトラブルシューティング編
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
1.コンピュータと情報処理 p.20 第1章第1節 3.ソフトウェア ソフトウェア 基本ソフトウェア
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
セッション追跡によるプロトコルアノーマリの検知と対処
セッション追跡によるプロトコルアノーマリの検知と対処
Lightweight Language Weekend ls-lRシェル
Microsoft Office Web Apps の基礎と活用
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
通信処理のカーネル内競合を 検出するアスペクト指向 カーネルレベルロガー
Microsoft .NET 入門 Silverlight のための 福井コンピュータ株式会社 小島 富治雄
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第1回 イントロダクション 担当:青木義満
オペレーティングシステムJ/K 2004年11月4日
ソフトウェアを美味しく 解析する方法 Security Ark
C言語講座 第4回 ポインタ.
2006/10/19 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井英二郎
エージェントを管理するボスの苦悩 問題 n人のエージェントを部下に持つボスがいる. エージェントは出張・帰還を頻繁に繰り返す.
LogStructuredFileSystem Servey
オペレーティングシステム i386アーキテクチャ(2)
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
C言語システムプログラミング C Language System Programming
SAP & SQL Server テクニカルアーキテクチャ概要 マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
コンパイラの解析 (2) GCJのデータ構造 - 1.
不正アクセス       ーrootkitについてー              環境情報学部              3年 櫻井美帆.
型付きアセンブリ言語を用いた安全なカーネル拡張
Windows 2000 拡張カーネルの技術紹介 2018年6月10日 黒翼猫.
“Survey of System Virtualization Techniques” by Robert Rose のまとめ
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
セキュリティ(3) 05A2013 大川内 斉.
他のプロセスに あたえる影響が少ない 実行時ミラーリングシステム
動的依存グラフの3-gramを用いた 実行トレースの比較手法
Microsoftのマルチプラットフォーム戦略
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
Java Bytecode Modification and Applet Security
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
A Provably Sound TAL for Back-end Optimization について
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
通信機構合わせた最適化をおこなう並列化ンパイラ
Web - 01 IIS を インストールしよう.
全体ミーティング 6月6日 島本 大輔(M2) 2006年6月6日(火).
コンパイラ資料 実行時環境.
卒業論文に向けて(2) 学部4年生 島本 大輔 2004年10月29日.
インターネット             サーバーの種類 チーム 俺 春.
Cell/B.E.のSPE Isolationモードを用いた監視システム
IDSとFirewallの連携によるネットワーク構築
プログラミング演習I 2003年7月2日(第11回) 木村巌.
コンピュータアーキテクチャ 第 4 回.
2004 Fall. Term Report Immune Project
Cell/B.E. のSPE上で動作する 安全なOS監視システム
Mondriaan Memory Protection の調査
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
オペレーティングシステムJ/K (管理のためのデータ構造)
コンピュータアーキテクチャ 第 4 回.
全体発表 10/18 島本 大輔 2005年10月18日(火).
卒業論文に向けて(3) 学部4年生 島本 大輔 2004年11月11日.
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
0.1 DXライブラリの導入 必要なファイルの準備.
プログラミング 2 静的変数.
Presentation transcript:

卒業論文に向けて(5) 学部4年生 島本 大輔 2004年12月14日

概要 卒論内容 様々な Hook SYSENTER で Hook 今後の予定

卒論内容 Windows 版 IDS System Service の記録で検出 「どのように Hook するか」が問題 System Service = UNIX 系の System Call 「どのように Hook するか」が問題

概要 卒論内容 様々な Hook SYSENTER で Hook 今後の予定

様々な Hook User-mode Kernel-mode Win32 の API を Hook [1] 演習3の研究内容 Kernel-mode Native API を Hook

User-mode Hooking Proxy DLL Function Patching IAT Patching [2,3] 関数の中身を書き換える 例:Detours [2] IAT Patching [2,3] Import Address Table の値を書き換える Detours にもこの機能あり

Function Patching (Detours) 自分のコード(detour)を実行後、本当の API を呼び出す 呼び出し元 Detour 関数 Trampoline 目的の関数

Function Patching (Detours) 利点 ユーザー定義の API を Hook できる 欠点 API 内に 「jmp 関数」=5 byte 分の容量が 必要 ⇒ 5 byte 未満の API は置き換えられない Win32 の API は難しい ⇒ DLL 側で可能かもしれない

IAT Patching IAT = Import Address Table Import Address Table を書き換える Detours にもこの機能あり この手法の文献は多い

Import Address Table (IAT) [4] 外部ライブラリ(主に DLL )で呼び出す 関数アドレスのテーブル 当然、一定値ではない Windows Loader が DLL のアドレスを テーブルに書き込む 1つのバイナリに必ず1つある エントリ数が0もあり(例 ntdll.dll) 逆の機能は Export Address Table

Using IAT for Hooking DLL EXE 自分の コード : : : IAT 関数名 アドレス CreateFile OpenFile : CreateFile OpenFile : : IAT 自分の コード

IAT Patching 回避策がある 実際、ウィルスやRootkitはそうしている Getprocaddress で動的にライブラリの 関数アドレスを引ける 実際、ウィルスやRootkitはそうしている OS のバージョンによって、関数アドレスが 異なるため

Kernel-mode Hooking Windows NT の System Service を hooking [5] 過去に研究例あり [6] セキュリティへの応用の論文は少ない (と思われる) Rootkit では多々使われている

System Service Linux の System Call みたいなもの NT Executive(ntoskrnl.exe の一部) に より提供される まさしく、Windows の核をなす 例:Win32 CreateFile() と POSIX open() は NTCreateFile() を呼んでいる ほとんど公式にはドキュメント化されていない!

System Service Hooking [5] System Service はリスト(System Service Table(SST))で管理 (UNIX系の System Call Table みたいな もの) SST は Service へのポインタを持つ このリストの値を変えれば良い ⇒ 自分の関数に書き換える

System Service Hooking SSDT ZwCreateFile ZwDeleteFile : 本当のコード 自分の コード プログラム

問題点 OS のバージョンにより、ntoskrnl.exe が 微妙に異なる ⇒ 各OSに対応させるのが面倒 Hook する数が多くなると実装が大変

概要 卒論内容 様々な Hook SYSENTER で Hook 今後の予定

SYSENTER で Hook System Service は数が多い ⇒ まとめて監視できないか? つまり、共通の通過点はないのか? User-mode から System Service を利用するときに、Kernel-mode への移行が必要 ⇒ Windows 2000 以前は int 2e   Windows XP 以降は SYSENTER

SYSENTER命令とは [7] 1997年から加わっている命令 Fast System Call System Call において必要な権限の移行に特化した命令 セグメントセレクタ、IP、スタックポインタを変更する Linux でも 2.5 で採用(?)

SYSENTER で Hook SYSENTER_EIP_MSR から 次の IP を 読み込む ⇒ この値を変更してしまう WRMSR 命令で変更可能 RDMSR 命令で読み出し

コード(インラインアセンブリ) push eax stub: push ecx pushad push edx cmp eax, 30h /* とりあえず CreateProcess だけ表示 */ je log normal: popad jmp [SYSENTER_EIP_MSR_L] log: push eax push offset logMessage call DbgPrint add esp, 8 jmp normal endasm: push eax push ecx push edx mov ecx, 174h /* SYSENTER_CS_MSR */ rdmsr mov SYSENTER_CS_MSR_H, edx mov SYSENTER_CS_MSR_L, eax mov ecx, 175h /* SYSENTER_ESP_MSR */ mov SYSENTER_ESP_MSR_H, edx mov SYSENTER_ESP_MSR_L, eax mov ecx, 176h /* SYSENTER_EIP_MSR */ mov SYSENTER_EIP_MSR_H, edx mov SYSENTER_EIP_MSR_L, eax cli mov ecx, 176h xor edx, edx mov eax, stub wrmsr sti pop edx pop ecx pop eax jmp endasm

実演

概要 卒論内容 様々な Hook SYSENTER で Hook 今後の予定

今後の予定 UIの作成 SYSENTER での Hook を利用した IDS の 作成 DbgView を用いずに結果を表示 ファイル出力等のログ機能 SYSENTER での Hook を利用した IDS の 作成 UNIX系での System Call を利用した例を参考

参考文献(1) API Spying Techniques http://www.internals.com/articles/apispy/apispy.htm Detours http://research.microsoft.com/sn/detours/ Process-wide API spying – an ultimate hack http://www.codeproject.com/system/api_spying_hack.asp An In-Depth Look into the Win32 Portable Executable File Format (Part 1 & 2) http://www.msdn.microsoft.com/msdnmag/issues/02/02/PE/default.aspx http://www.msdn.microsoft.com/msdnmag/issues/02/03/PE2/default.aspx

参考文献(2) Hooking Windows NT System Services http://www.windowsitlibrary.com/Content/356/06/1.html A Host Intrusion Prevention System for Windows Operating Systems Roberto Battistoni, Emanuele Gabrielli, Luigi V. Mancini ESORICS 2004 IA-32 Intel® Architecture Software Developer’s Manual