趙 成,陳興蜀,金 鑫
(四川大學(xué) 計(jì)算機(jī)學(xué)院,成都 610065)
(*通信作者電子郵箱chenxsh@scu.edu.cn)
基于硬件虛擬化的虛擬機(jī)文件完整性監(jiān)控
趙 成,陳興蜀*,金 鑫
(四川大學(xué) 計(jì)算機(jī)學(xué)院,成都 610065)
(*通信作者電子郵箱chenxsh@scu.edu.cn)
為保護(hù)虛擬機(jī)敏感文件的完整性,針對(duì)外部監(jiān)控中基于指令監(jiān)控方式性能消耗大、兼容性低和靈活性差等缺點(diǎn),提出一種基于硬件虛擬化的文件完整性監(jiān)控(OFM)系統(tǒng)。該系統(tǒng)以基于內(nèi)核的虛擬機(jī)(KVM)作為虛擬機(jī)監(jiān)視器,可動(dòng)態(tài)實(shí)時(shí)地配置敏感文件訪問(wèn)監(jiān)控策略;OFM可修改虛擬機(jī)系統(tǒng)調(diào)用表項(xiàng)以透明攔截文件操作相關(guān)系統(tǒng)調(diào)用,以監(jiān)控策略為依據(jù)判定虛擬機(jī)進(jìn)程操作文件的合法性,并對(duì)非法進(jìn)程進(jìn)行處理。在虛擬機(jī)中采用性能測(cè)試軟件Unixbench進(jìn)行仿真,其中OFM在文件監(jiān)控方面優(yōu)于基于指令的監(jiān)控方式,且不影響虛擬機(jī)其他類型系統(tǒng)調(diào)用。實(shí)驗(yàn)結(jié)果表明,OFM可以有效地監(jiān)控虛擬機(jī)文件的完整性,具有更好的兼容性、靈活性和更低的性能損耗。
敏感文件;完整性;系統(tǒng)調(diào)用;硬件虛擬化;基于內(nèi)核的虛擬機(jī)
隨著計(jì)算機(jī)硬件及其技術(shù)的發(fā)展,云計(jì)算在科研、商用領(lǐng)域都得到了廣泛的應(yīng)用。美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(National Institute of Standards and Technology, NIST)發(fā)布的《完全虛擬化安全指南》[1]指出,云平臺(tái)虛擬機(jī)與主機(jī)一樣,都面臨著惡意軟件的威脅,如計(jì)算機(jī)病毒、木馬等。由于敏感文件保存著用戶的機(jī)密數(shù)據(jù)或系統(tǒng)重要配置信息,因此惡意軟件對(duì)敏感文件的非法操作可能影響系統(tǒng)正常執(zhí)行,泄露或篡改敏感信息,如《2015年7月計(jì)算機(jī)病毒疫情分析》[2]中列舉的新型木馬變種Trojan_Agent.WMU、Trojan_Zbot.LFM等。因此,監(jiān)控系統(tǒng)敏感文件完整性,對(duì)于盡早發(fā)現(xiàn)惡意代碼的攻擊、保護(hù)隱私數(shù)據(jù)免遭惡意泄露或篡改具有重要作用。
目前,針對(duì)虛擬機(jī)內(nèi)文件完整性監(jiān)控方法,學(xué)術(shù)界有著多方面的研究。TripWire[3]和I3FS[4]都是用于檢測(cè)主機(jī)文件完整性的工具,分別運(yùn)行在用戶態(tài)、內(nèi)核態(tài),通過(guò)度量文件的哈希值驗(yàn)證文件的完整性;Xen-FIT[5]和文獻(xiàn)[6]的系統(tǒng)均基于Xen實(shí)現(xiàn),通過(guò)在虛擬機(jī)中安裝監(jiān)控代理可實(shí)時(shí)檢測(cè)虛擬機(jī)文件完整性。上述方法的不足是:1)鉤子地址和代理模塊依賴于目標(biāo)虛擬機(jī)版本,通用性差;2)鉤子函數(shù)和代理模塊同樣可能被虛擬機(jī)中的惡意軟件攻擊而失效。FSGuard[7]、XMonitor[8]、RFIM[9]通過(guò)在Hypervisor中透明地捕獲虛擬機(jī)系統(tǒng)調(diào)用指令(int 0x80或syseter)以監(jiān)控文件操作相關(guān)系統(tǒng)調(diào)用,驗(yàn)證虛擬機(jī)中文件的完整性,這種方法避免了虛擬機(jī)監(jiān)控代理被惡意攻擊的威脅,但與文件操作無(wú)關(guān)的系統(tǒng)調(diào)用同樣會(huì)陷入到Hypervisor中而帶來(lái)不必要的性能損耗。XenAccess[10]提供了虛擬機(jī)文件完整性校驗(yàn)的監(jiān)控接口,但不包含功能性模塊,只能實(shí)時(shí)監(jiān)控目錄或文件的創(chuàng)建和刪除,無(wú)法提供對(duì)文件完整性的保護(hù)。
針對(duì)上述研究?jī)?nèi)容存在的不足,本文提出基于硬件虛擬化的虛擬機(jī)文件完整性監(jiān)控方法,并實(shí)現(xiàn)了原型系統(tǒng)OFM(Out-of-box File Monitoring)。OFM在虛擬機(jī)外部實(shí)現(xiàn),只需修改虛擬機(jī)文件操作相關(guān)系統(tǒng)調(diào)用表項(xiàng),就能透明地捕獲并分析虛擬機(jī)進(jìn)程對(duì)敏感文件的操作;同時(shí),通過(guò)管理和配置接口可以動(dòng)態(tài)實(shí)時(shí)地配置敏感文件訪問(wèn)監(jiān)控策略,無(wú)需重啟云平臺(tái)或虛擬機(jī);OFM根據(jù)監(jiān)控策略對(duì)虛擬機(jī)進(jìn)程的文件操作進(jìn)行分析,并處理非法文件操作的進(jìn)程。OFM避免了虛擬機(jī)內(nèi)部惡意軟件的威脅,具有比現(xiàn)有方法更低的性能消耗,可動(dòng)態(tài)配置的監(jiān)控策略具有良好的可擴(kuò)展性和靈活性,并可有效保護(hù)虛擬機(jī)文件完整性。
基于內(nèi)核的虛擬機(jī)(Kernel-based Virtual Machine, KVM)[11]是基于硬件虛擬化技術(shù)實(shí)現(xiàn)的一個(gè)Linux內(nèi)核模塊,負(fù)責(zé)將宿主機(jī)底層硬件資源抽象成虛擬資源,并分配給虛擬機(jī)使用。KVM擁有特權(quán)級(jí)高、隔離性強(qiáng)和透明性好等特征,因此,在虛擬機(jī)運(yùn)行過(guò)程中,KVM能夠捕獲虛擬機(jī)中的特定事件(敏感指令、中斷或I/O)等,獲取其內(nèi)部語(yǔ)義,而虛擬機(jī)卻無(wú)法感知到KVM的存在。硬件虛擬化需要Intel VT[12]或AMD-V[13]技術(shù)的支持,提供了Root和Non-Root兩種運(yùn)行模式,KVM運(yùn)行在Root模式,而虛擬機(jī)運(yùn)行于Non-Root模式。虛擬機(jī)陷入KVM的過(guò)程稱為VM Exit,而由KVM返回虛擬機(jī)的過(guò)程稱為VM Entry。
OFM是基于事件觸發(fā)的主動(dòng)監(jiān)控框架,采用KVM作為VMM,總體架構(gòu)如圖1所示。OFM實(shí)現(xiàn)了一種與虛擬機(jī)相隔離的文件完整性監(jiān)控方法,能夠動(dòng)態(tài)設(shè)置所要保護(hù)的文件及其監(jiān)控策略,保護(hù)其免受惡意代碼的惡意攻擊,如竊取或篡改敏感數(shù)據(jù)等。
圖1 OFM系統(tǒng)架構(gòu)
在原型系統(tǒng)OFM中,捕獲模塊負(fù)責(zé)捕獲虛擬機(jī)進(jìn)程調(diào)用文件操作相關(guān)系統(tǒng)調(diào)用,通過(guò)虛擬機(jī)自省 (Virtual Machine Introspection,VMI)獲取虛擬機(jī)內(nèi)部語(yǔ)義信息,并將獲取的信息傳遞到分析處理模塊。分析處理模塊接收捕獲傳遞的虛擬機(jī)文件操作信息,讀取策略庫(kù)中文件操作監(jiān)控策略,進(jìn)行分析,將非法的操作信息寫入日志。策略庫(kù)存儲(chǔ)虛擬機(jī)敏感文件監(jiān)控策略,可以根據(jù)需要為具有權(quán)限的系統(tǒng)管理員提供管理和配置接口,進(jìn)行實(shí)時(shí)動(dòng)態(tài)的配置。策略庫(kù)可以以數(shù)據(jù)庫(kù)、文件等形式存在,完成監(jiān)控策略配置后立即生效,無(wú)需重啟云平臺(tái)或虛擬機(jī)。日志存儲(chǔ)虛擬機(jī)敏感文件的非法操作;同時(shí),日志同樣可以提供接口、離線分析等功能。
2.1 系統(tǒng)調(diào)用監(jiān)控原理
如圖2所示,在X86架構(gòu)下,任意版本操作系統(tǒng)進(jìn)程執(zhí)行對(duì)文件的操作時(shí),都需要調(diào)用應(yīng)用層庫(kù)函數(shù)提供的接口函數(shù)。接口函數(shù)則通過(guò)系統(tǒng)調(diào)用陷入指令(int、sysenter或syscall)調(diào)用內(nèi)核層的系統(tǒng)調(diào)用服務(wù)程序,并利用EAX、EBX等寄存器傳遞參數(shù)信息,其中EAX存儲(chǔ)系統(tǒng)調(diào)用號(hào)。當(dāng)用戶層程序切換進(jìn)入內(nèi)核層后,操作系統(tǒng)內(nèi)核讀取參數(shù)信息,根據(jù)系統(tǒng)調(diào)用號(hào)在系統(tǒng)調(diào)用表中進(jìn)行索引,讀取系統(tǒng)調(diào)用表項(xiàng)中存儲(chǔ)的文件操作相關(guān)系統(tǒng)調(diào)用處理程序地址,跳轉(zhuǎn)并執(zhí)行。執(zhí)行完畢后,通過(guò)系統(tǒng)調(diào)用返回指令(iret、sysexit或sysreturn)返回執(zhí)行結(jié)果并恢復(fù)進(jìn)程上下文,繼續(xù)執(zhí)行用戶空間進(jìn)程。
圖2 系統(tǒng)調(diào)用原理
2.2 OFM實(shí)現(xiàn)原理
2.2.1 虛擬機(jī)page fault異常捕獲
虛擬機(jī)控制結(jié)構(gòu)(Virtual Machine Control Structure, VMCS)由KVM維護(hù),負(fù)責(zé)保存虛擬機(jī)和宿主機(jī)發(fā)生切換時(shí)的硬件上下文環(huán)境,同時(shí)可以指定虛擬機(jī)發(fā)生陷入的特定事件。在操作系統(tǒng)中,訪問(wèn)非法地址引發(fā)系統(tǒng)產(chǎn)生page fault異常,而不同類型的page fault異常產(chǎn)生不同的error_code類型。為了能夠在KVM中捕獲虛擬機(jī)產(chǎn)生的特定類型page fault異常,需要對(duì)VMCS進(jìn)行如下配置:
1)將VMCS中EXCEPTION_BITMAP字段的PF_VECTOR位置1,使捕獲模塊可以捕獲虛擬機(jī)中發(fā)生的page fault異常。
2)在VMCS中將PAGE_FAULT_ERROR_CODE_MASK字段和PAGE_FAULT_ERROR_CODE_MATCH字段的值填充為特定值,使虛擬機(jī)中滿足式(1)的page fault異常類型才會(huì)發(fā)生VM Exit陷入KVM中,可以避免其他類型的page fault異常陷入KVM帶來(lái)的不必要的性能損耗。
PFEC&PFEC_MSAK=PFEC_MATCH
(1)
其中:PFEC表示虛擬機(jī)中不同類型pagefault異常對(duì)應(yīng)的errorcode,陷入KVM后保存在VMCS的VM_EXIT_INTR_ERROR_CODE字段;PFEC_MASK表示PAGE_FAULT_ERROR_CODE_MASK字段中的內(nèi)容,設(shè)置為0x1F;PFEC_MATCH表示PAGE_FAULT_ERROR_CODE_MATCH中的內(nèi)容,設(shè)置為0x10。
2.2.2 虛擬機(jī)文件操作相關(guān)系統(tǒng)調(diào)用攔截
本文將虛擬機(jī)系統(tǒng)調(diào)用表中與文件操作有關(guān)的表項(xiàng)分別填充為一個(gè)唯一的非法地址,當(dāng)虛擬機(jī)進(jìn)程調(diào)用此系統(tǒng)調(diào)用時(shí),將因訪問(wèn)非法地址產(chǎn)生pagefault異常,被OFM捕獲模塊捕獲,并讀取參數(shù)信息,進(jìn)行分析,具體過(guò)程如下:
1)在虛擬機(jī)啟動(dòng)加載內(nèi)核至虛擬機(jī)內(nèi)核空間完畢后,根據(jù)式(2),利用VMI機(jī)制修改虛擬機(jī)系統(tǒng)調(diào)用表中文件操作相關(guān)的表項(xiàng)為唯一的非法地址標(biāo)識(shí),并在策略庫(kù)中保存原地址。
2)當(dāng)虛擬機(jī)調(diào)用這些系統(tǒng)調(diào)用時(shí),將由于訪問(wèn)非法地址而發(fā)生pagefault異常,并陷入到KVM的捕獲模塊。
3)捕獲模塊讀取虛擬機(jī)EIP寄存器中存儲(chǔ)的非法地址,根據(jù)式(2)判定系統(tǒng)調(diào)用類型,隨后讀取虛擬機(jī)EAX、EBX、ECX等寄存器中存儲(chǔ)的系統(tǒng)調(diào)用參數(shù),并利用參數(shù),使用KVM提供的函數(shù)kvm_read_guest_virt_system()獲取具體的參數(shù)內(nèi)容,主要包括文件名稱和操作方式等。
4)捕獲模塊讀取虛擬機(jī)ESP寄存器中保存的棧指針,獲取虛擬機(jī)內(nèi)核棧頂存儲(chǔ)的thread_info結(jié)構(gòu)體,根據(jù)thread_info結(jié)構(gòu)體中的進(jìn)程描述符指針,進(jìn)一步利用kvm_read_guest_virt_system()讀取虛擬機(jī)當(dāng)前進(jìn)程描述符,從中獲取虛擬機(jī)當(dāng)前進(jìn)程名稱。
5)捕獲模塊將獲取的進(jìn)程名稱、文件名稱和操作方式傳遞到分析處理模塊,分析處理模塊結(jié)合策略庫(kù)中的敏感文件監(jiān)控策略,進(jìn)行進(jìn)一步的處理。
Entry(SysCallTblAddr+N*AddrSize)=ErrBaseAddr-N
(2)
式(2)表示將系統(tǒng)調(diào)用表中需要被攔截系統(tǒng)調(diào)用對(duì)應(yīng)的表項(xiàng)修改為非法地址,每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)唯一的非法地址。Entry表示系統(tǒng)調(diào)用表中需要被攔截的系統(tǒng)調(diào)用對(duì)應(yīng)的表項(xiàng);SysCallTblAddr表示系統(tǒng)調(diào)用表基地址;N為被攔截系統(tǒng)調(diào)用的系統(tǒng)調(diào)用號(hào);AddrSize表示地址寬度;ErrBaseAddr為非法地址基值,如本文針對(duì)32位虛擬機(jī)取0xFFFFFFFF。對(duì)于不同的系統(tǒng)調(diào)用表項(xiàng),由于ErrBaseAddr取值相同而N不同,可以保證填充的非法地址的唯一性。
2.2.3 虛擬機(jī)文件完整性保護(hù)方法
為了保護(hù)虛擬機(jī)敏感文件的完整性,KVM中分析處理模塊對(duì)虛擬機(jī)當(dāng)前進(jìn)程操作敏感文件的行為進(jìn)行分析與處理,流程如下:
1)分析處理模塊接收捕獲模塊的參數(shù)信息后,讀取策略庫(kù)中的監(jiān)控策略,判斷當(dāng)前進(jìn)程對(duì)敏感文件的訪問(wèn)權(quán)限。
2)若訪問(wèn)權(quán)限為允許,則直接放行;若訪問(wèn)權(quán)限為禁止,則將虛擬機(jī)EAX、EBX、ECX等寄存器修改為非法值,并將此非法操作信息寫入日志文件。
3)取出策略庫(kù)中對(duì)應(yīng)的虛擬機(jī)系統(tǒng)調(diào)用處理程序原地址,裝入虛擬機(jī)EIP寄存器,通過(guò)VMEntry恢復(fù)虛擬機(jī)正常執(zhí)行流程。
OFM截獲系統(tǒng)調(diào)用分析與處理時(shí)刻,是虛擬機(jī)中進(jìn)程利用調(diào)用門進(jìn)入內(nèi)核空間時(shí)刻,此時(shí)并未對(duì)文件進(jìn)行實(shí)際訪問(wèn)。因此,通過(guò)修改虛擬機(jī)寄存器中系統(tǒng)調(diào)用的參數(shù),可以使虛擬機(jī)系統(tǒng)調(diào)用函數(shù)直接返回一個(gè)錯(cuò)誤值,避免敏感文件的非法操作及敏感文件內(nèi)容的泄露。
2.3 監(jiān)控策略
在原型系統(tǒng)OFM中,策略庫(kù)由宿主機(jī)進(jìn)行維護(hù)。策略庫(kù)可以以數(shù)據(jù)庫(kù)、文件等形式存在,存儲(chǔ)虛擬機(jī)敏感文件監(jiān)控策略。同時(shí),可以根據(jù)實(shí)際需要,預(yù)留配置和管理接口,具有權(quán)限的管理員可通過(guò)接口動(dòng)態(tài)實(shí)時(shí)地更新策略,并且更新完成后立即生效,無(wú)需重啟云平臺(tái)或者虛擬機(jī)。
本文給出虛擬機(jī)敏感文件監(jiān)控策略的一種參考格式:
SysCallNumProNameSenFilNameSenFilOpOpAuth
其中:SysCallNum表示虛擬機(jī)被攔截系統(tǒng)調(diào)用對(duì)應(yīng)的系統(tǒng)調(diào)用號(hào);ProName表示虛擬機(jī)進(jìn)程名;SenFilName表示虛擬機(jī)中的敏感文件名;SenFilOp表示虛擬機(jī)中進(jìn)程對(duì)敏感文件的操作;OpAuth表示虛擬機(jī)進(jìn)程對(duì)敏感文件操作的權(quán)限,由策略制定者規(guī)定,如允許、禁止等。
本章描述原型系統(tǒng)OFM的功能測(cè)試和性能測(cè)試結(jié)果。如表1,本文攔截了虛擬機(jī)中文件操作相關(guān)的系統(tǒng)調(diào)用,監(jiān)控虛擬機(jī)進(jìn)程對(duì)敏感文件的操作,并建立了支持不同系統(tǒng)調(diào)用指令的虛擬機(jī)進(jìn)行測(cè)試,驗(yàn)證虛擬機(jī)文件完整性監(jiān)控功能。
表1 OFM截獲系統(tǒng)調(diào)用類型
實(shí)驗(yàn)環(huán)境:主機(jī)硬件配置為戴爾OptiPlex9020;處理器為IntelCorei5-4570 @1.86GHz,4核;內(nèi)存為12GBDDR3 1 600MHz;宿主機(jī)為CentOS6.5,內(nèi)核版本3.10.1,KVM版本3.10.1,QEMU版本1.7.1;虛擬機(jī)性能測(cè)試工具為unixbench-5.1.2。
3.1 功能測(cè)試
以支持sysenter指令的32位Linux虛擬機(jī)為例,測(cè)試原型系統(tǒng)OFM的功能。虛擬機(jī)配置:操作系統(tǒng)CentOS6.5,內(nèi)核版本為2.6.32,內(nèi)存1GB,VCPU數(shù)量1個(gè)。實(shí)驗(yàn)的目的是為了驗(yàn)證OFM是否可以保護(hù)虛擬機(jī)敏感文件不受非法破壞,過(guò)程如下。
在虛擬機(jī)的根目錄下創(chuàng)建文本文件test.txt作為被保護(hù)的測(cè)試文件。通過(guò)監(jiān)控策略配置端口,在策略庫(kù)中添加控制策略如下:
1)5 test1 /test.txt open allow:虛擬機(jī)進(jìn)程test1對(duì)虛擬機(jī)文件/test.txt的open操作是允許的;
2)5 test2 /test.txt open forbid:表示虛擬機(jī)進(jìn)程test2對(duì)虛擬機(jī)文件/test.txt的open操作是禁止的。
為驗(yàn)證策略的有效性,虛擬機(jī)進(jìn)程test1與test2的可執(zhí)行文件由同一源程序生成。測(cè)試程序如下:
#include
}
printf("YesFile ");
return0;
}
為方便測(cè)試結(jié)果顯示,OFM將虛擬機(jī)測(cè)試過(guò)程顯示在虛擬機(jī)終端,虛擬機(jī)進(jìn)程對(duì)敏感文件訪問(wèn)信息顯示在宿主機(jī)終端,測(cè)試結(jié)果如圖3和圖4。
根據(jù)圖3中虛擬機(jī)測(cè)試過(guò)程所示,當(dāng)使用源文件test.c生成可行性文件test1和test2后運(yùn)行,進(jìn)程test1可以對(duì)文件/test.txt進(jìn)行正常訪問(wèn),而進(jìn)程test2則無(wú)法找到該文件,其原因是OFM在KVM中捕獲兩個(gè)進(jìn)程對(duì)文件的訪問(wèn),并根據(jù)監(jiān)控策略,分別進(jìn)行了處理,捕獲內(nèi)容如圖4所示。通過(guò)實(shí)驗(yàn)結(jié)果可以看到,OFM可以有效監(jiān)控虛擬機(jī)進(jìn)程對(duì)敏感文件的操作信息,同時(shí)對(duì)虛擬機(jī)敏感文件的非法操作可有效禁止,保護(hù)了虛擬機(jī)文件完整性。
圖3 虛擬機(jī)測(cè)試過(guò)程
圖4 宿主機(jī)監(jiān)控信息
3.2 性能測(cè)試
本文分別建立sysenter、int和syscall指令的Linux虛擬機(jī),并使用Unix類操作系統(tǒng)微觀基準(zhǔn)測(cè)試工具Unixbench測(cè)試OFM的性能,評(píng)分越高代表性能越好。測(cè)試內(nèi)容主要包括以下幾個(gè)方面:CPU性能測(cè)試、磁盤I/O性能測(cè)試、系統(tǒng)調(diào)用性能測(cè)試和shell測(cè)試。
如圖5~7所示,OFM能夠在支持sysenter、int和syscall指令的虛擬機(jī)正常工作,說(shuō)明OFM具有較好的兼容性。在CPU性能測(cè)試方面,浮點(diǎn)數(shù)操作項(xiàng)測(cè)試浮點(diǎn)數(shù)操作速度,其性能幾乎不變;在磁盤I/O性能測(cè)試方面,文件拷貝項(xiàng)性能下降明顯,主要原因是OFM攔截了讀寫文件相關(guān)的系統(tǒng)調(diào)用,并在KVM中引入了額外的處理流程,而在極端的測(cè)試環(huán)境下文件操作是極為頻繁的;在系統(tǒng)調(diào)用性能測(cè)試中,Excel執(zhí)行和系統(tǒng)調(diào)用項(xiàng)分別利用每秒鐘Execl系統(tǒng)調(diào)用和getpid系統(tǒng)調(diào)用的執(zhí)行次數(shù)測(cè)試系統(tǒng)調(diào)用性能,兩個(gè)系統(tǒng)調(diào)用均未被OFM攔截,但Excel系統(tǒng)調(diào)用涉及到文件操作,所以Excel執(zhí)行項(xiàng)會(huì)出現(xiàn)少量的性能損耗,而系統(tǒng)調(diào)用項(xiàng)性能基本不變;最后,Unixbench的shell腳本項(xiàng)可以測(cè)試并發(fā)執(zhí)行若干腳本模擬真實(shí)運(yùn)行環(huán)境,其性能消耗很小。
圖5 支持sysenter指令的虛擬機(jī)性能測(cè)試
文獻(xiàn)[14]通過(guò)改變系統(tǒng)調(diào)用陷入指令正常運(yùn)行條件,可在VMM中捕獲并分析虛擬機(jī)系統(tǒng)調(diào)用行為。由于其捕獲原理相同,因此僅以攔截sysenter指令為例,與OFM對(duì)比攔截虛擬機(jī)文件操作相關(guān)系統(tǒng)調(diào)用的性能。結(jié)果如圖8所示,在CPU性能測(cè)試方面,浮點(diǎn)數(shù)操作項(xiàng)因不涉及系統(tǒng)調(diào)用過(guò)程,性能沒(méi)有明顯變化。在磁盤I/O性能測(cè)試方面,文件拷貝項(xiàng)調(diào)用了與文件操作相關(guān)的系統(tǒng)調(diào)用,因此兩種方法性能消耗明顯,但是由于基于sysenter指令的系統(tǒng)調(diào)用攔截方法默認(rèn)攔截所有系統(tǒng)調(diào)用,因此性能消耗更為嚴(yán)重。在系統(tǒng)調(diào)用性能測(cè)試中,Excel執(zhí)行項(xiàng)通過(guò)Excel系統(tǒng)調(diào)用完成測(cè)試,涉及到部分文件操作,而系統(tǒng)調(diào)用項(xiàng)則單純利用getpid系統(tǒng)調(diào)用測(cè)試,通過(guò)對(duì)比可以看出,本文方法只會(huì)產(chǎn)生少量的性能消耗,而攔截sysenter指令方法由于攔截全部系統(tǒng)調(diào)用,因此性能損耗更高;最后,在shell腳本測(cè)試項(xiàng)中,兩種方法性能損耗都在合理范圍內(nèi),但OFM更小。通過(guò)對(duì)比可以看出,OFM相比基于指令的虛擬機(jī)文件操作相關(guān)系統(tǒng)調(diào)用攔截分析方法,在提升靈活性的同時(shí),也降低了虛擬機(jī)中不必要系統(tǒng)調(diào)用陷入帶來(lái)的額外的性能損失。
圖6 支持int指令的虛擬機(jī)性能測(cè)試
圖7 支持syscall指令的虛擬機(jī)性能測(cè)試
圖8 性能對(duì)比結(jié)果
本文通過(guò)在KVM中修改虛擬機(jī)系統(tǒng)調(diào)用表,截獲了虛擬機(jī)中與文件操作有關(guān)的系統(tǒng)調(diào)用,實(shí)現(xiàn)了對(duì)虛擬機(jī)文件完整性的監(jiān)控。與現(xiàn)有方法相比,本文方法具有更好的兼容性、靈活性,且性能損耗更低。但本文方法也存在如下不足:1)需要人工獲取虛擬機(jī)系統(tǒng)調(diào)用表的位置;2)策略定義不夠完善,處理過(guò)程也較為單一。下一步的研究工作就是針對(duì)以上不足進(jìn)行研究,提高獲取虛擬機(jī)內(nèi)部數(shù)據(jù)的透明性,并對(duì)異常進(jìn)程進(jìn)行限制。
)
[1] 王惠蒞,楊晨,楊建軍.美國(guó)NIST云計(jì)算安全標(biāo)準(zhǔn)跟蹤及研究[J].信息技術(shù)與標(biāo)準(zhǔn)化,2012(6):51-54.(WANGHL,YANGC,YANGJJ.ResearchoncloudscomputingsecuritystandardsofNIST[J].InformationTechnology&Standardization, 2012(6): 51-54.
[2] 張?zhí)N菁, 劉威.2015 年7月計(jì)算機(jī)病毒疫情分析[J].信息網(wǎng)絡(luò)安全, 2015(9): 292-292.(ZHANGYJ,LIUW.AnalysisofcomputervirusepidemicsituationinJuly, 2015 [J].NetinfoSecurity, 2015(9): 292-292.)
[3]KIMGH,SPAFFORDEH.Thedesignandimplementationoftripwire:afilesystemintegritychecker[C]//CCS’94:Proceedingsofthe2ndACMConferenceonComputerandCommunicationsSecurity.NewYork:ACM, 1999: 18-29.
[4] PATIL S, KASHYAP A, SIVATHANU G, et al.FS: an in-kernel integrity checker and intrusion detection file system[C]// LISA ’04: Proceedings of the 18th USENIX Conference on System Administration.Berkeley, CA: USENIX Association, 2004: 67-78.
[5] QUYNH N A, TAKEFUJI Y.A novel approach for a file-system integrity monitor tool of Xen virtual machine [C]// ASIACCS ’07: Proceedings of the 2nd ACM Symposium on Information, Computer and Communications Security.New York: ACM, 2007:194-202.
[6] 王照羽.基于Xen硬件虛擬化的磁盤文件操作監(jiān)控系統(tǒng)[D].西安:西安電子科技大學(xué),2013:5-7.(WANG Z Y.Monitoring system for disk file operations in Xen Full virtualization [J].Xi’an: Xidian University, 2013: 5-7.)
[7] 王鑄,黃濤,文莎.基于虛擬機(jī)的文件完整性監(jiān)控系統(tǒng)[J].中州大學(xué)學(xué)報(bào), 2009, 26(5):121-123.(WANG Z, HUANG T, WEN S.A file integrity monitoring system based on virtualization[J].Journal of Zhongzhou University, 2009, 26(5):121-123.)
[8] 王婷婷.基于硬件輔助虛擬化的虛擬機(jī)監(jiān)控研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2015:3-4.(WANG T T.Research and implementation of virtual machine based on hardware-assisted virtualization [J].Beijing: Beijing University of Posts and Telecommunications, 2015: 3-4.)
[9] JIN H, XIANG G, ZOU D, et al.A guest-transparent file integrity monitoring method in virtualization environment [J].Computers & Mathematics with Applications, 2010, 60(2):256-266.
[10] PAYNE B D, DE A CARBONE M D P, LEE W.Secure and flexible monitoring of virtual machines[C]// ACSAC 2007: Proceedings of the Twenty-Third Annual Computer Security Applications Conference.Washington, DC: IEEE Computer Society, 2007: 385-397.
[11] HABIB I.Virtualization with KVM [J].Linux Journal, 2008(166): Article No.8.
[12] Intel.Intel 64 and IA-32 architectures software developer manuals[EB/OL].[2015- 03- 20].https://software.intel.com/en-us/articles/intel-sdm.
[13] AMD.AMD64 architecture programmer’s manual volume 2: system programming [EB/OL].[2015- 03- 20].http://developer.amd.com/resources/developer-guides-manuals/.
[14] 熊海泉,劉志勇,徐衛(wèi)志,等.VMM中Guest OS非陷入系統(tǒng)調(diào)用指令截獲與識(shí)別[J].計(jì)算機(jī)研究與發(fā)展,2014,51(10):2348-2359.(XIONG H Q, LIU Z Y,XU W Z, et al.Interception and identification of guest OS non-trapping system call instruction within VMM [J].Journal of Computer Research and Development, 2014, 51(10): 2348-2359.)
This work is partially supported by the National Natural Science Foundation of China (61272447).
ZHAO Cheng, born in 1991, M.S.candidate.His research interests include cloud computing, virtualization technology.
CHEN Xingshu, born in 1969, Ph.D., professor.Her research interests include cloud computing, big data, information security, trusted computing.
JIN Xin, born in 1976, Ph.D.candidate.His research interests include cloud computing, virtualization technology, trusted computing.
Virtual machine file integrity monitoring based on hardware virtualization
ZHAO Cheng, CHEN Xingshu*, JIN Xin
(CollegeofComputerScience,SichuanUniversity,ChengduSichuan610065,China)
In order to protect the integrity of the Virtual Machine (VM) sensitive files and make up for the shortcomings such as high performance overhead, low compatibility and poor flexibility in out-of-box monitoring based on the instruction monitoring methods, OFM (Out-of-box File Monitoring) based on hardware virtualization was proposed.In OFM, Kernel-based Virtual Machine (KVM) was used as the virtual machine monitor to dynamically configure sensitive file access control strategy in real-time; in addition, OFM could modify the call table entries related to file operations of virtual machine system to determine the legitimacy of the VM process operation files, and deal with the illegal processes.Unixbench was deployed in a virtual machine to test the performance of OFM.The experimental results demonstrate that OFM outperforms to instruction monitoring methods in file monitoring and has no affect on other types of system calls for virtual machines.Meanwhile, OFM can effectively monitor the integrity of the virtual machine files and provide better compatibility, flexibility and lower performance losses.
sensitive file; integrity; system call; hardware virtualization; Kernel-based Virtual Machine (KVM)
2016- 08- 15;
2016- 09- 02。 基金項(xiàng)目:國(guó)家自然科學(xué)基金資助項(xiàng)目(61272447)。
趙成(1991—),男,河北固安人,碩士研究生,主要研究方向:云計(jì)算、虛擬化; 陳興蜀(1969—),女,四川自貢人,教授,博士,主要研究方向:云計(jì)算、大數(shù)據(jù)、信息安全、可信計(jì)算; 金鑫(1976—),男,遼寧營(yíng)口人,博士研究生,主要研究方向:云計(jì)算、虛擬化、可信計(jì)算。
1001- 9081(2017)02- 0388- 04
10.11772/j.issn.1001- 9081.2017.02.0388
TP
A