Document

仮想化技術に関する最近の論文
金田 憲二
本発表の内容
• Argos: an Emulator for Fingerprinting
Zero-Day Attacks
– Georgios Portokalidis, Asia Slowinska, and
Herbert Bos
– EuroSys’06
• SubVirt: Implementing Malware with
Virtual Machines
– Samuel T. King, Peter M. Chen, Yi-Min Wang,
Chad Verbowski, Helen J. Wang, and Jacob R.
Lorch
– Symposium on Security and Privacy’06
Argos: an Emulator for
Fingerprinting Zero-Day Attacks
for advertised honeypots with
automatic signature generation
本論文の要旨
• ワームの封じ込めのためのシステムArgos
– ワームの侵入を検出
– どういったデータが攻撃を引き起こしたのかを解析
※ x86エミュレータを改良することで実装されている
ワームとは
• 自己増殖を繰り返しながら破壊活動を行なう
– ネットワーク経由でPCに送られてくる
– プログラムのバグを利用し、危険なコードを実行する
例)バッファ溢れを利用して、関数の戻りアドレスを改変
– 感染したPCを通して、他のPCを攻撃する
Worm
Worm
Worm
ワームを封じ込めるためには
1. ワームの侵入を検出する
2. シグネチャを生成する
–
シグネチャ = 攻撃を引き起こすバイト列
3. シグネチャを他のマシンに配布する
Worm
EB 10 EB 19 9F
18 F3 EB E0 FD
!
…
ワームの侵入を検出するには?
• 動的テイント(taint)解析を用いる
– 動的にデータフローを解析する
– ネットワークから送られてきたデータを
プログラムが実行しないか等をチェックする
メモリ
汎用レジスタ
!
EIP
どういった動的テイント解析行うか
• どのレベルで解析を行うか?
– マシンレベル or
– プロセスレベル
• どうやって解析を実装するか?
– ハードウェアを改良 or
– ソフトウェア上で実装
既存手法とその問題点 (1/2)
• マシンレベル + ハードウェア改良
例)Minos [J. R. Crandall et al. Microarchitecture’04]
– ハードウェアの改良はコストが大きい
– 攻撃に関する情報を収集するのが難しい
• 攻撃を引き起こす原因となったデータの物理アドレスのみ
しか得られない
既存手法とその問題点 (2/2)
• プロセスレベル + ソフトウェア上で実装
例)Vigliante [M. Costa et al. SOSP’05]
– OSカーネルを扱うのが難しい
– 複雑なメモリ操作(例、DMA)を扱うのが難しい
本論文の提案するシステム
Argos
• マシンレベルの解析をソフトウェア上で実現
– 攻撃に関する様々な情報が収集可能
例)攻撃を引き起こす原因となったデータの仮想アドレス
例)レジスタ、メモリ
– 複雑なメモリ操作(DMA)をサポート
※ x86 エミュレータ(QEMU)を改良
Argosの動作の流れ
1. 攻撃の検出
2. シグネチャの生成・配布
アプリ
アプリ
アプリ
ゲストOS
メモリ
Argos
エミュレータ
汎用レジスタ
EIP
1. 攻撃の検出
i. ネットワークから来たデータは、汚染あつかい
ii. 汚染データが書き込まれたメモリやレジスタも、
汚染あつかい
アプリ
アプリ
アプリ
ゲストOS
メモリ
Argos
エミュレータ
汎用レジスタ
EIP
1. 攻撃の検出
iii. 汚染データが制御流を変更させると、警告を出す
–
–
–
EIPに書き込まれた値が汚染 or
EIPに書き込まれた値が指すメモリブロックが汚染 or
システムコールの引数が汚染
メモリ
汎用レジスタ
EIP
メモリ
汎用レジスタ
EIP
2. シグネチャの生成・配布
攻撃に関する情報を取得する
i.
–
–
汚染されたメモリブロックとレジスタをダンプする
ゲストOSにコードを挿入し実行する
•
プロセスIDや実行ファイルに関する情報を取得する
2. シグネチャの生成・配布
ii. シグネチャを洗練させる
–
ネットワークトレースや、他のPCからの情報を利用
例)IPアドレスの違いを吸収するようなシグネチャを生成
iii. snortと同様の形式でシグネチャを配布する
Argosの実装
• 攻撃の検出
– どうやってメモリやレジスタの汚染を計算するか?
 メモリ・レジスタに汚染を示すタグを付ける
