亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于Xen虛擬化的內(nèi)核完整性檢測方法

文檔序號:6538600閱讀:246來源:國知局
基于Xen虛擬化的內(nèi)核完整性檢測方法【專利摘要】一種基于Xen虛擬化的內(nèi)核完整性檢測方法,利用內(nèi)核完整性檢測系統(tǒng)對運(yùn)行在Xen虛擬化平臺上的虛擬機(jī)操作系統(tǒng)進(jìn)行內(nèi)核完整性檢測。系統(tǒng)在Dom0設(shè)置內(nèi)存映射、信息獲取和安全檢測三個部分,內(nèi)存映射部分提供獲取DomU中硬件層面的機(jī)器字節(jié)數(shù)據(jù)接口,信息獲取部分部署通過內(nèi)存映射部分提供的接口獲取DomU中硬件層面的機(jī)器字節(jié)數(shù)據(jù),根據(jù)DomU中的操作系統(tǒng)版本將硬件層面的機(jī)器字節(jié)數(shù)據(jù)轉(zhuǎn)化成操作系統(tǒng)級別的信息。安全檢測部分以輪詢方式調(diào)用信息獲取部分獲得DomU中操作系統(tǒng)內(nèi)核關(guān)鍵數(shù)據(jù),并根據(jù)系統(tǒng)安全策略,判斷DomU中操作系統(tǒng)內(nèi)核的完整性是否受到破壞。本發(fā)明系統(tǒng)將檢測系統(tǒng)部署在被監(jiān)控系統(tǒng)外部,在保證檢測系統(tǒng)安全的同時對被監(jiān)控系統(tǒng)的內(nèi)核進(jìn)行完整性檢測?!緦@f明】基于Xen虛擬化的內(nèi)核完整性檢測方法【
技術(shù)領(lǐng)域
】[0001]本發(fā)明涉及計算機(jī)虛擬化【
技術(shù)領(lǐng)域
】,進(jìn)一步涉及計算機(jī)虛擬化以及安全領(lǐng)域。是一種基于Xen虛擬化的內(nèi)核完整性檢測檢測方法,用于客戶操作系統(tǒng)為Linux或者類Unix操作系統(tǒng)的Xen虛擬化平臺上,實(shí)現(xiàn)在管理域DomO中對虛擬化平臺上的客戶域DomU內(nèi)的操作系統(tǒng)的內(nèi)核的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)與代碼進(jìn)行完整性檢測,為運(yùn)行在虛擬化平臺上的操作系統(tǒng)提供安全保障?!?br>背景技術(shù)
】[0002]操作系統(tǒng)安全性是計算機(jī)安全不可或缺的一部分。內(nèi)核,是一個操作系統(tǒng)的核心,是基于硬件的第一層軟件擴(kuò)充,提供操作系統(tǒng)的最基本的功能,是操作系統(tǒng)工作的基礎(chǔ)。[0003]近幾年來,隨著黑客技術(shù)特別是Rootkit技術(shù)的發(fā)展,攻擊者已經(jīng)把觸角伸入到了操作系統(tǒng)的內(nèi)核。操作系統(tǒng)的內(nèi)核代碼面臨著嚴(yán)重的威脅。因?yàn)閮?nèi)核具有最高特權(quán),Rootkit運(yùn)行在內(nèi)核態(tài),可以篡改內(nèi)核數(shù)據(jù)結(jié)構(gòu)、更改內(nèi)核控制流,破壞內(nèi)核的完整性,對系統(tǒng)安全構(gòu)成了巨大的威脅。檢測內(nèi)核完整性是否受到破壞、保護(hù)內(nèi)核完整性是檢測一個系統(tǒng)是否安全、構(gòu)建安全系統(tǒng)的基礎(chǔ)。[0004]針對操作系統(tǒng)內(nèi)核的攻擊通常的方法是篡改關(guān)鍵數(shù)據(jù)和改變控制流?,F(xiàn)有的內(nèi)核完整性檢測、保護(hù)的技術(shù)大致可以分為兩類:A、保障、檢測數(shù)據(jù)完整性,確保影響系統(tǒng)功能的關(guān)鍵數(shù)據(jù)對象只能由指定代碼在特定情況下修改;B、保障、檢測控制流完整性,保護(hù)和監(jiān)控影響代碼執(zhí)行序列的所有因素。利用上述技術(shù)實(shí)現(xiàn)的完整性保護(hù)、檢測工具,典型的有checkidt、kem-check等,它們均存在一個不足:內(nèi)核完整性檢測、保護(hù)的安全軟件與被檢測系統(tǒng)在同一地址空間,目前流行的Rootkit等惡意軟件運(yùn)行在系統(tǒng)內(nèi)核態(tài),與安全軟件處于同一特權(quán)級別,與惡意軟件相比安全軟件沒有任何的特權(quán)優(yōu)勢。Rootkit等惡意軟件可以繞過安全軟件的檢測機(jī)制、甚至破壞安全軟件。[0005]近年來,虛擬化技術(shù)成為計算機(jī)系統(tǒng)結(jié)構(gòu)的發(fā)展趨勢,虛擬機(jī)管理器具有更高的權(quán)限、更小的可信計算基、更好的隔離性。由于虛擬化架構(gòu)具有上述優(yōu)勢,基于虛擬化架構(gòu)構(gòu)建的安全工具能夠有效地監(jiān)控虛擬機(jī)內(nèi)部狀態(tài),同時抵御被監(jiān)控系統(tǒng)中可能發(fā)生的攻擊,基于虛擬化架構(gòu)增強(qiáng)安全工具的安全性成為安全研究的趨勢?!?br/>發(fā)明內(nèi)容】[0006]本發(fā)明在分析總結(jié)現(xiàn)有的內(nèi)核完整性檢測技術(shù)的不足的基礎(chǔ)上,結(jié)合虛擬化技術(shù)、提供了一種新的基于Xen虛擬化的內(nèi)核完整性檢測方法。本發(fā)明利用虛擬化架構(gòu)的特性,將內(nèi)核完整性檢測系統(tǒng)部署在被監(jiān)控虛擬機(jī)外,使內(nèi)核完整性檢測系統(tǒng)不受被監(jiān)控系統(tǒng)中惡意軟件的攻擊;利用虛擬機(jī)管理器處于虛擬化架構(gòu)最底層負(fù)責(zé)管理整個硬件平臺的優(yōu)勢,可以有效監(jiān)控虛擬機(jī)的內(nèi)部狀態(tài),使完整性檢測機(jī)制不被惡意軟件繞過。[0007]本發(fā)明的檢測方法,利用內(nèi)核完整性檢測系統(tǒng)對運(yùn)行在Xen虛擬化平臺上的虛擬機(jī)中的Linux或者類Unix操作系統(tǒng)進(jìn)行內(nèi)核完整性檢測,其特征在于:所述內(nèi)核完整性檢測系統(tǒng)包括內(nèi)存映射部分、信息獲取部分和安全檢測部分,這三個部分均部署在管理域DomO,從管理域DomO對客戶域DomU的操作系統(tǒng)內(nèi)核完整性進(jìn)行檢測,并有效利用了Xen提供的隔離性,避免內(nèi)核完整性檢測系統(tǒng)受到客戶域DomU中的惡意軟件的攻擊;[0008]所述內(nèi)存映射部分提供獲取客戶域DomU中硬件層面的機(jī)器字節(jié)數(shù)據(jù)的接口,獲取客戶域DomU中寄存器二進(jìn)制數(shù)據(jù)、物理地址空間對應(yīng)的隨機(jī)存儲器中的二進(jìn)制數(shù)據(jù)和內(nèi)核態(tài)的邏輯地址空間對應(yīng)的隨機(jī)存儲器的二進(jìn)制數(shù)據(jù),在管理域DomO模擬客戶域DomU操作系統(tǒng)的分頁模型,利用libxc,Iibxs庫函數(shù)從管理域DomO中獲取客戶域DomU內(nèi)核態(tài)的邏輯地址空間對應(yīng)的隨機(jī)存儲器二進(jìn)制數(shù)據(jù);[0009]所述信息獲取部分利用內(nèi)存映射部分提供的接口,獲取客戶域DomU中與系統(tǒng)內(nèi)核狀態(tài)相關(guān)的關(guān)鍵數(shù)據(jù)即中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù);[0010]所述安全檢測部分以輪詢方式調(diào)用信息獲取部分獲得客戶域DomU的中斷向量表、系統(tǒng)調(diào)用表、系統(tǒng)函數(shù)指令數(shù)據(jù)并求哈希值,與管理域DomO安全策略文件的中斷向量表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用函數(shù)的SHA-1哈希值進(jìn)行對比,檢測客戶域DomU中內(nèi)核的完整性。[0011]本發(fā)明的檢測方法從管理域DomO對客戶域DomU中的操作系統(tǒng)內(nèi)核進(jìn)行完整性檢測,具體由安全檢測部分檢測客戶域DomU的內(nèi)核完整性,檢測過程如下:[0012](I)從部署在管理域DomO中的安全策略文件讀取出以下信息:[0013]1.1)中斷向量表中每一個的中斷處理函數(shù)的邏輯地址;[0014]1.2)系統(tǒng)調(diào)用表中每個系統(tǒng)調(diào)用函數(shù)的邏輯地址;[0015]1.3)系統(tǒng)調(diào)用號以及其對應(yīng)的系統(tǒng)調(diào)用函數(shù)的指令數(shù)據(jù)的SHA-1哈希值;[0016](2)以輪詢的方式利用信息獲取模塊提供的接口,獲取下列信息:[0017]2.1)客戶域DomU中的中斷向量表中每個中斷處理程序的邏輯地址;[0018]2.2)客戶域DomU中的系統(tǒng)調(diào)用表中的每個系統(tǒng)調(diào)用函數(shù)的邏輯地址;[0019]2.3)客戶域DomU中的系統(tǒng)調(diào)用函數(shù)指令的數(shù)據(jù),然后利用SHA-1哈希算法計算出系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)的哈希值;[0020](3)比較從DomU獲取的信息與從安全策略文件中讀取的信息:[0021]3.1)比較中斷向量表中每個中斷處理程序的邏輯地址,如果某一項(xiàng)的數(shù)據(jù)不一致,說明對應(yīng)的中斷處理程序受到惡意軟件的中斷處理程序重定向攻擊,記錄下不一致的表項(xiàng),并向管理域DomO告警;;[0022]3.2)比較系統(tǒng)調(diào)用表中的每個系統(tǒng)調(diào)用函數(shù)的邏輯地址,如果某一項(xiàng)的數(shù)據(jù)不一致,說明對應(yīng)的系統(tǒng)調(diào)用函數(shù)被惡意軟件進(jìn)行了系統(tǒng)調(diào)用重定向攻擊,記錄下不一致的表項(xiàng),并向管理域DomO告警;[0023]3.3)比較系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)的哈希值,如果不一致,說明相應(yīng)的系統(tǒng)函數(shù)受到了惡意軟件的代碼注入攻擊,記錄下不一致的系統(tǒng)調(diào)用號,并向管理域DomO告警;[0024]本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn):[0025]第一,本發(fā)明結(jié)合虛擬化技術(shù),利用虛擬機(jī)管理器的特權(quán)級別優(yōu)勢、從虛擬化平臺獲得被監(jiān)控系統(tǒng)中最底層的信息,確保安全檢測工具的監(jiān)控行為不被惡意軟件欺騙、繞過。[0026]第二,本發(fā)明利用虛擬技術(shù)提供的隔離性、將安全檢測工具部署在管理域DomO,將安全檢測工具與監(jiān)控的客戶域DomU隔離開,可以有效確保安全檢測工具自身的安全性。[0027]第三,本發(fā)明不需要修改客戶域操作系統(tǒng)、管理域操作系統(tǒng)、虛擬機(jī)監(jiān)控器,避免了修改可能引入的Bug、導(dǎo)致的緊耦合。[0028]第四,本發(fā)明分析了當(dāng)前流行的進(jìn)行內(nèi)核完整性攻擊的惡意軟件的行為特性以及性狀表現(xiàn),針對內(nèi)核關(guān)鍵資源進(jìn)行檢測,在能以高準(zhǔn)確率檢測內(nèi)核完整性的情況下,不對系統(tǒng)運(yùn)行效率造成可觀影響?!緦@綀D】【附圖說明】[0029]圖1是本發(fā)明檢測方法采用的系統(tǒng)整體結(jié)構(gòu)圖;[0030]圖2是本發(fā)明內(nèi)存映射部分邏輯地址通過分頁機(jī)制映射到物理地址的示意圖;[0031]圖3是本發(fā)明內(nèi)存映射部分訪問客戶域DomU中指定內(nèi)核態(tài)邏輯地址空間數(shù)據(jù)的流程圖;[0032]圖4是本發(fā)明信息獲取部分獲取客戶域DomU中中斷向量表信息的流程圖;[0033]圖5是本發(fā)明信息獲取部分獲取客戶域DomU中系統(tǒng)調(diào)用表信息的流程圖;[0034]圖6是本發(fā)明信息獲取部分獲取客戶域DomU中系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)的流程圖;[0035]圖7是本發(fā)明安全檢測部分檢測客戶域DomU中內(nèi)核完整性流程圖;【具體實(shí)施方式】[0036]下面結(jié)合附圖對本發(fā)明作進(jìn)一步的描述。[0037]1、整體結(jié)構(gòu)設(shè)計[0038]基于Xen虛擬化的內(nèi)核完整性檢測系統(tǒng)由三個基本部分構(gòu)成,分別是內(nèi)存映射部分、信息獲取部分、安全檢測部分。本發(fā)明系統(tǒng)部署在管理域DomO,有效利用了Xen提供的隔離性、避免本發(fā)明系統(tǒng)受到客戶域DomU中的惡意軟件的攻擊。整體系統(tǒng)架構(gòu)圖如圖1所/Jnο[0039]上述各部分功能如下:[0040]內(nèi)存映射部分,在管理域DomO中模擬客戶域DomU中的分頁機(jī)制,提供了獲取客戶域DomU中硬件層面的機(jī)器字節(jié)數(shù)據(jù)的接口,包括獲取客戶域DomU中寄存器的二進(jìn)制數(shù)據(jù)、物理地址空間對應(yīng)的隨機(jī)存儲器的二進(jìn)制數(shù)據(jù)、內(nèi)核態(tài)邏輯地址空間對應(yīng)的隨機(jī)存儲器的二進(jìn)制數(shù)據(jù)。[0041]所述信息獲取部分通過內(nèi)存映射部分提供的接口,獲取客戶域DomU中與系統(tǒng)內(nèi)核狀態(tài)相關(guān)的關(guān)鍵數(shù)據(jù)包括中斷描述符表、系統(tǒng)調(diào)用表、系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)。[0042]安全檢測部分,調(diào)用信息獲取部分獲得客戶域DomU中操作系統(tǒng)內(nèi)核的關(guān)鍵數(shù)據(jù),并根據(jù)安全檢測部分中的存儲的安全策略,判斷客戶域DomU中操作系統(tǒng)內(nèi)核的完整性是否受到破壞。[0043]2、內(nèi)存映射部分的具體實(shí)現(xiàn)[0044]Linux操作系統(tǒng)內(nèi)有邏輯地址、線性地址、物理地址三種地址。在X86-32處理器架構(gòu)上Linux的邏輯地址與線性地址相同。Linux操作系統(tǒng)中,邏輯地址用于進(jìn)程空間的尋址,物理地址用于隨機(jī)存儲器的內(nèi)存單元的尋址。Linux操作系統(tǒng)中每個進(jìn)程的邏輯地址空間分為兩個部分:1、用戶態(tài)空間,地址范圍從0X00000000到OXBFFFFFFF;2、內(nèi)核態(tài)空間,地址范圍從OXCOOOOOOO到OXFFFFFFFF。每個進(jìn)程的用戶態(tài)空間的信息不相同,但是內(nèi)核態(tài)空間的信息完全一樣。Linux操作系統(tǒng)內(nèi)核的數(shù)據(jù)、函數(shù)存儲在進(jìn)程的內(nèi)核態(tài)空間。[0045]當(dāng)訪問Linux操作系統(tǒng)中某一進(jìn)程的用戶態(tài)或者內(nèi)核態(tài)地址空間的數(shù)據(jù)、函數(shù)時,操作系統(tǒng)首先會利用分頁單元將邏輯地址轉(zhuǎn)換為物理地址,然后訪問該物理地址對應(yīng)的隨機(jī)存儲器的內(nèi)存單元的二進(jìn)制數(shù)據(jù),示意圖如圖2所示。X86-32架構(gòu)上的Linux操作系統(tǒng)的分頁單元有4中分頁模型:1、常規(guī)分頁模型;2、擴(kuò)展分頁模型;3、物理地址擴(kuò)展模型下的常規(guī)分頁模型;4、物理地址擴(kuò)展模型下的擴(kuò)展分頁模型。當(dāng)編譯Linux內(nèi)核時,通過不同的配置選項(xiàng)可以指定Linux系統(tǒng)采用的分頁模型。[0046]本發(fā)明系統(tǒng)在管理域DomO中對客戶域DomU中的操作系統(tǒng)內(nèi)核進(jìn)行完整性檢測,需要獲取客戶域DomU中的某些內(nèi)核信息,包括中斷描述符表、系統(tǒng)調(diào)用表等,這些內(nèi)核數(shù)據(jù)結(jié)構(gòu)的地址都是用邏輯地址表示的,因此本發(fā)明系統(tǒng)需要在管理域DomO中訪問客戶域DomU的內(nèi)核態(tài)邏輯地址空間的信息。[0047]Xen虛擬化平臺提供了開發(fā)庫libxc,libxs。libxc,Iibxs庫提供了以下接口:1、從管理域DomO獲取客戶域DomU的中央處理器寄存器二進(jìn)制數(shù)據(jù)的接口;2、從管理域DomO中獲取客戶域DomU的物理地址空間對應(yīng)的隨機(jī)存儲器中的二進(jìn)制數(shù)據(jù)的接口。[0048]內(nèi)存映射部分在libxc,Iibxs庫的基礎(chǔ)上,在管理域DomO中模擬客戶域DomU中系統(tǒng)的分頁模型,實(shí)現(xiàn)了從管理域DomO中獲取客戶域DomU中內(nèi)核態(tài)邏輯地址空間對應(yīng)的隨機(jī)存儲器的二進(jìn)制數(shù)據(jù)的接口。獲取DomU中內(nèi)核態(tài)邏輯地址空間對應(yīng)的隨機(jī)存儲器的二進(jìn)制數(shù)據(jù)的過程如圖3所示,具體步驟如下:[0049](I)首先、假設(shè)給定的客戶域DomU中的內(nèi)核態(tài)邏輯地址為virtAddr.[0050](2)確定DomU中操作系統(tǒng)采用的分頁模型。[0051]2.1)通過Iibxc的庫函數(shù),獲取客戶域DomU中中央處理器的CR4寄存器的值。[0052]2.2)取CR4寄存器的PSE允許頁擴(kuò)展標(biāo)志位的值X,取CR4寄存器的PAE允許物理地址擴(kuò)展標(biāo)志位的值Y。[0053]2.3)如果X等于0、Y等于0,則客戶域DomU中系統(tǒng)采用的是常規(guī)分頁模型。如果X等于1、Υ等于0,則客戶域DomU中系統(tǒng)采用的是擴(kuò)展分頁模型。如果X等于0、Υ等于1,則客戶域DomU中系統(tǒng)采用的是物理地址擴(kuò)展模型下的常規(guī)分頁模型。如果X等于1、Y等于1,則客戶域DomU中系統(tǒng)采用的是物理地址擴(kuò)展模型下的擴(kuò)展分頁模型。[0054](3)利用Iibxc的庫函數(shù)獲取客戶域DomU中CR3寄存器的值、作為基地址,模擬DomU中操作系統(tǒng)系統(tǒng)的分頁模型,將邏輯地址virtAddr轉(zhuǎn)換為物理地址phyAddr。[0055](4)利用Iibxc的庫函數(shù)獲取物理地址phyAddr對應(yīng)的隨機(jī)存儲器中的二進(jìn)制數(shù)據(jù)。[0056]X86-64架構(gòu)上的Linux操作系統(tǒng)中,每個進(jìn)程都有4GB的邏輯地址空間,前3GB的空間稱為用戶態(tài)空間,最后IGB空間稱為內(nèi)核態(tài)空間。兩個進(jìn)程中相同的用戶態(tài)空間地址可能映射到不同的物理地址空間,相同的內(nèi)核態(tài)空間會映射到相同的物理地址空間。Linux系統(tǒng)運(yùn)行時,CR3寄存器中存儲著當(dāng)前進(jìn)程的頁目錄的物理地址,CR3用于分頁機(jī)制,用于將當(dāng)前進(jìn)程的邏輯地址映射為物理地址。因?yàn)镈omU中操作系統(tǒng)有4種分頁模型,所以在DomO中模擬DomU中操作系統(tǒng)的分頁模型將內(nèi)核態(tài)邏輯地址轉(zhuǎn)換為物理地址,有4種不同的過程。下面分別描述這四種過程。[0057]模擬DomU中的常規(guī)分頁模型,將內(nèi)核態(tài)邏輯地址轉(zhuǎn)換為物理地址的步驟如下:[0058](I)首先假設(shè)給定的32位內(nèi)核態(tài)邏輯地址為virtAddr.[0059]利用Iibxc的庫函數(shù)獲取客戶域DomU中CR3寄存器的二進(jìn)制值,求得頁目錄基地址的物理地址、記為pageDirectoryBaseAddr。[0060](2)利用pageDirectroyBaseAddr作為基地址,和virtAddr的最高10位構(gòu)成的偏移量,得到對應(yīng)的頁目錄項(xiàng)所在的物理地址、記為pdeAddr.利用Iibxs的庫函數(shù)獲取物理地址pdeAddr處的數(shù)據(jù),求得對應(yīng)的頁表基地址的物理地址,記為pageTableBaseAddr.[0061](3)利用pageTableBaseAddr作為基地址,和virtAddr的10至19位構(gòu)成偏移量,得到對應(yīng)的頁表項(xiàng)所在的物理地址、記作PteAddr.利用Iibxs的庫函數(shù)獲取物理地址pteAddr處的數(shù)據(jù),求得對應(yīng)的頁基地址的物理地址、記作pageBaseAddr.[0062](4)利用pageBaseAddr作為基地址,加上virtAddr的最低12位構(gòu)成的偏移量,得到內(nèi)核態(tài)邏輯地址virtAddr對應(yīng)的物理地址phyAddr.[0063]模擬DomU中的擴(kuò)展分頁模型,將內(nèi)核態(tài)邏輯地址轉(zhuǎn)換為物理地址的步驟如下:[0064](1)首先假設(shè)給定的32位內(nèi)核態(tài)邏輯地址為virtAddr.[0065]利用Iibxc的庫函數(shù)獲取客戶域DomU中CR3寄存器的二進(jìn)制值,求得頁目錄基地址的物理地址、記為pageDirectoryBaseAddr。[0066](2)利用pageDirectroyBaseAddr作為基地址,和virtAddr的最高10位構(gòu)成的偏移量,得到對應(yīng)的頁目錄項(xiàng)所在的物理地址、記為pdeAddr.利用Iibxs的庫函數(shù)獲取物理地址pdeAddr處的數(shù)據(jù),求得對應(yīng)的頁基地址的物理地址、記作pageBaseAddr.[0067](3)利用pageBaseAddr作為基地址,加上virtAddr的最低22位構(gòu)成的偏移量,得到內(nèi)核態(tài)邏輯地址virtAddr對應(yīng)的物理地址phyAddr.[0068]模擬DomU中物理地址擴(kuò)展模型下的常規(guī)分頁模型,將內(nèi)核態(tài)邏輯地址轉(zhuǎn)換為物理地址的步驟如下:[0069](I)首先假設(shè)給定的32位內(nèi)核態(tài)邏輯地址為virtAddr.[0070]利用Iibxc的庫函數(shù)獲取客戶域DomU中CR3寄存器的二進(jìn)制值,得到頁目錄指針表基地址的物理地址、記作pageDirPointerTableAddr.[0071](2)利用pageDirPointerTableAddr作為基地址,和virtAddr的最高2位構(gòu)成的偏移量,得到對應(yīng)的頁目錄指針項(xiàng)所在的物理地址、記為pdpeAddr.利用Iibxs的庫函數(shù)獲取物理地址pdpeAddr處的數(shù)據(jù),求得對應(yīng)的頁目錄基地址的物理地址,記為pageDirectoryBaseAddr.[0072](3)利用pageDirectroyBaseAddr作為基地址,和virtAddr的2至10位構(gòu)成的偏移量,得到對應(yīng)的頁目錄項(xiàng)所在的物理地址、記為pdeAddr.利用Iibxs的庫函數(shù)獲取物理地址pdeAddr處的數(shù)據(jù),求得對應(yīng)的頁表基地址的物理地址,記為pageTableBaseAddr.[0073](4)利用pageTableBaseAddr作為基地址,和virtAddr的11至19位構(gòu)成偏移量,得到對應(yīng)的頁表項(xiàng)所在的物理地址、記作pteAddr.利用Iibxs的庫函數(shù)獲取物理地址pteAddr處的數(shù)據(jù),求得對應(yīng)的頁基地址的物理地址、記作pageBaseAddr.[0074](5)利用pageBaseAddr作為基地址,加上virtAddr的最低12位構(gòu)成的偏移量,得到內(nèi)核態(tài)邏輯地址virtAddr對應(yīng)的物理地址phyAddr.[0075]模擬DomU中物理地址擴(kuò)展模型下的擴(kuò)展分頁模型,將內(nèi)核態(tài)邏輯地址轉(zhuǎn)換為物理地址的步驟如下:[0076](I)首先假設(shè)給定的32位內(nèi)核態(tài)邏輯地址為virtAddr.[0077]利用Iibxc的庫函數(shù)獲取客戶域DomU中CR3寄存器的二進(jìn)制值,得到頁目錄指針表基地址的物理地址、記作pageDirPointerTableAddr.[0078](2)利用pageDirPointerTableAddr作為基地址,和virtAddr的最高2位構(gòu)成的偏移量,得到對應(yīng)的頁目錄指針項(xiàng)所在的物理地址、記為pdpeAddr.利用Iibxs的庫函數(shù)獲取物理地址pdpeAddr處的數(shù)據(jù),求得對應(yīng)的頁目錄基地址的物理地址,記為pageDirectoryBaseAddr.[0079](3)利用pageDirectroyBaseAddr作為基地址,和virtAddr的2至10位構(gòu)成的偏移量,得到對應(yīng)的頁目錄項(xiàng)所在的物理地址、記為pdeAddr.利用Iibxs的庫函數(shù)獲取物理地址pdeAddr處的數(shù)據(jù),求得對應(yīng)的頁基地址的物理地址,記為pageBaseAddr.[0080](4)利用pageBaseAddr作為基地址,加上virtAddr的最低21位構(gòu)成的偏移量,得到內(nèi)核態(tài)邏輯地址virtAddr對應(yīng)的物理地址phyAddr.[0081]3、信息獲取部分的具體實(shí)現(xiàn)[0082]通過研究目前主流的破壞內(nèi)核完整性的惡意軟件、以及檢測內(nèi)核完整性技術(shù)采用的方法、技術(shù),確定了本發(fā)明系統(tǒng)需要檢測的關(guān)鍵資源。本發(fā)明系統(tǒng)在管理域DomO中對客戶域DomU中的內(nèi)核完整性進(jìn)行檢測、需要檢測客戶域DomU中系統(tǒng)的中斷向量表、系統(tǒng)調(diào)用表、系統(tǒng)調(diào)用函數(shù)的完整性。信息獲取模塊提供了獲取中斷向量表信息、系統(tǒng)調(diào)用表信息、系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)的接口。[0083]Linux系統(tǒng)的中斷向量表的地址保存在IDTR寄存器中。Linux系統(tǒng)運(yùn)行時,IDTR寄存器中存放著中斷向量表的32位邏輯地址和16位的表長度值。中斷向量表中包含256項(xiàng),每項(xiàng)占8Byte,每一表項(xiàng)的高16位和低16位合成后表示中斷處理程序的32位邏輯地址。獲取客戶域DomU中系統(tǒng)的中斷向量表信息的過程如圖4所示,具體步驟如下:[0084](I)利用Iibxc庫函數(shù)獲取客戶域DomU中的中央處理器的IDTR寄存器的值。[0085](2)取IDTR寄存器值的最高32位,得到中斷向量表的32位邏輯地址,記作idtBaseAddr.。[0086](3)中斷向量表包含256個表項(xiàng),分別對中斷向量表中的每一個表項(xiàng),進(jìn)行如下處理:[0087]3.1)假設(shè)處理的表項(xiàng)為中斷向量表中第N項(xiàng),其邏輯地址為idtBaseAddr+8*N.[0088]3.2)利用內(nèi)存映射模塊提供的接口獲取第N個表項(xiàng)的二進(jìn)制數(shù)據(jù)。每一個表項(xiàng)的二進(jìn)制數(shù)據(jù)大小為8Byte,取其最高16位與最低16位便得到了對應(yīng)的中斷處理程序的32位邏輯地址。[0089]Linux系統(tǒng)中的系統(tǒng)調(diào)用表的邏輯地址在內(nèi)核編譯后其地址是固定的,不同版本的Linux內(nèi)核系統(tǒng)調(diào)用表的地址可能不相同,通過查看Linux系統(tǒng)中的system,map文件中的符號syS_Call_table,可以知道系統(tǒng)調(diào)用表的邏輯地址,本發(fā)明預(yù)先將DomU中的系統(tǒng)調(diào)用表的邏輯地址存放在DomO的安全策略文件中。系統(tǒng)調(diào)用表中的每個表項(xiàng)占4Byte,每個表項(xiàng)的數(shù)據(jù)代表一個系統(tǒng)調(diào)用函數(shù)的32位的邏輯地址。獲取客戶域DomU中系統(tǒng)的系統(tǒng)調(diào)用表信息的過程如圖5所示、具體步驟如下:[0090](I)從部署在管理域DomO的安全策略文件中讀取客戶域DomU中操作系統(tǒng)的系統(tǒng)調(diào)用表的邏輯地址、記作syscallTableAddr.。[0091](2)分別對系統(tǒng)調(diào)用表中的每一個表項(xiàng),進(jìn)行如下處理:[0092]2.1)假設(shè)處理的表項(xiàng)為系統(tǒng)調(diào)用表中第N項(xiàng),其邏輯地址為syscallTableAddr+4*N.[0093]2.2)利用內(nèi)存映射模塊提供的接口獲取第N個表項(xiàng)的二進(jìn)制數(shù)據(jù),便得到了對應(yīng)的系統(tǒng)調(diào)用函數(shù)的32位邏輯地址。[0094]系統(tǒng)調(diào)用表中的每個表項(xiàng)占4Byte,每個表項(xiàng)的數(shù)據(jù)代表一個系統(tǒng)調(diào)用函數(shù)的邏輯地址。系統(tǒng)調(diào)用函數(shù)的邏輯地址都在內(nèi)核空間。每個編譯好的Linux內(nèi)核的系統(tǒng)調(diào)用函數(shù)的指令數(shù)據(jù)是固定的,函數(shù)指令的長度也是固定的。通過反匯編查看Linux內(nèi)核源代碼編譯的目標(biāo)文件,可以得到系統(tǒng)調(diào)用函數(shù)的指令的長度。獲取客戶域DomU中系統(tǒng)的給定的系統(tǒng)調(diào)函數(shù)的指令數(shù)據(jù)的過程如圖6所示,具體步驟如下:[0095](I)首先,假設(shè)給定的是第N號系統(tǒng)調(diào)用。[0096](2)從部署在管理域DomO中的安全策略文件中讀取客戶域DomU中操作系統(tǒng)的系統(tǒng)調(diào)用表的32位邏輯地址,記作syscallTableAddr。[0097](3)從部署在管理域DomO中的安全策略文件中讀取第N號系統(tǒng)調(diào)用號對應(yīng)的系統(tǒng)調(diào)用函數(shù)指令的長度,記作Len。[0098](4)對于第N號系統(tǒng)調(diào)用,進(jìn)行如下處理:[0099]4.1)對于第N號系統(tǒng)調(diào)用,其對應(yīng)的系統(tǒng)調(diào)用函數(shù)的地址存儲在系統(tǒng)調(diào)用表中的第N個表項(xiàng),其邏輯地址為sysCallTableAddr+4*N.利用內(nèi)存映射模塊的接口獲取該表項(xiàng)的值,得到對應(yīng)的系統(tǒng)調(diào)用函數(shù)邏輯地址funcAddr。[0100]4.2)利用內(nèi)存映射部分的接口獲取邏輯地址funcAddr處長度為Len的數(shù)據(jù)。這樣便得到了第N個系統(tǒng)調(diào)用函數(shù)指令的數(shù)據(jù)。[0101]4、安全檢測部分具體實(shí)現(xiàn)[0102]編譯好的Linux內(nèi)核的中斷向量表、系統(tǒng)調(diào)用表、系統(tǒng)函數(shù)指令數(shù)據(jù)是固定的。目前流行的破壞內(nèi)核完整性的惡意軟件大部分通過修改中斷向量表、系統(tǒng)調(diào)用表、系統(tǒng)函數(shù)指令達(dá)到破壞內(nèi)核完整性的目的。本發(fā)明系統(tǒng)首先獲取完整內(nèi)核的中斷向量表中的每個中斷處理程序的邏輯地址、系統(tǒng)調(diào)用表中的每個系統(tǒng)調(diào)用函數(shù)的邏輯地址、每個系統(tǒng)調(diào)用函數(shù)的指令數(shù)據(jù)的SHA-1哈希值,將這些信息記錄在文件中,這個文件稱為安全策略文件。[0103]安全檢測部分以輪詢方式調(diào)用信息獲取部分提供的接口,得到客戶域DomU中的中斷向量表、系統(tǒng)調(diào)用表、系統(tǒng)函數(shù)指令數(shù)據(jù),與部署在管理域DomO中的安全策略文件中的信息進(jìn)行對比,檢測客戶域DomU中內(nèi)核的完整性是否收到破壞。檢測客戶域DomU的內(nèi)核完整性的過程如圖7所示,具體步驟如下:[0104](I)從部署在管理域DomO中的安全策略文件讀取出以下信息:[0105]1.1)中斷向量表中每一個的中斷處理函數(shù)的邏輯地址;[0106]1.2)系統(tǒng)調(diào)用表中每個系統(tǒng)調(diào)用函數(shù)的邏輯地址;[0107]1.3)系統(tǒng)調(diào)用號以及其對應(yīng)的系統(tǒng)調(diào)用函數(shù)的指令數(shù)據(jù)的SHA-1哈希值。[0108](2)以輪詢的方式利用信息獲取部分提供的接口,獲取下列信息:[0109]2.1)客戶域DomU中的中斷向量表中每個中斷處理程序的邏輯地址;[0110]2.2)客戶域DomU中的系統(tǒng)調(diào)用表中的每個系統(tǒng)調(diào)用函數(shù)的邏輯地址;[0111]2.3)客戶域DomU中的系統(tǒng)調(diào)用函數(shù)指令的數(shù)據(jù),然后利用SHA-1哈希算法計算出系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)的哈希值。[0112](3)比較從DomU獲取的信息與從安全策略文件中讀取的信息:[0113]3.1)比較中斷向量表中每個中斷處理程序的邏輯地址,如果某一項(xiàng)的數(shù)據(jù)不一致,說明對應(yīng)的中斷處理程序受到惡意軟件的中斷處理程序重定向攻擊,記錄下不一致的表項(xiàng),并向管理域DomO告警;[0114]3.2)比較系統(tǒng)調(diào)用表中的每個系統(tǒng)調(diào)用函數(shù)的邏輯地址,如果某一項(xiàng)的數(shù)據(jù)不一致,說明對應(yīng)的系統(tǒng)調(diào)用函數(shù)被惡意軟件進(jìn)行了系統(tǒng)調(diào)用重定向攻擊,記錄下不一致的表項(xiàng),并向管理域DomO告警;[0115]3.3)比較系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)的哈希值,如果不一致,說明相應(yīng)的系統(tǒng)函數(shù)受到了惡意軟件的代碼注入攻擊,記錄下不一致的系統(tǒng)調(diào)用號,并向管理域DomO告警?!緳?quán)利要求】1.一種基于Xen虛擬化的內(nèi)核完整性檢測方法,利用內(nèi)核完整性檢測系統(tǒng)對運(yùn)行在Xen虛擬化平臺上的虛擬機(jī)的Linux或者類Unix操作系統(tǒng)進(jìn)行內(nèi)核完整性檢測,其特征在于:所述內(nèi)核完整性檢測系統(tǒng)包括內(nèi)存映射部分、信息獲取部分和安全檢測部分,這三個部分均部署在管理域DomO,從管理域DomO對客戶域DomU的操作系統(tǒng)內(nèi)核完整性進(jìn)行檢測,并有效利用了Xen提供的隔離性,避免內(nèi)核完整性檢測系統(tǒng)受到客戶域DomU中的惡意軟件的攻擊;所述內(nèi)存映射部分提供獲取客戶域DomU中硬件層面的機(jī)器字節(jié)數(shù)據(jù)的接口,獲取客戶域DomU中寄存器二進(jìn)制數(shù)據(jù)、物理地址空間對應(yīng)的隨機(jī)存儲器中的二進(jìn)制數(shù)據(jù)和內(nèi)核態(tài)的邏輯地址空間對應(yīng)的隨機(jī)存儲器的二進(jìn)制數(shù)據(jù),在管理域DomO模擬客戶域DomU操作系統(tǒng)的分頁模型,利用libxc,Iibxs庫函數(shù)從管理域DomO中獲取客戶域DomU內(nèi)核態(tài)的邏輯地址空間對應(yīng)的隨機(jī)存儲器二進(jìn)制數(shù)據(jù);所述信息獲取部分利用內(nèi)存映射部分提供的接口,獲取客戶域DomU中與系統(tǒng)內(nèi)核狀態(tài)相關(guān)的關(guān)鍵數(shù)據(jù)即中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù);所述安全檢測部分以輪詢方式調(diào)用信息獲取部分獲得客戶域DomU的中斷向量表、系統(tǒng)調(diào)用表、系統(tǒng)函數(shù)指令數(shù)據(jù)并求哈希值,與管理域DomO安全策略文件的中斷向量表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用函數(shù)的SHA-1哈希值進(jìn)行對比,檢測客戶域DomU中內(nèi)核的完整性。2.根據(jù)權(quán)利要求1所述的基于Xen虛擬化的內(nèi)核完整性檢測方法,其特征在于:內(nèi)存映射部分獲取DomU中內(nèi)核態(tài)邏輯地址空間對應(yīng)的隨機(jī)存儲器的二進(jìn)制數(shù)據(jù)的過程如下:(1)假設(shè)給定的客戶域DomU中的內(nèi)核態(tài)邏輯地址為virtAddr;(2)確定DomU中操作系統(tǒng)采用的分頁模型:.2.1)通過Iibxc的庫函數(shù),獲取客戶域DomU中央處理器的CR4寄存器的值;.2.2)取CR4寄存器的PSE允許頁擴(kuò)展標(biāo)志位的值X,取CR4寄存器的PAE允許物理地址擴(kuò)展標(biāo)志位的值Y;.2.3)如果X等于O、Y等于0,則客戶域DomU中系統(tǒng)采用的是常規(guī)分頁模型;如果X等于1、Y等于0,則客戶域DomU中系統(tǒng)采用的是擴(kuò)展分頁模型;如果X等于0、Υ等于1,則客戶域DomU中系統(tǒng)采用的是物理地址擴(kuò)展模型下的常規(guī)分頁模型;如果X等于1、Y等于1,則客戶域DomU中系統(tǒng)采用的是物理地址擴(kuò)展模型下的擴(kuò)展分頁模型;(3)利用Iibxc的庫函數(shù)獲取客戶域DomU中CR3寄存器的值作為基地址,模擬步驟.2.3)操作系統(tǒng)系統(tǒng)的四種分頁模型,將邏輯地址virtAddr轉(zhuǎn)換為物理地址phyAddr;(4)利用Iibxc的庫函數(shù)獲取物理地址phyAddr對應(yīng)的隨機(jī)存儲器中的二進(jìn)制數(shù)據(jù)。3.根據(jù)權(quán)利要求1所述的基于Xen虛擬化的內(nèi)核完整性檢測檢測方法,其特征在于:所述信息獲取部分通過內(nèi)存映射部分提供的接口獲取客戶域DomU中系統(tǒng)的中斷向量表信息、系統(tǒng)調(diào)用表中每一項(xiàng)表項(xiàng)的信息和安全策略文件中的系統(tǒng)調(diào)用函數(shù)的哈希值的過程如下:一、獲取中斷向量表信息(1)利用Iibxc庫函數(shù)獲取客戶域DomU中的中央處理器的IDTR寄存器的信息;(2)取IDTR寄存器值的最高32位,得到中斷向量表的32位邏輯地址,記作idtBaseAddr;(3)中斷向量表包含256個表項(xiàng),分別對中斷向量表中的每一個表項(xiàng),進(jìn)行如下處理:.3.1)假設(shè)處理的表項(xiàng)為中斷向量表中第N項(xiàng),其邏輯地址為idtBaseAddr+8*N;.3.2)利用內(nèi)存映射模塊提供的接口獲取第N個表項(xiàng)的二進(jìn)制數(shù)據(jù),每一個表項(xiàng)的二進(jìn)制數(shù)據(jù)大小為8Byte,取其最高16位與最低16位便得到了對應(yīng)的中斷處理程序的32位邏輯地址;二、獲取系統(tǒng)調(diào)用表信息(1)從部署在管理域DomO的安全策略文件中讀取客戶域DomU中操作系統(tǒng)的系統(tǒng)調(diào)用表的邏輯地址,記作syscallTableAddr;(2)分別對系統(tǒng)調(diào)用表中的每一個表項(xiàng),進(jìn)行如下處理:.2.1)假設(shè)處理的表項(xiàng)為系統(tǒng)調(diào)用表中第N項(xiàng),其邏輯地址為syscallTableAddr+4*N;.2.2)利用內(nèi)存映射模塊提供的接口獲取第N個表項(xiàng)的二進(jìn)制數(shù)據(jù),便得到了對應(yīng)的系統(tǒng)調(diào)用函數(shù)的32位邏輯地址;三、獲取系統(tǒng)調(diào)用函數(shù)(1)首先,假設(shè)給定的是第N號系統(tǒng)調(diào)用;(2)從部署在管理域DomO中的安全策略文件中讀取客戶域DomU中操作系統(tǒng)的系統(tǒng)調(diào)用表的32位邏輯地址,記作syscallTableAddr;(3)從部署在管理域DomO中的安全策略文件中讀取第N號系統(tǒng)調(diào)用號對應(yīng)的系統(tǒng)調(diào)用函數(shù)指令的長度,記作Len;(4)對于第N號系統(tǒng)調(diào)用,進(jìn)行如下處理:.4.1)對于第N號系統(tǒng)調(diào)用,其對應(yīng)的系統(tǒng)調(diào)用函數(shù)的地址存儲在系統(tǒng)調(diào)用表中的第N個表項(xiàng),其邏輯地址為sysCallTableAddr+4*N,利用內(nèi)存映射模塊的接口獲取該表項(xiàng)的值,得到對應(yīng)的系統(tǒng)調(diào)用函數(shù)邏輯地址funcAddr;.4.2)利用內(nèi)存映射部分的接口獲取邏輯地址funcAddr處長度為Len的數(shù)據(jù),得到第N個系統(tǒng)調(diào)用函數(shù)指令的數(shù)據(jù)。4.根據(jù)權(quán)利要求1所述的基于Xen虛擬化的內(nèi)核完整性檢測檢測方法,其特征在于:所述安全檢測部分從管理域DomO對客戶域DomU的操作系統(tǒng)內(nèi)核進(jìn)行完整性檢測的操作如下:(1)從部署在管理域DomO中的安全策略文件讀取出以下信息:.1.1)中斷向量表中每一個的中斷處理函數(shù)的邏輯地址;.1.2)系統(tǒng)調(diào)用表中每個系統(tǒng)調(diào)用函數(shù)的邏輯地址;.1.3)系統(tǒng)調(diào)用號以及其對應(yīng)的系統(tǒng)調(diào)用函數(shù)的指令數(shù)據(jù)的SHA-1哈希值;(2)以輪詢的方式利用信息獲取部分提供的接口,獲取下列信息:.2.1)客戶域DomU中的中斷向量表中每個中斷處理程序的邏輯地址;.2.2)客戶域DomU中的系統(tǒng)調(diào)用表中的每個系統(tǒng)調(diào)用函數(shù)的邏輯地址;.2.3)客戶域DomU中的系統(tǒng)調(diào)用函數(shù)指令的數(shù)據(jù),然后利用SHA-1哈希算法計算出系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)的哈希值;(3)比較從客戶域DomU獲取的信息與從安全策略文件中讀取的信息;.3.1)比較中斷向量表中每個中斷處理程序的邏輯地址,如果某一項(xiàng)的數(shù)據(jù)不一致,說明對應(yīng)的中斷處理程序受到惡意軟件的中斷處理程序重定向攻擊,記錄下不一致的表項(xiàng),并向管理域DomO告警;.3.2)比較系統(tǒng)調(diào)用表中的每個系統(tǒng)調(diào)用函數(shù)的邏輯地址,如果某一項(xiàng)的數(shù)據(jù)不一致,說明對應(yīng)的系統(tǒng)調(diào)用函數(shù)被惡意軟件進(jìn)行了系統(tǒng)調(diào)用重定向攻擊,記錄下不一致的表項(xiàng),并向管理域DomO告警;.3.3)比較系統(tǒng)調(diào)用函數(shù)指令數(shù)據(jù)的哈希值,如果不一致,說明相應(yīng)的系統(tǒng)函數(shù)受到了惡意軟件的代碼注入攻擊,記錄下不一致的系統(tǒng)調(diào)用號,并向管理域DomO告警。【文檔編號】G06F12/02GK103793651SQ201410062486【公開日】2014年5月14日申請日期:2014年2月22日優(yōu)先權(quán)日:2014年2月22日【發(fā)明者】黃為,楊超,馬建峰,王照羽,侯琬婷,張馳申請人:西安電子科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1