陳興蜀,趙 成,陶術(shù)松
(四川大學(xué)計算機學(xué)院 成都 610065)
·計算機工程與應(yīng)用·
基于KVM的Windows虛擬機用戶進程防護
陳興蜀,趙成,陶術(shù)松
(四川大學(xué)計算機學(xué)院成都610065)
為保護Windows虛擬機中進程的內(nèi)存和系統(tǒng)調(diào)用執(zhí)行路徑免受惡意代碼的威脅,提出了一種基于KVM的虛擬機用戶進程防護方案。結(jié)合硬件虛擬化技術(shù),為Windows虛擬機構(gòu)造一份影子內(nèi)核以繞過惡意代碼對原內(nèi)核系統(tǒng)調(diào)用路徑的掛鉤,保護進程系統(tǒng)調(diào)用路徑的安全。同時,在監(jiān)控代理中過濾跨進程系統(tǒng)調(diào)用,在KVM中攔截虛擬機頁表切換行為并監(jiān)控虛擬機斷點異常與調(diào)試異常,保護進程內(nèi)存的安全。另外,構(gòu)造影子監(jiān)控代理,實現(xiàn)對虛擬機監(jiān)控代理內(nèi)存的安全防護。最后,實現(xiàn)了基于KVM的虛擬機用戶進程防護系統(tǒng)VMPPS,并對其有效性進行了系統(tǒng)測試與分析。實驗結(jié)果表明,在性能損失可接受范圍內(nèi),進程內(nèi)存與進程系統(tǒng)調(diào)用執(zhí)行路徑能夠得到有效防護。
監(jiān)控代理;安全防護;用戶進程;虛擬化;虛擬機
云計算的發(fā)展使業(yè)界更加關(guān)注云計算平臺的安全性[1]。Windows是虛擬機主流操作系統(tǒng)之一,而目前Windows平臺上存在多種惡意程序,如間諜軟件[2]、后門程序[3]等,可通過遠程代碼注入等方式入侵系統(tǒng)進程。內(nèi)核態(tài)惡意代碼[4]具有更高特權(quán)級,能夠劫持進程系統(tǒng)調(diào)用的執(zhí)行路徑,竊取進程內(nèi)存數(shù)據(jù)。美國國家標(biāo)準(zhǔn)機構(gòu)NIST發(fā)布的《完全虛擬化安全指南》[5]指出,傳統(tǒng)主機所面臨的安全威脅同樣適用于云環(huán)境下的虛擬機。由于云平臺上用戶、信息、資源等高度集中,而進程是操作系統(tǒng)資源分配的基本單位[6],若惡意代碼對虛擬機進程進行攻擊,則會嚴(yán)重威脅云平臺的安全。因此,研究云平臺虛擬機進程的安全防護具有重要現(xiàn)實意義。
傳統(tǒng)的基于主機的進程防護方法同樣可用于云環(huán)境下的虛擬機,主要利用內(nèi)核態(tài)的監(jiān)控代理實施權(quán)限限制、系統(tǒng)訪問控制等,實現(xiàn)對系統(tǒng)進程的安全防護。文獻[7]為Windows系統(tǒng)核心資源提供了細粒度的權(quán)限控制,文獻[8]利用系統(tǒng)調(diào)用接口服務(wù)隨機化防止代碼注入攻擊。但該類方法易被內(nèi)核態(tài)rootkit攻擊或繞過。在虛擬化環(huán)境下,虛擬機監(jiān)視器(virtual machine monitor,VMM)具有比虛擬機更高的特權(quán)級,可對虛擬機進程提供更高的安全性。Overshadow[9]可以將受保護的虛擬機進程加密,但在閉源的Windows虛擬機中應(yīng)用能力有限。文獻[10]將虛擬機進程內(nèi)存數(shù)據(jù)隱藏以防止其他進程訪問,但受保護進程無法與其他進程傳遞數(shù)據(jù)。文獻[11]構(gòu)建的虛擬機進程內(nèi)存防護系統(tǒng)突破了上述限制,Linux虛擬機第三方進程可讀取但禁止修改受保護進程內(nèi)存數(shù)據(jù),所以受保護進程不能與其他進程進行完全的數(shù)據(jù)讀寫共享。其他如Flicker[12]、CHAOS[13]、Proxos[14]等原型系統(tǒng)需要特定的受保護進程與防護系統(tǒng)的配合,但不能任意指定進程進行防護。
針對Windows虛擬機進程面臨的威脅及現(xiàn)有方法的不足,本文提出影子內(nèi)核機制以透明的保護虛擬機進程系統(tǒng)調(diào)用執(zhí)行路徑,利用KVM和監(jiān)控代理監(jiān)控虛擬機中訪問進程內(nèi)存的行為,并構(gòu)建影子監(jiān)控代理以保證監(jiān)控代理的安全性,最后實現(xiàn)了原型系統(tǒng)VMPPS。VMPPS能夠指定Windows虛擬機中任意進程,對其系統(tǒng)調(diào)用執(zhí)行路徑及內(nèi)存進行安全防護。同時,為防止VMM自身存在的漏洞也可能被攻擊者利用,導(dǎo)致虛擬機逃逸[15-16]等問題,本文引入HyperSafe[17]、HyperDomain[18]和Hypercheck[19]等方案加固VMM。
KVM是基于硬件虛擬化實現(xiàn)的一個Linux內(nèi)核模塊,需要Intel-VT[20]或AMD-V技術(shù)[21]的支持,負責(zé)管理虛擬機內(nèi)存及CPU,處理引發(fā)VM Exit的事件。以Intel-VT為例,Intel-VT為CPU增添了支持硬件虛擬化的指令,提供了Root和Non-Root兩種運行模式。虛擬機運行于Non-Root模式,KVM運行于Root模式。虛擬機發(fā)生異?;驁?zhí)行特權(quán)指令時,引發(fā)VM Exit陷入到KVM。KVM處理完畢引發(fā)VM Exit的事件后,執(zhí)行VM Entry使虛擬機繼續(xù)運行。同時,KVM利用VMCS(virtual machine control structure)[22]保存宿主機與虛擬機的硬件環(huán)境、退出信息等內(nèi)容,并可以指定引發(fā)VM Exit的事件,由硬件自動讀寫。
圖1 VMPPS總體架構(gòu)
本文基于KVM實現(xiàn)了原型系統(tǒng)VMPPS,對Windows虛擬機進程系統(tǒng)調(diào)用執(zhí)行路徑及內(nèi)存進行安全防護,總體架構(gòu)如圖1所示。在系統(tǒng)調(diào)用執(zhí)行路徑防護方面,虛擬機運行過程中,普通進程系統(tǒng)調(diào)用執(zhí)行路徑處于原內(nèi)核,而被保護進程系統(tǒng)調(diào)用執(zhí)行路徑完全處于影子內(nèi)核,繞過了原內(nèi)核中可能存在的惡意掛鉤。影子內(nèi)核獨立存在,只能通過KVM實現(xiàn)與原內(nèi)核之間的切換,因此不需對其引入額外的防護流程即可避免惡意軟件對影子內(nèi)核的攻擊。在內(nèi)存防護方面,本文利用KVM具有的高特權(quán)級特性,捕獲虛擬機特定硬件動作,監(jiān)控虛擬機異常調(diào)試等行為,保護虛擬機進程內(nèi)存安全。其中,影子內(nèi)核是監(jiān)控代理利用原始內(nèi)核鏡像文件,在虛擬機內(nèi)核非分頁池中構(gòu)建的一份純凈的內(nèi)核可執(zhí)行代碼,包含了原內(nèi)核所有的系統(tǒng)調(diào)用執(zhí)行路徑,并提供給受保護進程進行調(diào)用。監(jiān)控代理攔截了影子內(nèi)核系統(tǒng)調(diào)用分發(fā)流程,對跨進程讀寫系統(tǒng)調(diào)用進行過濾,防止第三方進程讀寫受保護進程內(nèi)存。同時,將監(jiān)控代理中的過濾函數(shù)重定位到影子監(jiān)控代理中,保護監(jiān)控代理的安全。
陷入模塊位于KVM中,主要包括4個功能模塊:
1)ISE陷入處理模塊,負責(zé)捕獲虛擬機中讀寫IA32_SYSENTER_EIP動作,確保影子內(nèi)核在第一時間接管虛擬機進程的系統(tǒng)調(diào)用請求;
2)超級系統(tǒng)調(diào)用處理模塊,負責(zé)接收監(jiān)控代理向KVM傳遞的數(shù)據(jù),如原內(nèi)核SSDT表基地址、影子內(nèi)核SSDT表基地址等;
3)CR3切換處理模塊,負責(zé)捕獲虛擬機進程切換行為,并根據(jù)內(nèi)核棧保存的返回地址判斷是否有第三方驅(qū)動讀寫受保護進程的行為;
4)斷點及調(diào)試異常處理模塊,在KVM中捕獲虛擬機斷點及調(diào)試異常,負責(zé)保護虛擬機受保護進程免受惡意的調(diào)試分析。
2.1進程系統(tǒng)調(diào)用執(zhí)行路徑安全防護
2.1.1構(gòu)建影子內(nèi)核
在Windows操作系統(tǒng)中,內(nèi)核鏡像是PE(portable executable)格式的可執(zhí)行文件,并按照此格式被加載進內(nèi)存。影子內(nèi)核的構(gòu)建過程與Windows操作系統(tǒng)在加電啟動中加載內(nèi)核鏡像至物理內(nèi)存中的過程類似,但需要額外的步驟保持影子內(nèi)核數(shù)據(jù)的正確性:
1)將內(nèi)核鏡像以PE文件格式進行內(nèi)存映射,加載內(nèi)核鏡像文件中的代碼及數(shù)據(jù),形成影子內(nèi)核代碼初始態(tài)。
2)影子內(nèi)核數(shù)據(jù)未經(jīng)歷系統(tǒng)開機啟動時刻的內(nèi)核初始化,需重定位到原內(nèi)核數(shù)據(jù),影子內(nèi)核才能正常執(zhí)行。依據(jù)影子內(nèi)核代碼及數(shù)據(jù)與原內(nèi)核代碼及數(shù)據(jù)相對位置不變這一原理,有:
式中,Dactual_imageBase是原內(nèi)核加載基地址;Dactual是原內(nèi)核中數(shù)據(jù)的正確值地址,也是影子內(nèi)核重定向數(shù)據(jù)指向的數(shù)據(jù)位置;Ddefault-imageBase是影子內(nèi)核加載基地址;Ddefault是重定向表給出的需要修復(fù)的重定向數(shù)據(jù)地址,如內(nèi)核中的全局數(shù)據(jù)。
3)修復(fù)影子內(nèi)核系統(tǒng)調(diào)用表中系統(tǒng)調(diào)用的地址,使其指向影子內(nèi)核純凈的可執(zhí)行代碼。根據(jù)影子內(nèi)核加載基地址與原內(nèi)核加載基地址之間的偏移,可依據(jù)式(2)確定每一個系統(tǒng)調(diào)用函數(shù)地址:
NewSSDTFuncAddr=OrigSSDTFuncAddr+Δ(2)式中,NewSSDTFuncAddr是影子內(nèi)核SSDT表中的某個系統(tǒng)調(diào)用函數(shù)地址;OrigSSDTFuncAddr是原內(nèi)核SSDT表中對應(yīng)的系統(tǒng)調(diào)用函數(shù)地址;Δ是影子內(nèi)核加載基地址與原內(nèi)核加載基地址之間的偏移量。
2.1.2影子內(nèi)核接管系統(tǒng)調(diào)用
影子內(nèi)核創(chuàng)建完成后,VMPPS采用攔截快速系統(tǒng)調(diào)用機制,在第一時間接管Windows虛擬機進程系統(tǒng)調(diào)用執(zhí)行流程,對受保護進程系統(tǒng)調(diào)用執(zhí)行路徑進行安全防護。Windows XP及后續(xù)操作系統(tǒng)版本引入了快速系統(tǒng)調(diào)用機制,將系統(tǒng)調(diào)用入口函數(shù)地址存放于IA32_SYSENTER_EIP寄存器,通過sysenter指令替代軟中斷int 2e以提高系統(tǒng)調(diào)用效率。
圖2 進程系統(tǒng)調(diào)用執(zhí)行路徑安全防護架構(gòu)
進程系統(tǒng)調(diào)用執(zhí)行路徑安全防護架構(gòu)如圖2所示。首先,在KVM中,將VMCS中MSR Bitmap的0x176位置1,以攔截虛擬機對IA32_SYSENTER_EIP寄存器的讀寫,并透明的設(shè)置IA32_SYSENTER_EIP寄存器指向影子內(nèi)核系統(tǒng)調(diào)用入口函數(shù)地址。當(dāng)虛擬機執(zhí)行rdmsr/wrmsr指令對IA32_SYSENTER_EIP寄存器進行讀寫時,會引發(fā)VM Exit被ISE陷入模塊捕獲,隨后由ISE處理模塊進行處理:1)對rdmsr指令的讀取操作,返回原內(nèi)核系統(tǒng)調(diào)用入口函數(shù)值,保持VMM修改虛擬機IA32_SYSENTER_EIP寄存器操作的透明性;2)對wrmsr指令的寫入操作,則直接忽略以防止惡意篡改。最后,監(jiān)控代理使用深度內(nèi)聯(lián)hook技術(shù),對影子內(nèi)核中的系統(tǒng)調(diào)用入口函數(shù)Nt!KiFastCallEntry進行掛鉤,截獲影子內(nèi)核系統(tǒng)調(diào)用最初的控制流程。
當(dāng)虛擬機進程執(zhí)行系統(tǒng)調(diào)用時,其執(zhí)行路徑首先轉(zhuǎn)移到影子內(nèi)核,隨后被監(jiān)控代理截獲。監(jiān)控代理讀取eax寄存器中的系統(tǒng)調(diào)用號等參數(shù),并對進程進行判斷:1)若進程為受保護進程,則執(zhí)行影子內(nèi)核中的目標(biāo)系統(tǒng)調(diào)用函數(shù);2)若進程為普通進程,則返回原內(nèi)核并執(zhí)行目標(biāo)系統(tǒng)調(diào)用函數(shù)。
2.2進程內(nèi)存安全防護
Windows系統(tǒng)的跨進程操作帶來了非常大的安全隱患,如遠程代碼注入、第三方進程非法讀寫等。
進程內(nèi)存安全防護設(shè)計如圖3所示,圖中,監(jiān)控代理對影子內(nèi)核中跨進程讀寫相關(guān)的系統(tǒng)調(diào)用函數(shù)進行掛鉤,如NtReadVirtualMemory、NtWrite VirtualMemory等,指向相應(yīng)的代理函數(shù)進行過濾操作。當(dāng)某一進程試圖讀寫其他進程內(nèi)存空間時,代理函數(shù)會捕獲此事件并進行判斷:1)若主體進程是普通進程,且目標(biāo)進程是受保護進程,則對讀寫動作進行混淆或拒絕;2)主體進程和目標(biāo)進程都是受保護進程,則放行。
圖3 進程內(nèi)存安全防護設(shè)計
2.2.2驅(qū)動模塊讀寫內(nèi)存防護
現(xiàn)代操作系統(tǒng)中,進程利用頁表完成虛擬地址到物理地址的轉(zhuǎn)換,實現(xiàn)對物理內(nèi)存的訪問。每個進程擁有一套獨立的頁表及唯一的頁目錄基地址。當(dāng)進程切換時,CR3寄存器中的頁目錄基地址會同時進行切換。當(dāng)惡意代碼訪問某一進程的內(nèi)存時,必須切換到該進程對應(yīng)的頁表。
如圖3所示,在VMCS中將CR3_target_count置0,CR3切換處理模塊即可捕獲虛擬機進程切換,讀取其CR3值。若虛擬機CR3寄存器值為受保護進程頁目錄基地址,則通過內(nèi)核棧幀中存儲的ebp值對內(nèi)核棧進行回溯,獲取所有的函數(shù)返回地址,并通過虛擬機自省(virtual nachine introspection,VMI)[23-24]獲取虛擬機當(dāng)前所有已加載的驅(qū)動模塊信息。若回溯過程中所有的返回地址均位于內(nèi)核空間,說明進程被正常調(diào)度;否則根據(jù)返回地址所處的地址范圍內(nèi),定位到讀寫受保護進程內(nèi)存的具體驅(qū)動模塊。
2.2.3進程反調(diào)試防護
操作系統(tǒng)通過#BP異常(int 3)和#DB異常(int 1)提供斷點及調(diào)試功能。通過對特定進程進行調(diào)試,能夠動態(tài)修改進程代碼及數(shù)據(jù),分析進程代碼邏輯及數(shù)據(jù)意義,繞過特定進程的安全防護。
如圖3所示,將VMCS中Exception Bitmap的BP_VECTOR和DB_VECTOR_置1,若虛擬機中的進程被調(diào)試,將產(chǎn)生VM Exit陷入到KVM中的斷點及調(diào)試異常處理模塊。調(diào)試異常處理模塊對虛擬機CR3寄存器值進行判斷:1)若受保護進程被調(diào)試,則強制向進程地址空間寫入零值停止其運行;2)若普通進程被調(diào)試,則放行。
通過綜合比選,最終形成了一種新型的站、橋結(jié)合方案——明挖地鐵站與市政高架橋同期同位分離式合建方案,如圖7~8所示。
2.3監(jiān)控代理內(nèi)存安全防護
監(jiān)控代理位于Windows虛擬機內(nèi)核層,功能有:
1)在虛擬機啟動過程中,根據(jù)原始內(nèi)核鏡像文件構(gòu)建影子內(nèi)核;
2)對影子內(nèi)核系統(tǒng)調(diào)用入口函數(shù)進行攔截,獲取最初系統(tǒng)調(diào)用執(zhí)行路徑的控制權(quán);
3)對跨進程讀寫內(nèi)存的相關(guān)函數(shù)進行掛鉤并指向代理函數(shù),對跨進程讀寫操作進行過濾;
4)當(dāng)用戶指定任意進程進行保護時,通過超級調(diào)用傳遞此進程信息到KVM中。
但是,若同處于內(nèi)核層的惡意驅(qū)動攻擊或繞過監(jiān)控代理,則可能使防護功能失效,因此需要對監(jiān)控代理進行安全防護。
本文通過構(gòu)建一個影子監(jiān)控代理,接管監(jiān)控代理中函數(shù)的執(zhí)行流程,實現(xiàn)對監(jiān)控代理的安全防護。與構(gòu)建影子內(nèi)核類似,按照PE格式加載監(jiān)控代理驅(qū)動文件構(gòu)建影子內(nèi)核之后,需根據(jù)原監(jiān)控代理基地址與影子監(jiān)控代理基地址的偏移關(guān)系,將系統(tǒng)調(diào)用代理函數(shù)地址重定向到影子監(jiān)控代理中的系統(tǒng)調(diào)用代理函數(shù)地址。具體構(gòu)建過程參考2.1.1節(jié)內(nèi)容。
構(gòu)造影子監(jiān)控代理可有效降低防護系統(tǒng)被攻破的可能性。防護系統(tǒng)使用內(nèi)核非分頁池中的影子監(jiān)控代理驅(qū)動代碼后,即使當(dāng)原驅(qū)動代碼被修改,仍然不會危及到防護系統(tǒng)的功能。同時,非分頁池中的內(nèi)存隨機分配,惡意代碼難以定位影子監(jiān)控代理驅(qū)動代碼,若掃描全部內(nèi)核地址空間,不僅效率低下,而且將會因訪問內(nèi)核地址空間空洞引發(fā)藍屏。
VMPPS系統(tǒng)測試側(cè)重兩方面:1)防護能力;2)系統(tǒng)性能。實驗環(huán)境:硬件配置為華為Tecal RH2288H v2、Intel Xeon E5-2609、2.4 G主頻、32 GB內(nèi)存;宿主機為Ubuntu 12.04、內(nèi)核版本3.10.1,KVM及QEMU版本分別為3.10.1、1.7.1;虛擬機為32位 Windows 7 SP1操作系統(tǒng)。
3.1防護效果驗證
本文收集了多個樣本,分別對進程系統(tǒng)調(diào)用執(zhí)行路徑安全防護功能、進程內(nèi)存安全防護功能及監(jiān)控代理自身安全防護功能的有效性進行了測試,同時自行實現(xiàn)了惡意驅(qū)動模塊MalDri彌補樣本測試功能的不足。測試樣本名稱、功能及測試結(jié)果如表1所示。
表1 測試樣本及結(jié)果
以WINWORD.EXE進程作為受保護進程,CHeat Engine作為測試樣本為例,對原型系統(tǒng)VMPPS有效性的測試過程分為兩個步驟:
1)關(guān)閉VMPPS,運行樣本CHeat Engine后,可查看并修改WINWORD.EXE進程內(nèi)存內(nèi)容,結(jié)果如圖4所示。其中,右下角標(biāo)示為WINWORD.EXE進程內(nèi)存對應(yīng)的正在編輯的內(nèi)容,中間標(biāo)記為對當(dāng)前WORD代碼的反匯編結(jié)果。
2)開啟VMPPS,運行樣本CHeat Engine,發(fā)現(xiàn)無法查看或修改WINWORD.EXE進程內(nèi)存數(shù)據(jù),結(jié)果如圖5所示。
圖4 VMPPS關(guān)閉進程內(nèi)存安全測試
圖5 VMPPS開啟進程內(nèi)存安全測試
需要指出,開啟原型系統(tǒng)VMPPS時,樣本ByteHook、RegKeyHide和Migbot.sys依然能夠掛鉤原內(nèi)核系統(tǒng)調(diào)用,但影子內(nèi)核繞過了原內(nèi)核系統(tǒng)調(diào)用的執(zhí)行流程,因此受保護進程能夠正常執(zhí)行。實驗結(jié)果表明,VMPPS利用影子內(nèi)核機制可以透明的為虛擬機提供有效的進程系統(tǒng)調(diào)用執(zhí)行路徑的安全防護,通過KVM和監(jiān)控代理可對進程的內(nèi)存安全進行防護。
表2 VMPPS與現(xiàn)有方法對比
本文對前文所述方法進行了多方面的對比,如表2所示??梢钥闯觯F(xiàn)有一些虛擬機進程防護方法存在著不足,如無法全面防護虛擬機系統(tǒng)調(diào)用執(zhí)行路徑和進程內(nèi)存、影響進程通信或可被惡意軟件繞過等。而VMPPS有效彌補了上述不足,全面防護了任意虛擬機進程系統(tǒng)調(diào)用執(zhí)行路徑和內(nèi)存,并保證了自身安全性。
3.2性能測試
原型系統(tǒng)VMPPS在原有KVM虛擬化架構(gòu)中添加了額外功能模塊與處理流程,干預(yù)了原系統(tǒng)正常的執(zhí)行流程,會帶來一定的性能損失。本文設(shè)計了相關(guān)測試,分別測試原型系統(tǒng)對虛擬機進程切換、計算密集型、I/O密集型及整體性能的影響,性能損耗率=(部署VMPPS?未部署VMPPS)/未部署VMPPS,性能測試單位為時間(ms)。進程創(chuàng)建、計算密集型、I/O密集型及整體性能對應(yīng)的基本測試實例為:創(chuàng)建記事本進程、空循環(huán)一百萬次、寫入128 K文件內(nèi)容及綜合測試(利用可執(zhí)行文件創(chuàng)建空循環(huán)一百萬次進程),測試結(jié)果如圖6~圖9所示。
圖6 進程創(chuàng)建實驗測試數(shù)據(jù)
圖7 計算密集型實驗測試數(shù)據(jù)
圖8 I/O密集型實驗測試數(shù)據(jù)
圖9 整體性能測試實驗數(shù)據(jù)
根據(jù)各項指標(biāo)測試數(shù)據(jù)可以看出,對于系統(tǒng)大量的進程創(chuàng)建動作,VMPPS會帶來一定的性能損失,各測試項的性能損耗率間的平均值約為0.6,這主要是因為密集的進程創(chuàng)建動作會帶來大量的系統(tǒng)調(diào)用及進程切換的開銷,使原型系統(tǒng)在短時間內(nèi)達到一個比較高的值,但操作系統(tǒng)正常運行時不會出現(xiàn)這種情況。在平穩(wěn)運行的系統(tǒng)中,VMPPS對計算密集型和I/O密集型進程的運行幾乎沒有影響,但是由于I/O緩沖區(qū)大小、磁盤運轉(zhuǎn)等系統(tǒng)參數(shù)的影響,會使I/O密集型進程的性能出現(xiàn)一定的波動。綜合測試的性能消耗主要源于進程創(chuàng)建過程,在可接受范圍內(nèi),但由于利用可執(zhí)行文件創(chuàng)建進程涉及I/O過程,所以性能損耗會出現(xiàn)一定的波動。
隨著云計算的發(fā)展,云環(huán)境下的虛擬機安全受到越來越多的關(guān)注。本文針對Windows進程面臨的威脅,提出了一種基于KVM的Windows虛擬機用戶進程防護方案。通過構(gòu)建影子內(nèi)核,結(jié)合硬件虛擬化技術(shù),實現(xiàn)了對虛擬機進程內(nèi)存和系統(tǒng)調(diào)用執(zhí)行路徑的安全防護。實驗結(jié)果表明,在可接受的性能損失范圍內(nèi),VMPPS能夠有效保護虛擬機用戶進程的系統(tǒng)調(diào)用執(zhí)行路徑安全和內(nèi)存安全。下一步將研究如何保證VMM的安全性,并提高VMPPS的效率。
[1]FENG Deng-guo,ZHANG Min,ZHANG Yan,et al. Study on cloud computing security[J]. Journal of Software,2011,22(1): 71-83.
[2]VALLS-PRIETO J. Digital crime,cyberspace security,and information assurance[M]. Pennsylvania,USA: IGI Global,2014.
[3]ZAYTSEV O. Rootkits,spyware/adware,keyloggers and backdoors: Detection and neutralization[M]. [S.l.]: A-ListPublishing,2006.
[4]SESHADRI A,LUK M,QU N,et al. SecVisor: a tiny hypervisor to provide lifetime kernel code integrity for commodity OSes[J]. ACM SIGOPS Operating Systems Review,2007,41(6): 335-350.
[5]王惠蒞,楊晨,楊建軍. 美國NIST云計算安全標(biāo)準(zhǔn)跟蹤及研究[J]. 信息技術(shù)與標(biāo)準(zhǔn)化,2012(6): DOI: 10.3969/j. issn.1671-539X.2012.06.013. WANG Hui-li,YANG Chen,YANG Jian-jun. Research on clouds computing security standards of NIST[J]. Information Technology & Standardization,2012(6): DOI:10.3969/j.issn.1671-539X.2012.06.013.
[6]孟慶倩,李清寶,魏珉. 基于Windows環(huán)境進程監(jiān)控的設(shè)計與實現(xiàn)[J]. 信息工程大學(xué)學(xué)報,2007,8(1): 26-29. MENG Qing-qian,LI Qing-bao,WEI Min. Design and realization of process-monitoring based on windows[J]. Journal of Information Engineering University,2007,8(1): 26-29.
[7]張濤,牛偉穎,孟正,等. 基于Windows內(nèi)核模式下進程監(jiān)控的用戶權(quán)限控制系統(tǒng)設(shè)計與實現(xiàn)[J]. 信息網(wǎng)絡(luò)安全,2014(4): 13-19. ZHANG Tao,NIU Wei-ying,MENG Zheng,et al. The design and implemention of windows system access control based on process monitoring[J]. Netinfo Security,2014(4): 13-19.
[8]JIANG X,WANG H J,XU D,et al. Randsys: Thwarting code injection attacks with system service interface randomization[C]//26th IEEE International Symposium on Reliable Distributed Systems (SRDS 2007). Beijing,China: IEEE,2007: 209-218.
[9]CHEN X,GARFINKEL T,LEWIS E C,et al. Overshadow: a virtualization-based approach to retrofitting protection in commodity operating systems[J]. ACM SIGOPS Operating Systems Review,2010,42(2): 2-13.
[10]YANG J,SHIN K G. Using hypervisor to provide data secrecy for user applications on a per-page basis[C]// Proceedings of the fourth ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments. New York,USA: ACM,2008: 71-80.
[11]SILAKOV D V. Using virtualization to protect application address space inside untrusted environment[J]. Programming and Computer Software,2012,38(1): 24-33.
[12]MCCUNE J M,PARNO B J,PERRIG A,et al. Flicker: an execution infrastructure for TCB minimization[C]//ACM SIGOPS Operating Systems Review. New York,USA: ACM,2008,42(4): 315-328.
[13]CHEN H,ZHANG F,CHEN C,et al. Tamper-resistant execution in an untrusted operating system using a virtual machine monitor[J]. Technical Report,2007,12(3): 123-138.
[14]TA-MIN R,LITTY L,LIE D. Splitting interfaces: Making trust between applications and operating systems configurable[C]//Proceedings of the 7th Symposium on Operating Systems Design and Implementation. Nerkeley,USA: USENIX Association,2006: 279-292.
[15]WOJTCZUK R,RUTKOWSKA J,TERESHKIN A. Xen owning trilogy[EB/OL]. [2015-03-20]. http:// invisiblethingslab.com /itl/Resources.html.
[16]Rapid7. Advanced exploitation of virtualBox 3D acceleration VM escape Vulnerability (CVE20140983)[EB/OL]. [2015-03-20]. https://vulners. com/metasploit/ MSF:EXPLOIT/WINDOWS/LOCAL/VIRTUAL_BOX_O PENGL_ESCAPE.
[17]WANG Z,JIANG X. Hypersafe: a lightweight approach to provide lifetime hypervisor control-flow integrity[C]// 2010 IEEE Symposium on Security and Privacy (SP). California,USA: IEEE,2010: 380-395.
[18]YANG W,MA L. HyperDomain: Enabling inspection of malicious VMM’s misbehavior[C]//2012 IEEE 11th International Conference onTrust,Security and Privacy in Computing and Communications (TrustCom). Washington,USA: IEEE,2012: 588-595.
[19]WANG J,STAVROU A,GHOSH A. HyperCheck: a hardware-assisted integrity monitor[C]//Recent Advances in Intrusion Detection. Berlin Heidelberg: Springer,2010: 158-177.
[20]Intel. Intel? virtualization technology (Intel? VT)[EB/OL]. [2015-03-20]. http://www.intel. com/content/ www/us/en/virtualization/virtualization-technology/intel-vi rtualization-technology.html.
[21]AMD. Secure virtual machine architecture reference manual[EB/OL]. [2015-03-20]. http://www.mimuw. edu.pl/~vincent/lecture6/sources/amd-pacifica-specificatio n.pdf.
[22]Intel. 64-ia-32-architectures- software-developer- manual-325462[M/OL]. Washington,USA: Intel,2014. [2015-03-20]. http://www.intel.com/content/www/us/en/ processors/architectures-software-developer-manuals.html.
[23]PAYNE B D,De CARBONE M D P,LEE W. Secure and flexible monitoring of virtual machines[C]//Twenty-Third Annual Computer Security Applications Conference. Florida,USA: IEEE,2007: 385-397.
[24]JIANG X,WANG X,XU D. Stealthy malware detection through vmm-based out-of-the-box semantic view reconstruction[C]//Proceedings of the 14th ACM Conference on Computer and Communications Security. New York,USA: ACM,2007: 128-138.
編輯漆蓉
KVM-Based Windows Virtual Machine User Process Protection
CHEN Xing-shu,ZHAO Cheng,and TAO Shu-song
(College of Computer,Sichuan UniversityChengdu610065)
To protect the process memory and execution paths of system calls from the threat of malicious code on Windows virtual machine,a KVM-based virtual machine user process protection solution is proposed. Combined with hardware virtualization technologies,a shadow kernel is built for Windows virtual machine to protect the original kernel system call paths from being hooked by malicious code. Meanwhile,the process memory is secured through filtering out-of-process system calls in the monitoring agent,intercepting the switching behaviors of page tables,monitoring the exceptions of breakpoints,and debugging of the virtual machine. In addition,a shadow monitoring agent is built to safeguard the virtual machine’s monitor agent memory. A prototype system VMPPS was thus designed and implemented with its validity tests and analysis results showing that process memory and execution paths of system calls of the virtual machine are effectively protected within an acceptable performance loss range.
monitor agent;security and protect;user process;virtualization;virtual machine
TP309
A
10.3969/j.issn.1001-0548.2016.06.013
2016 ? 01 ? 18;
2016 ? 05 ? 25
國家自然科學(xué)基金(61272447)
陳興蜀(1969 ? ),女,教授,博士生導(dǎo)師,主要從事信息安全、云計算安全方面的研究.