仮想化技術によるマルウェア対策とその問題点

6,066 views
5,911 views

Published on

Lecture at Yokohama National University

0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,066
On SlideShare
0
From Embeds
0
Number of Embeds
132
Actions
Shares
0
Downloads
77
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

仮想化技術によるマルウェア対策とその問題点

  1. 1. 仮想化技術によるマルウェア対策と その問題点 2012/07/09 @横浜国立大学 産業技術総合研究所 セキュアシステム研究部門 須崎有康
  2. 2. 自己紹介• 所属:独立行政法人 産業技術総合研究所 – 2001年に通産省傘下の15研究所等を統 合してできた環境・エネルギー、ライフサ イエンス、情報通信・エレクトロニクス、ナ ノテクノロジー・材料・製造、標準・計測、 地質という多様な6分野の研究を行う公 的研究機関。本部を東京及びつくばに置 き、つくばセンターを除く全国8ヶ所に地 域センターを配置。総職員数は約3,000• 情報セキュリティ研究センター (2005-2012) (研究顧問 松本勉教授)• セキュアシステム研究部門(2012- )• CD/DVD LinuxのKNOPPIX日本語版
  3. 3. コンテンツ• マルウェア解析に仮想マシンを使う理由 – Anti-Debugger• 仮想化技術の詳細• マルウェア解析に必要な技術 ウ 解析に必要な技術 – InstrumentとIntrospection• 具体例:Virt-ICE• 問題点と現在の動向• まとめ
  4. 4. マルウェア解析に仮想マシンを使う理由• 最近のマルウェアはdebuggerによる解析を検出 して、それを回避する技術を含んでいる(Anti- Debugger) – [Xu,NDSS08]によると93.9%のマルウェアはAnti- Debuggerの機能がある。 – 多くはこの講義で紹介済みと予想。。。• Debugger単独では検出し難いマルウェア技術 – ステルス化が進むRootKit – Hidden Process – Memory Dual mapping
  5. 5. ステルス化が進むRootKit• システム(OS)の外部で動作する – ファームウェア/BIOSルートキットやSMM(System Management Mode)ルートキット ハイバネーションな SMI (System Management Interrupt) どの割り込み Protect SMM ハイバネーションj時の Mode Mode メモリ退避できるように 全メモリアクセスできる rsm Instrction SMRAM SMM handler SMM Modeのみアクセス できるメモリ。Handlerは Context BIOSによってロード• 仮想化の悪用BluePill [BlackHat 2006, Joanna Rutkowska] – ハードウェアの仮想化支援機能を悪用し、悪意のハイパーバイ ザー(仮想マシンモニタ)をインストール。通常のOSからは検出 できない
  6. 6. Hidden Process (Windows)• DKOM(direct kernel object manipulation) – プロセスは双方向のリンクリストで管理。リンクリ ストのリンクを故意に書き換えることで特定のプ ロセスエントリをリストから切り離して隠ぺい – プロセスはスレッドのコンテナ(入れもの)でしか なく処理自体はスレッドによって実行される。 Process Process Process Process A B C D
  7. 7. Hidden Process (Linux)• 多くのカーネル情報は/procファイルシステム から取得される。 ps, top, freeコマンドなどのシステム 情報は/proc FSを通して取得、表示 /proc ファイルシステム ユーザ空間 カーネルのシステム情報を通知する特別なファイルシステム カーネル空間で偽の情報を出すような攻撃を カーネル空間 されるとmalware processを隠すことができる malware Process Process Process Process A C D B
  8. 8. Memory Dual mapping• Matt “skape” Miller, Using dual-mappings to evade automated unpackers, 2008 より。• 2つの仮想メモリページを1つ物理メモリページに割り当てる – Executable mapping DEP, Debugger の監視対象は • コードが実行される。Debugger コ ドのみ コードのみ Virtual Vi t l Physical はここのみ監視 – Editable mapping • Packerとして働き、コードを改 Code 変(Self-modification)する Executable• DEP(Data Execution Prevention) を回避して、コード改変 Data データとして実 Editable 行コードを書き 換え
  9. 9. Anti-Debuggerへの対処法• 高機能Debugger – Anti-Debuggerとのイタチごっご • 参考書籍:アナライジング・マルウェア、オライリー・ジャパン• ICE (In-Circuit Emulator) – ハ ドウ アを使ったデバッグ ハードウェアを使ったデバッグ。 ハードウェア情報は全て取れるが、 解析に知識が必要。高価• 仮想化(仮想マシン)技術 – ICEより安価 – 仮想マシンにも沢山の技術があり、 Anti-Debuuger作成には考慮が必要
  10. 10. コンテンツ• マルウェア解析に仮想マシンを使う理由 – Anti-Debugger• 仮想化技術の詳細• マルウェア解析に必要な技術 ウ 解析に必要な技術 – InstrumentとIntrospection• 具体例:Virt-ICE• 問題点と現在の動向• まとめ
  11. 11. 仮想マシンソフトウェア(ハイバーバイザー or 仮想マシンモニタ)はいくつあるか• 挙げてみると – VMware – Xen – VirtualPC – KVM – Parallels ll l – 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, ……
  12. 12. 仮想マシンの歴史 KVM Xen 仮想化支援 (Full- (Intel VT, AMD-V) Virtualization) Robin,Irvineによる仮想化の IA32 IA32命令要件 USENIX Sec2000 x86 VMware Xen Workstation (Para-Virtualization) (Dynamic Translation) ‘78 16bit ‘85 32bit Popek,Goldbergによるメインフレーム 仮想化の命令要件仮想化支援 1974 IBM IBM DEC IBM CP/67 370/VM VAX/VMM z/VM 1960 1970 1980 1990 2000
  13. 13. 仮想化技術の歴史• 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] 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
  14. 14. 仮想化のメリット• ハイパーバイザー(or 仮想マシンモニタ, Virtual Machine Monitor) は一台の物理マシン上で複 数のOSを実行可能にする• 仮想マシン(VM)は扱いやすい – VMが全く同じマシン環境を提供するのでOSイメー ジを手軽にコピー可能 – ライブマイグレーション(移動) • ロードバランスはハードウェアメンテナンスに活用 – スナップショットとロールバック – VMの操作がソフトウェアで行え、Debugに使える
  15. 15. IA32での仮想化の問題点• 仮想化できない命令 – Sensitiveで且つNon-privileged の命令 • 状態を保存し、以降の命令実効に影響を与える。 • 例外で捕捉できない。• TLBの仮想化 (今回ここはメインではないのでスキップ) – TLB flashを制御できない。 – TLBはハードウェア制御であり、且つ、アドレス空 間にIDタグが付けられない。 • SPARCでは仮想化可能。• IOの仮想化 (今回ここはメインではないのでスキップ)
  16. 16. Sensitive&Non-privileged命令の仮想化問題• Sensitiveな命令 – CPUの真の姿が見えてしまう命令 • GDT, LDT, IDTの読出し – 以後の実行に影響を与える命令 • POPF, PUSHF• Privilegedな命令ならトラップで捕捉すること ができるが、 IA32ではSensitiveで且つNon- privileged命令がある。
  17. 17. 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が行なう。
  18. 18. エミュレーション• 基本的には1命令づつソフトウェアで処理。異 なる命令セットでも構わない。 – 代表的な仮想マシンはQEMU (Main developer: Fabrice Bellard) • 中間コードを介した動的コンパイルを行うことにより、 IA32、PowerPC、SPARCなどエミュレート可能 • アクセラレータ技術(KQEMU)により、多くの命令を Native 実行することで高速化することもできる。• 問題は遅いこと
  19. 19. 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)
  20. 20. Para-Virtualization (準仮想化)• IA32の4レベルのリングプロテクションを活用。 • Ring 0-2は特権、ring3は非特権
  21. 21. Para-Virtualization (準仮想化)• ゲストOSのカーネル内で仮想化で問題となる部分を変更し、 Ring1で実行するようにする。ハイパーバイザーはring0で実行 Normal OS Para-Virtualized ring3 ring3 App1 App2 App1 App2 Process P Process P Process P Process P System Call ring2 ring2 System Call ring1 ring1 Guest OS 3 para-virtualized 2 Kernel Hyper Call 1 0 ring0 Guest OS ring0 HyperVisor Kernel (VMM)
  22. 22. ハードウェアの補助による解決• Intel VT/AMD-SVM (2005,2006)で導入された機能• Sensitive且つNon-Privileged命令が実行されるとモードが切 り替わり、処理をハイパーバイザー(仮想マシンモニタ)が行 なう ドで イ イザ を動作させ、VMX non• VMX rootモードでハイパーバイザーを動作させ、VMX non- root rootモードでゲストOSを動作させる。• ゲストOSは何も変更せず、仮想化される。 3 VM exit 3 2 2 1 1 0 0 VM entry VMX non-root VMX root
  23. 23. ハードウェアの補助による解決• KVM, Xen, Vmwareなどで活用されている Guest OS Hypervisor(VMM) ring3 ring3 App1 App2 Process Process ring2 Sys stem Call ring2 ring1 ring1 ring0 Guest OS ring0 Hypervisor Kernel Hyper Call (VMM) VMX non-root VMX root
  24. 24. コンテンツ• マルウェア解析に仮想マシンを使う理由 – Anti-Debugger• 仮想化技術の詳細• マルウェア解析に必要な技術 ウ 解析に必要な技術 – InstrumentとIntrospection• 具体例:Virt-ICE• 問題点と現在の動向• まとめ
  25. 25. Guest OS解析で必要となる技術• Instrument (VMの操作) 1. Virtual/Physical mappingを理解したメモリ操作 2. Break Point (hardware/Software breakpoint) 3. STEP実行 4. レジスタ操作 5. VM Snapshot/Rollback 1,2,3は仮想マシン実装法で問題を引き起こす• Introspection (Guest OS解析) – Semantic gap 問題 – メモリの内容解析 (Memory Forensic)
  26. 26. 仮想マシンにおけるInstrumentの問題点1. Virtual/Physical mappingを理解したメモリ操作 – Page Table管理はOSのポリシーに依存するので、 VM Introspectionとの連携が必要2. Break Point (hardware/Software breakpoint) – IA32ではhardware BPの設定は4個まで。 Anti- Debuggerで検出可能。 – Software BPのためにInt03(0xCC)を使うとAnti- Debuggerで検出されてしまう。 – 命令にBreakPointがあることを隠す必要あり。 • CPUエミュレーションの中に埋め込む
  27. 27. 仮想マシンにおけるInstrumentの問題点3. STEP実行 – ハードウェアのTrap Flagを使った実行では隠した命 令までSTEP実行されてしまう。 Anti-Debuggerで検 出可能。 – 各命令がSTEP実行されることを隠す必要あり。 • CPUエミュレーションの中に埋め込む
  28. 28. 仮想化技術とVM操作性 Memory Break Point STEP Manipulate VM Manipulation execution Register Snapshot RollbackEmulator ○(QEMU) ○ ○ ○ ○ Inspectionと連携BinaryTranslator ○ ? ? ○ ○ Inspectionと連携(VMware)Para-Virtualization ○ × × ○ ○ Inspectionと連携(Xen)HardwareAssist(KVM, Xen, ○ × × ○ ○VMware with Inspectionと連携Intel VT, AMDSVM)
  29. 29. Semantic Gap問題• Virtual Machineはハードウェアの仮想化のみ であり、ハードウェアの変更情報以外は取れ ない• OSのポリシ で決める情報は取れない OSのポリシーで決める情報は取れない – Virtual Memory/Physical Memory Mapping – PID – Scheduling – Swap out/in
  30. 30. Semantic Gapの解決• メモリ内の解析が必要• Memory Forensicの技術を使う – Signature Scanning (locate objects) • VMでは生のメモリをアクセス出来るのみであり メモリ VMでは生のメモリをアクセス出来るのみであり、メモリ 中のObjectデータ構造を見つける必要がある – Object Traversal • Objectデータ構造の理解
  31. 31. コンテンツ• マルウェア解析に仮想マシンを使う理由 – Anti-Debugger• 仮想化技術の詳細• マルウェア解析に必要な技術 ウ 解析に必要な技術 – InstrumentとIntrospection• 具体例:Virt-ICE• 問題点と現在の動向• まとめ
  32. 32. Virt-ICE• BlackHat2010で発表したマルウェア解析ツール – QEMUベース。2つのモジュールを組み込む • Instrument(VMの操作)としてのKobuta • Introspection (Guest OS解析)としてのEagleEye VM (QEMU) GuestOS (Windows) Virt-ICE Module Virt-ICE Introspection Instrumentation Client (EagleEye) (Kobuta)
  33. 33. Instrument(VMの操作)としてのKobuta • QEMUでのCPU操作の問題点 – 高速化ために単純なインタプリタでなくJIT(Just-In- Time)による命令変換。 – TCG(Tiny Code Generator)により中間表現 IR (Intermediate Representative)に置き換えてから Representative)に置き換えてから、 ホストCPU命令に変換。 • KobutaのInstrumentはTCG IRレベルで行う。 – CPUアーキテクチャ依存部分は例外として扱われ るので、それに対応したHookを書ける。
  34. 34. 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) (kobuta ins sysenter cpusync KOBUTA_CPUSYNC_ENABLE) kobuta_syn_cpucontext(); /* Synchronize CPU context on demand*/ kobuta_sysenter(); /*Finally, execute all registered handlers for SYSENTER*/} ...}
  35. 35. 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)
  36. 36. 高速化• QEMUは基本的にエミュレータなので遅い• これを高速化するKQEMUが開発されている – 多くの命令を直接実行するモジュール 0.12.0でサポ トされなくなった – KQEMUはQEMU 0 12 0でサポートされなくなった がKobutaが使う 0.12.04にforward-port• 残念ながらKQEMUとKobutaとは共存できない – 動的にKobutaと切り替える機能を開発 • Kobutaを使っていなければKQEMUを有効にする
  37. 37. Introspection (Guest OS解析)としてのEagleEye• 必要な機能 – Signature Scanning (locate objects) – Object Traversal• 必要なオブジェクト(情報) – Kernel modules – Processes/threads – System handles – Registries – DLLs – Network connections/ports• 問題点:Windowsではこれらの詳細情報が公開 されていない
  38. 38. ReactOSの活用• WindowsXP/2003 バイナリレベルおける互換性 確保を目指して開発が進められているフリーソ フトウェア – http://www.reactos.org• データ構造を表すHeader情報を活用する
  39. 39. サンプル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; PETHREAD RotateInProgress;#else KGUARDED_MUTEX AddressCreationLock; KSPIN_LOCK HyperSpaceLock;#endif… } EPROCESS, *PEPROCESS;• この情報からEPROCESSの構造体を推定
  40. 40. 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); windows_task_pid(ee_t h, eprocess, 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);
  41. 41. Virt-ICEのデバッグ機能• Virt-ICE Clientからデバッグコマンド送って解析 Set execution breakpoint: db s <address> Singlestep: db s VM (QEMU) Run until RET: db R GuestOS (Windows) Pause guest VM: db C Resume guest VM: db r Virt-ICE Module Virt-ICEIntrospection Instrumentation Client (EagleEye) (Kobuta)
  42. 42. コンテンツ• マルウェア解析に仮想マシンを使う理由 – Anti-Debugger• 仮想化技術の詳細• マルウェア解析に必要な技術 ウ 解析に必要な技術 – InstrumentとIntrospection• 具体例:Virt-ICE• 問題点と現在の動向• まとめ
  43. 43. マルウェア解析に仮想マシンを使う問題点• 仮想マシン検出技術を行うマルウェア – 外部時計を使った実行時間計測 • Anti-Debuggerと同じ – 仮想マシンでも完全に仮想化している訳ではない
  44. 44. 仮想マシンの検出技術• CPUアーキテクチャが固定 – 仮想マシン自体がVirtualと付けたデバイスも多い VMware # dmesg | grep -i virtual VMware vmxnet virtual NIC driver Vendor: VMware M d l Vi t l di k R 1 0 V d VM Model: Virtual disk Rev: 1.0 hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive QEMU # dmesg | grep -i virtual CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03 Virtal PC VirtualPC # dmesg | grep -i virtual hda: Virtual HD, ATA DISK drive hdc: Virtual CD, ATAPI CD/DVD-ROM drive
  45. 45. 仮想マシンの検出技術• ゲストOSとホストOSでのDrag&Dropするための BackDoor I/O port (VMware)• Interrupt Descriptor Table(IDT) の差異検出 (RedPillが利用)• Local Descriptor Table(LDT) の差異検出 ( ) (Confickerが利用)• それぞれ対応が考えられているが、Anti- Degubberと同じでイタチごっこ
  46. 46. エミュレータ以外の実装[今後の課題]• Intel VT/AMD SVM を使った仮想マシン(KVM, Xenなど)での実装 – 問題は「Breakpointが制限されていること」と「 STEP実行」だった。 – Stealth Breakpoints[ACSAC05]の活用 • 仮想記憶のページフォルトを利用したブレークポイント 。数に制限はないが遅い。 – Unlimited watachpoints [2012] • ハードウェア拡張した無制限のdata watchpointの提案
  47. 47. 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学習によるデータ構造推定
  48. 48. VM Introspectionの動向 2/2 • GuestOS解析ルーチンを作る労力の低減 最初のVMI実装。for IDS。 SBCFI VMST vmcore ダンプファイルを分 カスタマイズされたカーネル ユーザ&カーネルコード 析するcrash utilityを活用。 ソースからの生成 から自動生成 [Garfinkel et al, NDSS’03] [Petroni t l [P t i et al, CCS’07] [Fu & Lin, IEEE SSP’12]The Semantic Gap問題提起 VMWatcher Virtuoso[Chen et al, HotOS’01] 手作業の 実行トレースされたコードから Instrospecionコード 半自動生成 [Jiang et al, CCS’07] [Dolan‐Gavitt et al., IEEE SSP’11]
  49. 49. 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にデバッガを入れてマルウェア解析を可能にした。
  50. 50. まとめ• Anti-Debuggerを回避するための仮想化技術 – 仮想化技術とDebuggerで要求される技術の両立 の仕方 • 4つの仮想化(Emulation, Binary Translation, Para- Virtualization, Virtualization Hardware Assist) • VM Instrument (Break Point, STEP 実行)と VM Introspection (Signature Scanning とObject Traversal)• 具体例としてVirt-ICEを紹介
  51. 51. 参考文献・ツール• 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/

×