仮想化技術によるマルウェア対策とその問題点
DESCRIPTION
Lecture at Yokohama National UniversityTRANSCRIPT
![Page 1: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/1.jpg)
仮想化技術によるマルウェア対策とその問題点
2012/07/09 @横浜国立大学
産業技術総合研究所
セキュアシステム研究部門
須崎有康
![Page 2: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/2.jpg)
自己紹介
• 所属:独立行政法人産業技術総合研究所
– 2001年に通産省傘下の15研究所等を統
合してできた環境・エネルギー、ライフサイエンス、情報通信・エレクトロニクス、ナノテクノロジー・材料・製造、標準・計測、地質という多様な6分野の研究を行う公地質という多様な6分野の研究を行う公
的研究機関。本部を東京及びつくばに置き、つくばセンターを除く全国8ヶ所に地域センターを配置。総職員数は約3,000
• 情報セキュリティ研究センター (2005-2012) (研究顧問 松本勉教授)• セキュアシステム研究部門(2012- )
• CD/DVD LinuxのKNOPPIX日本語版
![Page 3: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/3.jpg)
コンテンツ
• マルウェア解析に仮想マシンを使う理由
– Anti-Debugger
• 仮想化技術の詳細
ウ 解析に必要な技術• マルウェア解析に必要な技術
– InstrumentとIntrospection
• 具体例:Virt-ICE• 問題点と現在の動向
• まとめ
![Page 4: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/4.jpg)
マルウェア解析に仮想マシンを使う理由
• 近のマルウェアはdebuggerによる解析を検出して、それを回避する技術を含んでいる(Anti-Debugger)– [Xu,NDSS08]によると93.9%のマルウェアはAnti-
Debuggerの機能がある。
– 多くはこの講義で紹介済みと予想。。。
• Debugger単独では検出し難いマルウェア技術
– ステルス化が進むRootKit– Hidden Process– Memory Dual mapping
![Page 5: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/5.jpg)
ステルス化が進むRootKit• システム(OS)の外部で動作する
– ファームウェア/BIOSルートキットやSMM(System Management Mode)ルートキット
Protect Mode
SMM Mode
SMI (System Management Interrupt)ハイバネーションな
どの割り込み
ハイバネーションj時の
メモリ退避できるように全メモリアクセスできる
• 仮想化の悪用BluePill [BlackHat 2006, Joanna Rutkowska]– ハードウェアの仮想化支援機能を悪用し、悪意のハイパーバイザー(仮想マシンモニタ)をインストール。通常のOSからは検出できない
rsm Instrction
SMM handler
Context
SMRAM
SMM Modeのみアクセスできるメモリ。Handlerは
BIOSによってロード
全メモリアクセスできる
![Page 6: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/6.jpg)
Hidden Process (Windows)• DKOM(direct kernel object manipulation)
– プロセスは双方向のリンクリストで管理。リンクリストのリンクを故意に書き換えることで特定のプロセスエントリをリストから切り離して隠ぺい
– プロセスはスレッドのコンテナ(入れもの)でしかなく処理自体はスレッドによって実行される。
Process A
Process B
Process C
Process D
![Page 7: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/7.jpg)
Hidden Process (Linux)• 多くのカーネル情報は/procファイルシステムから取得される。
ps, top, freeコマンドなどのシステム情報は/proc FSを通して取得、表示
ユーザ空間
カーネル空間
/proc ファイルシステムカーネルのシステム情報を通知する特別なファイルシステム
Process A
malwareProcess
B
Process C
Process D
カーネル空間で偽の情報を出すような攻撃をされるとmalware processを隠すことができる
![Page 8: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/8.jpg)
Memory Dual mapping• Matt “skape” Miller, Using dual-mappings to evade automated
unpackers, 2008 より。
• 2つの仮想メモリページを1つ物理メモリページに割り当てる
Vi t l Physical
– Executable mapping• コードが実行される。Debugger
DEP, Debuggerの監視対象はコードのみ Virtual Physical
はここのみ監視
– Editable mapping• Packerとして働き、コードを改変(Self-modification)する
• DEP(Data Execution Prevention)を回避して、コード改変
CodeExecutable
DataEditable
コ ドのみ
データとして実行コードを書き換え
![Page 9: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/9.jpg)
Anti-Debuggerへの対処法• 高機能Debugger
– Anti-Debuggerとのイタチごっご• 参考書籍:アナライジング・マルウェア、オライリー・ジャパン
• ICE (In-Circuit Emulator)ハ ドウ アを使ったデバッグ– ハードウェアを使ったデバッグ。ハードウェア情報は全て取れるが、解析に知識が必要。高価
• 仮想化(仮想マシン)技術
– ICEより安価
– 仮想マシンにも沢山の技術があり、Anti-Debuuger作成には考慮が必要
![Page 10: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/10.jpg)
コンテンツ
• マルウェア解析に仮想マシンを使う理由
– Anti-Debugger
• 仮想化技術の詳細
ウ 解析に必要な技術• マルウェア解析に必要な技術
– InstrumentとIntrospection
• 具体例:Virt-ICE• 問題点と現在の動向
• まとめ
![Page 11: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/11.jpg)
仮想マシンソフトウェア(ハイバーバイザー or仮想マシンモニタ)はいくつあるか
– VMware– Xen– VirtualPC– KVM
ll l
• 挙げてみると
– Parallels– VirtualBox– QEMU– Hyper-V– BitVisor– LilyVM– Bochs, Plex86, coLinux, sHype, zVM, UserModeLinux, Solaris
containers (zones), FreeBSD jail, Linux VServer, Virtuozzo, Cygwin, OpenVZ, SoftwarePod, pearPC, Wine, Tango-VP, Quick Transitive, FAT-Binary, SimOS, Simics, IBM LPAR, ……
![Page 12: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/12.jpg)
仮想マシンの歴史
VMwareWorkstation
Xen(Para-Virtualization)
仮想化支援(Intel VT, AMD-V)
KVMXen(Full-Virtualization)
x86
Robin,Irvineによる仮想化のIA32命令要件 USENIX Sec2000IA32
1960 1970 1980 1990 2000
IBMCP/67
IBM370/VM
DECVAX/VMM
IBMz/VM
メインフレーム仮想化支援
Popek,Goldbergによる仮想化の命令要件1974
(Dynamic Translation)‘78 16bit ‘85 32bit
![Page 13: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/13.jpg)
仮想化技術の歴史• Mainframe
• 1967 IBM CP-67 First Hypervisor
• IA32 Architecture• 1999 VMware workstation [by Mendel Ronsenblum @Stanford]
– Binary Translation on IA32• 2002&2003 Denali[OSDI’02] Xen[SOSP’03]2002&2003 Denali[OSDI 02], Xen[SOSP 03]
– Para-virtualizaiton• 2005&2006 Hardware Assist
– Intel-VT/ AMD-SVM– 2006 KVM
• [Qumranet(Isreal)->RedHat]• 2006 Amazon EC2 uses Xen
![Page 14: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/14.jpg)
仮想化のメリット• ハイパーバイザー(or 仮想マシンモニタ, Virtual
Machine Monitor) は一台の物理マシン上で複数のOSを実行可能にする
• 仮想マシン(VM)は扱いやすい
– VMが全く同じマシン環境を提供するのでOSイメージを手軽にコピー可能
– ライブマイグレーション(移動)
• ロードバランスはハードウェアメンテナンスに活用
– スナップショットとロールバック
– VMの操作がソフトウェアで行え、Debugに使える
![Page 15: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/15.jpg)
IA32での仮想化の問題点
• 仮想化できない命令
– Sensitiveで且つNon-privileged の命令
• 状態を保存し、以降の命令実効に影響を与える。
• 例外で捕捉できない。例外で捕捉できない。
• TLBの仮想化 (今回ここはメインではないのでスキップ)
– TLB flashを制御できない。
– TLBはハードウェア制御であり、且つ、アドレス空間にIDタグが付けられない。
• SPARCでは仮想化可能。
• IOの仮想化 (今回ここはメインではないのでスキップ)
![Page 16: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/16.jpg)
Sensitive&Non-privileged命令の仮想化問題
• Sensitiveな命令
– CPUの真の姿が見えてしまう命令
• GDT, LDT, IDTの読出し
– 以後の実行に影響を与える命令– 以後の実行に影響を与える命令
• POPF, PUSHF
• Privilegedな命令ならトラップで捕捉することができるが、 IA32ではSensitiveで且つNon-privileged命令がある。
![Page 17: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/17.jpg)
Sensitive&Non-privileged命令問題の解決手法
• ソフトウェアによる解決
1. 命令をソフトでエミュレート。汎用だが遅い。
• QEMU
2. 動的に命令を置き換える
• Binary Translation (VMware)y ( )
3. 問題となる命令を使うソフト(カーネル)を書き換える
• Para-Virtualization (Xen), カーネルをring 1実行。
• ハードウェアの補助による解決
4. 仮想化モード対応CPUを使う
• Intel VT, AMD-V (2005年以降)• Sensitive且つNon-Privileged命令が実行されるとモードが切り替わり、処理をVMMが行なう。
![Page 18: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/18.jpg)
エミュレーション
• 基本的には1命令づつソフトウェアで処理。異なる命令セットでも構わない。
– 代表的な仮想マシンはQEMU (Main developer: Fabrice Bellard)
• 中間コードを介した動的コンパイルを行うことにより、IA32、PowerPC、SPARCなどエミュレート可能
• アクセラレータ技術(KQEMU)により、多くの命令をNative 実行することで高速化することもできる。
• 問題は遅いこと
![Page 19: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/19.jpg)
Binary Translation• 初期のVMware workstationで使われた。
• 異なる特権レベルとセグメントを利用したフォールトハンドラ経由の命令変換。想化で問題になる特権命令やセンシティブ命令を置き換える変換は再利用される。効率が良い実装。
– 米国特許:6,397,242, Virtualization system including a virtual machine monitor for a computer with a segmented architecture, (Date of Patent: May 28, 2002,Filed: Oct 26, 1998)
![Page 20: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/20.jpg)
Para-Virtualization (準仮想化)
• IA32の4レベルのリングプロテクションを活用。• Ring 0-2は特権、ring3は非特権
![Page 21: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/21.jpg)
Para-Virtualization (準仮想化)• ゲストOSのカーネル内で仮想化で問題となる部分を変更し、
Ring1で実行するようにする。ハイパーバイザーはring0で実行
ring3App1P
App2P
ring3App1P
App2P
Normal OS Para-Virtualized
ring0
ring1
ring2
0
321
Guest OS Kernel
Process Process
System Call
ring0
ring1
ring2
Guest OS para-virtualized
Kernel
Process Process
System Call
HyperVisor(VMM)
Hyper Call
![Page 22: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/22.jpg)
ハードウェアの補助による解決
• Intel VT/AMD-SVM (2005,2006)で導入された機能
• Sensitive且つNon-Privileged命令が実行されるとモードが切
り替わり、処理をハイパーバイザー(仮想マシンモニタ)が行なう
• VMX rootモードでハイパーバイザーを動作させ、VMX non-VMX root ドで イ イザ を動作させ、VMX nonrootモードでゲストOSを動作させる。
• ゲストOSは何も変更せず、仮想化される。
0
321
0
321
VMX non-root VMX root
VM exit
VM entry
![Page 23: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/23.jpg)
ハードウェアの補助による解決• KVM, Xen, Vmwareなどで活用されている
ring2
ring3App1Process
App2Process
Sys
ring2
ring3Guest OS Hypervisor(VMM)
ring0
ring1
Guest OS Kernel
stem Call
ring0
ring1
Hypervisor(VMM)Hyper Call
VMX non-root VMX root
![Page 24: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/24.jpg)
コンテンツ
• マルウェア解析に仮想マシンを使う理由
– Anti-Debugger
• 仮想化技術の詳細
ウ 解析に必要な技術• マルウェア解析に必要な技術
– InstrumentとIntrospection
• 具体例:Virt-ICE• 問題点と現在の動向
• まとめ
![Page 25: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/25.jpg)
Guest OS解析で必要となる技術
• Instrument (VMの操作)1. Virtual/Physical mappingを理解したメモリ操作
2. Break Point (hardware/Software breakpoint)3. STEP実行
4. レジスタ操作
5. VM Snapshot/Rollback1,2,3は仮想マシン実装法で問題を引き起こす
• Introspection (Guest OS解析)– Semantic gap 問題
– メモリの内容解析 (Memory Forensic)
![Page 26: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/26.jpg)
仮想マシンにおけるInstrumentの問題点
1. Virtual/Physical mappingを理解したメモリ操作
– Page Table管理はOSのポリシーに依存するので、VM Introspectionとの連携が必要
2. Break Point (hardware/Software breakpoint)2. Break Point (hardware/Software breakpoint)– IA32ではhardware BPの設定は4個まで。 Anti-
Debuggerで検出可能。
– Software BPのためにInt03(0xCC)を使うとAnti-Debuggerで検出されてしまう。
– 命令にBreakPointがあることを隠す必要あり。
• CPUエミュレーションの中に埋め込む
![Page 27: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/27.jpg)
仮想マシンにおけるInstrumentの問題点
3. STEP実行
– ハードウェアのTrap Flagを使った実行では隠した命令までSTEP実行されてしまう。 Anti-Debuggerで検出可能。
– 各命令がSTEP実行されることを隠す必要あり。
• CPUエミュレーションの中に埋め込む
![Page 28: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/28.jpg)
仮想化技術とVM操作性MemoryManipulation
Break Point STEP execution
ManipulateRegister
VM SnapshotRollback
Emulator(QEMU)
○Inspectionと連携
○ ○ ○ ○
Binary Translator ○
Inspectionと連携? ? ○ ○
(VMware)Inspectionと連携
Para-Virtualization(Xen)
○Inspectionと連携
× × ○ ○
Hardware Assist(KVM, Xen,VMware with Intel VT, AMD SVM)
○Inspectionと連携
× × ○ ○
![Page 29: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/29.jpg)
Semantic Gap問題
• Virtual Machineはハードウェアの仮想化のみ
であり、ハードウェアの変更情報以外は取れない
• OSのポリシ で決める情報は取れない• OSのポリシーで決める情報は取れない
– Virtual Memory/Physical Memory Mapping– PID– Scheduling– Swap out/in
![Page 30: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/30.jpg)
Semantic Gapの解決
• メモリ内の解析が必要
• Memory Forensicの技術を使う
– Signature Scanning (locate objects)VMでは生のメモリをアクセス出来るのみであり メモリ• VMでは生のメモリをアクセス出来るのみであり、メモリ中のObjectデータ構造を見つける必要がある
– Object Traversal• Objectデータ構造の理解
![Page 31: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/31.jpg)
コンテンツ
• マルウェア解析に仮想マシンを使う理由
– Anti-Debugger
• 仮想化技術の詳細
ウ 解析に必要な技術• マルウェア解析に必要な技術
– InstrumentとIntrospection
• 具体例:Virt-ICE• 問題点と現在の動向
• まとめ
![Page 32: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/32.jpg)
Virt-ICE• BlackHat2010で発表したマルウェア解析ツール
– QEMUベース。2つのモジュールを組み込む
• Instrument(VMの操作)としてのKobuta• Introspection (Guest OS解析)としてのEagleEye
VM (QEMU)
GuestOS (Windows)
Virt-ICE Module
Introspection(EagleEye)
Instrumentation(Kobuta)
Virt-ICEClient
![Page 33: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/33.jpg)
Instrument(VMの操作)としてのKobuta• QEMUでのCPU操作の問題点
– 高速化ために単純なインタプリタでなくJIT(Just-In-Time)による命令変換。
– TCG(Tiny Code Generator)により中間表現 IR (Intermediate Representative)に置き換えてから(Intermediate Representative)に置き換えてから、ホストCPU命令に変換。
• KobutaのInstrumentはTCG IRレベルで行う。
– CPUアーキテクチャ依存部分は例外として扱われるので、それに対応したHookを書ける。
![Page 34: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/34.jpg)
KobutaによるSYSENTERのHook
/* targeti386/op_helper.c */void helper_sysenter(void){ ....if (kobuta_ins_sysenter) { /* SYSENTER hook has been registered? */
/* Then is it necessary to synchronize CPU context? */if (kobuta ins sysenter cpusync == KOBUTA CPUSYNC ENABLE)if (kobuta_ins_sysenter_cpusync == KOBUTA_CPUSYNC_ENABLE)
kobuta_syn_cpucontext(); /* Synchronize CPU context on demand*/kobuta_sysenter(); /*Finally, execute all registered handlers for SYSENTER*/
} ...}
![Page 35: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/35.jpg)
Kobuta Framework• 有用な箇所にHookをかける
– Begin/end of instruction/block– Jump/call– Interrupt begin/end– Sysenter/Sysexit/Syscall/Sysret– Input/Output– Update control registers (CR0, CR2, CR3, CR4)– RDMSR, WRMSR (read/write to Model Specific Register)– Memory access (read/write)
![Page 36: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/36.jpg)
高速化
• QEMUは基本的にエミュレータなので遅い
• これを高速化するKQEMUが開発されている
– 多くの命令を直接実行するモジュール
– KQEMUはQEMU 0 12 0でサポートされなくなったKQEMUはQEMU 0.12.0でサポ トされなくなったがKobutaが使う 0.12.04にforward-port
• 残念ながらKQEMUとKobutaとは共存できない
– 動的にKobutaと切り替える機能を開発
• Kobutaを使っていなければKQEMUを有効にする
![Page 37: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/37.jpg)
Introspection (Guest OS解析)としてのEagleEye
• 必要な機能
– Signature Scanning (locate objects)– Object Traversal
• 必要なオブジェクト(情報)– Kernel modules– Processes/threads– System handles– Registries– DLLs– Network connections/ports
• 問題点:Windowsではこれらの詳細情報が公開されていない
![Page 38: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/38.jpg)
ReactOSの活用
• WindowsXP/2003 バイナリレベルおける互換性
確保を目指して開発が進められているフリーソフトウェア
– http://www.reactos.org
• データ構造を表すHeader情報を活用する
![Page 39: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/39.jpg)
サンプルReactOSコードtypedef struct _EPROCESS { … // removed some fields for brevity#if (NTDDI_VERSION < NTDDI_WS03)
FAST_MUTEX WorkingSetLock;#endif
ULONG WorkingSetPage;#if (NTDDI_VERSION >= NTDDI_LONGHORN)
EX_PUSH_LOCK AddressCreationLock;
• この情報からEPROCESSの構造体を推定
PETHREAD RotateInProgress;#else
KGUARDED_MUTEX AddressCreationLock;KSPIN_LOCK HyperSpaceLock;
#endif… } EPROCESS, *PEPROCESS;
![Page 40: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/40.jpg)
EagleEyeのAPI/* <eagleye/windows.h> *//* get process image filename, given its EPROCESS address */int windows_task_imagename(ee_t h, unsigned long eprocess, char *name, unsigned int count);
/* get process id, given its EPROCESS address */int windows task pid(ee t h unsigned long eprocess unsigned long *pid);int windows_task_pid(ee_t h, unsigned long eprocess, unsigned long pid);
/* get parent process id, given its EPROCESS address */int windows_task_ppid(ee_t h, unsigned long eprocess, unsigned long*ppid);
/* get process cmdline, given its EPROCESS address */int windows_task_cmdline(ee_t h, unsigned long eprocess, char *cmdline,unsigned int count);
![Page 41: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/41.jpg)
Virt-ICEのデバッグ機能• Virt-ICE Clientからデバッグコマンド送って解析
VM (QEMU)
Set execution breakpoint: db s <address>
Singlestep: db s
Run until RET: db R
GuestOS (Windows)
Virt-ICE Module
Introspection(EagleEye)
Instrumentation(Kobuta)
Virt-ICEClient
Pause guest VM: db C
Resume guest VM: db r
![Page 42: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/42.jpg)
コンテンツ
• マルウェア解析に仮想マシンを使う理由
– Anti-Debugger
• 仮想化技術の詳細
ウ 解析に必要な技術• マルウェア解析に必要な技術
– InstrumentとIntrospection
• 具体例:Virt-ICE• 問題点と現在の動向
• まとめ
![Page 43: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/43.jpg)
マルウェア解析に仮想マシンを使う問題点
• 仮想マシン検出技術を行うマルウェア
– 外部時計を使った実行時間計測
• Anti-Debuggerと同じ
– 仮想マシンでも完全に仮想化している訳ではない
![Page 44: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/44.jpg)
仮想マシンの検出技術
• CPUアーキテクチャが固定
– 仮想マシン自体がVirtualと付けたデバイスも多いVMware# dmesg | grep -i virtual
VMware vmxnet virtual NIC driverV d VM M d l Vi t l di k R 1 0Vendor: VMware Model: Virtual disk Rev: 1.0 hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM
driveQEMU# dmesg | grep -i virtual
CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03 Virtal PCVirtualPC# dmesg | grep -i virtual
hda: Virtual HD, ATA DISK drive hdc: Virtual CD, ATAPI CD/DVD-ROM drive
![Page 45: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/45.jpg)
仮想マシンの検出技術
• ゲストOSとホストOSでのDrag&DropするためのBackDoor I/O port (VMware)
• Interrupt Descriptor Table(IDT) の差異検出(RedPillが利用)
( ) の差異検出• Local Descriptor Table(LDT) の差異検出(Confickerが利用)
• それぞれ対応が考えられているが、Anti-Degubberと同じでイタチごっこ
![Page 46: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/46.jpg)
エミュレータ以外の実装[今後の課題]
• Intel VT/AMD SVM を使った仮想マシン(KVM, Xenなど)での実装
– 問題は「Breakpointが制限されていること」と「STEP実行」だった。
– Stealth Breakpoints[ACSAC05]の活用
• 仮想記憶のページフォルトを利用したブレークポイント。数に制限はないが遅い。
– Unlimited watachpoints [2012]• ハードウェア拡張した無制限のdata watchpointの提案
![Page 47: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/47.jpg)
VM Instrumentの動向 1/2• RAW Memoryからのデータ推測
– DIMSUM [NDSS’12] Dongyan Xu, Purdue University• 構造体に入るデータの制約(ポインタが入る場合は4Bバイトで上位アドレスは同じものが入るなど)を利用して、Page Tableが無くてもプロセスの持つデータをメモリから取得無 も 持 デ タを リ 取得
– SigGraph[NDSS’11] Zhiqiang Lin, Purdue University• プロセスのデータ構造(ポインタのツリー構造)を使い,メモリ
ダンプからプロセス情報を類推する.メモリフォレンジックの一つ.Volatilityより賢いらしい.ライバルはLiveDM[RAID09, J. Rhe]
– Laika [OSDI’08] Anthony Cozzie, UIUC• 教師なしBayesian学習によるデータ構造推定
![Page 48: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/48.jpg)
VM Introspectionの動向 2/2• GuestOS解析ルーチンを作る労力の低減
初のVMI実装。for IDS。vmcore ダンプファイルを分析するcrash utilityを活用。
SBCFIカスタマイズされたカーネルソースからの生成[P t i t l CCS’07]
VMSTユーザ&カーネルコードから自動生成
The Semantic Gap問題提起[Chen et al, HotOS’01]
[Garfinkel et al, NDSS’03] [Petroni et al, CCS’07]
VMWatcher手作業のInstrospecionコード[Jiang et al, CCS’07]
Virtuoso実行トレースされたコードから半自動生成[Dolan‐Gavitt et al., IEEE SSP’11]
[Fu & Lin, IEEE SSP’12]
![Page 49: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/49.jpg)
VMを使った解析の動向
• In-Kernel Dynamic binary translation (DBT), Peter Feiner (U. Toronto) [ASPLOS’12]– DynamoRIOをLinuxカーネル内に入れてドライバなどのコントロールフロ
ー解析を可能にした。
• PinOS, P.P. Bungale(Intel)[Vee’07], g ( )[ ]– Xenの中にコントロールフロー解析ツールPinを入れてシステム全体の解
析を可能にした。
• Fiasco.OC microkernel, Aaron Pohle (Dresden工科大学)[Vee‘08]– Valgrindをmicrokernel内に入れて、 Object間のCapabilityテストを可能に
した。
• ステルスデバッガ、川古谷(NTT PF研)[MWS’08]– QEMUにデバッガを入れてマルウェア解析を可能にした。
![Page 50: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/50.jpg)
まとめ
• Anti-Debuggerを回避するための仮想化技術
– 仮想化技術とDebuggerで要求される技術の両立の仕方
• 4つの仮想化(Emulation, Binary Translation, Para-Virtualization Hardware Assist)Virtualization, Hardware Assist)
• VM Instrument (Break Point, STEP 実行)と VM Introspection (Signature Scanning とObject Traversal)
• 具体例としてVirt-ICEを紹介
![Page 51: 仮想化技術によるマルウェア対策とその問題点](https://reader033.vdocuments.pub/reader033/viewer/2022050817/556a4565d8b42a4a1e8b4d4c/html5/thumbnails/51.jpg)
参考文献・ツール
• Nguyen Anh Quynh,Kuniyasu Suzaki, VirtICE: next generation debugger for malware analysis, BlackHat 2010– Paper: http://media.blackhat.com/bh-us-10/whitepapers/Anh/BlackHat-USA-2010-Anh-Virt-ICE-wp.pdf
– Slide: https://media.blackhat.com/bh-us-10/presentations/Anh/BlackHat-USA-2010-Anh-Virt-ICE-slides.pdf
• 新井,岩村,古川谷,青木,星澤, アナライジング・マルウェア、オライリー・ジャパンャパン
• VM Instropection ツール
– insight-vmi [EuroSec 2011] https://code.google.com/p/insight-vmi/– TimeScope [SECURECOMM11]
http://www4.ncsu.edu/~dsriniv/timescope/timescope.html– Ether[CCS2008] http://ether.gtisc.gatech.edu/