干貨分享-針對硬件虛擬化的虛擬機過程代碼分頁測量方法
來源:原創(chuàng) 時間:2018-02-26 瀏覽:0 次計算機操作系統(tǒng)的敏感數(shù)據(jù)、應用程序的破壞,甚至是對主機進程代碼的修改,以掩蓋它們的存在,嚴重威脅著關鍵業(yè)務的穩(wěn)定性,而云虛擬化技術是云計算平臺的核心技術之一。隨著云計算平臺信息的安全。【3】指出云服務提供商必須大量應用自己的安全服務,而云計算平臺的安全性成為人們關注的焦點。因此,在虛擬機中,云環(huán)境中的關鍵業(yè)務需要長期穩(wěn)定運行,度量用戶進程代碼的完整性,通過惡意計算來檢測它是否發(fā)生了變化,并提供高質量的服務。安全性和可用性是確保服務質量的關鍵。

由國家標準協(xié)會和其他重要角色發(fā)布的“完全虛擬化安全指南”指出傳統(tǒng)的基于主機的監(jiān)控系統(tǒng)是由惡意軟件托管的。安全威脅也適用于云計算環(huán)境中的虛擬機。很容易被繞過或攻擊,如hooka141,等虛擬業(yè)務程序部署在虛擬機上,一方面,虛擬機操作系統(tǒng)的存儲技術的發(fā)展不僅提高了資源的利用率,但也帶來了一些缺陷,如代碼的漏洞或不合理的內部配置的安全性研究。另一方面,商業(yè)項目有了新的想法:在參考文獻[5-8],也有在虛擬體代碼的安全漏洞。
指出,等等,如能偷獨立,強大的控制和高特權級,等等。在虛擬機外部,虛擬機內?。╒MI)9用于獲取虛擬機的內部信息,該虛擬機可以監(jiān)視虛擬機中的進程。解決遇到的問題在傳統(tǒng)的基于主機的檢測過程,完整性驗證過程一般由兩部分組成:測量部分負責采集信息系統(tǒng)內發(fā)送給驗證部分,和驗證的一部分,負責保存原有的基礎價值。并與接收的測量信息進行比較,驗證其完整性。
在云環(huán)境下虛擬機系統(tǒng)的測量方法中,根據(jù)測量部分的部署位置,可分為兩類:(1)在虛擬機中部署測量部分,并將測量部分部署到虛擬機管理系統(tǒng)中。第一種方法通過捕獲虛擬機內的進程行為獲取系統(tǒng)信息并將其發(fā)送到驗證部分。
這種方法可以獲得豐富的虛擬機系統(tǒng)信息,但主要有以下幾個方面的原因:1)依賴日標準虛擬機的版本,使得虛擬機內部的惡意軟件攻擊的脆弱性不夠普遍,這就要求Hypervisor提供額外的保護措施。第二種方法是完成在虛擬機之外獲取信息風險證書的過程,例如參考[12-14],其中Ivin 2通過Xen提供的EControl和Xenstore接口在虛擬機之外執(zhí)行地址轉換和內容定位。將虛擬機代碼逐頁復制到特權用戶可訪問的存儲空間,以進行完整性驗證。該方法不需要修改虛擬機,克服了在虛擬機中部署測量部分的缺點。但是它也面臨著:VMM層和虛擬機之間語義鴻溝的挑戰(zhàn)。
2)現(xiàn)代操作系統(tǒng)按需分配物理內存。在某種程度上,進程代碼的一部分被加載到物理內存中。由于其物理地址空間不一定是連續(xù)的,因此很難在WMM層中獲得完整的虛擬機進程代碼。例如,VITDay需要確保虛擬機進程代碼加載到內存中,當代碼段非常大時,此實現(xiàn)將給上述問題帶來嚴重的內存消耗。
提出了一種基于硬件虛擬化的虛擬機進程代碼分頁測量方法。將虛擬機尋呼測量系統(tǒng)KⅤM5作為虛擬機監(jiān)控器,利用VMM層的虛擬路徑行為作為測量過程的觸發(fā)點,實現(xiàn)對運行過程的動態(tài)測量。在相對地址偏移法的基礎上,對虛擬機中的進程語義進行重構,以解決不同版本虛擬機之間的語義差異,并提出了一種基于頁面的度量方法來驗證虛擬機外部進程代碼段的完整性。驗證VMM的完整性,不需要修理。
KVM是一個基于硬件輔助虛擬化的Linux內核模塊.。它的實現(xiàn)需要Intel VT(Virtualization Technology)或AMD SVM(Secure VirtuMachine)技術的支持才能在根模式下運行。管理虛擬機內存和CPU,處理由異?;驁?zhí)行特權指令引起的VM退出事件。
同時,KVM采用MCS 2(虛擬機控制結構2)在主機與虛擬機切換時保存硬件上下文環(huán)境,并能指定引發(fā)ⅤM退出的事件,ⅤMPM是基于虛擬機中的系統(tǒng)事件。主動觸發(fā)虛擬機進程代碼片段的度量VMPMS@有三個模塊:捕獲模塊、進程代碼段。捕獲模塊負責捕獲虛擬機進程,采用系統(tǒng)調用事件c獲取虛擬機進程信息。例如,進程名稱、開始地址和結束地址等。根據(jù)語義重構模塊傳遞的過程信息,根據(jù)虛擬機的物理頁面大小對進程代碼段進行劃分。度量已加載到物理內存中的代碼頁,根據(jù)基值庫中的基值驗證其完整性,將比較結果寫入Person日志;對于尚未加載物理內存的代碼頁,暫時忽略其度量,直到在測量之前將其加載到物理內存中。
基值庫保存虛擬機進程代碼中每頁的度量值,可以以文件、數(shù)據(jù)庫等形式存在。日志用于記錄度量模塊的代碼頁度量信息和基值庫中的基值信息。P2 VMPMS實現(xiàn)了2.1捕獲模塊捕獲模塊來捕獲虛擬機中的系統(tǒng)事件。根據(jù)虛擬機寄存器和虛擬機引起的其他狀態(tài)的變化,得到底層語義。系統(tǒng)事件是虛擬機系統(tǒng)中可能導致虛擬機退出的進程行為。
本文對虛擬機中進程的系統(tǒng)調用進行了截獲。在X86架構下,當操作系統(tǒng)中的進程需要進行系統(tǒng)調用時,首先將系統(tǒng)調用號保存到EAX寄存器中。然后將用戶狀態(tài)轉換為內核狀態(tài),并通過系統(tǒng)調用保存進程上下文。
以32位操作系統(tǒng)為例,當它使用sysenter指令執(zhí)行系統(tǒng)調用,系統(tǒng)讀取存儲在msr_la32 sysenter EIP登記的系統(tǒng)調用入口函數(shù)的地址。據(jù)ⅤMPMS,系統(tǒng)調用攔截機制的基礎上,msra32 sysenter EIP登記實施。啟動虛擬機加載內核鏡像后,vmpms初始化msr_ia32 sysenter EIP登記價值在VMM層非法地址。當原始地址被保存時,當虛擬機進程執(zhí)行系統(tǒng)調用時,由于非法地址訪問,將拋出頁錯誤異常,并且VM退出將落入mm層以觸發(fā)其處理流程。如果由于頁錯誤的異常而退出,則它確定當前虛擬機的“企業(yè)界”寄存器的值是否是一個非法的初始化地址,如果是的話,虛擬機退出,因為系統(tǒng)調用被攔截,然后啟動測量當前進程的進程。
在完成測量之后,系統(tǒng)調用入口函數(shù)的截取地址被加載到虛擬機。執(zhí)行ⅤM進入恢復虛擬機系統(tǒng)調用正常執(zhí)行流程。對于不需要處理的頁面故障,將其注入到虛擬機中,按照原進程正常執(zhí)行,避免了額外的性能損失。在KVM虛擬機平臺的系統(tǒng)調用攔截原理。默認情況下,虛擬機內產(chǎn)生頁故障異常是由虛擬機內核本身的處理,和VM退出陷阱不生成到公里,所以在MCS的Excel _ bitmaf場需要設置。
虛擬機的頁面故障可以拋出v退出。英特爾正式定義頁面錯誤。頁面故障有五種:位異常、讀寫異常、模式異常,硬件錯誤控制單元將生成硬件錯誤代碼,并在處理頁面丟失異常之前將其壓入內核狀態(tài)堆棧。造成異常的原因是不同的,硬件錯誤代碼是不同的。它存儲在頁錯誤錯誤代碼字段中。
如果僅在PFEC硬件錯誤代碼滿足公式1的關系,pwgeault生成的虛擬機將導致我出口被設置apfec PFEC面膜= PFEC而maskback pfecmask設置)和頁面錯誤代碼頁面錯誤代碼匹配pfecec_兩場比賽_比賽只有參考發(fā)生在虛擬機。異常產(chǎn)生的原因陷入Ⅴ毫米,過濾2。對于缺頁異常2語義重構VMM位于虛擬機底部已獲得在目標虛擬機的存儲二進制數(shù)據(jù)的更高的權限。然而,兩者之間存在語義鴻溝,而MM們也不知道這些數(shù)據(jù)的具體含義。語義重構模塊利用捕獲的虛擬機底層語義和內核數(shù)據(jù)結構獲取高級語義。
[ 23 ] VMON將內核虛擬機的操作系統(tǒng)和硬件虛擬化技術的源代碼。虛擬機過程的許多版本可重構的語義信息,但VMON是在訪問虛擬機內核版本或內核源代碼的情況下的限制使用。本文提出了一種基于相對地址偏移的語義重構方法,利用測試模塊獲得了進程描述符與其內部屬性之間的相對地址偏移量。在虛擬機上的進程描述符的信息可以得到靈活和VMON改進方法。
在虛擬機的測試模塊,因為進程描述符元素連續(xù)存儲在內存中,相對地址偏移量元素之間保持不變,所以訪問進程描述符地址之間的差異是其內在屬性的相對地址偏移地址,這種方法只需要運行一次獲得相關的偏移,是普遍的,可與各種虛擬機內核版本兼容。為了獲得PID中的進程描述符屬性,舉例來說,編寫任務狀態(tài)段的原理。Linux操作系統(tǒng)為每個CPU(任務statesegment,TSS),(任務登記,TR任務登記)的保存地址。
操作系統(tǒng)的進程調度,內核將內核堆棧存儲在csp0當前進程在TSS域指針。TR虛擬機登記價值,收購獲得的TS,esp0,是當前進程的內核棧頂單元地址和客人的ESP線程和線程信息計算第一地址結構、任務字段指向的進程描述符;獲取進程的描述符地址,結合偏移測試模塊出發(fā),通過公式(2)可以用PID地址的物理性質得到,訪問地址和內容任務地址+偏移memaddr3分頁操作系統(tǒng)動態(tài)測量的其他屬性,使用頁表來完成虛擬地址到物理地址的映射和轉換過程。
在開放式分頁機制中,操作系統(tǒng)通過“按需加載”的方法來對物理頁進行物理內存的分配。在物理內存資源,操作系統(tǒng)的頁面到磁盤的物理內容的書面部分,因此在運行一個滾動力矩的過程中,所有的代碼頁的過程并不全是載人在物理內存中,2在一個磁盤文件或內存交換虛擬化在國內和國外,也可能存在,客戶端操作系統(tǒng)的虛擬機的用戶看到的物理地址空間,為了正確地訪問內存的客戶端虛擬地址(虛擬地址,GVA)到主機物理T(主機物理地址,HPA),映射過程gva物理地址到客戶端顯示(客戶機物理地址,GPA)轉換表是由客戶端頁面完成,支持擴展頁表(擴展PAG電子表,EPT)機制,GPA虛擬主機地址(主機虛擬machineh V)的線性映射是一對一的,蘇所在頁表來完成轉換的HVA HPA,可見在虛擬機連續(xù)存儲在內存中的地址映射到主機不一定是連續(xù)的。
如果在一個訪問虛擬機的完整代碼段的WMM層量需要在內存中,不在內存中獲取。一個代碼頁,并以“放在一起”的方式,是非常復雜和龐大的內存消耗的基礎上,本文提出的方法來衡量完整的分頁過程中的虛擬機代碼驗證在mm層。
產(chǎn)生頁面異常故障后重構KVM語義的當前運行的程序代碼的起始地址和結束地址vmpms虛擬機系統(tǒng)調用攔截過程中,虛擬機的物理頁大小的單位,將順序代碼段中的代碼頁按照度量操作。對于一個給定的KVM的代碼頁,首先確定它是否被加載到物理內存,如果使用SHA-1哈希算法測量的操作,并將測量圖書館價值的基頁與基準值進行比較,并將結果寫入一個日志文件;如果代碼頁中沒有裝入物理內存,這是錯誤的機器尚未執(zhí)行的代碼頁的時間量,然后忽略的措施,再次被加載到內存的數(shù)量。V MPMS捕捉過程中系統(tǒng)調用的觸發(fā)點測量過程中測量的時間和執(zhí)行時間,實現(xiàn)KVM虛擬機代碼的過程的動態(tài)測量。
基本值是進程在純狀態(tài)下獲取的代碼段頁面的度量,并存儲在基本值庫中,比較虛擬機進程代碼段的動態(tài)度量,驗證其完整性。在本文中,我們使用的測試在第一次當虛擬機程序代碼頁被加載到內存中Ⅴ毫米層動態(tài)完整的基值圖書館建立的基礎價值。使用的Ⅴ毫米層強大的隔離和高特權升級基礎價值庫的安全性分析,驗證了采用3 vmpms衡量虛擬機進程的代碼完整性。3基本值庫的測試與分析。對目標進程和虛擬機操作系統(tǒng)的性能消耗進行了評估,并與現(xiàn)有的部分完整性度量方案進行了比較。
測試環(huán)境如下:主機操作系統(tǒng)是64位ubuntu-12.04,內核版本。The CPU version of the host is Intel Core i3-4160, the main frequency is 3.60 GHz, physical memory is 4 GB, and the hardware aided virtualization is supported. 虛擬機是一個32位centos6.5操作系統(tǒng)。Linux - 1功能測試函數(shù)測試的內核版本分為兩個步驟:1)通過修改源代碼來模擬正常的虛擬機進程代碼段,以模擬對進程的攻擊,并測量修改后的進程代碼段。為了驗證其完整性被打破vmpms可以用來衡量所有的虛擬機的流程。
為了說明,本文有一個版本的Apache服務器軟件的作用在虛擬機中。它作為一種測量對象。Apache服務過程使用sysenter指令執(zhí)行系統(tǒng)調用引起頁故障異常陷入KVM KVM,然后得到它的名字和代碼段的地址,為了解決虛擬機的過程是不連續(xù)的和動態(tài)交換出物理內存的問題,這是很難衡量的WMM層虛擬機過程完整的代碼段。在本文中,尋呼度量驗證透明,在VMM層實時運行進程的代碼段在虛擬機的完整性。
此外,還實現(xiàn)了基于相對地址偏移的虛擬機進程信息獲取方法。實驗結果表明,本文實現(xiàn)ⅤMPMS可以有效地驗證測量過程的代碼被篡改的VMM層。在性能方面,性能損失所帶來的vmpms對測量過程和虛擬機系統(tǒng)可以在范圍內。同時,本文也存在一些不足:1)本文以系統(tǒng)調用行為更多的作為測量過程的觸發(fā)點,利用測量時間機器和過程行為實現(xiàn)虛擬機過程的動態(tài)測量。
然而,這種方法會帶來一定的性能損失。本文針對未涉及Windows的linux虛擬機操作系統(tǒng)進行了研究。下一步將減少而實現(xiàn)代碼完整性驗證vmpms引起的性能損失;進一步提高MPM通用性是不同的虛擬機操作系統(tǒng)。

