專利名稱:基于虛擬機的“In-VM”惡意代碼檢測系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于虛擬機的惡意代碼檢測系統(tǒng),尤指基于“In-VM”架構(gòu)利用主動防 御的思想來檢測惡意代碼的系統(tǒng)。
背景技術(shù):
針對越來越嚴(yán)重的網(wǎng)絡(luò)安全問題,安全工具的發(fā)展也非常迅速,殺毒軟件技術(shù)由 早期的基于特征碼的檢測發(fā)展到基于異常行為、以及現(xiàn)階段的云安全技術(shù),防護(hù)能力得到 了極大的提高。主機型安全工具(如殺毒軟件、防火墻等)可以獲得詳細(xì)的系統(tǒng)活動信息, 有利于判斷系統(tǒng)中是否存在異常行為、惡意代碼,但是安全工具本身也存在于不安全的系 統(tǒng)之中,所以容易受到惡意代碼攻擊或者欺騙;而網(wǎng)絡(luò)型安全工具(如網(wǎng)絡(luò)防火墻)可以免 受惡意代碼的攻擊,但是它難以獲得主機的活動信息,不利于檢測主機內(nèi)的惡意代碼?;谔摂M機的惡意代碼檢測技術(shù)正是為了解決主機型安全工具的缺陷發(fā)展起來 的,它既可以獲得完整主機活動視圖,又可以隔離惡意代碼的攻擊,近年來成為網(wǎng)絡(luò)安全學(xué) 者研究的重點,如入侵檢測、攻擊行為分析、惡意代碼檢測、蜜罐和可信計算等。在惡意代碼 檢測的應(yīng)用中,根據(jù)不同的檢測方法可以分為以下幾種(1)基于語義重構(gòu)檢測異常的惡意代碼。這種方法的難點在于如何利用硬件信息 重構(gòu)出系統(tǒng)視圖以及如何保證重構(gòu)的系統(tǒng)視圖是真實可信的。例如在重構(gòu)內(nèi)存信息的過 程,大多數(shù)是基于特定版本的操作系統(tǒng)的調(diào)試符號信息通過直接讀取客戶操作系統(tǒng)內(nèi)存重 構(gòu)出相應(yīng)的操作系統(tǒng)關(guān)鍵數(shù)據(jù)結(jié)構(gòu),如果攻擊者了解重構(gòu)過程應(yīng)用的方法,就可以通過修 改內(nèi)存數(shù)據(jù)來欺騙防護(hù)方。該方法的另一個缺陷是僅支持檢測,而不能阻止惡意代碼的運 行。所以為了更好的查殺惡意代碼,需要發(fā)展基于虛擬機的更高級的檢測方法。(2)基于內(nèi)核完整性的檢測方法。該方法的先決條件是要建立一個安全的內(nèi)核狀 態(tài)集,然后在系統(tǒng)運行過程中動態(tài)的對比內(nèi)核狀態(tài)和這個安全的狀態(tài)集,如果不相符,則有 惡意代碼入侵。這個方法的局限性在于如何建立安全的狀態(tài)集以及其更新,因為當(dāng)系統(tǒng)安 裝新的軟件時就必須更新這個狀態(tài)集合,使得用戶體驗性不好。(3)基于HOOK系統(tǒng)函數(shù)的檢測方法。前面介紹的各種檢測方法主要是基于被動監(jiān) 視的思路,通過外部掃描或查詢來檢測惡意代碼的行為,不能在行為發(fā)生之前有效的阻斷入侵。該方法在客戶操作系統(tǒng)中添加Η00Κ,然后利用VMM (Virtual Machine Monitor)中 的內(nèi)存保護(hù)模塊來保證添加的惡意代碼不被惡意代碼攻擊,在保證隔離性的同時增加了安 全性,使得基于虛擬機的檢測方法支持了主動防御的思想,極大的提高了檢測能力。該方法 的難點在于在客戶操作系統(tǒng)中加入HOOK后如何保證虛擬機的隔離性以及如何把現(xiàn)有的主 動防御的方法移植到虛擬機的應(yīng)用中。第三種方法代表著現(xiàn)階段惡意代碼檢測技術(shù)發(fā)展的方向,在基于虛擬機的安全應(yīng) 用中,是目前研究前景較大的檢測惡意代碼的方法。但是現(xiàn)階段該方法仍存在以下問題一 是可擴展性比較差,不利于添加其他功能;二是沒有提供用戶接口,不能把檢測結(jié)果提交給用戶,用戶也不方便定制功能。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于針對基于HOOK的“In-VM”檢測方法不支持用戶 定制功能以及提交檢測結(jié)果的情況,提供一種層次性的“ In-VM”框架檢測系統(tǒng),在這個層次 性的架構(gòu)中,使其向上能夠提供主機系統(tǒng)的真實信息、返回檢測結(jié)果,向下允許用戶定制功 能、傳遞命令。根據(jù)本發(fā)明的一個方面,提供一種基于虛擬機的“In-VM”惡意代碼檢測系統(tǒng),包括 下列單元環(huán)境初始化單元安裝并啟動Type I虛擬機BitVisor,客戶系統(tǒng)Windows,編譯 BitVisor,在多操作系統(tǒng)啟動程序Grub啟動項中添加Bitvisor的啟動項;用戶態(tài)檢測單元傳遞用戶層代碼段首地址及大小、存放檢測結(jié)果的內(nèi)存區(qū)域首 地址及大小到內(nèi)核層,接收用戶定制功能的命令,提交檢測結(jié)果給用戶;系統(tǒng)內(nèi)核態(tài)檢測單元接收用戶層傳遞下來的數(shù)據(jù)和命令,設(shè)置HOOK處理模塊, 將內(nèi)核層代碼段的首地址及大小、HOOK處理模塊的首地址及大小傳遞到虛擬機監(jiān)視層,將 檢測結(jié)果返回到內(nèi)核層,通過設(shè)置用戶層的內(nèi)存頁面不可寫,來保證用戶層的完整性,以不 被惡意代碼攻擊;虛擬機監(jiān)視器檢測單元接收內(nèi)核層傳遞下來的數(shù)據(jù)和命令,將檢測結(jié)果傳遞到 內(nèi)核層,解析客戶端操作系統(tǒng)內(nèi)存,得到系統(tǒng)服務(wù)描述符表SSDT導(dǎo)出函數(shù)名稱與其地址, 通過設(shè)置層頁面不可寫,保證內(nèi)核層的完整性,以不被惡意代碼攻擊;接收檢測結(jié)果單元初始化過程完成,等待用戶定制命令以及接收檢測結(jié)果。更具體的,其中的用戶態(tài)檢測單元進(jìn)一步包括用戶層判斷模塊,判斷當(dāng)前步驟初始化過程是否完成,沒有完成則等待,如果完成 則監(jiān)聽系統(tǒng)消息,是否有用戶輸入或者檢測結(jié)果返回;如果有用戶命令輸入,則接收用戶命 令傳遞到內(nèi)核層,如果有檢測結(jié)果返回,則接收檢測結(jié)果,在交互界面上顯示;完成用戶命 令或檢測結(jié)果的接收之后,繼續(xù)監(jiān)聽系統(tǒng)消息并進(jìn)行后續(xù)處理。更具體的,其中的系統(tǒng)內(nèi)核檢單進(jìn)一步包括內(nèi)核層判斷模塊,判斷當(dāng)前步驟初始化過程是否完成,沒有完成則等待,如果完成 則等待接收消息,如果有用戶命令傳入,則接收用戶命令傳遞到虛擬機監(jiān)視器層,如果有檢 測結(jié)果返回,則接收檢測結(jié)果,并把檢測結(jié)果傳遞給內(nèi)核層;完成用戶命令或檢測結(jié)果的傳 遞之后,繼續(xù)等待接收消息并進(jìn)行后續(xù)處理。更具體的,其中的虛擬機監(jiān)視器檢測單元進(jìn)一步包括虛擬機監(jiān)視器層判斷模塊,接收內(nèi)核層傳遞的內(nèi)核層代碼段首地址以及大小、 HOOK處理模塊的首地址及大小,設(shè)置內(nèi)核層代碼段、HOOK處理模塊代碼段內(nèi)存頁面不可 寫,根據(jù)PE文件格式解析客戶系統(tǒng)內(nèi)核Ntoskrnl.exe,把系統(tǒng)服務(wù)描述符表SSDT導(dǎo)出函數(shù) 名稱與其地址聯(lián)系起來,啟動用戶命令處理模塊,等待用戶定制需HOOK的函數(shù),設(shè)置系統(tǒng) 初始化完成標(biāo)志,并返回。
圖1示出了傳統(tǒng)的惡意代碼檢測邏輯框圖;圖2示出了基于本發(fā)明的層次性的“In-VM”框架檢測邏輯框圖;圖3示出了基于虛擬機“In-VM”惡意代碼檢測系統(tǒng)的工作流程圖;圖4示出了本發(fā)明檢測系統(tǒng)中多操作系統(tǒng)啟動程序Grub的添加項;
具體實施例方式為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案為改變傳統(tǒng)基于虛擬機的檢測架構(gòu), 建立一個“In-VM”分層架構(gòu),在虛擬機監(jiān)視器層(Virtual Monitor Machine,VMM)、客戶系 統(tǒng)內(nèi)核層以及客戶系統(tǒng)用戶層都加入檢測模塊,自下而上的層次結(jié)構(gòu)中,下層工作在更高 的優(yōu)先級具有更高的權(quán)限,為了保證虛擬機的隔離性以及新加模塊的安全性,下層利用內(nèi) 存管理機制保護(hù)上層不被攻擊、更改。如圖1-2所示圖1是傳統(tǒng)的惡意代碼檢測架構(gòu),圖2是本發(fā)明的“In-VM”層次性架構(gòu)。本發(fā)明 的技術(shù)方案中將惡意代碼檢測系統(tǒng)分為四層計算機硬件層、虛擬機監(jiān)視器層、客戶系統(tǒng)內(nèi) 核層、客戶系統(tǒng)用戶層。V1-V4構(gòu)成了本發(fā)明層次性的惡意代碼檢測框架。參照圖3,示出了本發(fā)明基于層次性框架進(jìn)行檢測的總體流程圖。步驟1)、安裝Type I型虛擬機;步驟2)、啟動Type I型虛擬機Bitvisor和客戶系統(tǒng)Windows ;步驟3)、啟動用戶態(tài)模塊V4 ;步驟4)、啟動初始化程序以及人機交互界面;步驟5)、傳遞V4代碼段首地址及大小、存放檢測結(jié)果的內(nèi)存區(qū)域首地址及大小到 V3模塊;步驟6)、啟動內(nèi)核模塊V3 ;步驟7)、接收V4模塊傳遞的V4代碼段首地址及大小、存放檢測結(jié)果的內(nèi)存區(qū)域首 地址及大??;步驟8)、根據(jù)上面的數(shù)據(jù),設(shè)置V4模塊代碼段、存放檢測結(jié)果的內(nèi)存區(qū)域內(nèi)存頁 面不可寫;步驟9)、啟動HOOK處理模塊;步驟10)、傳遞模塊V3代碼段的首地址及大小、HOOK處理模塊的首地址及大小到 下層模塊V2;步驟11)、啟動VMM層模塊V2 ;步驟12)、接收V3模塊傳遞的內(nèi)核模塊的代碼段首地址以及大小、HOOK處理模塊 的首地址及大?。徊襟E13)、設(shè)置V3模塊代碼段、HOOK處理模塊代碼段內(nèi)存頁面不可寫;;步驟14)、解析客戶系統(tǒng)內(nèi)核Ntoskrnl. exe,把SSDT導(dǎo)出函數(shù)名稱與其地址聯(lián)系 起來;步驟15)、啟動用戶命令處理模塊,允許用戶定制需HOOK的函數(shù);步驟16)、設(shè)置系統(tǒng)初始化完成標(biāo)志,并返回;步驟17)、V3層檢測到初始化完成標(biāo)志,啟動消息處理模塊,并返回;
5
步驟18)、V4層檢測到初始化完成標(biāo)志,啟動消息處理模塊,監(jiān)聽是否有用戶命令 輸入和檢測結(jié)果返回,并返回;步驟19)、初始化過程結(jié)束,等待用戶定制功能或者顯示檢測結(jié)果。下面詳細(xì)介紹各個步驟執(zhí)行過程中的具體情況。安裝Type I型虛擬機。選擇Type I虛擬機BitVisor,客戶系統(tǒng)Windows。編譯 BitVisor,然后在多操作系統(tǒng)啟動程序Grub啟動項中添加Bitvisor的啟動項,如圖4所
示開機啟動系統(tǒng),首先選擇BitVisor項啟動,BitVisor啟動之后選擇Windows作為 客戶系統(tǒng)啟動,自此Type I型虛擬機BitVisor啟動,作為VMM,上層運行Windows作為客戶 系統(tǒng)。啟動用戶態(tài)檢測模塊V4,也就是最上層的惡意代碼檢測程序。該程序完成的工作 包括1)傳遞V4代碼段首地址及大小、存放檢測結(jié)果的內(nèi)存區(qū)域首地址及大小到下層 檢測模塊;2)接收用戶定制功能的命令;3)提交檢測結(jié)果給用戶。具體步驟如下2. 1啟動人機交互界面程序;2.2把V4代碼段首地址及大小、存放檢測結(jié)果的內(nèi)存區(qū)域首地址及大小傳遞給V3 模塊;2. 3判斷初始化過程是否完成,沒有完成則等待,如果完成則執(zhí)行2. 4 ;2. 4監(jiān)聽系統(tǒng)消息,是否有用戶輸入或者檢測結(jié)果返回。如果有用戶命令輸入,執(zhí) 行2. 5,如果有檢測結(jié)果返回,執(zhí)行2. 6 ;2. 5接收用戶命令傳遞到V3模塊,完成后執(zhí)行2. 4 ;2. 6接收檢測結(jié)果,在交互界面上顯示,完成后執(zhí)行2. 4 ;啟動系統(tǒng)內(nèi)核態(tài)檢測模塊V3。該模塊完成以下功能1)接收上層模塊V4傳遞下 來的數(shù)據(jù)和命令;2)把該內(nèi)核模塊代碼段的首地址以及大小、Η00Κ處理模塊的首地址及大 小傳遞到下層檢測模塊V2 ;3)把檢測結(jié)果返回到上層模塊V4 ;4)通過設(shè)置V4的內(nèi)存頁面 不可寫,來保證V4的完整性,使它不被惡意代碼攻擊。具體步驟如下3. 1接收V4模塊傳遞的V4代碼段首地址及大小、存放檢測結(jié)果的內(nèi)存區(qū)域首地址 及大??;3. 2根據(jù)前面接收的數(shù)據(jù),設(shè)置V4模塊代碼段、存放檢測結(jié)果的內(nèi)存區(qū)域內(nèi)存頁 面不可寫;3. 3設(shè)置Η00Κ處理模塊;3. 3把該內(nèi)核模塊的代碼段首地址以及大小、Η00Κ處理模塊的首地址及大小傳遞 給V2模塊;3. 4判斷初始化過程是否完成,沒有則等待,如果完成則執(zhí)行3. 5 ;3. 5等待接收消息,如果有用戶命令傳入,則執(zhí)行3. 6,如果有檢測結(jié)果返回,則執(zhí) 行 3. 7 ;3. 6接收用戶命令傳遞到V2模塊,完成后執(zhí)行3. 5 ;3. 7把檢測結(jié)果傳遞給V3模塊,完成后執(zhí)行3. 5 ;
啟動模塊V2。該模塊完成以下功能1)接收上層模塊傳遞下來的數(shù)據(jù)和命令;2) 把檢測結(jié)果傳遞到上層模塊V3 ;3)解析客戶操作系統(tǒng)內(nèi)存,得到系統(tǒng)服務(wù)描述符表SSDT導(dǎo) 出函數(shù)名稱與其地址;4)通過設(shè)置V3模塊頁面不可寫,保證模塊V3的完整性,使之不被惡 意代碼攻擊。具體步驟如下;4. 1接收V3模塊傳遞的內(nèi)核模塊的代碼段首地址以及大小、HOOK處理模塊的首地 址及大?。?. 2設(shè)置V3模塊代碼段、HOOK處理模塊代碼段內(nèi)存頁面不可寫;4. 3根據(jù)PE文件格式解析客戶系統(tǒng)內(nèi)核Ntoskrnl. exe,把系統(tǒng)服務(wù)描述符表SSDT 導(dǎo)出函數(shù)名稱與其地址聯(lián)系起來。4. 4啟動用戶命令處理模塊,等待用戶定制需HOOK的函數(shù);4. 5設(shè)置系統(tǒng)初始化完成標(biāo)志,并返回;初始化過程完成,等待用戶定制命令以及接收檢測結(jié)果。與現(xiàn)有技術(shù)相比,采用本發(fā)明可達(dá)到以下技術(shù)效果1.分層的結(jié)構(gòu)保證能夠獲取客戶系統(tǒng)完整的信息,同時利用下層保護(hù)上層的安全 機制使得在硬件安全的情況下,整個框架的安全性都能夠得到保障;2.用戶能夠方便的定制安全功能,控制程序?qū)ο到y(tǒng)關(guān)鍵數(shù)據(jù)的改變,同時能夠把 檢測結(jié)果提交給用戶,使得移植現(xiàn)有的惡意代碼檢測技術(shù)到虛擬機中成為可能。3. “In-VM"的檢測框架使得檢測過程不必每次都下陷到VMM中處理,在客戶虛擬 機中處理檢測過程,節(jié)約了時間開銷。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于虛擬機的“In-VM”惡意代碼檢測系統(tǒng),包括下列單元環(huán)境初始化單元安裝并啟動Type I虛擬機BitVisor,客戶系統(tǒng)Windows,編譯 BitVisor,在多操作系統(tǒng)啟動程序Grub啟動項中添加Bitvisor的啟動項;用戶態(tài)檢測單元傳遞用戶層代碼段首地址及大小、存放檢測結(jié)果的內(nèi)存區(qū)域首地址 及大小到內(nèi)核層,接收用戶定制功能的命令,提交檢測結(jié)果給用戶;系統(tǒng)內(nèi)核態(tài)檢測單元接收用戶層傳遞下來的數(shù)據(jù)和命令,設(shè)置HOOK處理模塊,將內(nèi) 核層代碼段的首地址及大小、HOOK處理模塊的首地址及大小傳遞到虛擬機監(jiān)視層,將檢測 結(jié)果返回到內(nèi)核層,通過設(shè)置用戶層的內(nèi)存頁面不可寫,來保證用戶層的完整性,以不被惡 意代碼攻擊;虛擬機監(jiān)視器檢測單元接收內(nèi)核層傳遞下來的數(shù)據(jù)和命令,將檢測結(jié)果傳遞到內(nèi)核 層,解析客戶端操作系統(tǒng)內(nèi)存,得到系統(tǒng)服務(wù)描述符表SSDT導(dǎo)出函數(shù)名稱與其地址,通過 設(shè)置層頁面不可寫,保證內(nèi)核層的完整性,以不被惡意代碼攻擊;接收檢測結(jié)果單元初始化過程完成,等待用戶定制命令以及接收檢測結(jié)果。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中的用戶態(tài)檢測單元進(jìn)一步包括用戶層判斷模塊,判斷當(dāng)前步驟初始化過程是否完成,沒有完成則等待,如果完成則監(jiān) 聽系統(tǒng)消息,是否有用戶輸入或者檢測結(jié)果返回;如果有用戶命令輸入,則接收用戶命令傳 遞到內(nèi)核層,如果有檢測結(jié)果返回,則接收檢測結(jié)果,在交互界面上顯示;完成用戶命令或 檢測結(jié)果的接收之后,繼續(xù)監(jiān)聽系統(tǒng)消息并進(jìn)行后續(xù)處理。
3.根據(jù)權(quán)利要求1的系統(tǒng),其中的系統(tǒng)內(nèi)核檢單進(jìn)一步包括內(nèi)核層判斷模塊,判斷當(dāng)前步驟初始化過程是否完成,沒有完成則等待,如果完成則等 待接收消息,如果有用戶命令傳入,則接收用戶命令傳遞到虛擬機監(jiān)視器層,如果有檢測結(jié) 果返回,則接收檢測結(jié)果,并把檢測結(jié)果傳遞給內(nèi)核層;完成用戶命令或檢測結(jié)果的傳遞之 后,繼續(xù)等待接收消息并進(jìn)行后續(xù)處理。
4.根據(jù)權(quán)利要求1的系統(tǒng),其中的虛擬機監(jiān)視器檢測單元進(jìn)一步包括虛擬機監(jiān)視器層判斷模塊,接收內(nèi)核層傳遞的內(nèi)核層代碼段首地址以及大小、HOOK處 理模塊的首地址及大小,設(shè)置內(nèi)核層代碼段、HOOK處理模塊代碼段內(nèi)存頁面不可寫,根據(jù) PE文件格式解析客戶系統(tǒng)內(nèi)核Ntoskrnl. exe,把系統(tǒng)服務(wù)描述符表SSDT導(dǎo)出函數(shù)名稱與 其地址聯(lián)系起來,啟動用戶命令處理模塊,等待用戶定制需HOOK的函數(shù),設(shè)置系統(tǒng)初始化 完成標(biāo)志,并返回。
全文摘要
一種基于虛擬機的“In-VM”惡意代碼檢測系統(tǒng),包括環(huán)境初始化單元安裝并啟動TypeI虛擬機BitVisor,客戶系統(tǒng)Windows,編譯BitVisor,在多操作系統(tǒng)啟動程序Grub啟動項中添加Bitvisor的啟動項;用戶態(tài)檢測單元傳遞用戶層代碼段首地址及大小、存放檢測結(jié)果的內(nèi)存區(qū)域首地址及大小到內(nèi)核層,接收用戶定制功能的命令,提交檢測結(jié)果給用戶;系統(tǒng)內(nèi)核態(tài)檢測單元接收用戶層傳遞的數(shù)據(jù)和命令,設(shè)置HOOK處理模塊,將內(nèi)核層代碼段的首地址及大小、HOOK處理模塊的首地址及大小傳遞到虛擬機監(jiān)視層,將檢測結(jié)果返回到內(nèi)核層;虛擬機監(jiān)視器檢測單元接收內(nèi)核層傳遞的數(shù)據(jù)和命令,將檢測結(jié)果傳遞到內(nèi)核層,解析客戶端操作系統(tǒng)內(nèi)存,得到系統(tǒng)服務(wù)描述符表SSDT導(dǎo)出函數(shù)名稱與其地址;接收檢測結(jié)果單元初始化過程完成,等待用戶定制命令以及接收檢測結(jié)果。檢測系統(tǒng)向上能夠提供主機系統(tǒng)的真實信息、返回檢測結(jié)果,向下允許用戶定制功能、傳遞命令。
文檔編號G06F21/00GK102122330SQ20111002554
公開日2011年7月13日 申請日期2011年1月24日 優(yōu)先權(quán)日2011年1月24日
發(fā)明者劉明, 劉波, 寧劍, 王天佐, 肖楓濤, 胡華平, 陳林, 馬曉龍, 黃遵國 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)