• シグネチャの生成・配布
– どうやって攻撃に関する情報を取得するか?
エミュレータを使っているので、ほぼ自明にできる
– どうやってシグネチャを洗練させるか?
本発表では割愛する(詳しくは別論文を参照)
汚染タグの実装
• Qemuを改良することで実現
– レジスタ、メモリ、ネットワークをエミュレーションする
データ構造に改良を加える
汚染タグの実装(レジスタの場合)
• 個々の汎用レジスタごとに4バイト用意する
– 格納中の値が、どの物理アドレスから来たかを記憶
• 特殊なレジスタには、タグを付けない
– セグメントレジスタ、MMX、FPU は重要でない
– EFLAGS にタグを付けると、ほとんどが汚染扱いに
メモリ
汎用レジスタ
EIP
汚染タグの実装(メモリの場合)
• 仮想マシンの物理メモリの各バイトごとに
– 1ビットのフラグを用意 or
– 1バイトのフラグを用意
※ 計算速度とメモリ消費量のトレードオフ
メモリ
ビット
マップ
メモリ
or
バイト
マップ
汚染タグの実装(ネットワークの場合)
• in/out命令によってNICから値が書き込まれた
レジスタを、汚染されたとみなす
汚染タグの更新の例1
• データ転送命令
– ソースオペランドのタグを、
デスティネーションオペランドに移す
mov %eax %ebx
メモリ
eax
ebx
汚染タグの更新の例2
• ALU命令(例、add %eax %ebx)
– デスティネーションオペランドは、
• 既に汚染されている場合、汚染されたまま
• まだ汚染されていない場合、ソースオペランドのタグが
コピーされる
タグを更新する際の注意点
• レジスタに0を代入する命令の扱い
例)xor %eax %eax
– タグをクリアする
• DMAの扱い
– I/Oデバイスからデータの書き込まれたメモリ
ブロックのタグをクリアする
Argosの性能評価
• ベンチマークの実行速度
• 攻撃の検出精度
ベンチマークの実行速度
• 以下の実行性能を比較
– Vanilla QEMU: オリジナルのQEMU
– Argos-B: バイトマップ方式
– Argos-B-CI: バイトマップ方式 + 攻撃検出
– Argos-P: ページディレクトリによるタグ管理
※全てにおいて、QEMUの最適化機能は無効
ベンチマークの実行速度
攻撃の検出精度
• 実験で試した攻撃では、false-positiveは無し
• 検出できた攻撃の代表例は以下の通り
Windows 2000 Apache Chunked Encoding Overflow
Microsoft IIS ISAPI .printer Extension Host Header Overflow
Microsoft Windows WebDav ntdll.dll Overflow
Microsoft FrontPage Server Extensions Debug Overflow
Microsoft Windows PnP Service Remote Overflow
Microsoft ASN.1 Library Bitstring Heap Overflow
Microsoft Windows Message Queueing Remote Overflow
Microsoft Windows RPC DCOM Interface Overflow
War-FTPD 1.65 USER Overflow
Linux 2.4.29
nbSMTP v0.99 remote format string exploit
Custom Stack Overflow
Custom Heap Corruption Overflow
結論
• ワームの封じ込めのためのシステムArgos
– x86エミュレータQEMUを利用
• 実行速度はかなり遅くなるが、攻撃の検出精度は高い
SubVirt: Implementing Malware
with Virtual Machines
論文の要旨
• Virtual-machine based rootkit (VMBR)
– VMMをインストールする
– 元のOSを仮想マシン上で実行する
検出が困難で、かつ、多様な攻撃が可能
既存のルートキットの問題点
• IDSに対して、明確な優位性を持たない
– 特権レベルで動くプログラム同士の「いたちごっこ」
• 複雑な機能を持つほど、検出されやすくなる
例)フィッシングwebサーバは、ネットワークポートや
ファイルなどに関する情報を残す
Virtual-Machine Based Rootkit
(VMBR)
• 仮想マシンモニタ(VMM)を利用したルートキット
– VMMをインストールする
– 元のOSを仮想マシン上で実行する
仮想マシン
アプリ
アプリ
ホストOS攻撃対象のOS
仮想マシンモニタ
ハードウェア
VMBRの特長
• 攻撃が検出されにくい
– 攻撃対象のOSからVMMを隠蔽
• 多様な攻撃を実現できる
– VMMによって、攻撃対象のOSを制御
以降の発表の流れ
• どうやってVMBRをインストールか
• どうやって悪意のあるサービスを実現するか
• どうやってVMBRのアンインストールを防ぐか
• どうやってVMBRからマシンを防御するか
VMBRのインストール方法
• ブートシークエンスを操作し、
VMBRを攻撃対象OSより先に起動させる
インストール方法の詳細
1. 特権レベルでマシンにアクセス可能にする
例)ユーザをだましてソフトウェアをインストール
例)P2P上にあるbootable CD-ROMイメージを改竄
2. VMMを未使用のディスクスペースに置く
例)攻撃対象OSがLinuxならば、スワップ領域に
3. ブートシークエンスを変更する
– 起動時に、 VMMが最初にロードされるようにする
•
IDSに検知されないように、マシンが停止する直前に
ブートシークエンスを変更
インストール方法の詳細
4. マシンの再起動と共に、VMMが起動する
5. 攻撃対象OSをゲストOSとして起動させる
– 仮想ディスクへのアクセスを、物理ディスク上の
対応する領域へのアクセスに変換する
悪意のあるサービスの実現方法
• 攻撃のためのOSを別に用意する
– 攻撃対象OSによって攻撃が検出されにくい
– 既存のライブラリ・ツールを使い、攻撃を実装できる
悪意のある
サービス
ホストOS
アプリ
アプリ
攻撃対象のOS
仮想マシンモニタ
ハードウェア
悪意のあるサービスの例1
• ターゲットシステムには無関係の攻撃
– スパムの転送
– 分散DoS攻撃
– フィッシングWebサーバ
8080番ポートへのメッセージは
–Webサーバへと転送
…
フィッシング
Webサーバ
ホストOS
通常のトラフィックは
攻撃対象OSに素通し
アプリ
アプリ
攻撃対象のOS
仮想マシンモニタ
ハードウェア
悪意のあるサービスの例2
• ターゲットシステムのデータ・イベントを見る攻撃
– I/Oデバイスへのアクセスを捕捉して、
キーストロークやネットワークパケットを盗み見る
– SSLソケットのwrite呼び出しを捕捉して、
暗号化される前の平文を取得する
–…
アプリ
アプリ
監視アプリ
ホストOS
攻撃対象のOS
仮想マシンモニタ
ハードウェア
悪意のあるサービスの例3
• ターゲットシステムの実行を書き換える攻撃
– ネットワークパケットの改竄
– ファイルの削除
–…
VMBRのアンインストールを防ぐには
• VMBRがマシンを制御できない瞬間をなくしたい
例)BIOSが他のメディアを起動させるのを防ぎたい
マシンの起動・停止を仮想化する
– ACPIのスリープ状態でエミュレーションする
どうやってVMBRが
インストールされたことを検出するか
• VMBRより下のレイヤーで検出する
– 安全なハードウェア(例、Intel LaGrande)や
安全なVMM(例、Terra)を利用する
• VMBRより上のレイヤーで検出する
– 実行時のオーバヘッドから類推する
– センシティブな非特権命令(例、sidt命令)を、
ユーザレベルで実行する
• 多くのVMMで、エミュレーションが実装されていない
実装
• 2種類のProof-of-concept VMBR
– Virtual PC (Windows XP)
– VMware (Linux)
• 4つの悪意のあるサービス
–
–
–
–
フィッシングWebサーバ
キーストロークのスニファー
パスワードファイルの検索ツール
VMMを検出するプログラムredpillを回避するプログラム
結論
• VMMを使った悪意のあるサービスと、
それへの防御方法
– まだまだNaïveな点は多いけれど、新しい発想?
– 仮想化対応のハードウェアが普及してくれば、
こうした攻撃もより一般的になるはず?
その他
Executing MPI Programs on Virtual
Machines in an Internet Sharing System
• MPIプログラムの実行に適した仮想環境
– User-mode Linuxを元にしている
– 通信処理を最適化している
• ゲストOSのソケットとホストOSのソケットを
直に対応付ける
例)ゲストOS上でsocket()を呼ぶと、ホストOS上でも
socket()が呼ばれ、ソケットが生成される
※ Linux Vserverで十分では?
A Feather-Weight Virtual Machine
for Windows Applications
• Windows上で動くsoftware potのようなもの
• OSの名前空間を仮想化する
– ファイル、レジストリ、ネットワークアドレス、
カーネルオブジェクトの仮想化
– プロセス間通信の制限
– デーモンサービスの仮想化
A Feather-Weight Virtual Machine
for Windows Application
• システムサービスの捕捉の実装
– ファイル、プロセス間通信  カーネルレベルで捕捉
• System Service Dispatch Table中のシステムコールの
エントリポイントを変更
– ウィンドウ管理など  ユーザレベルで捕捉
• Import Address Table 中のライブラリ関数の
エントリポイントを変更
• ファイル等の資源の共有及び隔離の実装
– Copy-on-write方式
• …
参考資料
関連する学会
• USENIX Symposium on Operating Systems Design and
Implementation (OSDI)
• ACM Symposium on Operating Systems Principles (SOSP)
• USENIX Annual Technical Conference (USENIX)
• ACM International Conference on Architectural Support for
Programming Languages and Operating Systems (ASPLOS)
• ACM/USENIX International Conference on Virtual Execution
Environments (VEE)
• USENIX Symposium on Networked Systems Design and
Implementation (NSDI)
• IEEE International Conference on Distributed Computing
Systems (ICDCS)
• IEEE International Parallel and Distributed Processing
Symposium (IPDPS)
• EuroSys
関連する論文 (USENIX’06)
• Antfarm: Tracking Processes in a Virtual
Machine Environment
– Stephen T. Jones, Andrea C. Arpaci-Dusseau, and
Remzi H. Arpaci-Dusseau
• Optimizing Network Virtualization in Xen
– Aravind Menon, Alan L. Cox, and Willy Zwaenepoel
• High Performance VMM-Bypass I/O in Virtual
Machines
– Jiuxing Liu, Wei Huang, Bulent Abali, and
Dhabaleswar K. Panda
関連する論文 (EuroSys’06)
• Argos: an Emulator for Fingerprinting
Zero-Day Attacks
– Georgios Portokalidis, Asia Slowinska, and
Herbert Bos
関連する論文 (VEE’06)
• Virtual Machine-Based Honeypot Monitoring
– Kurniadi Asrigo, Lionel Litty, and David Lie
• A Feather-Weight Virtual Machine for
Windows Applications
– Yang Yu, Fanglu Guo, Susanta Nanda, Lap-chung
Lam, and Tzi-cker Chiueh
• Live Updating Operating Systems Using
Virtualization
– Haibo Chen,Rong Chen,Fengzhe Zhang,Binyu Zang,
and Pen-Chung Yew
関連する論文 (NSDI’06)
• Ventana: A Distributed Filesystem for
Virtual Machine Based Computing
Environments
– Ben Pfaff, Tal Garfinkel, and Mendel Rosenblum
関連する論文 (IPDPS’06)
• Executing MPI Programs on Virtual
Machines in an Internet Sharing System
– Z. Pan, X. Ren, R. Eigenmann, and D. Xu
関連する論文 (SACSIS’06)
• 仮想計算機を用いたグリッド上でのMPI実行
環境
– 立薗 真樹, 中田 秀基, and 松岡 聡
• ORE Grid: 仮想計算機を用いたグリッド実
行環境の高速な配置ツール
– 高宮 安仁, 山形 育平, 青木 孝文, 中田 秀基,
and 松岡 聡
関連する論文 (ASPLOS’04)
• Devirtualizable virtual machines
enabling general, single-node, online
maintenance
– David E. Lowell, Yasushi Saito, and Eileen J.
Samberg
関連するプロジェクト (1/3)
• Xen
– http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
• Denali
– Lightweight virtual machines for distributed and networked
systems
– http://denali.cs.washington.edu/
• User-mode Linux
– http://user-mode-linux.sourceforge.net/
• Cooperative Linux
– http://www.colinux.org/
• FAUmachine
– http://www3.informatik.uni-erlangen.de/Research/FAUmachine/
• L4Ka Virtual Machine Technology
– http://l4ka.org/projects/virtualization/
関連するプロジェクト (2/3)
• sHype, rHype
– Hypervisor security architecture
– Research Hypervisor
– http://www.research.ibm.com/secure_systems_depart
ment/projects/hypervisor/
• CoVirt
– Virtual-machine based security services
– http://www.eecs.umich.edu/CoVirt/
• HyperSpector
– virtual distributed monitoring environment
– http://www.csg.is.titech.ac.jp/~kourai/hs.html
関連するプロジェクト (3/3)
• The Collective
– A virtual appliance computing infrastructure
– http://suif.stanford.edu/collective/
• Zap, MobiDisk, THINC
– http://www.cs.columbia.edu/~nieh/
• Virtuoso (VNET)
– Resource management and prediction for distributed computing using
virtual machines
– http://virtuoso.cs.northwestern.edu/
• Virtualization-based system for network security and Grid
– Collapsar, VIOLIN, SODA
– http://www.cs.purdue.edu/homes/jiangx/
• In-VIGO (VMPlants)
– Virtualization middleware for computational grids
– http://invigo.acis.ufl.edu/
関連する企業
•
•
•
•
•
VMware
Microsoft Virtual Server
SWSoft
Virtuozzo
TRANGO
– Real-time embedded hypervisor
– http://www.trango-systems.com
• Parallels
– http://www.parallels.com
• SVISTA
– http://www.serenityvirtual.com
• Ensim
– http://www.ensim.com/
•
VMM introduction
–
–
–
–
•
VMware
–
–
–
–
•
DOSemu, WINE
bochs, QEMU, PearPC
Process-level virtualization
–
–
–
•
User-mode Linux
Cooperative Linux
Emulators
–
–
•
Samuel T. King, George W. Dunlap, Peter M. Chen, Operating System Support for Virtual Machines, USENIX Annual
Technical Conference, 2003.
Linux-specific systems
–
–
•
VMware patent
Carl A. Waldspurger, Memory Resource Management in VMware ESX Server, OSDI 2002.
John Scott Robin and Cynthia E. Irvine, Analysis of the Intel Pentium's Ability to Support a Secure Virtual Machine
Monitor, USENIX Security 2000.
Jeremy Sugerman, Ganesh Venkitachalam, and Beng-Hong Lim, Virtualizing I/O Devices on VMware Workstation's
Hosted Virtual Machine Monitor, USENIX Annual Technical Conference, 2001.
OS extension for VMM
–
•
R. Goldberg, Survey of Virtual Machine Research, IEEE Computer, June 1974, pp 34-45.
R. Goldberg, Architecture of Virtual Machines, Proceedings of the Workshop on Virtual Computer Systems,
Cambridge, Mass, 1973, pp 74-112.
J. E. Smith and Ravi Nair, An Overview of Virtual Machine Architectures, November 1, 2003.
J. E. Smith and Ravi Nair, Virtual Machine Architectures, Implementations, and Applications, August 23, 2004.
FreeBSD Jail
Zap: Steven Osman, Dinesh Subhraveti, Gong Su, and Jason Nieh, The Design and Implementation of Zap: A
System for Migrating Computing Environments, OSDI 2002.
Compute Capsule: Brian K. Schmidt, Supporting Ubiquitous Computing with Stateless Consoles and Computation
Caches, Ph.D. Thesis, Computer Science Department, Stanford University, August 2000.
Para-virtualization, microkernel
–
–
–
Xen: Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt,
Andrew Warfield, Xen and the Art of Virtualization, SOSP 2003.
Denali: Andrew Whitaker, Marianne Shaw, and Steven D. Gribble, Scale and Performance in the Denali Isolation
Kernel, OSDI 2002.
Exokernel: Dawson R. Engler, M. Frans Kaashoek, and James O'Toole Jr, Exokernel: an operating system
architecture for application-level resource management, SOSP '95.
•
VMM introduction
–
–
–
–
•
VMware
–
–
–
–
•
DOSemu, WINE
bochs, QEMU, PearPC
Process-level virtualization
–
–
–
•
User-mode Linux
Cooperative Linux
Emulators
–
–
•
Samuel T. King, George W. Dunlap, Peter M. Chen, Operating System Support for Virtual Machines, USENIX Annual
Technical Conference, 2003.
Linux-specific systems
–
–
•
VMware patent
Carl A. Waldspurger, Memory Resource Management in VMware ESX Server, OSDI 2002.
John Scott Robin and Cynthia E. Irvine, Analysis of the Intel Pentium's Ability to Support a Secure Virtual Machine
Monitor, USENIX Security 2000.
Jeremy Sugerman, Ganesh Venkitachalam, and Beng-Hong Lim, Virtualizing I/O Devices on VMware Workstation's
Hosted Virtual Machine Monitor, USENIX Annual Technical Conference, 2001.
OS extension for VMM
–
•
R. Goldberg, Survey of Virtual Machine Research, IEEE Computer, June 1974, pp 34-45.
R. Goldberg, Architecture of Virtual Machines, Proceedings of the Workshop on Virtual Computer Systems,
Cambridge, Mass, 1973, pp 74-112.
J. E. Smith and Ravi Nair, An Overview of Virtual Machine Architectures, November 1, 2003.
J. E. Smith and Ravi Nair, Virtual Machine Architectures, Implementations, and Applications, August 23, 2004.
FreeBSD Jail
Zap: Steven Osman, Dinesh Subhraveti, Gong Su, and Jason Nieh, The Design and Implementation of Zap: A
System for Migrating Computing Environments, OSDI 2002.
Compute Capsule: Brian K. Schmidt, Supporting Ubiquitous Computing with Stateless Consoles and Computation
Caches, Ph.D. Thesis, Computer Science Department, Stanford University, August 2000.
Para-virtualization, microkernel
–
–
–
Xen: Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt,
Andrew Warfield, Xen and the Art of Virtualization, SOSP 2003.
Denali: Andrew Whitaker, Marianne Shaw, and Steven D. Gribble, Scale and Performance in the Denali Isolation
Kernel, OSDI 2002.
Exokernel: Dawson R. Engler, M. Frans Kaashoek, and James O'Toole Jr, Exokernel: an operating system
architecture for application-level resource management, SOSP '95.