劉維杰 王麗娜 談 誠(chéng) 徐 來(lái)
(空天信息安全與可信計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室(武漢大學(xué)) 武漢 430072) (武漢大學(xué)計(jì)算機(jī)學(xué)院 武漢 430072) (軟件工程國(guó)家重點(diǎn)實(shí)驗(yàn)室(武漢大學(xué)) 武漢 430072) (liuweijie@whu.edu.cn)
2017-06-02;
2017-07-25
國(guó)家自然科學(xué)基金項(xiàng)目(61373169,61672394);國(guó)家“八六三”高技術(shù)研究發(fā)展計(jì)劃基金項(xiàng)目(2015AA016004);國(guó)家科技支撐計(jì)劃基金項(xiàng)目(2014BAH41B00);NSFC-通用技術(shù)基礎(chǔ)研究聯(lián)合基金項(xiàng)目(U1536204) This work was supported by the National Natural Science Foundation of China (61373169, 61672394), the National High Technology Research and Development Program of China (863 Program) (2015AA016004), the National Key Technology Research and Development Program of China (2014BAH41B00), and the NSFC-General Technology Basic Research Joint Funds (U1536204).
王麗娜(lnwang.whu@gmail.com)
基于VMFUNC的虛擬機(jī)自省觸發(fā)機(jī)制
劉維杰 王麗娜 談 誠(chéng) 徐 來(lái)
(空天信息安全與可信計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室(武漢大學(xué)) 武漢 430072) (武漢大學(xué)計(jì)算機(jī)學(xué)院 武漢 430072) (軟件工程國(guó)家重點(diǎn)實(shí)驗(yàn)室(武漢大學(xué)) 武漢 430072) (liuweijie@whu.edu.cn)
虛擬化技術(shù)作為云計(jì)算的基礎(chǔ)得到了廣泛應(yīng)用,但隨之而來(lái)的虛擬機(jī)安全問(wèn)題日趨嚴(yán)重.虛擬機(jī)自省作為一種從外部監(jiān)控虛擬機(jī)內(nèi)部運(yùn)行狀態(tài)的方法,為解決虛擬機(jī)安全問(wèn)題提供了新視角,但同時(shí)也引入了巨大開銷,阻礙了實(shí)際應(yīng)用.提出了一種基于VMFUNC的虛擬機(jī)自省(virtual machine introspection, VMI)觸發(fā)機(jī)制.該機(jī)制借助CPU硬件特性VM-Function以及RDTSC指令模擬,將調(diào)用時(shí)產(chǎn)生VM Exit開銷降至最低;利用VMFUNC的功能為目標(biāo)虛擬機(jī)切換備用擴(kuò)展頁(yè)表,避免VMI程序運(yùn)行時(shí)對(duì)虛擬機(jī)執(zhí)行的中斷;通過(guò)重載VMFUNC指令和Xentrace的功能實(shí)現(xiàn)高效的觸發(fā)與信息傳遞機(jī)制,主動(dòng)觸發(fā)VMI程序運(yùn)行,克服了VMI程序常駐帶來(lái)的大量資源消耗.實(shí)現(xiàn)了虛擬機(jī)自省即服務(wù)系統(tǒng),并進(jìn)行了實(shí)驗(yàn)驗(yàn)證.結(jié)果表明:本系統(tǒng)帶來(lái)額外性能開銷不超過(guò)2%,使VMI在實(shí)際云環(huán)境中的廣泛應(yīng)用成為了可能.
云計(jì)算安全;虛擬機(jī)自?。籚MFUNC;擴(kuò)展頁(yè)表指針切換;虛擬機(jī)自省即服務(wù)
在云計(jì)算已經(jīng)得到普及和大規(guī)模應(yīng)用的今天,虛擬化技術(shù)作為其基礎(chǔ)得到了廣泛應(yīng)用,與此同時(shí),虛擬機(jī)的安全問(wèn)題也得到了越來(lái)越多的關(guān)注.其中,虛擬機(jī)自省(virtual machine introspection, VMI)[1]作為一種在虛擬機(jī)外部監(jiān)控虛擬機(jī)內(nèi)部運(yùn)行狀態(tài)的方法,充分利用了虛擬機(jī)管理器(virtual machine monitor, VMM或Hypervisor)的隔離特性以及介于硬件和虛擬化操作系統(tǒng)之間的新的抽象層次,為解決虛擬機(jī)安全問(wèn)題提供了新視角.擁有特權(quán)的虛擬機(jī)可以通過(guò)作為安全虛擬機(jī),借助VMM監(jiān)控虛擬機(jī)的行為和軟硬件資源使用情況(例如執(zhí)行指令等)來(lái)感知虛擬機(jī)的內(nèi)部狀態(tài),實(shí)現(xiàn)對(duì)于虛擬機(jī)透明地安全監(jiān)控,以待進(jìn)一步的分析與檢測(cè).
然而VMI技術(shù)在大規(guī)模虛擬機(jī)安全監(jiān)控應(yīng)用場(chǎng)景中仍存在疏漏.現(xiàn)有的VMI存在資源消耗高、運(yùn)行時(shí)間長(zhǎng)的困境,無(wú)法很好地適應(yīng)云環(huán)境.傳統(tǒng)的虛擬機(jī)自省方法需要由主機(jī)接管關(guān)鍵頁(yè)面進(jìn)行處理,從而實(shí)現(xiàn)VMI.文獻(xiàn)[2]指出VMI技術(shù)的額外開銷一般在正常開銷的9.3~500倍之間,有時(shí)甚至需要6 s才能遍歷操作系統(tǒng)進(jìn)程鏈.為了保證客戶機(jī)內(nèi)核(guest-OS)所維護(hù)的進(jìn)程信息一致,虛擬機(jī)(virtual machine, VM)在某些情況下必須暫停.這樣攻擊者可能會(huì)利用這些時(shí)間延時(shí)知識(shí)來(lái)誤導(dǎo)VMI的分析結(jié)果,或者延遲啟動(dòng)攻擊以避免被檢測(cè)[3].因此,實(shí)現(xiàn)更高效的VMI是保證虛擬機(jī)安全的必要前提,在云環(huán)境中不可或缺.
隨著虛擬化的快速演進(jìn),軟件堆棧的垂直和水平復(fù)雜度進(jìn)一步增加.復(fù)雜的軟件棧帶來(lái)了強(qiáng)大的功能,同時(shí)也帶來(lái)了挑戰(zhàn).一方面,程序員有更多的自由來(lái)利用軟件層實(shí)現(xiàn)各種功能,包括安全性、去耦和改進(jìn)管理功能;另一方面,軟件層面和保護(hù)域的擴(kuò)散也導(dǎo)致了更為復(fù)雜的跨特權(quán)級(jí)控制轉(zhuǎn)換.這種不必要的開銷和復(fù)雜性完全是由于靈活的跨特權(quán)級(jí)調(diào)用的缺乏導(dǎo)致的[4].通常硬件機(jī)制僅支持從用戶級(jí)程序到操作系統(tǒng)的調(diào)用(Syscall)以及從虛擬機(jī)到Hypervisor的調(diào)用(即超級(jí)調(diào)用,Hypercall)[5].若虛擬機(jī)要將某些信息傳送到Hypervisor,必須調(diào)用超級(jí)調(diào)用,或者使用VMREAD和VMWRITE等特殊指令讀寫VMCS字段[6].然而,這些特殊指令將會(huì)引入頻繁的VM Exits,產(chǎn)生相當(dāng)大的性能開銷.想要在虛擬化環(huán)境中運(yùn)用VMI技術(shù)保證虛擬機(jī)的安全,必須克服VMI具有的開銷過(guò)大的缺陷.本文通過(guò)引入先進(jìn)的CPU硬件特性VMFUNC解決該問(wèn)題.
通過(guò)審視現(xiàn)有的Hypervisor操作系統(tǒng),催生了新一代Intel處理器的VM-Function系列指令(VMFUNC).VM-Function技術(shù)允許用戶在多個(gè)地址空間之間跨多個(gè)層級(jí)的安全、有效和靈活的跨特權(quán)級(jí)調(diào)用.VMFUNC功能集成在英特爾的Haswell及其后的微體系架構(gòu)中,使虛擬機(jī)能夠在不退出root模式的情況下使用Hypervisor的功能.VMFUNC被設(shè)計(jì)為通用接口,以支持由不同索引指定的多個(gè)功能.當(dāng)前的Intel處理器僅實(shí)現(xiàn)了一個(gè)名為EPTP switching的功能,即客機(jī)虛擬機(jī)能夠切換其擴(kuò)展頁(yè)表指針(extended page table pointer, EPTP),使用一套新的EPT頁(yè)表(extended page table, EPT),且不觸發(fā)任何VM Exits.使用此功能的一種典型應(yīng)用是將客戶端內(nèi)核的運(yùn)行環(huán)境與用戶應(yīng)用程序隔離開來(lái),以防止內(nèi)核Rootkit使用“Return-to-user”攻擊和內(nèi)存掃描[7].
本文針對(duì)云環(huán)境中云租戶個(gè)體的虛擬化安全要求,提出一種靈活的基于VMFUNC[6]觸發(fā)VMI的機(jī)制.該機(jī)制借助CPU硬件特性VM-Function以及RDTSC指令模擬,將調(diào)用時(shí)產(chǎn)生VM Exit開銷降至最低.利用VMFUNC的功能為目標(biāo)虛擬機(jī)切換備用擴(kuò)展頁(yè)表,避免VMI程序運(yùn)行時(shí)對(duì)虛擬機(jī)執(zhí)行的中斷.通過(guò)重載VMFUNC指令和Xentrace的功能實(shí)現(xiàn)高效的觸發(fā)與信息傳遞機(jī)制,實(shí)現(xiàn)了虛擬機(jī)自省即服務(wù)系統(tǒng).用戶可以根據(jù)需要發(fā)出VMI的同時(shí),既節(jié)約了計(jì)算資源,又滿足特定用戶的安全需求.該觸發(fā)機(jī)制有力地解決了云環(huán)境中大規(guī)模虛擬機(jī)安全監(jiān)控的難題,為云計(jì)算中VMI的使用模式提供了新思路.
自Garfinkel等人[1]提出虛擬機(jī)自省這一概念以來(lái),VMI被定義為在虛擬機(jī)之外分析虛擬機(jī)內(nèi)的軟件運(yùn)行狀況的監(jiān)控手段.由于虛擬化平臺(tái)沒(méi)有相關(guān)接口,SIM[8]如同Garinkel的實(shí)現(xiàn)一樣,放棄了隔離性需求,即從目標(biāo)虛擬機(jī)直接拉取高層數(shù)據(jù)至Hypervisor.甚至如HyperNE[9]為了實(shí)現(xiàn)高性能監(jiān)控而直接重寫Hypervisor,允許虛擬機(jī)與監(jiān)控軟件的直接交互.然而堅(jiān)持隔離性會(huì)帶來(lái)語(yǔ)義鴻溝的難題,即從虛擬機(jī)獲取的內(nèi)存信息是最底層的二進(jìn)制數(shù)據(jù),并無(wú)任何可直接讀取的數(shù)據(jù)結(jié)構(gòu)以供分析.Jones等人[10]于2006年提出了AntFarm,它可以被VMM使用從而獨(dú)立隔離地運(yùn)行;Ether[11]利用了硬件虛擬化技術(shù),迫使系統(tǒng)調(diào)用發(fā)生錯(cuò)誤會(huì)陷入VMM的方法來(lái)監(jiān)控目標(biāo)虛擬機(jī);Virtuoso[12]提供了生成自省程序的方案,但是其可靠性過(guò)低.同時(shí)上述方法都只針對(duì)特定的目標(biāo)進(jìn)程,若將監(jiān)控范圍擴(kuò)大到整個(gè)虛擬機(jī),則其開銷會(huì)變得非常巨大.
另一方面,虛擬機(jī)自省技術(shù)被用來(lái)構(gòu)建一系列的安全工具,包括入侵檢測(cè)系統(tǒng)Graffiti[13]、內(nèi)核完整性驗(yàn)證系統(tǒng)[14]、VMM控制流完整性驗(yàn)證系統(tǒng)[15-16]等.然而這些工具都有一個(gè)共同的特點(diǎn):被動(dòng)觸發(fā)監(jiān)控.安全工具的觸發(fā)需要通過(guò)額外的掃描和輪詢,這使得安全工具無(wú)法保證在事件發(fā)生之前介入.
文獻(xiàn)[17-18]通過(guò)生成外部語(yǔ)義視圖(View)來(lái)監(jiān)控目標(biāo)虛擬機(jī).然而,在虛擬機(jī)外部觀測(cè)并產(chǎn)生視圖耗時(shí)較長(zhǎng),而內(nèi)部耗時(shí)較短[19];基于Xen的DRAKVUF動(dòng)態(tài)惡意軟件分析[20]通過(guò)將斷點(diǎn)指令寫入到客戶端的內(nèi)存中來(lái)實(shí)現(xiàn)VMI,利用CPU的硬件特性,在上下文切換過(guò)程中插入鉤子,實(shí)現(xiàn)了監(jiān)控程序的自動(dòng)化調(diào)用,并且使用了額外的EPT頁(yè)表以節(jié)省開銷.DRAKVUF通過(guò)頻繁的上下文切換來(lái)陷入Hypervisor,而在x86架構(gòu)的CPU上,每次VM Exit/VM Entry都需消耗近104時(shí)鐘周期(cycles)[7],實(shí)際上依舊引入顯著的VM Exit開銷.
為了利用基于軟件結(jié)構(gòu)知識(shí)的語(yǔ)義信息來(lái)解決語(yǔ)義鴻溝問(wèn)題,并真正實(shí)現(xiàn)VMI程序的長(zhǎng)期可移植性,Payne[21]于2012年設(shè)計(jì)實(shí)現(xiàn)了一個(gè)基于XenAccess庫(kù)[22]的虛擬機(jī)自省庫(kù)LibVMI,它大大提升了VMI技術(shù)的性能,也創(chuàng)造了一個(gè)更易用的VMI編程環(huán)境.LibVMI提供了應(yīng)用程序編程接口,用于讀取和寫入虛擬機(jī)內(nèi)存.這種基于軟件架構(gòu)知識(shí)的獨(dú)立自省技術(shù)的優(yōu)勢(shì)是在目標(biāo)虛擬機(jī)之外獲取底層狀態(tài)信息和語(yǔ)義重構(gòu),透明性好;其可獲取高層語(yǔ)義信息的范圍幾乎沒(méi)有限制,信息量大.缺點(diǎn)在于如果軟件結(jié)構(gòu)知識(shí)發(fā)生了變化,自省代碼就極有可能失效.若要保證自省代碼長(zhǎng)期有效,VMI程序需要暫停虛擬機(jī),因此可移植性差且資源消耗較大[19].VMI技術(shù)發(fā)展的主要障礙是性能問(wèn)題和語(yǔ)義鴻溝問(wèn)題,而這兩者無(wú)法做到有效統(tǒng)一[23].
針對(duì)上述研究所存在的被動(dòng)監(jiān)控、開銷較大等問(wèn)題,本文在現(xiàn)有基于軟件架構(gòu)自省方案的基礎(chǔ)上,結(jié)合現(xiàn)有的CPU新特性,提出能夠主動(dòng)觸發(fā)并且實(shí)時(shí)內(nèi)存讀取的VMI機(jī)制,既能彌補(bǔ)語(yǔ)義鴻溝,又能保持極少的額外性能開銷.
本文借助先進(jìn)的CPU硬件特性VM-Function,結(jié)合RDTSC指令模擬,避免了Hypercall的頻繁使用,將調(diào)用時(shí)產(chǎn)生VM Exit開銷降至最低;利用VMFUNC的0號(hào)功能EPTP switching為目標(biāo)虛擬機(jī)切換備用擴(kuò)展頁(yè)表,維持了內(nèi)存的一致性,避免VMI程序運(yùn)行時(shí)會(huì)中斷虛擬機(jī)中程序執(zhí)行的現(xiàn)象,同時(shí)實(shí)現(xiàn)了監(jiān)控的透明化;使用按需觸發(fā)的服務(wù)理念,通過(guò)重載VMFUNC指令和Xentrace的功能,Hypervisor向特權(quán)域注入虛擬中斷,VMI程序的按需啟動(dòng)實(shí)現(xiàn)高效的觸發(fā)與信息傳遞機(jī)制,最大程度地避免VMI程序常駐特權(quán)域(Domain-0,Dom0)而導(dǎo)致的資源消耗.其總體設(shè)計(jì)如圖1所示.
為了能夠向Hypervisor傳遞一定量的信息(Guest-VM的自省請(qǐng)求),本文設(shè)計(jì)使用VMFUNC指令所切換的EPTP索引作為傳遞信息的載體來(lái)通知Hypervisor,進(jìn)而請(qǐng)求自省程序的執(zhí)行.具體來(lái)說(shuō),當(dāng)某個(gè)客戶虛擬機(jī)(Guest-VM)用戶空間中執(zhí)行VMFUNC指令后,擴(kuò)展頁(yè)表指針值發(fā)生變化.這樣一來(lái),Hypervisor能夠在RDTSC模擬指令代碼中感知EPTP索引的變化,進(jìn)而判斷是否開啟針對(duì)該Guest-VM的VMI程序.
在執(zhí)行VMI程序時(shí),該Guest-VM的原有頁(yè)表可以被用作VMI程序的監(jiān)控對(duì)象.此時(shí)虛擬機(jī)上的應(yīng)用程序可在EPTP switching之后的新EPT頁(yè)表上可無(wú)縫地繼續(xù)執(zhí)行.頁(yè)表的切換僅僅只需10-7秒級(jí)的時(shí)間開銷[9],此舉可極大程度地降低VMI程序?qū)μ摂M機(jī)運(yùn)行時(shí)的影響.
Fig. 1 System design of VMI Triggering Mechanism based on VMFUNC圖1 基于VMFUNC的VMI觸發(fā)機(jī)制設(shè)計(jì)
2.1VMFUNC指令利用
在使用VMFUNC的0號(hào)功能——頁(yè)表指針切換(EPTP switching)之前,Hypervisor需要為Guest-VM創(chuàng)建好備用的EPT頁(yè)表.通過(guò)創(chuàng)建多個(gè)相同的擴(kuò)展頁(yè)表(Xen為虛擬機(jī)創(chuàng)建的最大備用頁(yè)表數(shù)為10)來(lái)確保虛擬機(jī)內(nèi)存訪問(wèn)的一致性.并且設(shè)置VM-functions control字段為1,開啟“EPTP switching”功能.Guest-VM可以使用類似圖2上半部分位于Guest-OS的代碼示例,執(zhí)行VMFUNC指令調(diào)用“EPTP switching”功能.
Fig. 2 VMFUNC code example圖2 VMFUNC代碼示例
截至2016年底,擴(kuò)展頁(yè)表有4個(gè)級(jí)別*Intel于2016年12月發(fā)布了新式的5級(jí)頁(yè)表模式.,它們分別是頁(yè)面映射4級(jí)表(page map level 4 table, PML4T)、頁(yè)目錄指針表(page directory pointer table, PDPT)、頁(yè)目錄表(page directory table, PDT)和頁(yè)表(page table, PT).每個(gè)EPTP指向一個(gè)PML4T結(jié)構(gòu).圖3表示Xen架構(gòu)中的VMFUNC尋址和客戶/主機(jī)物理地址轉(zhuǎn)換(EPT walking)的過(guò)程.
當(dāng)執(zhí)行用戶應(yīng)用(例如RSA加密,如圖1步驟①所示)中的VMFUNC指令時(shí),EPTP切換例程將被執(zhí)行,并且新的EPTP將被加載到VMCS中的EPTP字段中.此時(shí)Hypervisor通過(guò)新傳入的EPTP值,來(lái)計(jì)算出當(dāng)前的EPTP索引值.需要特別注意的是,我們通過(guò)ECX寄存器中傳入的不同值,來(lái)區(qū)分用戶的正常VMFUNC請(qǐng)求(使用頁(yè)表切換功能)與本文所提出的虛擬機(jī)自省請(qǐng)求.我們規(guī)定:若Hypervisor計(jì)算得到的EPTP索引值小于或等于10,則判斷為正常的VMFUNC請(qǐng)求;反之,若傳入ECX的值大于10(不妨設(shè)為10+x),則判斷為虛擬機(jī)按需自省請(qǐng)求,并將x作為新的EPTP索引值.如圖3下半部分所示,Hypervisor代碼中的第1行和第2行分別讀取“EPTP”字段和“EPTP列表地址(EPTP_LIST_ADDR)”字段.“0x201AH”和“0x2024H”是每個(gè)VMCS中的“EPTP”字段和“EPTP列表地址”字段的地址.
當(dāng)采用另一個(gè)CPU高級(jí)硬件特性#VE(virtual exception)[6]時(shí),本文的方案會(huì)更為有效.通過(guò)使用VMFUNC和#VE,Xen虛擬機(jī)管理程序不必涉及處理Guest-VM的內(nèi)部策略,從而降低Hypervisor的復(fù)雜性,并且可以很好地與VM遷移配合使用.同時(shí),使用VMFUNC和#VE可以為Guest虛擬機(jī)分配更多的CPU周期,避免Guest虛擬機(jī)花費(fèi)過(guò)多的時(shí)間來(lái)處理由EPT violation導(dǎo)致的VM Exit.因此啟用VMFUNC和#VE的虛擬機(jī)將具有更好的性能.然而,該硬件功能只集成在最新的Intel CPU中,因此本文僅討論VMFUNC指令的利用方法.
Fig. 3 EPT walking圖3 EPT walking
2.2RDTSC指令模擬
為了保證實(shí)時(shí)性,本文設(shè)計(jì)了基于RDTSC模擬的VMFUNC感知機(jī)制.該機(jī)制利用RDTSC模擬開銷極少的特點(diǎn)[24],同時(shí)充分考慮到RDTSC請(qǐng)求發(fā)生的頻繁性,通過(guò)將檢測(cè)VMFUNC是否執(zhí)行的功能插入到RDTSC截獲與模擬的模塊中,實(shí)現(xiàn)了VMFUNC的透明感知,并且不引入額外開銷.
通過(guò)對(duì)Xen源代碼的深入研究,發(fā)現(xiàn)Xen虛擬機(jī)管理程序?yàn)槠渖系奶摂M機(jī)提供了多個(gè)時(shí)鐘源,并且Xen上的Linux實(shí)例默認(rèn)使用時(shí)間戳計(jì)數(shù)器(time stamp counter. TSC)作為其時(shí)鐘源.TSC值可以通過(guò)RDTSC指令訪問(wèn),RDTSC指令從CPU的TSC寄存器中將64 b的值取出,并將其高32 b裝入EDX寄存器,低32 b裝入EAX寄存器.
目前,大多數(shù)處理器芯片虛擬化功能均提供RDTSC模擬,即提供Hypervisor對(duì)RDTSC和RDTSCP指令的條件捕獲與模擬.此外,它們?cè)试S軟件控制在虛擬機(jī)執(zhí)行期間讀取的TSC的值,并且在虛擬機(jī)控制結(jié)構(gòu)(virtual machine control structure, VMCS)中規(guī)定額外的偏移字段[6].
根據(jù)現(xiàn)有CPU提供的上述特性,本文設(shè)置VMCS中的RDTSCEXITING位來(lái)截取Guest-VM的RDTSC指令,并在Hypervisor層模擬RDTSC指令的執(zhí)行.為了方便用戶啟動(dòng)和終止RDTSC截取,本文修改了Xen的源代碼,并定制了2個(gè)超級(jí)調(diào)用(如表1所示).當(dāng)Guest用戶調(diào)用第1個(gè)Hypercall時(shí),Hypervisor將執(zhí)行“開始截?cái)郥SC值”函數(shù);當(dāng)?shù)?個(gè)Hypercall——“禁用RDTSC攔截”被調(diào)用時(shí),VM的時(shí)間將被強(qiáng)制恢復(fù)到正常狀態(tài).出于安全考慮,Hypercall的調(diào)用部分已經(jīng)被封裝為系統(tǒng)調(diào)用.通過(guò)啟停Hypervisor對(duì)Guest-VM的RDTSC模擬,進(jìn)而實(shí)現(xiàn)對(duì)整個(gè)VMI觸發(fā)機(jī)制的啟停.
Table 1 Capsulate Hypercalls
本文將VMFUNC的使用與RDTSC截獲功能集成在一起.利用RDTSC的高頻性(每秒鐘執(zhí)行上萬(wàn)次),保證監(jiān)控的實(shí)時(shí)性,其開銷與Guest-VM正常使用RDTSC指令所產(chǎn)生的開銷一致.
2.3VMI程序觸發(fā)
通過(guò)重載Xentrace[25],本文重用了其事件記錄機(jī)制和消息傳遞機(jī)制,設(shè)計(jì)了一種能夠迅速將Guest-VM的VMI檢測(cè)需求連同VMI程序所需的參數(shù)一并傳遞至Dom0的機(jī)制.該機(jī)制具備通用性,且不增加過(guò)多的源代碼,對(duì)系統(tǒng)的性能影響極小,最大程度上維護(hù)了系統(tǒng)的安全性和可移植性.
Xentrace是在Xen源代碼中自帶的一個(gè)工具,在編譯時(shí)就會(huì)默認(rèn)生成,在進(jìn)行測(cè)試或調(diào)優(yōu)時(shí)或需要進(jìn)行底層細(xì)節(jié)分析時(shí)可以使用Xentrace工具來(lái)輔助進(jìn)行.Xen Hypervisor在關(guān)鍵位置有許多跟蹤點(diǎn),允許開發(fā)人員查看系統(tǒng)內(nèi)部發(fā)生的情況.啟用這些跟蹤點(diǎn)后,Xen會(huì)將跟蹤信息寫入Xen中的每個(gè)CPU對(duì)應(yīng)的緩沖區(qū)(如圖1步驟④),然后在Dom0中的Daemon程序設(shè)置并啟用跟蹤,并定期讀取這些緩沖區(qū)并將其寫入磁盤.Xentrace生成的數(shù)據(jù)是二進(jìn)制的格式,不能直接理解.因此本文為記錄VMFUNC所傳遞的參數(shù)設(shè)計(jì)了專門的事件格式與事件解析器來(lái)存儲(chǔ)解析其數(shù)據(jù).
除了Domain-U的標(biāo)識(shí)(Dom_ID)與時(shí)間戳,Hypervisor還需要提供EPTP索引,用以告知VMI程序Guest-VM所使用的EPT頁(yè)表基址.緩沖區(qū)中的每條記錄格式如圖4所示:
Fig. 4 VMFUNC event record format圖4 VMFUNC事件記錄格式
運(yùn)行VMFUNC指令后,本文將當(dāng)前的程序運(yùn)行環(huán)境切換到了另外一套EPT頁(yè)表中,這樣一來(lái),原來(lái)程序運(yùn)行的那一套EPT頁(yè)表就能夠單獨(dú)被Dom0分析而不中斷被監(jiān)控VM應(yīng)用程序的運(yùn)行(如圖1步驟⑤).檢測(cè)程序和虛擬機(jī)應(yīng)用程序并發(fā)執(zhí)行,因此VMI程序的透明性能夠得到保障.之后,Hypervisor將以虛擬中斷的形式通知Dom0開啟自省程序,對(duì)有需求的目標(biāo)Guest-VM進(jìn)行針對(duì)性的惡意進(jìn)程檢測(cè).
本文借鑒云服務(wù)的理念,在Xen虛擬化平臺(tái)[5]上實(shí)現(xiàn)了VMI-as-a-service系統(tǒng)*https://github.com/lpjlwj/VMI-as-a-Services,其具體思想是將VMI作為一種服務(wù)按需提供給云租戶.
3.1層次結(jié)構(gòu)及模塊劃分
VMI-as-Service系統(tǒng)主要分為3個(gè)模塊:VMFUNC感知模塊、參數(shù)傳遞模塊和VMI啟動(dòng)模塊,如圖5所示.其中,VMFUNC感知模塊存在于Hypervisor,當(dāng)目標(biāo)主機(jī)在用戶層或者內(nèi)核層執(zhí)行VMFUNC指令時(shí),若執(zhí)行成功,則會(huì)切換頁(yè)表.此時(shí),VMFUNC感知模塊在每一個(gè)RDTSC截獲過(guò)程中,會(huì)判斷是否存在VMFUNC的執(zhí)行,即是否有頁(yè)表基地址被修改.當(dāng)檢測(cè)到目標(biāo)主機(jī)VMFUNC所傳入?yún)?shù)大于10時(shí),會(huì)通知處于VMM的參數(shù)傳遞模塊.當(dāng)參數(shù)傳遞模塊被調(diào)用時(shí),VMI啟動(dòng)模塊負(fù)責(zé)開啟基于LibVMI的自省程序來(lái)對(duì)目標(biāo)主機(jī)的內(nèi)存進(jìn)行分析.
Fig. 5 System architecture and module partition圖5 系統(tǒng)層次結(jié)構(gòu)及模塊劃分
3.2VMFUNC感知模塊
VMFUNC感知模塊負(fù)責(zé)感知EPTP switching的執(zhí)行和VMCS中EPTP字段的改變.VMFUNC感知模塊主要實(shí)現(xiàn)3項(xiàng)功能:
1) 讀取和保存當(dāng)前的EPTP.本文在實(shí)現(xiàn)VMI-as-a-Service時(shí),為了保證充分的可用性,對(duì)原始的VMFUNC功能做了保留,并在其上加入了新的功能.當(dāng)用戶想要使用原有VMFUNC功能時(shí),其在ECX中放置的值為正常值(小于或等于10).而當(dāng)VMFUNC感知模塊發(fā)現(xiàn)ECX寄存器中的值大于10,則讀取當(dāng)前的EPTP,并比對(duì)上次保存的EPTP值,查看該EPTP是否變化,從而感知目標(biāo)虛擬機(jī)Guest-VM發(fā)出了使用VMI-as-a-Service的請(qǐng)求,并進(jìn)行進(jìn)一步處理.
2) RDTSC截獲與模擬.Hypervisor對(duì)VMFUNC指令感知操作均在RDTSC截獲之后完成.由于VMFUNC感知模塊的核心功能即為隨時(shí)能夠?qū)τ脩舭l(fā)起的VMFUNC調(diào)用進(jìn)行感知.于是在本系統(tǒng)中,利用了RDTSC指令每秒能夠被VMM截獲上千次的特點(diǎn),主動(dòng)地?cái)r截系統(tǒng)獲取CPU中TSC的值.在感知模塊運(yùn)行即將結(jié)束時(shí),將當(dāng)前的TSC值重新寫入寄存器,以保證TSC值的正確性與一致性.
3) 計(jì)算EPTP與EPT index的映射,并寫入EPTP到VMCS.當(dāng)VMI感知模塊已經(jīng)感知到用戶的EPTP字段被修改后,參數(shù)傳遞模塊將讀入當(dāng)前的EPTP和保存的原EPTP,接著計(jì)算得出當(dāng)前用戶想要切換到的目的EPT index.當(dāng)VMFUNC成功執(zhí)行時(shí),需要將新的EPTP存入對(duì)應(yīng)的VMCS,并且在下一次VM Entry時(shí)應(yīng)用到用戶虛擬機(jī)中.
在執(zhí)行VMFUNC之前,需要為虛擬機(jī)創(chuàng)建額外的頁(yè)表.在Xen的設(shè)計(jì)中,p2m表是管理從客戶機(jī)物理地址到機(jī)器地址轉(zhuǎn)換的內(nèi)存管理層.在Xen中,使用硬件輔助分頁(yè)(hardware assisted paging, HAP)來(lái)具象化p2m,利用Intel擴(kuò)展頁(yè)表機(jī)制來(lái)創(chuàng)建p2m表.而為了創(chuàng)建多個(gè)備用EPT頁(yè)表,本文使用Xen altp2m機(jī)制[26],它允許Xen為每個(gè)客戶端創(chuàng)建不止一個(gè)EPT頁(yè)表(EPT View).
當(dāng)Guest虛擬機(jī)需要進(jìn)行VMI監(jiān)控時(shí),Xen無(wú)需重新配置頁(yè)表的訪問(wèn)權(quán)限來(lái)限制應(yīng)用程序的運(yùn)行[9],只需切換副本EPT View即可.由于每個(gè)vCPU(virtual CPU)都有自己的VMCS執(zhí)行此切換,因此無(wú)需暫停任何其他vCPU或者對(duì)訪問(wèn)進(jìn)行模擬.Guest-VM訪問(wèn)其物理內(nèi)存的方式不變,但實(shí)際上它正在使用副本EPT頁(yè)表.Guest-VM無(wú)法感知此過(guò)程,從而實(shí)現(xiàn)透明性.其具體步驟設(shè)計(jì)如下:
① VMFUNC在用戶虛擬機(jī)內(nèi)執(zhí)行;
② 判斷模塊是否開啟,若開啟則繼續(xù);若未開啟,則執(zhí)行步驟⑥;
③ 截獲TSC值并將其保存;
④ 讀取當(dāng)前EPTP值,判斷當(dāng)前EPTP值與上一次保存的EPTP值是否一樣,若相同則返回執(zhí)行步驟①,若不同則調(diào)用參數(shù)傳遞模塊;
⑤ 將模擬的TSC值送入EAX,EDX寄存器;
⑥ 結(jié)束并返回到虛擬機(jī)執(zhí)行環(huán)境.
3.3參數(shù)傳遞模塊
參數(shù)傳遞模塊負(fù)責(zé)將VMFUNC感知模塊所獲得的參數(shù)記錄在緩存區(qū)中,并通知Dom0中的VMI啟動(dòng)模塊讀取緩存區(qū).主要實(shí)現(xiàn)2個(gè)功能:
1) 通過(guò)重載Xentrace相關(guān)函數(shù)接收VMI調(diào)用參數(shù),并將其記錄在trace buffer中.
2) 在特權(quán)域Dom0協(xié)助調(diào)用基于LibVMI虛擬機(jī)自省程序.向VMI啟動(dòng)模塊傳入虛擬域標(biāo)志,新的EPTP字段等用于用戶啟動(dòng)VMI的參數(shù).
具體步驟設(shè)計(jì)如下:
① 在Dom0中啟動(dòng)Xentrace;
② 當(dāng)VMI啟動(dòng)模塊被調(diào)用后,將接下來(lái)需要傳入VMI程序的參數(shù)(Domain ID、新的EPTP)寫入到Xentrace的核心函數(shù)TRACE_ND()中;
③ 當(dāng)TRACE_ND()第1次執(zhí)行時(shí),將需要傳入的參數(shù)寫入到Xentrace在Xen堆上的trace buffer中;
④ 向Dom0注入虛擬中斷VIRQ_TBUF.
3.4VMI啟動(dòng)模塊
該模塊的主要功能主要是接收VMI調(diào)用參數(shù)并啟動(dòng)位于Dom0中的VMI程序.具體步驟設(shè)計(jì)如下:
① 在Dom0中啟動(dòng)Xentrace Daemon;
② Dom0中的Daemon程序檢測(cè)是否有新的虛擬中斷注入,若發(fā)現(xiàn)有新的參數(shù)傳入,則解析傳入的參數(shù),并通過(guò)所提供的內(nèi)存頁(yè)讀取接口,讀取目標(biāo)虛擬機(jī)的內(nèi)存;
③ 調(diào)用Dom0中的虛擬機(jī)自省程序.
4.1實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)平臺(tái)搭建于CPU為Intel Core i7-6700K*4的物理主機(jī)上(已集成VMFUNC指令),其主頻為4 GHz,內(nèi)存為16 GB.本文選擇Linux 3.14.60作為物理機(jī)的操作系統(tǒng),在Xen Hypervisor 4.6.0實(shí)現(xiàn)了本系統(tǒng),同時(shí)為虛擬機(jī)分配單vCPU,2 GB內(nèi)存.
首先編譯并安裝修改后的Xen,包括Xen,Xen Tools;然后安裝LibVMI.對(duì)LibVMI進(jìn)行適當(dāng)修改后編譯并安裝監(jiān)控服務(wù).加載編譯好的驅(qū)動(dòng)VMI偏移計(jì)算模塊到DomU內(nèi)核中.為保證正常使用Xen altp2m機(jī)制,虛擬機(jī)中需配置“altp2mhvm=1”,啟用Xen硬件虛擬化的altp2m功能并設(shè)置虛擬機(jī)的影子內(nèi)存“shadow_memory=16”.
4.2功能測(cè)試
考慮到多應(yīng)用程序并行調(diào)用的情況,本文測(cè)量了單vCPU虛擬機(jī)能夠達(dá)到的最大觸發(fā)次數(shù).每次實(shí)驗(yàn)一共調(diào)用1 000次,共計(jì)50次實(shí)驗(yàn),統(tǒng)計(jì)VMI的成功觸發(fā)次數(shù).在高負(fù)荷切換的情況下,觸發(fā)速率為1 000次/秒,觸發(fā)率達(dá)到100%.因此可以認(rèn)為該機(jī)制是可靠的.
4.3性能測(cè)試
4.3.1 CPU密集型程序性能影響
為了驗(yàn)證方案的正確性和測(cè)試本系統(tǒng)的性能,本文實(shí)現(xiàn)了2套基于LibVMI的VMI程序,分別為cMonitor[27]與CAPT.cMonitor通過(guò)在Hypervisor對(duì)DomU的監(jiān)控,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行漏洞觸發(fā)規(guī)則透明校驗(yàn)和過(guò)濾,提升云平臺(tái)針對(duì)已知漏洞的快速免疫能力;CAPT的功能則是持續(xù)透明地記錄目標(biāo)主機(jī)內(nèi)的系統(tǒng)事件和網(wǎng)絡(luò)事件,用于事后的攻擊起源追蹤.在進(jìn)行性能測(cè)試之前,本文對(duì)VMI的操作時(shí)間進(jìn)行了測(cè)量,如表2所示,為后續(xù)實(shí)驗(yàn)分析提供量化參考.
Table 2 Average Execution Time of four VMI Programs
本文選用PARSEC測(cè)試集[28]中的blackscholes,canneal,dedup和streamcluster作為基準(zhǔn)測(cè)試程序.同時(shí)考慮到實(shí)際應(yīng)用情況,選用對(duì)安全需求敏感的AES CBC-128模式文件加密程序,RSA 1 024 b字符串加密程序同樣作為基準(zhǔn)測(cè)試.我們?cè)赑ARSEC中的基準(zhǔn)測(cè)試程序的源代碼前插入了VMFUNC指令;在OpenSSL 1.0.2g中的AES和RSA加密程序進(jìn)行了VMFUNC指令插樁.對(duì)于AES加密程序,VMFUNC指令被插入在每一個(gè)區(qū)塊block的第1輪加密的開始位置.這樣每加密1 KB文本,有32條VMFUNC指令被執(zhí)行;對(duì)于RSA加密程序,VMFUNC被插入在函數(shù)bn_mod_mul_montgomery()的開始.該函數(shù)是用于蒙哥馬利模乘算法的核心函數(shù).同時(shí),AES加密程序密鑰由偽隨機(jī)數(shù)發(fā)生算法生成,加密對(duì)象為1 KB大小的二進(jìn)制全“0”的明文文件.RSA加密程序明文為117 B的全“0”字符串.
通過(guò)對(duì)6個(gè)不同的基準(zhǔn)測(cè)試程序的20次重復(fù)實(shí)驗(yàn),得到不同情況下程序的標(biāo)準(zhǔn)化運(yùn)行時(shí)間.我們對(duì)比了使用LibVMI的SHM-snapshot[21]實(shí)現(xiàn)方案和傳統(tǒng)的將虛擬機(jī)暫停的VMI實(shí)現(xiàn)方案.當(dāng)使用CAPT作為自省程序時(shí),具體開銷如圖6所示:
Fig. 6 Comparison of different benchmarks圖6 基準(zhǔn)測(cè)試程序耗時(shí)對(duì)比
測(cè)試結(jié)果表明:傳統(tǒng)的將虛擬機(jī)暫停的VMI實(shí)現(xiàn)方案相對(duì)于無(wú)VMI情況下,系統(tǒng)消耗大大增加,遠(yuǎn)高于其他3種方案.使用共享頁(yè)面的SHM-snapshot方案采用了Dom0共享DomU頁(yè)面的方式,可以將性能開銷降至5%以內(nèi).而本方案由于VMFUNC的觸發(fā)機(jī)制實(shí)現(xiàn)了VMI的按需調(diào)用,因此VMI的開銷被有效抑制,相比于無(wú)VMI情況下,僅增加了不超過(guò)2%的調(diào)用和切換耗時(shí).
4.3.2 I/O密集型程序性能影響
本文以云環(huán)境中應(yīng)用范圍最廣的Web-server作為測(cè)試基準(zhǔn),測(cè)試了本系統(tǒng)對(duì)其性能影響.我們采用Apache+PHP作為服務(wù)器的基礎(chǔ)運(yùn)行環(huán)境,在被監(jiān)控虛擬機(jī)中部署Web-server,并使用修改過(guò)的OpenSSL運(yùn)行庫(kù),重新編譯Apache,生成已插樁的SSL模塊.
使用包測(cè)試工具Siege[29]進(jìn)行壓力測(cè)試,結(jié)果如圖7和圖8所示.其中,每臺(tái)服務(wù)器被Siege持續(xù)測(cè)試30 min.我們測(cè)試了標(biāo)準(zhǔn)化的單線程時(shí)HTTPS包響應(yīng)時(shí)間和標(biāo)準(zhǔn)化的最大包處理能力.
4.4現(xiàn)有VMI方法比較
本文所實(shí)現(xiàn)的VMI觸發(fā)機(jī)制本質(zhì)上屬于改進(jìn)的Live memory reads方法[30].我們從運(yùn)行速度、資源消耗、虛擬機(jī)性能影響、EPT頁(yè)表切換連續(xù)性和兼容性5個(gè)角度來(lái)評(píng)估現(xiàn)有的VMI方法,如表3所示.
Fig. 7 Normalized response time in different object sizes圖7 標(biāo)準(zhǔn)化包響應(yīng)時(shí)間
Fig. 8 Normalized response per second in different object sizes圖8 標(biāo)準(zhǔn)化最大包處理吞吐率
Table 3 Comparison of the Existing VMI Methods
其中,Guest-halting方法效率最低,且無(wú)法做到實(shí)時(shí)自省.SHM-snapshot方案即屬于Halt snap方法.作為L(zhǎng)ive snap方法的代表,文獻(xiàn)[31]提出使用實(shí)時(shí)內(nèi)部的內(nèi)存快照作為自省程序的分析視圖,能夠?yàn)镵VM創(chuàng)建不停止Guest-VM的內(nèi)存快照,不用暫停虛擬機(jī)即可實(shí)現(xiàn)監(jiān)控,一定程度上減少了開銷.但由于這些方法修改了Hypervisor的內(nèi)存管理部分,因此兼容性并不好.文獻(xiàn)[32]為QEMU提供了從虛擬機(jī)到特權(quán)域的內(nèi)存映射接口,加快了監(jiān)控效率.然而上述方案與Hypervisor的實(shí)現(xiàn)結(jié)合緊密,實(shí)現(xiàn)復(fù)雜,不具有較好的通用性.
Live memory mapping的典型例子是Xen提供的內(nèi)存頁(yè)面共享機(jī)制,該方法的運(yùn)行速度非常快,且對(duì)虛擬機(jī)影響很小;然而這種方法僅適用于PV(Para-virtualization)虛擬機(jī),兼容性差.本文方法同樣可以實(shí)時(shí)自省,且不會(huì)擾亂Guest-VM的執(zhí)行,不過(guò)我們不通過(guò)基于文件描述符的方式來(lái)訪問(wèn)虛擬機(jī)的狀態(tài),而是提供一套副本EPT視圖供Dom0審查.這樣既保證了運(yùn)行速度,且無(wú)需修改Guest-OS,在Xen Hypervisor中僅加入了近60代碼行SLOC(source lines of code),具有很好的透明性和可移植性.
在云計(jì)算大規(guī)模普及的今天,虛擬機(jī)技術(shù)越來(lái)越多地應(yīng)用到了各種計(jì)算平臺(tái)中.然而由于缺乏高效而又可靠的虛擬機(jī)內(nèi)存存取機(jī)制,傳統(tǒng)虛擬機(jī)自省技術(shù)的實(shí)現(xiàn)一般開銷過(guò)大.本文從Intel處理器硬件新特性VMFUNC中獲得靈感,將VMFUNC與虛擬機(jī)自省技術(shù)結(jié)合起來(lái),提出了一種基于CPU硬件特性的虛擬機(jī)自省觸發(fā)機(jī)制.相比于其他VMI實(shí)現(xiàn)機(jī)制,本方案具有極小的時(shí)間開銷和較小的空間開銷,相較于正常程序的執(zhí)行,僅引入了低于2%性能開銷,使VMI在實(shí)際環(huán)境中的廣泛應(yīng)用成為了可能.
下一步,我們會(huì)將#VE特性集成到本方案中,使系統(tǒng)更加高效并增加其穩(wěn)定性.同時(shí)尋求更高效的虛擬機(jī)自省方法來(lái)為云平臺(tái)的安全運(yùn)行提供保障.
[1] Garfinkel T, Rosenblum M. A virtual machine introspection based architecture for intrusion detection[C] //Proc of Network and Distributed System Security Symp (NDSS’03). Reston, VA: ISOC, 2003: 191-206
[2] Wu Rui, Chen Ping, Liu Peng, et al. System call redirection: A practical approach to meeting real-world virtual machine introspection needs[C] //Proc of Dependable Systems and Networks (DSN’14). Piscataway, NJ: IEEE, 2014: 574-585
[3] Nance K, Bishop M, Hay B. Investigating the implications of virtual machine introspection for digital forensics[C] //Proc of ARES’09. Reston, VA: ISOC, 2009: 1024-1029
[4] Li Wenhao, Xia Yubin, Chen Haibo, et al. Reducing world switches in virtualized environment with flexible cross-world calls[C] //Proc of the 42nd Int Symp on Computer Architecture (ISCA’15). Piscataway, NJ: IEEE, 2015: 375-387
[5] Barham P, Dragovic B, Fraser K, et al. Xen and the art of virtualization[J]. ACM SIGOPS Operating Systems Review, 2003, 37(5):164-177
[6] Intel. Intel 64 and IA-32 Architectures Software Developer’s Manual[M/OL]. Santa Clara, California: Intel Corporation,[2017-07-21]. https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-manual-325462.html
[7] Liu Yutao, Zhou Tianyu, Chen Kexin, et al. Thwarting memory disclosure with efficient hypervisor-enforced intra-domain isolation[C] //Proc of the ACM SIGSAC Conf on Computer and Communications Security (CCS’15). New York: ACM, 2015: 1607-1619
[8] Sharif M, Lee W, Cui Weidong, et al. Secure in-VM monitoring using hardware virtualization[C] //Proc of the ACM SIGSAC Conf on Computer and Communications Security (CCS’09). New York: ACM, 2009: 477-487
[9] Huang Xiao, Deng Liang, Sun Hao, et al. Secure and efficient kernel monitoring model based on hardware virtualization[J]. Journal of Software, 2016, 27(2): 481-494 (in Chinese)
(黃嘯, 鄧良, 孫浩, 等. 基于硬件虛擬化的安全高效內(nèi)核監(jiān)控模型[J]. 軟件學(xué)報(bào), 2016, 27(2): 481-494)
[10] Jones S, Arpacidusseau A C, Arpacidusseau R H, et al. AntFarm: Tracking processes in a virtual machine environment[C] //Proc of USENIX Annual Technical Conf (USENIX ATC’06). Berkeley, CA: USENIX Association, 2006: 1-14
[11] Dinaburg A, Royal P, Sharif M, et al. Ether: Malware analysis via hardware virtualization extensions[C] //Proc of the ACM SIGSAC Conf on Computer and Communications Security (CCS’08). New York: ACM, 2008: 51-62
[12] Dolangavitt B, Leek T, Zhivich M, et al. Virtuoso: Narrowing the semantic gap in virtual machine introspection[C] //Proc of IEEE Symp on Security and Privacy (Oakland’11). Piscataway, NJ: IEEE, 2011: 297-312
[13] Cristalli S, Pagnozzi M, Graziano M, et al. Micro-virtualization memory tracing to detect and prevent spraying attacks[C] //Proc of USENIX Security Symp (USENIX Security’16). Berkeley, CA: USENIX Association, 2016: 431-446
[14] Ahmed I, Richard Ⅲ GG, Zoranic A, et al. Integrity checking of function pointers in kernel pools via virtual machine introspection[C] //Proc of the Information Security Conf (ISC’13). Berlin: Springer, 2013: 1-16
[15] Wang Zhi, Jiang Xuxian. HyperSafe: A lightweight approach to provide lifetime hypervisor control-flow integrity[C] //Proc of IEEE Symp on Security and Privacy (Oakland’10). Piscataway, NJ: IEEE, 2010: 380-395
[16] Vasudevan A, Chaki S, Maniatis P, et al. üBERSPARK: Enforcing verifiable object abstractions for automated compositional security analysis of a hypervisor[C] //Proc of USENIX Security Symp (USENIX Security’16). Berkeley, CA: USENIX Association, 2016: 87-104
[17] Jiang Xuxian, Wang Xinyuan, Xu Dongyan, et al. Stealthy malware detection through vmm-based “out-of-the-box” semantic view reconstruction[C] //Proc of the ACM SIGSAC Conf on Computer and Communications Security (CCS’07). New York: ACM, 2007: 128-138
[18] Wang Lina, Gao Hanjun, Liu Wei, et al. Detecting and managing hidden process via hypervisor[J]. Journal of Computer Research and Development, 2011, 48(8): 1534-1541 (in Chinese)
(王麗娜, 高漢軍, 劉煒, 等. 利用虛擬機(jī)監(jiān)視器檢測(cè)及管理隱藏進(jìn)程[J]. 計(jì)算機(jī)研究與發(fā)展, 2011, 48(8): 1534-1541)
[19] Li Baohui, Xu Kefu, Zhang Peng, et al. Research and application progress of virtual machineintrospection technology[J]. Journal of Software, 2016,27(6): 1384-401 (in Chinese)
(李?,q, 徐克付, 張鵬, 等. 虛擬機(jī)自省技術(shù)研究與應(yīng)用進(jìn)展[J]. 軟件學(xué)報(bào), 2016, 27(6): 1384-1401)
[20] Lengyel T K, Maresca S, Payne B D, et al. Scalability, fidelity and stealth in the DRAKVUF dynamic malware analysis system[C] //Proc of Annual Computer Security Applications Conf (ACSAC’14). Piscataway, NJ: IEEE, 2014: 386-395
[21] Payne B D. Simplifying virtual machine introspection using LibVMI[EB/OL]. 2012 [2017-07-21]. https://prod.sandia.gov/techlib/access-control.cgi/2012/127818.pdf
[22] Payne B D, Martim D P A, Lee W. Secure and flexible monitoring of virtual machines[C] //Proc of Annual Computer Security Applications Conf (ACSAC’07). Piscataway, NJ: IEEE, 2007: 385-397
[23] Pfoh J, Schneider C, Eckert C. A formal model for virtual machine introspection[C] //Proc of the ACM Workshop on Virtual Machine Security (VMSec’09). New York: ACM, 2009: 1-10
[24] Vattikonda B C, Das S, Shacham H, et al. Eliminating fine grained timers in Xen[C] //Proc of the 3rd Cloud Computing Security Workshop. New York: ACM, 2011: 41-46
[25] Faggioli D. Tracing with Xentrace and Xenalyze[EB/OL]. (2012-09-27)[2017-07-21]. https://blog.xenproject.org/2012/09/27/tracing-with-xentrace-and-xenalyze
[26] Lengyel T. Stealthy monitoring with Xen altp2m[EB/OL]. (2016-04-13)[2017-07-21]. https://blog.xenproject.org/2016/04/13/stealthy-monitoring-with-xen-altp2m
[27] Zhang Hao, Zhao Lei, Xu Lai, et al. cMonitor: VMI-based fine-grained monitoring mechanism in cloud[J]. Wuhan University Journal of Natural Sciences, 2014, 19(5): 393-397
[28] Bienia C, Kumar S, Singh J P, et al. The PARSEC benchmark suite: Characterization and architectural implications[C] //Proc of Int Conf on Parallel Architectures and Compilation Techniques (PACT’08). Piscataway, NJ: IEEE, 2008: 72-81
[29] Siege. Siege-http load testing and benchmarking utility[EB/OL]. (2012-01-30)[2017-07-21]. https://www.joedog.org/siege-home
[30] Suneja S, Isci C, De Lara E, et al. Exploring VM introspection: Techniques and trade-offs[C] //Proc of ACM SIGPLAN/SIGOPS Int Conf on Virtual Execution Environment (VEE’15). New York: ACM, 2015: 133-146
[31] Cui Lei, Li Bo, Zhang Yangyang, et al. HotSnap: A hot distributed snapshot system for virtual machine cluster[C] //Proc of the USENIX Large Installation Systems Administration Conf (LISA’13). Berkeley, CA: USENIX Association, 2013: 59-73
[32] Roberts A, McClatchey R, Liaquat S, et al. Poster: Introducing pathogen: A real-time virtual machine introspection framework[C] //Proc of the ACM SIGSAC Conf on Computer and Communications Security (CCS’13). New York: ACM, 2013: 1429-1432
AVirtualMachineIntrospectionTriggeringMechanismBasedonVMFUNC
Liu Weijie, Wang Lina, Tan Cheng, and Xu Lai
(KeyLaboratoryofAerospaceInformationSecurityandTrustedComputing(WuhanUniversity),MinistryofEducation,Wuhan430072) (SchoolofComputerScience,WuhanUniversity,Wuhan430072) (StateKeyLaboratoryofSoftwareEngineering(WuhanUniversity),Wuhan430072)
Virtualization technology as the basis of cloud computing has been widely used, while security issues of virtual machine have been attracted more and more attention. The virtual machine introspection, as an “out-of-the-box” method leveraged to monitoring virtual machine, provides a new perspective for solving the security problems. Aiming at this situation, a triggering mechanism based on VMFUNC is proposed. Taking the advantages of the CPU hardware features VM-Function and RDTSC emulation, the mechanism minimizes the overhead of VM exits. Based on the extended page table view switching through the VMFUNC, our mechanism avoids the system pause caused by VMI programs. By means of overloading VMFUNC and Xentrace, our method can trigger VMI programs actively, thus overcoming the VMI program resident consumption. In this paper, a VMI-as-a-service system is implemented and verified by experiments. The results show that the performance cost is no more than 2%, which makes VMI widely being used possible in practical cloud environment.
cloud computing security; virtual machine introspection; VMFUNC; extended page table pointer (EPTP) switching; VMI-as-a-service
TP309
LiuWeijie, born in 1991. PhD candidate. His main research interests include virtualization security and cloud security.
WangLina, born in 1964. Professor and PhD supervisor. Senior member of CCF. Her main research interests include multimedia security and cloud computing security.
TanCheng, born in 1989. PhD candidate of Wuhan University. Student member of CCF. His main research interests include network security and cloud security.
XuLai, born in 1990. PhD. His main research interests include virtualization security and covert channel analysis.