本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是涉及一種檢測虛擬機逃逸的方法及裝置。
背景技術(shù):
虛擬機是一種特殊的軟件,它可以在計算機平臺和終端用戶之間創(chuàng)建一種環(huán)境,而終端用戶則是基于這個軟件所創(chuàng)建的環(huán)境來操作軟件。在計算機科學(xué)中,虛擬機是可以像真實機器一樣運行程序的計算機的軟件實現(xiàn)。
虛擬機能夠分享宿主機的各種資源并提供隔離,在正常的虛擬機運行環(huán)境中,一個程序運行在虛擬機里,無法影響其他虛擬機和宿主機。但是,由于技術(shù)的限制和虛擬化軟件的一些程序漏洞,在虛擬機被惡意攻陷后,虛擬機里運行的程序能夠通過這些漏洞繞過底層運行環(huán)境,從而利用宿主機執(zhí)行具有宿主機特權(quán)的操作,這種技術(shù)叫做虛擬機逃逸技術(shù)。
當(dāng)宿主機內(nèi)某個虛擬機發(fā)生逃逸后,該逃逸的虛擬機能夠擁有宿主機的特權(quán)進(jìn)行各種操作,將使宿主機和整個虛擬環(huán)境下所有虛擬機的安全性受到威脅。因此,如何防止虛擬機逃逸行為的發(fā)生,并且不會影響虛擬機與宿主機之間正常的共享與交互,成為目前亟待解決的技術(shù)問題。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明提出了一種檢測虛擬機逃逸的方法及裝置,主要目的在于在不影響虛擬機與宿主機之間正常的共享與交互的基礎(chǔ)上,能夠有效的檢測出虛擬機逃逸行為。
依據(jù)本發(fā)明的第一個方面,本發(fā)明提供了一種檢測虛擬機逃逸的方法,包括:
獲取虛擬機流向宿主機的異常數(shù)據(jù)信息;
通過預(yù)設(shè)的行為特征信息庫對所述異常數(shù)據(jù)信息進(jìn)行檢測;
當(dāng)檢測所述異常數(shù)據(jù)信息為惡意行為的數(shù)據(jù)信息時,將所述惡意行為的數(shù)據(jù)信息進(jìn)行攔截;
當(dāng)檢測所述異常數(shù)據(jù)信息為非惡意行為的數(shù)據(jù)信息時,將所述非惡意行為的數(shù)據(jù)信息傳遞至宿主機。
依據(jù)本發(fā)明的第二個方面,本發(fā)明提供了一種檢測虛擬機逃逸的裝置,包括:
獲取單元,用于獲取虛擬機流向宿主機的異常數(shù)據(jù)信息;
檢測單元,用于通過預(yù)設(shè)的行為特征信息庫對所述異常數(shù)據(jù)信息進(jìn)行檢測;
攔截單元,用于當(dāng)檢測所述異常數(shù)據(jù)信息為惡意行為的數(shù)據(jù)信息時,將所述惡意行為的數(shù)據(jù)信息進(jìn)行攔截;
傳遞單元,用于當(dāng)檢測所述異常數(shù)據(jù)信息為非惡意行為的數(shù)據(jù)信息時,將所述非惡意行為的數(shù)據(jù)信息傳遞至宿主機。
借由上述技術(shù)方案,本發(fā)明實施例提供的一種檢測虛擬機逃逸的方法及裝置,通過將虛擬機流向宿主機的異常數(shù)據(jù)信息與預(yù)設(shè)的行為特征信息庫進(jìn)行比對,來檢測虛擬機流向宿主機的異常數(shù)據(jù)信息是否對應(yīng)惡意行為;由于虛擬機正常情況下只在自己的虛擬環(huán)境下進(jìn)行相關(guān)操作,當(dāng)有數(shù)據(jù)信息從虛擬機流入宿主機時,會存在虛擬機逃逸行為發(fā)生的可能。因此,當(dāng)檢測到所述異常數(shù)據(jù)信息對應(yīng)惡意行為時,需要將對應(yīng)惡意行為的數(shù)據(jù)信息進(jìn)行攔截,防止其進(jìn)入宿主機后利用宿主機的特權(quán)進(jìn)行操作;當(dāng)檢測到所述異常數(shù)據(jù)信息對應(yīng)非惡意行為時,將對應(yīng)非惡意行為的數(shù)據(jù)信息傳遞至宿主機,以便實現(xiàn)虛擬機和宿主機之間正常的信息共享和交互。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了本發(fā)明實施例提供的一種檢測虛擬機逃逸的方法的流程圖;
圖2示出了本發(fā)明實施例提供的一種檢測虛擬機逃逸的裝置的組成框圖;
圖3示出了本發(fā)明實施例提供的一種檢測虛擬機逃逸的裝置的組成框圖。
具體實施方式
下面將參照附圖更加詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
虛擬化指的是將一個物理計算機劃分為一個或多個完全孤立的“虛擬機”。虛擬機提供的環(huán)境,看起來就像是獨立并存的數(shù)個計算機,而實際上是在一個物理主機上模擬運行的。在理想環(huán)境下,一個物理機內(nèi)的虛擬機之間并不允許互相交流,但是由于技術(shù)的限制和虛擬化軟件的一些程序漏洞,在虛擬機里運行的數(shù)據(jù)信息能夠通過這些漏洞繞過底層,從而流向宿主機進(jìn)行運行,當(dāng)這些逃逸的數(shù)據(jù)信息為對應(yīng)惡意行為的數(shù)據(jù)信息時,會對宿主機和其他虛擬機的運行造成危害,但是當(dāng)逃逸的數(shù)據(jù)信息為虛擬機與宿主機之間正常的信息共享和交互時,就無需對這些數(shù)據(jù)信息進(jìn)行處理。
基于上述原因,本發(fā)明實施例提供了一種檢測虛擬機逃逸的方法,能夠在不影響虛擬機與宿主機之間正常的共享與交互的基礎(chǔ)上,有效的檢測出虛擬機逃逸行為。如圖1所示,該方法包括:
101、獲取虛擬機流向宿主機的異常數(shù)據(jù)信息。
在宿主機內(nèi)構(gòu)建虛擬機時,需要利用宿主機的各種資源為每個虛擬機分配供其單獨使用的資源,如內(nèi)存資源、中央處理器(Central Processing Unit,簡稱CPU)資源,硬盤資源等。宿主機內(nèi)構(gòu)建的每個虛擬機都可以在自身的運行環(huán)境下進(jìn)行數(shù)據(jù)操作。其中,宿主機擁有最高的權(quán)限,各個虛擬機之間的運行互不干擾。當(dāng)某個虛擬機內(nèi)的數(shù)據(jù)信息逃出該虛擬機的運行環(huán)境流入宿主機后,這樣的漏洞會被利用,從而利用宿主機的特權(quán)執(zhí)行惡意操作,給宿主機和其他虛擬機造成危害。因此,當(dāng)出現(xiàn)虛擬機內(nèi)的數(shù)據(jù)信息流入宿主機時,這些數(shù)據(jù)信息通常被認(rèn)為具有潛在的危險,很可能是包含某些病毒、木馬等的惡意數(shù)據(jù)信息。本發(fā)明實施例對從虛擬機內(nèi)流向宿主機內(nèi)的數(shù)據(jù)信息統(tǒng)稱為異常數(shù)據(jù)信息,為了判斷虛擬機運行環(huán)境下是否出現(xiàn)真正的虛擬機逃逸行為,本發(fā)明實施例需要執(zhí)行步驟101獲取虛擬機流向宿主機的異常數(shù)據(jù)信息。
102、通過預(yù)設(shè)的行為特征信息庫對所述異常數(shù)據(jù)信息進(jìn)行檢測。
當(dāng)在步驟101中獲取到虛擬機流向宿主機的異常數(shù)據(jù)信息之后,就需要確定所述異常數(shù)據(jù)信息是否安全,也就是確定其是否為對應(yīng)惡意行為的數(shù)據(jù)信息。當(dāng)某些數(shù)據(jù)信息對應(yīng)的操作為執(zhí)行惡意行為時,其操作結(jié)果或者執(zhí)行的惡意行為都會具有一些特征,本發(fā)明實施例稱為行為特征信息,惡意行為產(chǎn)生的行為特征信息與正常行為產(chǎn)生的行為特征信息通常不相同。因此,通過檢測虛擬機流向宿主機的異常數(shù)據(jù)信息對應(yīng)的操作所產(chǎn)生的行為特征信息是否安全,就可以確定從虛擬機流向宿主機的異常數(shù)據(jù)信息是否安全。為了檢測所述異常數(shù)據(jù)信息對應(yīng)的操作所產(chǎn)生的行為特征信息是否安全,本發(fā)明實施例提供了預(yù)設(shè)的行為特征信息庫,該行為特征信息庫中記錄了已知的各種惡意行為產(chǎn)生的行為特征信息,通過將所述異常數(shù)據(jù)信息對應(yīng)的操作產(chǎn)生的行為特征信息在預(yù)設(shè)的行為特征信息庫中進(jìn)行比對,就可以確定所述異常數(shù)據(jù)信息是否為對應(yīng)惡意行為的數(shù)據(jù)信息。
103、當(dāng)檢測所述異常數(shù)據(jù)信息為惡意行為的數(shù)據(jù)信息時,將所述惡意行為的數(shù)據(jù)信息進(jìn)行攔截。
當(dāng)通過步驟102檢測到所述異常數(shù)據(jù)信息為對應(yīng)惡意行為的數(shù)據(jù)信息時,本發(fā)明實施例需要將對應(yīng)惡意行為的異常數(shù)據(jù)信息進(jìn)行攔截,避免其流入宿主機后利用宿主機的特權(quán)執(zhí)行惡意行為,從而危害宿主機及其他虛擬機的安全。
104、當(dāng)檢測所述異常數(shù)據(jù)信息為非惡意行為的數(shù)據(jù)信息時,將所述非惡意行為的數(shù)據(jù)信息傳遞至宿主機。
當(dāng)通過步驟102檢測到所述異常數(shù)據(jù)信息為對應(yīng)非惡意行為的數(shù)據(jù)信息時,可以認(rèn)為對應(yīng)非惡意行為的異常數(shù)據(jù)信息是虛擬機與宿主機之間正常的信息共享和交互,從而無需對該異常數(shù)據(jù)信息進(jìn)行攔截,可以將獲取的該異常數(shù)據(jù)信息傳遞或放行至宿主機,實現(xiàn)該虛擬機與宿主機之間正常的信息共享和交互。
本發(fā)明實施例提供的一種檢測虛擬機逃逸的方法,通過將虛擬機流向宿主機的異常數(shù)據(jù)信息與預(yù)設(shè)的行為特征信息庫進(jìn)行比對,來檢測虛擬機流向宿主機的異常數(shù)據(jù)信息是否對應(yīng)惡意行為;由于虛擬機正常情況下只在自己的虛擬環(huán)境下進(jìn)行相關(guān)操作,當(dāng)有數(shù)據(jù)信息從虛擬機流入宿主機時,會存在虛擬機逃逸行為發(fā)生的可能。因此,當(dāng)檢測到所述異常數(shù)據(jù)信息對應(yīng)惡意行為時,需要將對應(yīng)惡意行為的數(shù)據(jù)信息進(jìn)行攔截,防止其進(jìn)入宿主機后利用宿主機的特權(quán)進(jìn)行操作;當(dāng)檢測到所述異常數(shù)據(jù)信息對應(yīng)非惡意行為時,將對應(yīng)非惡意行為的數(shù)據(jù)信息傳遞至宿主機,以便實現(xiàn)虛擬機和宿主機之間正常的信息共享和交互。
為了更好的對上述圖1及圖2所示的方法進(jìn)行理解,作為對上述實施方式的細(xì)化和擴展,本發(fā)明實施例將以目前主流的基于Linux操作系統(tǒng)內(nèi)核的虛擬機(Kernel Based Virtual Machine,簡稱KVM)為例,結(jié)合圖1的步驟進(jìn)行詳細(xì)說明。
由于在正常的虛擬環(huán)境下,虛擬機的運行通常被限制在自己的虛擬環(huán)境下,其內(nèi)部運行的程序或者數(shù)據(jù)信息不會流入其他虛擬機或宿主機的運行環(huán)境。當(dāng)某個虛擬機內(nèi)的數(shù)據(jù)信息繞過系統(tǒng)底層進(jìn)入宿主機后,很可能會被病毒或木馬利用而出現(xiàn)虛擬機逃逸行為,給宿主機和其他虛擬機造成危害。因此,要確定虛擬環(huán)境下是否發(fā)生真正的虛擬機逃逸行為,本發(fā)明實施例需要獲取虛擬機流向宿主機的數(shù)據(jù)信息,這些數(shù)據(jù)信息被稱為異常數(shù)據(jù)信息。以KVM虛擬機為例,當(dāng)虛擬機流向宿主機的異常數(shù)據(jù)信息為一些執(zhí)行特權(quán)指令或者外部事件的數(shù)據(jù)信息,如I/O訪問、對宿主機控制寄存器的操作、MSR分區(qū)(Microsoft Reserved Partition,縮寫MSR)的讀寫數(shù)據(jù)包到達(dá)等,都會導(dǎo)致物理CPU發(fā)生虛擬機跳出(VMExit),將虛擬機操作系統(tǒng)保存到虛擬機控制結(jié)構(gòu)(Virtual Machine Control Structure,簡稱VMCS)中,通過讀取VMCS中的VM_EXIT_REASON字段得到引起VM Exit的原因。其中,VMCS是Intel-x中一個很重要的數(shù)據(jù)結(jié)構(gòu),它占用一個page頁面大小,記錄有各種由虛擬機流向宿主機的異常數(shù)據(jù)信息,如CPU異常、I/O異常,內(nèi)存memory異常等。基于上述原因,本發(fā)明實施例在獲取虛擬機流向宿主機的異常數(shù)據(jù)信息時,可以通過訪問虛擬機控制結(jié)構(gòu)中記錄有異常數(shù)據(jù)信息的頁表來獲取虛擬機流向宿主機的異常數(shù)據(jù)信息。
對于其他類型的虛擬機而言,如果虛擬機發(fā)生逃逸行為,那么該虛擬機的數(shù)據(jù)信息必須流入到宿主機時才能起作用,因此在獲取虛擬機流向宿主機的異常數(shù)據(jù)信息時,可以在異常數(shù)據(jù)信息到達(dá)宿主機之前,對其進(jìn)行截獲。而鉤子(Hook)是Windows消息處理機制的一個平臺,應(yīng)用程序可以在上面設(shè)置子程以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進(jìn)程所創(chuàng)建的。當(dāng)消息到達(dá)后,在目標(biāo)窗口處理函數(shù)之前處理它。鉤子機制允許應(yīng)用程序截獲處理window消息或特定事件。因此,作為另一種可選的實施方式,本發(fā)明實施例還可以通過鉤子程序Hook在異常數(shù)據(jù)信息到達(dá)宿主機之前,截獲虛擬機流向宿主機的異常數(shù)據(jù)信息。
由于在虛擬機流向宿主機的異常數(shù)據(jù)信息中,并不完全都是對應(yīng)惡意行為或者具有漏洞、病毒、木馬等的數(shù)據(jù)信息,因此當(dāng)通過上述方式獲取到虛擬機流向宿主機的異常數(shù)據(jù)信息之后,還需要檢測這些異常數(shù)據(jù)信息是否為對應(yīng)惡意行為的數(shù)據(jù)信息。在對虛擬機流向宿主機的異常數(shù)據(jù)信息進(jìn)行檢測時,主要是檢測該異常數(shù)據(jù)信息所對應(yīng)的操作是否是惡意操作。在通常情況下,惡意操作產(chǎn)生的結(jié)果與正常操作產(chǎn)生的結(jié)果并不相同,因此在確定惡意操作時可以根據(jù)其操作結(jié)果所具有的特性進(jìn)行判斷。本發(fā)明實施例將數(shù)據(jù)信息所對應(yīng)操作的操作結(jié)果所具有的特性稱為行為特征信息,因此,在檢測異常數(shù)據(jù)信息是否為對應(yīng)惡意行為的數(shù)據(jù)信息時,可以通過預(yù)設(shè)的行為特征信息庫對異常數(shù)據(jù)信息進(jìn)行檢測,所述行為特征信息庫中包括目前為止已知的各種惡意行為的操作結(jié)果所產(chǎn)生的行為特征信息。而具體的檢測過程可以通過下述步驟執(zhí)行:
(1)在預(yù)設(shè)地址的空間內(nèi)模擬所述異常數(shù)據(jù)信息對應(yīng)的操作,所述預(yù)設(shè)地址的空間與宿主機內(nèi)核空間相隔離。
要通過預(yù)設(shè)的行為特征信息庫對異常數(shù)據(jù)信息進(jìn)行檢測,就需要得到該異常數(shù)據(jù)信息對應(yīng)操作的操作結(jié)果的行為特征信息,因此必須執(zhí)行該異常數(shù)據(jù)信息所對應(yīng)的操作。由于無法確定該異常數(shù)據(jù)信息是否對應(yīng)惡意行為,因此,在執(zhí)行該異常數(shù)據(jù)信息所對應(yīng)的操作時,需要將其在與宿主機相隔離的環(huán)境下進(jìn)行操作?;谏鲜鲈颍景l(fā)明實施例提供了一種實施方式,可以在預(yù)設(shè)地址的空間內(nèi)模擬所述異常數(shù)據(jù)信息對應(yīng)的操作,所述預(yù)設(shè)地址的空間與宿主機內(nèi)核空間相隔離。以KVM虛擬機為例,當(dāng)獲取到虛擬機流向宿主機的異常數(shù)據(jù)信息之后,可以將該異常數(shù)據(jù)信息發(fā)送給虛擬操作系統(tǒng)模擬器QEMU進(jìn)行模擬處理,QEMU代碼中包含整套的虛擬機實現(xiàn),包括處理器虛擬化、內(nèi)存虛擬化以及KVM需要使用到的虛擬設(shè)備模擬(網(wǎng)卡、顯卡、存儲控制器和硬盤等)。例如,當(dāng)虛擬機流向宿主機的異常數(shù)據(jù)信息為對應(yīng)I/O操作時,該異常數(shù)據(jù)信息會被交給QEMU來負(fù)責(zé)解析和模擬操作。由于QEMU與宿主機內(nèi)核處于隔離狀態(tài),因此在模擬異常數(shù)據(jù)信息對應(yīng)的操作時,不會對宿主機的安全性造成影響。
(2)將操作結(jié)果對應(yīng)的行為特征信息在預(yù)設(shè)的行為特征信息庫中進(jìn)行比對,檢測所述異常數(shù)據(jù)信息是否為惡意行為的數(shù)據(jù)信息。
當(dāng)在預(yù)設(shè)地址的空間內(nèi)模擬出所述異常數(shù)據(jù)信息對應(yīng)的操作之后,可以獲取其操作結(jié)果所具有的行為特征信息,并將該行為特征信息在預(yù)設(shè)的行為特征信息庫中進(jìn)行比對,確定該行為特征信息是否對應(yīng)惡意行為。例如,以針對I/O操作為例,其正常執(zhí)行結(jié)果為讀寫一次寄存器,而針對該I/O操作具有某個特殊漏洞時,其執(zhí)行結(jié)果為多次讀寫寄存器,因此當(dāng)對所述異常數(shù)據(jù)信息進(jìn)行模擬后發(fā)現(xiàn)其行為特征信息符合多次讀寫寄存器的行為特征信息時,就可以確認(rèn)該異常數(shù)據(jù)信息為具有該特殊漏洞的數(shù)據(jù)信息。
具體的,在預(yù)設(shè)地址的空間內(nèi)模擬所述異常數(shù)據(jù)信息對應(yīng)的操作時,需要調(diào)用處理函數(shù)將該異常數(shù)據(jù)信息調(diào)入預(yù)設(shè)地址的空間內(nèi)進(jìn)行處理。并且,在當(dāng)虛擬機內(nèi)的異常數(shù)據(jù)信息流入到宿主機時,該異常數(shù)據(jù)信息會被記錄,并且記錄的內(nèi)容還包括數(shù)據(jù)信息類型、函數(shù)指針及其地址,用于將異常數(shù)據(jù)信息調(diào)入特定地址的函數(shù)指針中執(zhí)行該異常數(shù)據(jù)信息類型對應(yīng)的操作。由于本發(fā)明實施例需要在預(yù)設(shè)地址的空間內(nèi)模擬異常數(shù)據(jù)信息對應(yīng)的操作,因此需要獲取記錄異常數(shù)據(jù)信息對應(yīng)的函數(shù)指針的地址,通過改變其指針地址來將異常數(shù)據(jù)信息調(diào)入到預(yù)設(shè)地址的空間內(nèi)進(jìn)行執(zhí)行。本發(fā)明實施例將虛擬機的數(shù)據(jù)信息流入到宿主機時記錄的異常數(shù)據(jù)信息對應(yīng)的函數(shù)指針的地址稱為初始指針地址,將模擬異常數(shù)據(jù)信息對應(yīng)操作的空間的地址稱為檢測指針地址。具體執(zhí)行時,需要讀取所述異常數(shù)據(jù)信息中記錄的數(shù)據(jù)信息類型及初始指針地址,并將所述初始指針地址更改為檢測指針地址,根據(jù)所述檢測指針地址跳轉(zhuǎn)到預(yù)設(shè)地址的空間內(nèi),執(zhí)行所述數(shù)據(jù)信息類型對應(yīng)的操作。例如,以KVM虛擬機為例,當(dāng)虛擬機流入宿主機的異常數(shù)據(jù)信息為寫某個端口時,記錄的異常數(shù)據(jù)信息中會產(chǎn)生一條IO instruction,這時異常數(shù)據(jù)信息從虛擬機操作系統(tǒng)中退出并進(jìn)入內(nèi)核空間,由內(nèi)核空間調(diào)用kvm_vmx_exit_handlers[exit_reason](vcpu),kvm_vmx_exit_handlers是一個函數(shù)指針,由于ioport訪問產(chǎn)生的退出,所以選擇handle_io函數(shù)執(zhí)行。本發(fā)明實施例將kvm_vmx_exit_handlers的指針地址進(jìn)行更改,也就是將其初始指針地址變更為檢測指針地址,讓IO操作在原先的內(nèi)核空間內(nèi)執(zhí)行變?yōu)樵陬A(yù)設(shè)地址的空間內(nèi)進(jìn)行模擬執(zhí)行。由于該預(yù)設(shè)地址的空間與內(nèi)核空間相隔離,因此無論該IO操作是否對應(yīng)惡意行為,都不會對宿主機的安全性造成影響。
當(dāng)通過上述方式在預(yù)設(shè)地址的空間內(nèi)模擬出異常數(shù)據(jù)信息對應(yīng)的操作后,就可以獲取其操作結(jié)果所具有的行為特征信息,并將該行為特征信息在預(yù)設(shè)的行為特征信息庫中進(jìn)行比對,確定該行為特征信息是否與行為特征信息庫中記錄的惡意行為的行為特征信息相匹配。若兩者相匹配,則可以確定該異常數(shù)據(jù)信息為對應(yīng)惡意行為的數(shù)據(jù)信息;若兩者不匹配,則可以確定該異常數(shù)據(jù)信息為對應(yīng)非惡意行為的數(shù)據(jù)信息。
當(dāng)確定從虛擬機流入宿主機的異常數(shù)據(jù)信息為惡意行為的數(shù)據(jù)信息之后,就需要對該對應(yīng)惡意行為的異常數(shù)據(jù)信息進(jìn)行攔截,防止其進(jìn)入宿主機后利用宿主機的特權(quán)執(zhí)行惡意操作。由于流入宿主機的異常數(shù)據(jù)信息為惡意行為的數(shù)據(jù)信息,可以將其虛擬機認(rèn)為是發(fā)生逃逸行為的虛擬機,因此,在將對應(yīng)惡意行為的異常數(shù)據(jù)信息進(jìn)行攔截之后,還可以發(fā)出系統(tǒng)警報,報告發(fā)生逃逸行為的虛擬機的參數(shù)信息。進(jìn)一步的,可以將攔截的惡意行為的數(shù)據(jù)信息返回給發(fā)生逃逸行為的虛擬機;或者,將攔截的惡意行為的數(shù)據(jù)信息在預(yù)設(shè)地址的空間內(nèi)進(jìn)行銷毀處理,防止惡意行為的數(shù)據(jù)信息發(fā)生擴散。
進(jìn)一步的,作為對上述圖1所示方法的實現(xiàn),本發(fā)明實施例提供了一種檢測虛擬機逃逸的裝置,如圖2所示,該裝置包括:獲取單元21、檢測單元22、攔截單元23及傳遞單元24,其中,
獲取單元21,用于獲取虛擬機流向宿主機的異常數(shù)據(jù)信息;
檢測單元22,用于通過預(yù)設(shè)的行為特征信息庫對所述異常數(shù)據(jù)信息進(jìn)行檢測;
攔截單元23,用于當(dāng)檢測所述異常數(shù)據(jù)信息為惡意行為的數(shù)據(jù)信息時,將所述惡意行為的數(shù)據(jù)信息進(jìn)行攔截;
傳遞單元24,用于當(dāng)檢測所述異常數(shù)據(jù)信息為非惡意行為的數(shù)據(jù)信息時,將所述非惡意行為的數(shù)據(jù)信息傳遞至宿主機。
進(jìn)一步的,獲取單元21用于通過鉤子程序Hook截獲虛擬機流向宿主機的異常數(shù)據(jù)信息;獲取單元21還用于通過訪問虛擬機控制結(jié)構(gòu)中記錄有異常數(shù)據(jù)信息的頁表來獲取虛擬機流向宿主機的異常數(shù)據(jù)信息。
進(jìn)一步的,如圖3所示,檢測單元22包括:
模擬模塊221,用于在預(yù)設(shè)地址的空間內(nèi)模擬所述異常數(shù)據(jù)信息對應(yīng)的操作,所述預(yù)設(shè)地址的空間與宿主機內(nèi)核空間相隔離;
比對模塊222,用于將操作結(jié)果對應(yīng)的行為特征信息在預(yù)設(shè)的行為特征信息庫中進(jìn)行比對,檢測所述異常數(shù)據(jù)信息是否為惡意行為的數(shù)據(jù)信息。
進(jìn)一步的,模擬模塊221用于讀取所述異常數(shù)據(jù)信息中記錄的數(shù)據(jù)信息類型及初始指針地址,還用于將所述初始指針地址更改為檢測指針地址,還用于根據(jù)所述檢測指針地址跳轉(zhuǎn)到預(yù)設(shè)地址的空間內(nèi),執(zhí)行所述數(shù)據(jù)信息類型對應(yīng)的操作。
進(jìn)一步的,如圖3所示,裝置還包括:
銷毀單元25,用于將攔截的惡意行為的數(shù)據(jù)信息在預(yù)設(shè)地址的空間內(nèi)進(jìn)行銷毀處理;
傳遞單元24,用于將攔截的惡意行為的數(shù)據(jù)信息返回給所述虛擬機。
本發(fā)明實施例提供的一種檢測虛擬機逃逸的裝置,通過將虛擬機流向宿主機的異常數(shù)據(jù)信息與預(yù)設(shè)的行為特征信息庫進(jìn)行比對,來檢測虛擬機流向宿主機的異常數(shù)據(jù)信息是否對應(yīng)惡意行為;由于虛擬機正常情況下只在自己的虛擬環(huán)境下進(jìn)行相關(guān)操作,當(dāng)有數(shù)據(jù)信息從虛擬機流入宿主機時,會存在虛擬機逃逸行為發(fā)生的可能。因此,當(dāng)檢測到所述異常數(shù)據(jù)信息對應(yīng)惡意行為時,需要將對應(yīng)惡意行為的數(shù)據(jù)信息進(jìn)行攔截,防止其進(jìn)入宿主機后利用宿主機的特權(quán)進(jìn)行操作;當(dāng)檢測到所述異常數(shù)據(jù)信息對應(yīng)非惡意行為時,將對應(yīng)非惡意行為的數(shù)據(jù)信息傳遞至宿主機,以便實現(xiàn)虛擬機和宿主機之間正常的信息共享和交互。
在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實施例中的“第一”、“第二”等是用于區(qū)分各實施例,而并不代表各實施例的優(yōu)劣。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的發(fā)明名稱(如確定網(wǎng)站內(nèi)鏈接等級的裝置)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。