emit 命命をををを XEN ををををををを ををををををををををををを をををををををを 安安安安 安安安安安安安安 安安 安 一 安安安安 安安安安 安安安安安安安安安 を 146 を をををををををををををををを・ を 52 をををををををををををををををををををを 1 2 3
emit命令を用いた XEN 仮想マシン上のセキュリティインシデントの
可観測化と可視化
安藤類央情報通信研究機構
高橋一志東京大学
須崎有康産業技術総合研究所
第 146 回 マルチメディア通信と分散処理・第 52 回コンピュータセキュリティ合同研究発表会
1
2 3
概要 _emit 擬似命令を用いたVM active monitor
■ 本論文では、 _emit 擬似命令を用いた仮想マシン上のセキュリティインシデントの能動的観測と可視化手法を提案する。
■ 提案手法では、フィルタドライバによるレジストリアクセスを _emit 擬似命令を用いてハイパーバイザー側へ通知し、可視化を行う。
■ 可視化(次元削減)には、自己組織化マップを用いた。
■ 仮想 Windows OS をレジストリが定義するステートマシンとすると、各種ソフトウェアのインストール、マルウェア感染などの状態遷移可視化は直感的な結果となった。
仮想化 vs Malware
■仮想化技術を用いたマルウェアの挙動の動的解析
[ccs 2008] Ether: Malware Analysis via Hardware Virtualization Extensions [ACSAC 2009]MAVMM: Lightweight and Purpose Built VMM for Malware Analysis
[NDSS 2011] Practical Protection of Kernel Integrity forCommodity OS from Untrusted Extensions
関連研究 セマンティック・ギャップ仮想マシンのイベントをいかに捕捉するか?
■ セマンティック・ギャップとは:仮想マシンのイベントは、仮想マシンモニタ側では IO 要求として発行される。
■ 仮想マシンモニタ側では、上でなにがおきているのか通常はわからない。
セマンティックギャップを埋める研究①Lionel Litty, H. Andrés Lagar-Cavilla, David Lie: Hypervisor Support
for Identifying Covertly Executing Binaries. USENIX Security Symposium 2008: 243-258
②Lares: An Architecture for Secure Active Monitoring Using Virtualization 2008 IEEE Symposium on Security and Privacy table of contents Bryan D. Payne, Martim Carbone, Monirul Sharif, Wenke Lee
受動的観測⇒スナップ解析は計算時間、コストがかかるので、 Active Monitor 方式を選択した。
Classification of cloud computingon-premise, HaaS, PaaS and SaaS
Four deployment style
1 On-Premise
2 HaaS Hardware | OSCreating service
3 PaaS Platform | AppCreating backend application (DB)
4 SaaS App | ScriptCreating frontend application (Web, etc)
Private CloudOwn and manage all laysers
Classification of Virtualizations (structural)
There are 5 kinds of virtualization methods.
[1][2]Logical / physical partition: Multiboot. Operating systems cannot run in at the Same time.Grub bootloader, BIOS firmware
[3][4]VM / VMM OS or VM runs virtually at the same time.Qemu, VMWare, Virtual BoxXEN, Kernel Virtual Machine
[5]HOSTING / virtual OS Multiprogramming. Application and virtulized OS runs on the same kernel at same the time.OpenVZ, Application Proxy,
VMM is new in the point that a thin layer is inserted below the operating system. VM and resource monitor is constructed on OS.
HaaS is deployed on [3][4].
提案手法(概要)
We monitor and visualize Windows OS behavior using virtual machine montitor.
提案手法(詳細)
ログ文字列を1文字ずつ送信1文字を ASCII コードとしてレジスタに格納EMIT 命令で HYPERCALL を仮想 Windows 側から生成XEN 側の do_hypercall (hvm.c) で仮想レジスタから ASCII コード取り出し
提案手法(シーケンス図 :XEN Hypervisor )
XENハイパーバイザーがホスト OSLinux の下で稼動
手順①仮想 Windows OS 内の DLL ・フィルタドライバ内で構築したログ情報・ハッシュ値を仮想 CPU のコンテキストに格納。その後、Hypercall を発行
手順②XEN 内の HYPECALLハンドラで仮想 CPU のコンテキストから通知を捕捉・ログ情報を取得。
EMIT 命令( _emit Pseudoinstructionインラインアセンブラで非対応の命令を使う方法
■ __asm{ mov eax, X : ACSII code of log string _emit 0x0f _emit 0x01 _emit 0xc1 }Hypercall 呼び出し
_emit Pseudoinstructionhttp://msdn.microsoft.com/en-us/library/
1b80826t.aspx
Windows OS as huge state machine
SDT
・ ・ ・
・ ・ ・
ZwCreateKey
ZwDeleteKey
ZwDeleteValueKey
ZwEnumerateKey
ZwEnumerateValueKey
ZwQueryKey
ZwQueryValueKey
ZwSetValueKey
・ ・ ・
・ ・ ・
Registry access table
Registry value Represents state of Windows OS
Windows レジストリアクセス API のダンプ
ZwCreateKeyB8 29 00 00 00 mov eax,29h <- eax にインデックスをコピー8D 54 24 04 lea edx,[esp+4]9C pushfd6A 08 push 8E8 30 1C 00 00 call 00407631 <- システムコール呼び出しC2 1C 00 ret 1Ch
ZwQueryKeyB8 A0 00 00 00 mov eax,0A0h8D 54 24 04 lea edx,[esp+4]9C pushfd6A 08 push 8E8 E4 12 00 00 call 00407631C2 14 00 ret 14h
ZwQueryValueKeyB8 B1 00 00 00 mov eax,0B1h8D 54 24 04 lea edx,[esp+4]9C pushfd6A 08 push 8E8 90 11 00 00 call 00407631C2 18 00 ret 18h
Windows レジストリアクセスフック
■windows/system32/ntoskrnl.exe にある SDT (service descriptor table) のレジストリ部分を修正する。
■#define SYSCALL_INDEX(f)*(PULONG)((PUCHAR)(f)+1)SDT でのシステムコールテーブルインデックスを求めるためのマクロを用いる
■#define SYSTEMSERVICE(f)KeServiceDescriptorTable->ServiceTable[SYSCALL_INDEX(f)]システムコールコードへのアドレスを返すマクロ。この値をフック関数のアドレスへ置き換える。
自己組織化マップ
■ クラスタリング・次元削減のための教師なし学習アルゴリズムのひとつ
Wv(t + 1) = Wv(t) + Θ(t)α(t)(D(t) - Wv(t))
D(t): 入力 Wt: 重み係数Θ(t):BMU からの近傍半径 α(t): 学習係数
■k-mean 等に比べ、クラスタ数を与件としない、データ間のトポロジーが変わらない等の特徴がある。
レジストリアクセス取得データと前処理
単位時間( SEC) あたりの上記10フィルタの頻度カウントを入力 :D(t) とする。Wv(t + 1) = Wv(t) + Θ(t)α(t)(D(t) - Wv(t))
Visualizing states of Windows OSmalware Data for (before) SOM processing
通常状態 normal state Zeus-wsnpoem (BotNet)
Klez (worm) Sassar (worm)
Visualizing Windows behaviorusing SOM
INSTALLING APPLICATION(text editor)
INSTALLING Device driver(video card)
MALWAREINFECTION
Visualizing Windows behaviorusing SOM
Running P2P application
Installing Application(text editor)
Malware infection
Visualizing Windows behaviorusing SOM
Running P2P application
Running InternetExplorer
Malware infection
結論 _emit 擬似命令を用いたVM active monitor
■ 本論文では、 _emit 擬似命令を用いた仮想マシン上のセキュリティインシデントの能動的観測と可視化手法を提案した。
■ 提案手法では、フィルタドライバによるレジストリアクセスを _emit 擬似命令を用いてハイパーバイザー側へ通知し、可視化を行った。
■ 可視化(次元削減)には、自己組織化マップを用いた。
■ 仮想 Windows OS をレジストリが定義するステートマシンとすると、各種ソフトウェアのインストール、マルウェア感染などの状態遷移可視化は直感的な結果となった。
負荷測定比較( XEN,KVM) ファイルアクセス
Unzip による測定を行った。
大量のファイルアクセスが発行する場合、
KVM はリソース消費量が安定しないものの、XEN より良好なパフォーマンスを示した。
結論: P2P 観測には KVM の方が適切。
負荷測定比較( XEN,KVM) HTTPD
Apache による測定を行った。
XEN はリソース消費量が安定せず、IO 仮想化周りでパフォーマンスが落ちる。
しかし、大量のストリームをゲスト側で処理する場合(レジストリ処理など)、 KVM ベースのシステムは仮想メモリ不具合が発生する。
負荷測定比較(提案システムと ProcMon)