蔡夢娟,陳興蜀,金 鑫,趙 成,殷明勇
(1.四川大學 網絡空間安全研究院,成都 610065; 2.四川大學 計算機學院,成都 610065;3.中國工程物理研究院 計算機應用研究所,四川 綿陽 621900)(*通信作者電子郵箱chenxsh@scu.edu.cn)
虛擬化技術是云計算平臺的核心技術之一,隨著云計算服務的大量應用,云計算平臺中的安全成為關注焦點。一般情況下,云環(huán)境下的關鍵業(yè)務需要長時間地穩(wěn)定運行,為用戶提供高質量的服務,安全性和可用性是保證服務質量的關鍵。美國國家標準機構(National Institute of Standards and Technology, NIST)發(fā)布的《完全虛擬化安全指南》[1]指出,傳統(tǒng)主機面臨的安全威脅同樣適用于云計算環(huán)境下的虛擬機。對于部署在虛擬機中的業(yè)務程序,一方面虛擬機操作系統(tǒng)存在代碼漏洞或內部配置不合理等缺陷,另一方面業(yè)務程序自身代碼也存在安全漏洞?!?015年12月計算機病毒疫情分析》[2]指出的惡意木馬變種Trojan.PSW/Tepfer.lst等可竊取計算機操作系統(tǒng)敏感數(shù)據,破壞應用程序甚至修改宿主進程代碼以偽裝自身存在,嚴重威脅關鍵業(yè)務運行的穩(wěn)定性及云平臺信息的安全性。文獻[3]指出云服務商須對自身進行安全監(jiān)管以保障云平臺上業(yè)務及數(shù)據的安全,因此,對虛擬機中進程代碼進行完整性度量,以檢測其是否遭受惡意篡改,對于保證服務的穩(wěn)定性與安全性、減少用戶損失、增強虛擬機安全性等具有重要作用。
傳統(tǒng)的基于主機的監(jiān)控系統(tǒng)因其與惡意軟件位于同一操作系統(tǒng)內部,易被其繞過或攻擊而失效,如HookAPI[4]等。虛擬化技術的發(fā)展在提高資源利用率的同時也為安全研究帶來了新的思路:文獻[5-8]采用在虛擬機監(jiān)視器(Virtual Machine Monitor, VMM)層部署監(jiān)控系統(tǒng),利用VMM的強隔離性、強控制性和高特權級等優(yōu)勢,使檢測模塊與虛擬機系統(tǒng)隔離開來,在虛擬機外部采用虛擬機自省(Virtual Machine Introspection, VMI)[9]獲取虛擬機內部信息,實現(xiàn)對虛擬機中進程的監(jiān)控,解決傳統(tǒng)基于主機的檢測過程中遇到的問題。完整性驗證流程一般包括度量和驗證兩部分:度量部分負責收集系統(tǒng)內部信息并發(fā)送至驗證部分;驗證部分負責保存原始基值,并與接收的度量信息進行比較以驗證完整性。云環(huán)境下針對虛擬機系統(tǒng)進行度量的方法中,根據度量部分的部署位置可分為兩類:1)將度量部分部署在虛擬機中;2)將度量部分部署在Hypervisor中。第一類方法通過在虛擬機內部捕獲進程行為,獲取系統(tǒng)信息并傳至驗證部分,如文獻[10-11]。此類方法可獲取豐富的虛擬機系統(tǒng)信息,但存在以下不足:1)依賴目標虛擬機版本,通用性不強;2)易受虛擬機內部惡意軟件的攻擊,需要Hypervisor提供額外的防護措施,增加了開發(fā)的復雜性。第二類方法在虛擬機外部完成信息獲取及驗證的流程,如文獻[12-14],其中IVirt[12]通過Xen提供的Xencontrol和Xenstore接口在虛擬機外部進行地址轉換和內容定位,將虛擬機代碼頁逐頁復制到特權用戶可訪問的存儲空間進行完整性驗證。此類方法無需修改虛擬機,克服了將度量部分部署在虛擬機內部的不足,但同時也面臨挑戰(zhàn):1)VMM層與虛擬機之間的語義鴻溝[15]問題;2)現(xiàn)代操作系統(tǒng)使用“按需分配”的方式分配物理內存,在某一時刻只有部分進程代碼被加載至物理內存,且其物理地址空間不一定連續(xù),因此在VMM層難以獲取完整的虛擬機進程代碼段。如IVirt[12]就需保證虛擬機進程代碼全部加載至內存中,當代碼段很大時,該種實現(xiàn)方式會帶來嚴重的內存消耗。
針對以上問題,本文提出一種基于硬件虛擬化的虛擬機進程代碼分頁式度量方法,并實現(xiàn)了原型系統(tǒng)——虛擬機分頁式度量系統(tǒng)(Virtual Machine Paging-Measurement System, VMPMS)。VMPMS以基于內核的虛擬機(Kernel-based Virtual Machine, KVM)作為虛擬機監(jiān)視器,在VMM層截獲虛擬機進程行為作為度量流程的觸發(fā)點,可實現(xiàn)對運行進程的動態(tài)度量;并基于相對地址偏移方法對虛擬機中進程語義進行重構,解決了不同版本虛擬機之間的語義差異;提出并實現(xiàn)了分頁式度量方法在虛擬機外部驗證進程代碼段的完整性,無需修改虛擬機。VMPMS采用無代理方式,可實現(xiàn)在VMM層對虛擬機中運行進程代碼段的完整性驗證,且無需保證度量進程代碼段全部加載至內存,具有較好的適用性與靈活性。
進程代碼完整性攻擊威脅主要包括兩種:1)修改進程二進制可執(zhí)行文件;2)對運行進程代碼進行掛鉤操作,破壞原有執(zhí)行流程?,F(xiàn)有的部分研究集中于在程序啟動之前驗證其完整性,如基于可信計算組織(Trusted Computing Group, TCG)的完整性度量架構(Integrity Measurement Architecture, IMA)[16]及其改進方法PRIMA(Policy-Reduced Integrity Measurement Architecture)[17],此類方法為靜態(tài)度量,無法驗證運行進程的完整性。Huh等[18]及Stelte等[19]設計的SIMA(Sensory Integrity Measurement Architecture)在虛擬機內核中安裝度量代理,對運行進程的完整性進行驗證,但將度量軟件與被度量程序置于同一系統(tǒng),安全性較差;同時,若要度量多個目標虛擬機,則需在每個虛擬機中插入度量模塊,增加了管理的復雜性。針對以上缺陷,本文設計的VMPMS采用無代理方式,將度量流程置于VMM層,利用其高特權級提升系統(tǒng)的安全性;同時每一臺物理機只需部署一套度量系統(tǒng),減少了資源消耗;此外,VMPMS基于事件捕獲機制,可實現(xiàn)對運行進程完整性的驗證。
KVM是基于硬件輔助虛擬化的一個Linux內核模塊,其實現(xiàn)需要Intel VT(Virtualization Technology)或AMD SVM(Secure Virtual Machine)技術的支持[20]。KVM運行在Root模式,負責管理虛擬機內存及CPU,處理虛擬機因異常或執(zhí)行特權指令引發(fā)的VM Exit事件。同時,KVM利用VMCS(Virtual Machine Control Structure)[21]保存宿主機與虛擬機切換過程中的硬件上下文環(huán)境,并可以指定引發(fā)VM Exit的事件。VMPMS基于虛擬機中的系統(tǒng)事件,主動觸發(fā)虛擬機進程代碼段的度量,其總體架構如圖1所示。
圖1 VMPMS架構Fig. 1 Architecture of VMPMS
VMPMS分為三個模塊:捕獲模塊、語義重構模塊和分頁動態(tài)度量模塊。捕獲模塊負責捕獲虛擬機進程的系統(tǒng)調用事件。語義重構模塊采用VMI獲取虛擬機進程信息,如進程名稱、進程代碼段起始地址與結束地址等。分頁動態(tài)度量模塊根據語義重構模塊傳遞的進程信息,以虛擬機物理頁大小為單位對進程代碼段進行劃分,對已載入物理內存的代碼頁進行度量,并根據基值庫中的基值驗證其完整性,將對比結果寫入日志;對于尚未載入物理內存的代碼頁,暫時忽略其度量,待其被載入物理內存之后再度量。基值庫保存虛擬機進程代碼各頁的度量值,可以文件、數(shù)據庫等形式存在,日志則用于記錄度量模塊的代碼頁度量信息與基值庫中基值信息的對比結果。
捕獲模塊捕獲虛擬機中的系統(tǒng)事件,根據其引發(fā)的虛擬機寄存器等狀態(tài)的變化獲取底層語義。系統(tǒng)事件為虛擬機系統(tǒng)中能引發(fā)虛擬機退出的進程行為,本文采用攔截虛擬機中進程的系統(tǒng)調用,實現(xiàn)在VMM層對進程行為的捕獲。
在X86架構下,當操作系統(tǒng)中的進程需要執(zhí)行系統(tǒng)調用時,其首先將系統(tǒng)調用號保存至EAX寄存器,之后通過系統(tǒng)調用陷入指令完成用戶態(tài)到內核態(tài)的切換和進程上下文的保存。以32位操作系統(tǒng)為例,當其使用sysenter指令執(zhí)行系統(tǒng)調用時,系統(tǒng)會讀取存放在MSR_IA32_SYSENTER_EIP寄存器中的系統(tǒng)調用入口函數(shù)地址,據此VMPMS實現(xiàn)了基于MSR_IA32_SYSENTER_EIP寄存器的虛擬機系統(tǒng)調用攔截機制,其原理如圖2。
在虛擬機啟動加載內核鏡像完畢后,VMPMS在VMM層將MSR_IA32_SYSENTER_EIP寄存器的值初始化為一個非法地址,并將原地址保存。虛擬機進程執(zhí)行系統(tǒng)調用時,將由于訪問非法地址引發(fā)page fault異常,產生VM Exit陷入至VMM層觸發(fā)其處理流程。VMPMS讀取虛擬機退出原因,若其因page fault異常退出,則判斷當前虛擬機EIP寄存器的值是否為初始化的非法地址,若是則說明虛擬機因系統(tǒng)調用被攔截而退出,VMPMS進而開啟對當前進程的度量流程,度量完畢后將被截獲的系統(tǒng)調用入口函數(shù)地址裝入虛擬機EIP寄存器,執(zhí)行VM Entry恢復虛擬機系統(tǒng)調用正常執(zhí)行流程。對于不需要處理的page fault陷入則注入虛擬機中按照原有流程正常執(zhí)行,避免額外的性能損耗。
圖2 虛擬機系統(tǒng)調用截獲原理Fig. 2 Interception principle of virtual machine system call
在KVM平臺上,虛擬機內部產生的page fault異常默認由虛擬機內核自身處理,不會產生VM Exit陷入至KVM中,故需設置VMCS 中EXCEPTION_BITMAP字段,使虛擬機的page fault可引發(fā)VM Exit。Intel官方定義的page fault有五種[22]:存在位異常、讀寫異常、模式異常、保留位異常及取指令異常。內核在處理缺頁異常之前,CPU控制單元將產生一個硬件錯誤碼(Hardware Error Code)并壓入到內核態(tài)堆棧中,引發(fā)缺頁異常的原因不同,硬件錯誤碼也不同,其保存在缺頁錯誤碼(Page Fault Error Code, PFEC)字段中。只有當PFEC中的硬件錯誤碼滿足式(1)的關系時,虛擬機中產生的page fault才會引發(fā)VM Exit。
PFEC & PFEC_MASK=PFEC_MATCH
(1)
本文通過對缺頁錯誤錯誤碼掩碼域(Page Fault Error Code Mask, PFEC_MASK)和缺頁錯誤錯誤碼匹配域(Page Fault Error Code Match, PFEC_MATCH)兩個字段進行設置,可讓虛擬機僅在發(fā)生取指令異常時陷入至VMM中,對缺頁異常進行過濾。
VMM位于虛擬機底層,具有更高的權限,能獲取目標虛擬機內存中的二進制數(shù)據。但兩者存在語義鴻溝問題,VMM無法得知這些數(shù)據的具體含義,語義重構模塊利用捕獲模塊截獲的虛擬機底層語義,結合內核數(shù)據結構得出高級語義。文獻[23]中的vMon結合虛擬機操作系統(tǒng)內核源碼和硬件虛擬化技術,可對多種版本虛擬機進程相關語義信息進行重構,但vMon在無法獲取虛擬機內核版本或內核源碼的情況下作用有限,且分析復雜內核源碼的工作量很大。本文實現(xiàn)了一種基于相對地址偏移的語義重構方法,利用測試模塊獲取進程描述符與其內部屬性的相對地址偏移,可靈活地獲取虛擬機進程描述符中的信息,對vMon的方法進行了改進。
本文在目標虛擬機中實現(xiàn)測試模塊,由于進程描述符中的元素在內存中是連續(xù)存放的,元素之間的相對地址偏移量保持不變,故獲取進程描述符地址與其內部屬性地址的差值即為相對地址偏移量,該方法僅需運行一次即可得到相關偏移量,具有通用性,可兼容多種虛擬機內核版本。
以獲取進程描述符中屬性pid為例,原理如圖3。Linux操作系統(tǒng)為每一個CPU準備了一個任務狀態(tài)段(Task State Segment, TSS),任務寄存器(Task Register, TR)用于保存其地址。操作系統(tǒng)發(fā)生進程調度時,內核將當前進程的內核棧指針保存在TSS的esp0域中。故獲取虛擬機TR寄存器中的值,進一步得到tss.esp0,即當前進程內核棧棧頂單元地址,與GUEST_ESP_TO_THREAD進行與運算后得到thread_info結構體的首地址,其task字段指向進程描述符;得到進程描述符地址后,結合測試模塊所得的偏移量,由式(2)即可得到屬性pid的地址,同理可獲取其他屬性的地址及內容。
TaskAddr+offset=MemAddr
(2)
其中:TaskAddr為進程描述符基地址,offset表示元素與基地址的偏移量,MemAddr表示元素地址。
圖3 Linux環(huán)境下語義重構原理Fig. 3 Principle of semantic reconstruction in Linux environment
在操作系統(tǒng)中,進程利用頁表完成虛擬地址到物理地址的映射和轉換。在開啟分頁機制的情況下,操作系統(tǒng)通過“按需加載”的方式以物理頁為單位分配物理內存。在物理內存資源緊張時,操作系統(tǒng)會將一部分物理頁面的內容寫入到磁盤,因此在進程運行的某一時刻,進程的所有代碼頁并不一定全部載入物理內存中,還可能存在于磁盤文件或交換分區(qū)中。此外,由內存虛擬化[24],客戶機操作系統(tǒng)所見為虛擬的客戶機物理地址空間,為了正確地訪問內存,需要將客戶機虛擬地址(Guest Virtual Address, GVA)轉換成宿主機物理地址(Host Physical Address, HPA),其映射過程如圖4所示。GVA到客戶機物理地址(Guest Physical Address, GPA)的轉換由客戶機頁表完成,支持擴展頁表(Extended Page Table, EPT)機制時,GPA到宿主機虛擬地址(Host Virtual Machine, HVA)的映射是線性一一對應的,宿主機頁表完成HVA到HPA的轉換,可見在虛擬機中連續(xù)存放的內存地址映射至宿主機中則不一定連續(xù)。若要在VMM層一次獲取虛擬機完整代碼段再度量,則需獲取在內存與不在內存的所有代碼頁,并按其順序重新“拼湊”,其實現(xiàn)十分復雜且內存消耗巨大。
圖4 GVA到HPA的映射過程Fig. 4 Mapping process from GVA to HPA
基于此,本文提出分頁式度量的方法在VMM層驗證虛擬機進程代碼段的完整性。VMPMS攔截虛擬機進程系統(tǒng)調用,使其產生page fault異常陷入至KVM,經過語義重構得到當前運行進程代碼段的起始地址與結束地址,以虛擬機物理頁大小為單位對代碼段進行劃分,按照代碼頁順序依次進行度量操作。對某個特定的代碼頁,KVM首先判斷其是否已載入物理內存中,若是則采用SHA-1哈希算法對其進行度量操作,并將度量值與基值庫中該頁的基值進行對比,將結果寫入日志文件中;若該代碼頁尚未載入物理內存,說明在此度量時刻虛擬機尚未執(zhí)行該代碼頁,則暫時忽略其度量,待其載入內存中后再度量。VMPMS捕獲進程系統(tǒng)調用作為度量流程的觸發(fā)點,使度量時機與進程執(zhí)行時機相關,在KVM中實現(xiàn)對虛擬機進程代碼段的動態(tài)度量。
基值是進程在“純凈”狀態(tài)下得到的代碼段各頁的度量值,存儲于基值庫,用于對比虛擬機進程代碼段動態(tài)度量值,驗證其完整性。本文采用在VMM層捕獲虛擬機進程代碼頁第一次載入內存時刻的度量值作為基值,動態(tài)地完成基值庫的建立,并利用VMM層的強隔離性與高特權級提升基值庫的安全性。
為驗證VMPMS對虛擬機進程代碼完整性度量的有效性,并評估其對目標進程和虛擬機操作系統(tǒng)產生的性能消耗,進行相關測試并與現(xiàn)有部分完整性度量方案作對比。
實驗測試環(huán)境如下:宿主機操作系統(tǒng)為64位Ubuntu- 12.04,內核版本為Linux- 3.10.1,KVM版本為kvm- kmod- 3.10.1,QEMU版本為Qemu- 2.3.0;宿主機的CPU型號為Intel Core i3- 4160,主頻為3.60 GHz,物理內存為4 GB,支持硬件輔助虛擬化。虛擬機為32位CentOS 6.5操作系統(tǒng),內核版本為Linux- 2.6.32.24。
功能測試分為兩個步驟:1)對正常的虛擬機進程代碼段進行度量;2)通過修改源代碼的方式模擬針對進程的攻擊,并度量修改后的進程代碼段,以驗證其完整性是否被破壞。VMPMS可對所有虛擬機進程進行度量,為方便說明,本文在虛擬機中部署版本為2.2.15的Apache服務器軟件,將其作為度量對象。
Apache服務進程通過sysenter指令執(zhí)行系統(tǒng)調用引發(fā)page fault異常陷入KVM后,KVM獲取其名稱及代碼段地址等,采用分頁式度量的方法驗證其代碼段完整性,Apache服務進程正常運行狀態(tài)下,其度量結果如圖5所示。
圖5 正常進程度量結果Fig. 5 Measurement result of normal process
通過在Apache服務進程源代碼的入口函數(shù)添加一行輸出代碼,模擬進程代碼段篡改行為。修改后啟動Apache服務器進程并對其進行度量,其結果如圖6所示。
實驗選取的httpd進程代碼段較長,故此處僅截取部分代碼頁度量結果。對比圖5、6可見,進程運行過程中并非所有代碼頁均已載入物理內存,如第108、109頁;攻擊前后進程名稱和代碼語義信息并無明顯變化,但代碼頁的度量值發(fā)生了改變,如第105、106、107、110頁。實驗結果表明,VMPMS能夠從虛擬機外部判斷進程代碼頁是否載入物理內存,并可度量已載入內存的代碼頁,驗證虛擬機進程代碼段的完整性。
圖6 模擬攻擊后進程度量結果Fig. 6 Process measurement result after simulation attack
本節(jié)分別通過ApacheBench和Unixbench測試工具測試VMPMS對目標進程及對虛擬機操作系統(tǒng)整體性能的影響。利用ApacheBench模擬了請求數(shù)量為3 000,并發(fā)數(shù)量為100的情況下VMPMS對Apache服務器的影響,其結果如表1所示。為更好地分析性能損耗來源,本節(jié)同時測試了開啟事件捕獲、關閉哈希運算的性能消耗。由表1可知,在關閉哈希運算的情況下,每秒Apache服務器的處理請求數(shù)下降24%左右。開啟捕獲及哈希運算之后,其平均并發(fā)請求時間為初始情況的2倍,單位時間處理請求數(shù)降低了近一半。對比可知,攔截系統(tǒng)調用會帶來一定的性能損耗,但主要的性能損耗源于哈希運算的過程,此為哈希算法本身固有的屬性,為實時地驗證代碼的完整性,這樣的性能損耗可以接受。
表1 ApacheBench測試結果Tab. 1 ApacheBench test result
除了測試VMPMS對所度量的Apache服務器的性能損耗,本節(jié)還利用版本為5.1.2的基準測試工具UnixBench測試了其對虛擬機系統(tǒng)整體性能的影響,其測試結果為指數(shù)值,如表2所示。相比于初始環(huán)境,開啟VMPMS后浮點運算效率測試項性能損耗幾乎為0,excel函數(shù)調用測試項和shell腳本執(zhí)行效率測試項性能損耗提高近30%,文件數(shù)據傳輸速率測試項、進程管道通信速率測試項和進出系統(tǒng)內核速率測試項性能消耗增加明顯。由于VMPMS設置攔截系統(tǒng)調用作為度量觸發(fā)點,故系統(tǒng)調用相關操作性能消耗會相應提高;且設置度量點后,虛擬機進程的系統(tǒng)調用會引發(fā)缺頁異常陷入至KVM,故虛擬機與宿主機的上下文切換也較為頻繁;此外,選取的度量進程代碼段較大,度量過程中涉及從基值文件中讀取基線值的過程,故文件相關的操作性能損耗也會增加。
測試結果表明,VMPMS會給目標進程及虛擬機系統(tǒng)帶來一定的性能損耗;在VMM層驗證虛擬機進程代碼段的完整性,需在KVM中設置相應度量點,因此會帶來如上下文切換、文件操作等的性能損耗。為提升驗證進程代碼段完整性的安全性與可行性,此類性能損耗可以接受。
VMPMS與現(xiàn)有虛擬機進程完整性度量方案的對比如表3所示。從表3可以看出,這三種方法均可檢測虛擬機中運行進程代碼段的完整性,但與文獻[10]的方案相比,VMPMS無需在客戶機中添加代理模塊,提高了系統(tǒng)的安全性,在度量多個虛擬機時無需重復部署相關代理;而與IVirt[12]相比,VMPMS則不需要將所度量的進程代碼段全部載入內存,這樣在度量代碼段較長的進程時,VMPMS不會給內存資源帶來較大的負擔。由對比可知,VMPMS具有更強的適用性與靈活性。
表2 UnixBench測試結果Tab. 2 UnixBench test result
表3 VMPMS與現(xiàn)有方案對比Tab. 3 Comparison between VMPMS and existing methods
為解決虛擬機進程物理內存不連續(xù)且動態(tài)換入換出導致的難以在VMM層度量虛擬機進程完整代碼段的問題,本文提出了分頁式度量方法在VMM層透明實時地驗證虛擬機中運行進程代碼段的完整性;此外,實現(xiàn)了基于相對地址偏移的方法獲取虛擬機進程信息,解決了不同版本虛擬機之間的語義差異。實驗結果表明,在功能上本文實現(xiàn)的VMPMS能夠在VMM層有效驗證被度量進程代碼是否遭受篡改,在性能上VMPMS給度量進程及虛擬機系統(tǒng)帶來的性能損耗在可接受范圍內。同時本文也存在一些不足:1)本文截獲進程的系統(tǒng)調用行為作為度量流程的觸發(fā)點,可將度量時機與進程行為相關,實現(xiàn)對虛擬機進程的動態(tài)度量,但此種方法會帶來一定的性能損耗;2)本文目前針對的虛擬機操作系統(tǒng)為Linux,對Windows尚未涉及。下一步將研究在實現(xiàn)代碼完整性驗證的同時,降低VMPMS帶來的性能損耗;并針對不同虛擬機操作系統(tǒng)進行開發(fā),進一步提高VMPMS的通用性。
參考文獻:
[1]王惠蒞,楊晨,楊建軍.美國NIST云計算安全標準跟蹤及研究[J].信息技術與標準化,2012(6):51-54. (WANG H L, YANG C, YANG J J. Research on clouds computing security standards of NIST [J]. Information Technology & Standardization, 2012(6): 51-54.)
[2]張瑞,劉威.2015年12月計算機病毒疫情分析[J].信息網絡安全,2016(2):74. (ZHANG R, LIU W. Analysis of epidemic situation of computer virus in December 2015[J]. Netinfo Security, 2016(2): 74.)
[3]陳興蜀,葛龍,羅永剛,等.云計算服務持續(xù)監(jiān)管研究[J].網絡與信息安全學報,2016,2(10):2-3. (CHEN X S, GE L, LUO Y G, et al. Research on continuous monitoring of cloud computing service [J]. Chinese Journal of Network and Information Security, 2016, 2(10): 2-3.)
[4]徐江峰,邵向陽.基于HOOK API技術的進程監(jiān)控系統(tǒng)設計與實現(xiàn)[J].計算機工程與設計,2011,32(4):1330-1332. (XU J F, SHAO X Y. Design and realization of process-monitoring system based on HOOK API technology [J]. Computer Engineering and Design, 2011, 32(4): 1330-1332.)
[5]崔競松,張雅娜,郭遲,等.支持多種虛擬化技術的進程非代理監(jiān)控方法[J]. 華中科技大學學報(自然科學版),2014,42(11):122-124. (CUI J S, ZHANG Y N, GUO C, et al. Agent-free processes monitoring method supporting various virtualization technologies [J]. Journal of Huazhong University of Science and Technology (Nature Science Edition), 2014, 42(11): 122-124.)
[6]李博,沃天宇,胡春明,等.基于VMM的操作系統(tǒng)隱藏對象關聯(lián)檢測技術[J].軟件學報,2013, 24(2):405-420. (LI B, WO T Y, HU C M, et al. Hidden OS objects correlated detection technology based on VMM [J]. Journal of Software, 2013, 24(2): 405-420.)
[7]張磊,陳興蜀,任益,等.一種基于VMM的內核級Rootkit檢測技術[J].信息網絡安全,2015(4):57-59. (ZHANG L, CHEN X S, REN Y, et al. Kernel-level Rootkit detection technology based on VMM [J]. Netinfo Security, 2015(4): 57-59.)
[8]HWANG T, SHIN Y, SON K, et al. Design of a hypervisor-based rootkit detection method for virtualized systems in cloud computing environments [C]// Proceedings of the 2013 AASRI Winter International Conference on Engineering and Technology. Amsterdam: Atlantis Press, 2013:27-33.
[9]GARFINKEL T, ROSENBLUM M. A virtual machine introspection based architecture for intrusion detection [C]// Proceedings of the Internet Society’s 2003 Symposium on Network and Distributed Systems Security Symposium. [S.l.]: Internet Society, 2003: 253-285.
[10]駱源,毛亞強,廖振壹.一種用于虛擬機上的混合監(jiān)控度量方法及系統(tǒng):中國,CN104714877A [P]. 2015- 06- 17.
[11]孫紹鋼,李曉勇.一種基于虛擬化技術的惡意代碼行為檢測方法:中國,CN102682229A [P]. 2012- 09- 19.
[12]林杰,劉川意,方濱興.IVirt:基于虛擬機自省的運行環(huán)境完整性度量機制[J].計算機學報,2015,38(1):191-203. (LIN J, LIU C Y, FANG B X. IVirt: runtime environment integrity measurement mechanism based on virtual machine introspection [J]. Chinese Journal of Computers, 2015, 38(1): 191-203.)
[13]AZAB A M, NING P, SEZER E C, et al. HIMA: a hypervisor-based integrity measurement agent [C]// ACSAC’09: Proceedings of the 2009 IEEE Annual Computer Security Applications Conference. Piscataway, NJ: IEEE, 2009: 461-470.
[14]GARFINKEL T, PFAFF B, CHOW J, et al. Terra: a virtual machine-based platform for trusted computing [C]// SOSP’03: Proceedings of the 19th ACM Symposium on Operating Systems Principles. New York: ACM, 2003: 193-206.
[15]陳興蜀,李輝,張磊,等.基于Xen的自下而上調用的設計與實現(xiàn)[J].電子科技大學學報,2014,43(6):881-884. (CHEN X S, LI H, ZHANG L, et al. The design and implement of Xen-based upcall [J]. Journal of University of Electronic Science and Technology of China, 2014, 43(6): 881-884.)
[16]SAILER R, ZHANG X, JAEGER T, et al. Design and implementation of a TCG-based integrity measurement architecture [C]// SSYM’04: Proceedings of the 13th Conference on USENIX Security Symposium. Berkeley, CA: USENIX Association, 2004, 13: 223-238.
[17]JAEGER T, SAILER R, SHANKAR U. PRIMA: Policy-Reduced Integrity Measurement Architecture [C]// SACMAT 2006: Proceedings of the 11th ACM Symposium on Access Control Models and Technologies. New York: ACM, 2006: 19-28.
[18]HUH J H, MONTANARI M, DAGIT D, et al. An empirical study on the software integrity of virtual appliances: are you really getting what you paid for? [C]// ASIA CCS’13: Proceedings of the 2013 ACM SIGSAC Symposium on Information, Computer and Communications Security. New York: ACM, 2013: 231-242.
[19]STELTE B, KOCH R, ULLMANN M. Towards integrity measurement in virtualized environments — a hypervisor based sensory integrity measurement architecture (SIMA) [C]// HST ’10: Proceedings of the 2010 IEEE International Conference on Technologies for Homeland Security. Piscataway, NJ: IEEE, 2010: 106-112.
[20]ALI S. Virtualization with KVM [M]// Practical Linux Infrastructure. Berkeley, CA: Apress, 2015: 53-80.
[21]Intel. Intel 64 and IA- 32 architectures software developer’s manual [EB/OL]. [2017- 05- 06]. http://www.ti.uni-bielefeld.de/html/teaching/WS1314/techinf1/64-ia-32-architectures-software-developers-manual.pdf.
[22]鄧志.處理器虛擬化[M].北京:電子工業(yè)出版社,2014:200-201. (DENG Z. Processor virtualization [M]. Beijing: Publishing House of Electronics Industry, 2014: 200-201.)
[23]LI N, LI B, LI J, et al. vMON: An efficient out-of-VM process monitor for virtual machines [C]// HPCC_EUC 2013: Proceedings of the 2013 IEEE 10th International Conference on High Performance Computing and Communications & 2013 IEEE International Conference on Embedded and Ubiquitous Computing. Piscataway, NJ: IEEE, 2013: 1366-1373.
[24]英特爾開源軟件技術中心,復旦大學并行處理研究所. 系統(tǒng)虛擬化——原理與實現(xiàn)[M].北京:清華大學出版社,2009:51-54. (Intel Open Source Technology Center,Parallel Processing Institution of Fudan University . System Virtualization: Principles and Implementation [M]. Beijing: Tsinghua University Press, 2009: 51-54.)