專利名稱:用于病毒掃描的虛擬機的制作方法
用于病毒掃描的虛擬機
背景技術(shù):
硬件虛擬化使得能夠從底層物理硬件將計算平臺抽象化。例如,云計算環(huán)境可以通過提供應(yīng)需要創(chuàng)建具有諸如塊設(shè)備的大小、操作系統(tǒng)、數(shù)目等定義屬性的虛擬機(VM)的能力來遞送基礎(chǔ)設(shè)施即服務(wù)(IaaS)。通常,可以響應(yīng)于使用基礎(chǔ)設(shè)施來執(zhí)行某些任務(wù)的服務(wù)的需求而動態(tài)地改變VM的數(shù)目。可以形成為封裝網(wǎng)絡(luò)的這些VM由底層物理硬件構(gòu)成。還可以在相對較小的規(guī)模來執(zhí)行硬件虛擬化,諸如使用其中例如可以以VM的形式在機器上將多個不同操作系統(tǒng)實例化的計算機和膝上型計算機,所述操作系統(tǒng)全部使用設(shè)備的底層硬件。通常,不管規(guī)模如何,全部的硬件虛擬化系統(tǒng)控制VM的提供并且它們與利用一種控制程序(稱為管理程序或虛擬機監(jiān)視器)的底層物理硬件相互作用。在其中多個VM可以在任何給定時間操作的虛擬化環(huán)境中,并且其中,可以將每個VM實例化以執(zhí)行特定程序或操作系統(tǒng),存在來自惡意機器可讀指令的攻擊風(fēng)險,也稱為惡意軟件,其可以包括病毒、蠕蟲、木馬、間諜軟件、欺詐附件、犯罪軟件、根工具包以及任何其他惡意且一般不想要的機器可讀指令。一般地,惡意軟件將嘗試使用被設(shè)計成隱蔽或以其他方式模糊其存在的各種機制從其所在的軟件環(huán)境(例如,軟件VM)掩蔽其存在。
根據(jù)結(jié)合附圖進行的隨后的詳細描述,本公開的各種特征和優(yōu)點將是顯而易見的,附圖僅以示例的方式一起圖示出本公開的特征,并且在附圖中:
圖1是典型云計算環(huán)境的示例的示意性方框 圖2是根據(jù)示例的虛擬化環(huán)境的方框 圖3是用于檢索分配給VM的存儲器的一部分的過程的示例的示意性方框 圖4是根據(jù)示例的虛擬化環(huán)境的示意性方框 圖5是根據(jù)示例的內(nèi)省(introspection)取證虛擬機的示意性方框 圖6是根據(jù)示例的內(nèi)省取證虛擬機的示意性方框 圖7是根據(jù)示例的虛擬化系統(tǒng)的示意性方框 圖8是根據(jù)示例的用于檢測威脅的方法的方框 圖9是根據(jù)示例的用于部署取證虛擬機的方法的方框圖;以及 圖10是根據(jù)示例的內(nèi)省取證虛擬機的功能方框圖。
具體實施例方式現(xiàn)在將詳細地對某些實施方式進行參考,其示例在附圖中示出。在以下描述中,闡述了許多特定細節(jié)以提供實施方式的透徹理解。未詳細地描述眾所周知的方法、程序、組件、電路以及網(wǎng)絡(luò),以免不必要地使實施方式的方面含糊不清。還將理解的是雖然在本文中可以使用術(shù)語第一、第二等來描述各種元件,但這些元件不應(yīng)受這些術(shù)語的限制。這些術(shù)語僅用來將元件相互區(qū)別開。例如,可以將第一項稱為第二項,并且同樣地,可以將第二項稱為第一項等。
在本文的描述中所使用的術(shù)語是僅僅是出于描述特定實施方式的目的,并且并不意在是限制性的。在本發(fā)明的描述和所附權(quán)利要求中所使用的單數(shù)形式“一”、“一個”和“該”意在也包括復(fù)數(shù)形式,除非上下文另外明確地指出。還將理解的是本文所使用的術(shù)語“和/或”指的是且涵蓋相關(guān)聯(lián)的所列項目中的一個或多個的任何和所有可能組合。還將理解的是術(shù)語“包括”和/或“包含”當在本說明書中使用時指定所述特征、整體、步驟、操作、元件和/或組件的存在,但不排除一個或多個其他特征、整體、步驟、操作、元件、組件和/或其群組的存在或添加。雖然本說明主要參考例如諸如云計算環(huán)境的較大規(guī)模環(huán)境中的方法和系統(tǒng)的使用,此類方法和系統(tǒng)在諸如臺式計算機和膝上型計算機、以及甚至具有相對有限硬件的移動設(shè)備上的較小規(guī)模實施方式中同樣適用。因此,本文所闡述的示例和實施方式并不意圖局限于諸如云計算環(huán)境的較大規(guī)模系統(tǒng)。根據(jù)提出的示例的方法和系統(tǒng)是唯一可縮放的,并且對于云計算基礎(chǔ)設(shè)施而言可應(yīng)用于從單個獨立計算機到大規(guī)模服務(wù)器場的范圍的多個虛擬化系統(tǒng)。圖1圖示出云計算環(huán)境的示例。在圖1中所示的示例,示出了物理計算硬件基礎(chǔ)設(shè)施101。物理計算硬件基礎(chǔ)設(shè)施可以例如包括一個或多個數(shù)據(jù)中心等,其包括多個服務(wù)器、一個或多個巨型計算機或計算資源的任何集合或網(wǎng)絡(luò)。物理硬件可以由一個組織所擁有和控制,并且可用于其他組織,例如作為基礎(chǔ)設(shè)施即服務(wù)和/或平臺即服務(wù)業(yè)務(wù)的一部分,或者硬件可以是作為其自己的用戶的云計算環(huán)境操作的單個組織的硬件。物理硬件可以用來應(yīng)需要向用戶提供適當?shù)奶摂M機(VM)。VM與用于操作和數(shù)據(jù)存儲的卷(volume)-即虛擬磁盤相關(guān)聯(lián)。在一種實施方式中,可以在小區(qū)(cell)內(nèi)提供VM和卷,每個小區(qū)是包括一個或多個VM和/或卷的封裝網(wǎng)絡(luò)。在小區(qū)內(nèi),多個虛擬機可以被實例化且其可以形成虛擬網(wǎng)絡(luò)。卷是小區(qū)的組件。在云計算的背景下,卷是是VM可訪問的虛擬組件,其提供用于保持VM或用來形成VM的映像(image)或組件的狀態(tài)的持久性存儲。在云計算的背景下,從任何底層物理存儲硬件將卷抽象化,并且因此與任何特定存儲資源或資源類型分離且不依賴于該資源或資源類型,但是提供具有諸如大小的定義屬性的單個、獨特虛擬存儲資源。圖1示出了運行兩個小區(qū)103和104的第一用戶102。用戶102經(jīng)由例如由用戶的本地工作站提供的用戶接口來訪問小區(qū)。用戶102指定用于小區(qū)的VM的數(shù)目和屬性和關(guān)聯(lián)卷。小區(qū)103示出了均具有關(guān)聯(lián)卷106-1至106-5的多個VM 105-1至105-5的說明性網(wǎng)絡(luò)。小區(qū)104示出了包括具有三個關(guān)聯(lián)卷108-1至108-3的單個VM 107的說明性網(wǎng)絡(luò)。圖1還圖示出運行不同小區(qū)110的另一用戶109。通常使用期望VM的機器映像來創(chuàng)建VM。機器映像有效地是為VM提供可啟動操作系統(tǒng)和定義的軟件應(yīng)用程序的模板。機器映像通常被克隆到卷上,該卷被安裝于W,即附著于VM以用于寫和讀訪問。可以利用附著于VM的各種卷來創(chuàng)建VM,諸如可啟動卷和存儲卷。在諸如參考圖1所述的硬件虛擬化環(huán)境或者任何其他硬件虛擬化系統(tǒng)中,虛擬機監(jiān)視器(VMM)或管理程序管理底層物理硬件的資源并提供一個或多個VM的抽象化。例如在VM中運行的每個操作系統(tǒng)看起來似乎具有主機的處理器、存儲及其他資源或其至少一部分。然而,管理程序?qū)嶋H上控制主機處理器和資源并依次將所需的分配給每個操作系統(tǒng),并且確??蛻舨僮飨到y(tǒng)不會相互干擾。圖2是根據(jù)示例的虛擬化環(huán)境的方框圖。VMM 201在物理硬件基礎(chǔ)設(shè)施200上面?;A(chǔ)設(shè)施200通常包括多個處理器207,其可以是多核處理器以及諸如例如RAM的易失性存儲器208、網(wǎng)絡(luò)接口硬件209、例如諸如硬盤儲存器的儲存器210、諸如多個圖形處理處理器的圖形處理硬件211等,如典型的,其全部可以使用總線230進行通信??梢允褂肰MM 201來將VM 202,203實例化并從基礎(chǔ)設(shè)施200為其分配硬件。例如,可以根據(jù)其預(yù)定將執(zhí)行的任務(wù)從處理器207為VMM 202、203分配多個核。由VMM 201將多個較小VM 204,206 (在分配的資源和/或功能方面)實例化。根據(jù)下文將描述的示例,VM 204、206是用來監(jiān)視VM202,203的虛擬設(shè)備。可以將諸如圖2中所示的具有多個VM的環(huán)境提供為小區(qū),例如,諸如參考圖1描述的。替換地,在較小規(guī)模環(huán)境中,可以在包括膝上計算機或臺式計算機或其他適當硬件的硬件平臺上提供圖2的系統(tǒng)。VMM 201能夠?qū)崿F(xiàn)VM內(nèi)省的提供,亦即,允許出于分析正在VM內(nèi)部運行的軟件的目的從VM外面進行VM的透明檢查的提供。根據(jù)示例,提供了用于檢測和緩解存在于使用VM內(nèi)省的VM中的惡意軟件的影響的方法和系統(tǒng)。通常,使用允許在VMM上運行的虛擬機的內(nèi)省的庫來管理VM內(nèi)省。例如,可以在一個VM中提供機器可讀指令以使得能夠訪問其他VM的存儲器或磁盤空間。在檢查中的VM未覺察其正在被檢查的事實。經(jīng)由VMM 201來處理針對檢查存儲器或磁盤的一部分的頁面的調(diào)用。通常,存儲器內(nèi)省允許調(diào)查設(shè)備執(zhí)行VM的現(xiàn)場分析。調(diào)查設(shè)備可以是DomU (無特權(quán)域)VM或特權(quán)DomO (域O)VM,其通常是在啟動時被VMM實例化的第一 VM。通常,DomU設(shè)備將在DomO VM的命令下工作,但是DomO是自主的,并且可以對其范圍內(nèi)的任何其他無特權(quán)VM進行內(nèi)省。值得注意的是可以將DomO分成段,例如諸如功能段。因此,可以提供DomO的多個特權(quán)部分。通常,預(yù)留一個此類部分以執(zhí)行可信任務(wù),例如,諸如加密和解密。存儲器內(nèi)省通過將用于VM的存儲器頁面從物理存儲器映射到另一 VM的存儲器空間來進行。圖3是根據(jù)示例的VM中的存儲器布置的示意性方框圖。VMM 201管理用于VM202的多個CPU 207、存儲器208和儲存器209的資源。通常存在與VM映像有關(guān)的兩個主要種類的存儲器,在VM 202內(nèi)部運行的程序和操作系統(tǒng)可用的VM存儲器301以及作為機器存儲器的物理存儲器208,機器存儲器是用于VM 202的底層物理硬件200的一部分。通常,當運行VM 202時,VM 201在物理存儲器208中創(chuàng)建用于VM 202的可尋址存儲器空間。此存儲器空間具有與由VM 202的操作系統(tǒng)呈現(xiàn)給應(yīng)用程序的虛擬地址空間相同的性質(zhì)。因此,VMM 201可以同時地運行多個VM 202、203、204、206,同時防止每個虛擬機的存儲器被其他VM訪問。通常,將從物理存儲器208對VM 202分配非連續(xù)存儲器塊。然而,VM 202及更具體地在VM 202中運行的程序或操作系統(tǒng)可能認為其具有一定范圍的連續(xù)存儲器地址,即使地址通常將在物理存儲器208中散布于各處。VM 202的操作系統(tǒng)可訪問多個頁表,其將物理存儲器地址轉(zhuǎn)換成用于VM存儲器301的虛擬地址。通常,此類頁表映射用于VM的物理存儲器的4KB塊的地址,使得其能夠被VM 202訪問。在用于VM的存儲器內(nèi)省的過程中,VM 201可以中繼頁表信息,以便為查詢系統(tǒng)提供被正在討論中的VM所使用的存儲器的物理地址。由于該過程對于VM而言是透明的,所以其不知道已經(jīng)為其分配的物理存儲器正在被另一源讀取。
虛擬頁表303保持用于虛擬機202的應(yīng)用程序302的存儲器地址信息以使得應(yīng)用程序能夠?qū)μ摂M存儲器301進行尋址。虛擬存儲器301經(jīng)由物理頁表304被映射到物理存儲器208。頁表303因此存儲數(shù)據(jù),該數(shù)據(jù)表示用于在VM 202中運行的應(yīng)用程序的虛擬存儲器301與從存儲器208分配給VM 202的存儲器的物理地址之間的映射。通常由VMM 201來處理虛擬存儲器到物理存儲器的映射,如指示到和來自虛擬和物理存儲器的調(diào)用經(jīng)由VMM 201發(fā)生的箭頭305所指示的。在存儲器內(nèi)省的過程中,VMM201通常將VM的地址空間映射或拷貝到另一 VM的地址空間,使得可以由其他VM來檢查與地址空間相關(guān)聯(lián)的物理存儲器。內(nèi)省VM通常將沒有直接訪問硬件200的特權(quán)。內(nèi)省VM可以是由VMM在啟動時啟動的第一域(DomO),并且可以具有特權(quán),諸如能夠使新VM啟動,并且能夠直接訪問硬件200。其通常將負責(zé)運行用于硬件200的所有設(shè)備驅(qū)動器。替換地,內(nèi)省VM可以是已被DomO實例化且通常被DomO允許對其他無特權(quán)VM執(zhí)行內(nèi)省的無特權(quán)VM。圖4是根據(jù)示例的虛擬化環(huán)境的示意性方框圖。VM 202是目標VM,亦即待內(nèi)省或掃描的VM。VM 204是用于執(zhí)行目標VM 202的存儲器內(nèi)省的虛擬設(shè)備。根據(jù)示例,VM 204是取證VM (FVM)0 FVM 204可以具有經(jīng)由VMM 201來對硬件200的特權(quán)訪問,或者可以是無特權(quán)的。FVM 204中的應(yīng)用程序401可以請求訪問VM 202的存儲器空間。根據(jù)示例,可以將分配給目標VM 202的所請求存儲器頁面映射到諸如FVM 240的請求系統(tǒng)的地址空間,從而允許執(zhí)行對正在討論中的存儲器的分析。為了確定適當?shù)奈锢泶鎯ζ鲙?,查閱對?yīng)于存儲器208中的物理幀的頁表304。如上文參考圖3所述,中間動作意指從目標VM 202的角度來看的物理幀號在適當頁面能夠可用于請求系統(tǒng)204之前被轉(zhuǎn)換成用于底層硬件200的幀號。因此,F(xiàn)VM 204中的請求應(yīng)用程序401請求檢查目標VM 202的存儲器地址,例如,諸如與目標VM 202的核中的模塊相對應(yīng)的地址。與目標VM 202相關(guān)聯(lián)的頁表303被VMM 201使用,以便將用于VM的存儲器地址映射到物理存儲器地址。因此,VMM 201使用用于VM存儲器的頁表303來確定與所請求存儲器地址相關(guān)聯(lián)的VM存儲器地址301。一旦已知VM存儲器地址,就使用與VM存儲器地址到物理存儲器地址的映射相關(guān)聯(lián)的頁表304將其轉(zhuǎn)換成物理存儲器地址。一旦已知與請求相關(guān)聯(lián)的物理存儲器地址,就可以通過將其映射到例如用于FVM 204的頁表402中來將其映射到FVM 204中,以便允許由FVM 204讀取/檢查存儲器208的指定地址中的數(shù)據(jù)。惡意軟件通??梢杂啥鄠€組件組成,其可以相對容易地被出于某個目的而希望實現(xiàn)一件惡意軟件的某個人獲得。每個組件可以以使其具有特定簽名(signature)或與之相關(guān)聯(lián)的指示符的方式操作。也就是說,惡意軟件將由于其用以嘗試隱藏其自己的方式和/或其可以用以嘗試改變系統(tǒng)的某個功能以便執(zhí)行其被設(shè)計為完成的某個任務(wù)的方式而表現(xiàn)出某些行為和行為模式。通常,預(yù)先存在的組件被組合且包括由特定的一件惡意軟件的創(chuàng)建人所編寫的一段實現(xiàn)代碼。此類組件將具有簽名形式的特定行為模式,其例如可以是在任何一個時間存在于存儲器中的數(shù)據(jù)字的模式。該模式的檢測可以給出威脅的可能存在的指示。某些組件將具有簽名形式的行為模式,其可以是例如一系列雜亂的系統(tǒng)調(diào)用,并且這可以是例如嘗試模糊其存在和/或目的的一件軟件的指示。通常,可以根據(jù)底層進程是靜態(tài)還是動態(tài)的來將能夠指示可疑活動的存在的行為分類。例如,靜態(tài)進程可以包括對某個預(yù)先存在的機器可讀指令的調(diào)用(例如用以實現(xiàn)打印函數(shù)的調(diào)用)。也就是說,鏈接到包含用以實現(xiàn)指令的數(shù)據(jù)的庫的地址不應(yīng)改變,因為指令是預(yù)定義的。因此,地址的變化可以指示函數(shù)調(diào)用正在被修改以在其應(yīng)指向的指令之前實現(xiàn)某個其他活動。例如,不同的地址可以指向一段惡意代碼,其執(zhí)行某些不需要的活動,并且然后指向正確的庫(從而確保指令被執(zhí)行,從而隱藏其存在)。因此,可以監(jiān)視進程表以確保跳躍地址能夠保持不變(即是靜態(tài)的)。地址的變化可以是指示可疑活動的行為,并且變化因此可以是威脅的簽名。動態(tài)進程可以包括例如關(guān)于進程表的活動,其可以是包括關(guān)于系統(tǒng)中的每個進程的條目的鏈接列表。更具體地,當進程開始時,在表格中形成條目且進程進行初始化。一旦初始化完成,可以去除或修改條目以指示初始化的完成。因此,如果動態(tài)進程在大于預(yù)定義時間段(諸如幾秒、分鐘或者甚至小時,取決于例如進程)內(nèi)未改變,這可以指示可疑行為。也就是說,惡意進程可以假裝其仍處于初始化階段中,并且將被給予其可以用來執(zhí)行其他不需要活動的CPU時間。因此,可以監(jiān)視進程表以檢查條目,并確定是否任何進程保持在未解決狀態(tài)達到超過預(yù)定義時間段。如果任何一個是這樣,則那可以是指示可疑活動的行為,并且此類未解決狀態(tài)可以是威脅的簽名。來自多個組件的簽名的檢測可以指示一件惡意軟件的存在。例如,某些組件的存在可以指示其本身。替換地,相互組合的某些組件的存在可以是指示性的。例如,可能已知使用與組件C4組合的組件Cl以便實現(xiàn)一般在惡意軟件中使用的特定函數(shù)。因此,關(guān)于兩個組件的目標VM中的簽名的檢測能夠引起將更多注意力放在該VM,因為可能存在惡意軟件。圖5是根據(jù)示例的內(nèi)省FVM 204、206的功能方框圖。FVM 204是監(jiān)視VM用以監(jiān)視目標VM 202或在硬件200上實例化的任何其他目標VM。FVM 204包括請求應(yīng)用程序401。根據(jù)示例,請求應(yīng)用程序401是被‘硬接線’以針對與一個或多個威脅相關(guān)聯(lián)的特定行為、征兆、簽名或指示符監(jiān)視目標VM的專用代理。例如,特定威脅可以涉及以特定種類或類別的惡意軟件,具有指示威脅是活動的且以其他方式存在于被監(jiān)視的目標VM中的行為征兆、指示符或簽名。應(yīng)注意的是一般地,惡意軟件將以使用大量策略來模糊其存在為目的。然而,此類策略的目的在于將其存在從其所在的系統(tǒng)隱藏,該系統(tǒng)在本示例中將是VM 202。由于FVM 204對于VM 202而言仍是不可檢測的,所以VM 202內(nèi)的任何威脅/惡意軟件不能容易地檢測到VM 202正在被FVM 204監(jiān)視。VMM 201有效地提供將該系統(tǒng)從被監(jiān)視的VM隔離的基板并允許該系統(tǒng)檢查目標VM的狀態(tài)。VMM 201還允許系統(tǒng)介入訪客OS/訪客應(yīng)用程序與虛擬硬件之間的交互。根據(jù)示例,請求應(yīng)用程序401可以向VMM 201提供查詢,通常是經(jīng)由對用于VMM 201的來自應(yīng)用程序401的查詢進行轉(zhuǎn)換的庫。此類查詢可以是用于例如VM 202的存儲器頁面的當前狀態(tài)的請求。VMM 201解釋該查詢并從VM 202檢索期望數(shù)據(jù),諸如通過如上所述地映射用于由FVM 204訪問的存儲器頁面。類似于FVM 204,F(xiàn)VM 206包括請求應(yīng)用程序501,其為針對與一個或多個威脅相關(guān)聯(lián)的特定行為、征兆、簽名或指示符監(jiān)視目標VM的專用代理。根據(jù)圖5中的示例,F(xiàn)VM 206的請求應(yīng)用程序501被布置成對于與FVM 204相同的存儲器208的部分進行內(nèi)省,因此來自請求應(yīng)用程序501的請求引起例如頁表402形式的該存儲器的映射,其是與被映射到FVM204的相同的頁表。因此,根據(jù)示例,可以將多個FVM實例化以針對相同威脅簽名監(jiān)視多個目標VM。應(yīng)用程序401、501可以是相同的(使得FVM 204、206實際上是克隆),或者應(yīng)用程序可以在目的方面是不同的,使得FVM 204,206以檢測例如可能碰巧存在于物理存儲器的同一部分中的不同簽名為任務(wù)。圖6是根據(jù)示例的內(nèi)省FVM 220,222的功能方框圖。FVM 220和222包括請求應(yīng)用程序601、602,其中的每一個被布置成確定不同簽名的存在,可以使所述簽名與相同或不用威脅相關(guān)聯(lián)。因此,被映射到每個FVM 220、222的存儲器位置603、604涉及物理存儲器208的不同部分。請求應(yīng)用程序可以比較存儲器208的被請求部分,并確定是否存在威脅簽名。如果存在,F(xiàn)VM可以確定是否期望響應(yīng),并且如果是這樣的話,該響應(yīng)可能是什么。例如,響應(yīng)于威脅簽名的肯定檢測,F(xiàn)VM可以使VMM 201中止或重新啟動受影響的目標VM,并且中繼已經(jīng)檢測到的簽名的信息,使得可以部署其他FVM,如下文將描述的。 在包括大量目標VM的虛擬化環(huán)境中,可以使用一個特定FVM針對特定威脅簽名監(jiān)視每個目標VM。替換地,可以將一個FVM布置成針對給定威脅簽名監(jiān)視多個VM。在任一情況下,并且響應(yīng)于在VM中簽名存在或可操作的肯定指示,F(xiàn)VM可以使多個其他FVM與受影響VM銜接以便增加或以其他方式保持該VM上的細查。此類附加FVM可以包括被配置成針對另一威脅簽名進行監(jiān)視的那些,所述另一威脅簽名不同于最初檢測的那個,但是可以仍與特定威脅相關(guān)聯(lián)。通常,F(xiàn)VM將順序地掃描VM,與同時地掃描多個VM相反。然而,根據(jù)示例,可以使用同時掃描多個VM的規(guī)定。根據(jù)示例,可以使用多個FVM,其中的每一個被設(shè)計成確定多個不同威脅簽名的存在。如所述,多個不同威脅簽名的存在可以指示在VM中存在特定威脅且該特定威脅可操作,尤其是如果已知那些多個簽名針對某些惡意軟件組件以組合方式存在。在其中威脅簽名可以跨多個不同威脅存在的情況下,諸如當例如可以在多個不同件的惡意軟件中使用特定組件時,可以部署被布置成檢測該簽名的多個FVM。例如,如果已知在各件惡意軟件中以多產(chǎn)方式來使用組件C2 (因為那是例如實現(xiàn)某個功能的最容易或最好的方式),可以在虛擬化系統(tǒng)中部署能夠確定與C2的存在相對應(yīng)的簽名的存在的多個FVM。根據(jù)示例,每個此類FVM可以確定一個目標VM中的簽名的存在。替換地,可以將多個FVM用于一個目標VM以便確定簽名的存在,特別是如果該簽名本質(zhì)上是瞬態(tài)的(諸如是存儲在存儲器中的一組字,其例如被定期地修改、移動或刪除)。因此,搜索給定簽名的多個FVM與單獨的一個FVM相比將具有借助于其能夠監(jiān)視分配給VM的存儲器的較大部分的事實來檢測到給定簽名的更好機會。以特定數(shù)據(jù)的形式存在于被FVM讀取的存儲器頁面中的簽名可以是相對小的。因此,如果該數(shù)據(jù)存在,則其可以充當提示,以便將更多的注意力放在其中已經(jīng)發(fā)現(xiàn)簽名的VM,其可以包括部署多個其他FVM,以便讀取正在討論中的目標VM的一個或多個存儲器頁面。例如,多個其他FVM可以通過確定其他指示簽名的存在和/或通過檢驗初始簽名的存在來確證威脅的存在。例如,如上所述,如果通常以組合方式來使用組件,則可以部署多個其他FVM以針對與已知一般與所檢測組件組合地存在的組件有關(guān)的其他簽名的存在來掃描目標VM。根據(jù)示例,F(xiàn)VM可以周期性地讀取被監(jiān)視系統(tǒng)中的目標VM的存儲器頁面,并且目標VM可以是相同VM (以周期性間隔掃描)或不同VM (VM和掃描的變化以周期性間隔發(fā)生)。來自FVM的周期性請求可以是隨機的或計劃的。例如,‘游走的’ FVM可以隨機地或以設(shè)定周期性間隔來讀取一個或多個VM的存儲器頁面??梢愿鶕?jù)使用與FVM相關(guān)聯(lián)的隨機種子生成的號碼隨機地設(shè)置要檢查的VM的選擇和檢查之間的時段的長度。替換地,可以根據(jù)可操作以保證周期性地檢查多個VM的檢查方案來選擇要檢查的VM的選擇和檢查之間的間隔,這減少了威脅簽名被FVM漏掉的機會。根據(jù)示例,存在于虛擬化環(huán)境中的每個VM可以具有與之相關(guān)聯(lián)的FVM。在其中存在威脅或者檢測到威脅的一個或多個簽名的情況下,F(xiàn)VM可以將其焦點從其與之相關(guān)聯(lián)的VM轉(zhuǎn)移,以便提供與所檢測簽名相關(guān)聯(lián)的威脅的檢測或確認方面的附加支持。為了使被設(shè)計成確定特定簽名的存在的FVM登記簽名的存在,其可以將從分配給VM的物理存儲器位置讀取的一組數(shù)據(jù)字與用于現(xiàn)有威脅簽名的那些相比較。例如,可以使用FVM中的虛擬存儲器來存儲表示可以用于與從目標VM的存儲器空間讀取的數(shù)據(jù)相比較的一組簽名的數(shù)據(jù)。請求應(yīng)用程序(例如,諸如601、602)可以被用于使用所分配物理資源(亦即由VMM 201從硬件200分配的資源)來執(zhí)行比較。針對簽名,匹配可以包括其中所有或一定比例的數(shù)據(jù)相同的情況。例如,如果由FVM讀取的數(shù)據(jù)的60%或更多與威脅簽名的匹配,則FVM可以指示已找到可以引起其他FVM的部署的可能匹配。這在其中簽名可以隨時間而變、使得在一個時間點所檢測的部分可能不同于例如晚I秒的情況下有用。根據(jù)示例,可以在如上所述的FVM中或者在VMM 201中確定匹配。例如,與其讀取的數(shù)據(jù)無關(guān),F(xiàn)VM可以將數(shù)據(jù)中繼至VMM或另一 ‘主’或監(jiān)督FVM以便針對已知簽名進行比較。監(jiān)督FVM可以包括虛擬存儲器(或其他存儲器,例如,諸如硬件200中的存儲介質(zhì)的一部分)以存儲用于系統(tǒng)中的FVM的任務(wù)列表的數(shù)據(jù)。例如,任務(wù)列表可以包括應(yīng)檢查的VM的列表以及應(yīng)檢查VM的次序。任務(wù)列表因此可以表示用于檢查的VM的優(yōu)先級列表。根據(jù)示例,F(xiàn)VM可以周期性地查詢列表以便確定要檢查的VM,預(yù)期到該VM將被檢查的事實,然后將該VM從列表中去除或在列表上移動位置。如果發(fā)現(xiàn)VM包括指示威脅的潛在存在的簽名,則可以逐步提高其在任務(wù)列表上的位置和突出度,使得使其他FVM意識到其應(yīng)被檢查。替換地,如果發(fā)現(xiàn)VM包括指示被分類為主要威脅的威脅的潛在存在的簽名,則監(jiān)督FVM或VMM可以迫使VM被非周期性地檢查一亦即,在正常任務(wù)列表檢查花名冊之外。根據(jù)示例,如果檢測到簽名,并且部署多個其他FVM以確定用于給定威脅的其他簽名的可能存在,并且發(fā)現(xiàn)這些(或者檢測到將提供存在威脅的一定水平的置信度的比例),則可以將VM中止或關(guān)掉。在中止(或關(guān)掉,視情況而定)之前或之后,可以提供VM的存儲器和/或磁盤狀態(tài)的部分或完全鏡像以用于進一步檢查。圖7是根據(jù)示例的虛擬化系統(tǒng)的示意性方框圖。請注意,已經(jīng)省略了底層物理硬件,從而避免使該圖含糊不清。圖7中的模塊之間的實線指示模塊之間的活動鏈接。例如,VM 202和FVM 204a之間的鏈接700指示204a被以諸如其能夠讀取由VMM 201分配給VM202的物理存儲器的一部分或者以其他方式訪問VM 202的物理磁盤空間的一部分的方式活動地鏈接至VM 202。因此,由FVM 204a,204b針對那些FVM已檢測為任務(wù)的特定簽名來監(jiān)視兩個目標VM 202,203o例如,由FVM 204a監(jiān)視目標VM 202 (連續(xù)地或周期性地)以檢測簽名SI的存在。由FVM 204b來監(jiān)視目標VM 203以檢測該VM中的簽名SI的存在。因此,F(xiàn)VM 204a和204b針對同一簽名進行監(jiān)視,不過它們可能正在尋找不同簽名或行為的證據(jù)是完全可行的。如果由FVM 204b在VM 203中檢測到簽名SI,則其可以報告SI的存在,在該點處可以由VMM 201或監(jiān)督FVM 702部署多個其他FVM。所述其他FVM可以是已在系統(tǒng)上被實例化的那些,或者可以是由VMM 201響應(yīng)于SI的檢測指示(例如,諸如響應(yīng)于來自FVM 702的指示)而生成的新FVM。根據(jù)圖7的示例,F(xiàn)VM 205和206被部署成分別針對簽名S2和S3來監(jiān)視VM 203。簽名S2和S3可以是已知在已檢測到簽名SI的情況下可能存在的簽名,并且S1、S2和S3的組合可以向系統(tǒng)指示惡意軟件威脅Tl。因此,根據(jù)示例,VM 203中的簽名SI的存在意味著FVM (205,206)被部署成監(jiān)視VM 203。另外,可以將FVM 204a從監(jiān)視VM 202重新部署成至監(jiān)視VM 203是可能的,如線701所指示的。如果例如威脅Tl是特定高風(fēng)險,則可以發(fā)生FVM的重新部署,并且因而,批準額外資源以確定其存在。替換地,可以重新部署FVM 204a以檢驗簽名SI的存在,無論由威脅Tl引起的風(fēng)險的水平如何。根據(jù)另一示例,可以重新部署FVM 204a并變換成搜索替換簽名。也就是說,可以將FVM 204a重新部署成針對不同于當前針對VM所監(jiān)視的任何其他簽名(例如,諸如簽名S4)的簽名監(jiān)視VM 203。因此,如果威脅Tl可疑(例如由于簽名SI和/或簽名S1、S2和S3的組合的檢測)且其威脅被分類為用于VM 203的較高風(fēng)險,則可以將當前正在監(jiān)視其中尚未檢測到存在任何簽名的另一 VM的FVM (諸如204a)重新部署成針對其最初未被分配任務(wù)要檢測的簽名而監(jiān)視受威脅VM。因此,VMM 201可以修改FVM 204a以檢測簽名S4并重新部署。圖8是根據(jù)示例的用于檢測威脅的方法的方框圖。在方框801中,將取證虛擬機實例化,例如,諸如使用硬件200上的VMM 201。方框801的FVM被分配任務(wù)以確定簽名的存在,諸如簽名SI,其(特別地)可以指示系統(tǒng)中的威脅Tl的存在。在方框802中,由在801中實例化的FVM來掃描目標VM。例如,可以由FVM來掃描VM的存儲器或磁盤空間的一部分。在方框803中,將來自分配給VM的存儲器的映射部分的數(shù)據(jù)與簽名(諸如SI)的數(shù)據(jù)相比較以檢測是否存在該簽名。如果不存在簽名,則FVM可以再次掃描VM,或者諸如通過例如從將在方框804中掃描的VM的任務(wù)列表檢索作業(yè)來掃描另一 VM。如果存在簽名,則可以在方框805中報告該檢測,諸如向VMM 201或監(jiān)督FVM 702。響應(yīng)于該報告,可以在方框806中部署多個其他FVM以掃描正在討論中的VM。方框805的多個其他FVM可以是將針對簽名SI或多個其他簽名進行掃描的FVM,所述多個其他簽名可以是表示威脅Tl的存在的其他簽名。圖9是根據(jù)示例的用于部署取證虛擬機的方法的方框圖。用于掃描目標VM的FVM在方框901中掃描目標VM。響應(yīng)于用于威脅Tl的簽名SI的檢測,F(xiàn)VM可以在方框902中將SI的存在報告給VMM 201或FVM 702。響應(yīng)于該報告,在方框903中確定由威脅Tl引起的威脅的水平,例如,諸如參考可能威脅的列表和使它們處于未檢查狀態(tài)的嚴重性。如果威脅Tl被確定為較高風(fēng)險威脅,則在方框905中,VMM 201或FVM 702可以促使部署其他現(xiàn)有FVM或?qū)⑿翭VM實例化,或組合??梢杂蒝MM 201或FVM 702將重新部署的FVM重新編程以搜索與其最初預(yù)定要檢測的簽名不同的簽名??梢詫⑿聞?chuàng)建的FVM創(chuàng)建成檢測例如與Tl的存在相關(guān)聯(lián)的特定簽名。重新部署的或新FVM可以在方框906中對目標VM執(zhí)行內(nèi)省以針對威脅Tl檢測多個其他簽名的存在。如果威脅Tl被確定為較低風(fēng)險,則FVM可以在方框907中檢索作業(yè)以掃描另一目標VM。如果在方框906中的動作之后檢測到指示Tl的其他簽名,則可以在方框908中將這報告給VMM 201或FVM 702,使得在方框909中可以采取適當動作,例如,中止或刪除受影響VM。
圖10是根據(jù)示例的內(nèi)省FVM 1020,1022的功能方框圖。FVM 1020和1022包括請求應(yīng)用程序1001、1002,其中的每一個被布置成確定不同簽名的存在,可以使所述簽名與相同或不用威脅相關(guān)聯(lián)。因此,被映射到每個FVM 1020、1022的存儲器位置1003、1004涉及物理存儲器208的不同部分。FVM 1020、1022包括映射到(未示出)存儲器208的物理存儲器地址的公共頁表1030。使用共享存儲器來存儲用于FVM 1020、1022的數(shù)據(jù),這使得它們能夠?qū)嶋H上‘看到’和‘知道’其他FVM正在做什么和在虛擬化環(huán)境中在其周圍正在發(fā)生什么。通常,共享存儲器空間采取信息儲存庫的形式,其可以包括用于每個FVM的信息(其中,可以為每個FVM提供使得其對于其他FVM而言可識別的標識符),其特別地指示FVM當前正在掃描的W、FVM被分配任務(wù)要掃描的前一和/或下一 VM以及指示是否檢測到可疑的任何威脅、簽名和/或行為的信息。因此,響應(yīng)于所檢測行為或簽名等,其他FVM將其當前任務(wù)變成‘幫助’已檢測到某些可疑的東西的FVM。更具體地,在圖10的示例中,F(xiàn)VM 1020、1022可以訪問已由VMM 201分配的物理存儲器的共享部分。根據(jù)示例,共享存儲器部分可以包括用于FVM的任務(wù)列表。FVM 1020、1022以與上文參考其他示例所述的類似方式使用頁表1030來訪問共享存儲器。周期性地,或者響應(yīng)于來自另一 FVM的指示(諸如經(jīng)由VMM 201傳播到其他FVM的信號),F(xiàn)VM 1020、1022可以查找共享存儲器位置中的共享數(shù)據(jù),以便確定在VMM 201上實例化的FVM的當前、過去和/或未來掃描任務(wù)。因此,例如,如果FVM 1020檢測到指示威脅Tl的簽名SI,則其可以向共享存儲器位置寫入數(shù)據(jù),用于指示此事實(諸如所檢測簽名(SI)、相應(yīng)威脅(Tl)、其中檢測到SI的VM (例如位置或諸如地址的其他適當標識符)、與SI和Tl中的任一者或兩者相關(guān)聯(lián)的風(fēng)險因子、可能受影響的VM的所有者等)。如果威脅Tl是較高風(fēng)險威脅,則FVM 1020可以使(經(jīng)由例如應(yīng)用程序100DVMM 201有效地對諸如FVM 1022的其他FVM進行尋呼,以便使它們檢查共享存儲器位置以確定受影響VM (其中檢測到SI的VM)的位置或簡單地丟棄或完成其當前任務(wù)并掃描受影響的VM。這在可能受影響的VM的所有者是高優(yōu)先級(“VIP”)所有者的情況下可以適用。替換地,F(xiàn)VM可以確定可能受影響的VM的位置,并隨著且在它們通過共享存儲器的檢查而確定該問題時重新部署至該VM。圖10的示例大體上類似于例如其中FVM出于保證以及時、有效和判定性方式管理威脅的目的相互通信的生物學(xué)情況。因此,如果檢測到威脅、簽名或可疑行為,則FVM將意識到這一點,并且可以修改其行為以便減輕與潛在威脅相關(guān)聯(lián)的預(yù)期風(fēng)險。因此在系統(tǒng)中可以存在FVM的象征性警力,其中FVM相互協(xié)作以確定威脅的存在。在這種情況下,監(jiān)督FVM仍可以存在,并且可以替換其共享存儲器位置,使得信息例如經(jīng)由監(jiān)督FVM在FVM之間被共享,如上所述。根據(jù)示例,特權(quán)(DomO) VM通常包括使得能夠?qū)⑽锢碣Y源用于任何VM/FVM的設(shè)備驅(qū)動程序等。因此,可以以網(wǎng)絡(luò)監(jiān)視器的形式實現(xiàn)額外安全層,其中,由DomO VM來監(jiān)視網(wǎng)絡(luò)活動(及其他活動,諸如磁盤和存儲器訪問活動)。例如,在數(shù)據(jù)分組通過DomO至物理硬件時,可以對它們進行檢查以確定其是合法的還是惡意的。這形成了即時形式的保護,其可以用來補充來自FVM的數(shù)據(jù)并且甚至監(jiān)視FVM其本身以保證其在規(guī)范內(nèi)執(zhí)行。作為示例,如果一威脅嘗試與在已知所允許的范圍之外的IP地址建立TCP連接(諸如公司網(wǎng)絡(luò)中的一定范圍的IP地址,例如,諸如16.XX.XXX.X形式的那些),這可以構(gòu)成可疑行為,其可以孤立地或與來自FVM的數(shù)據(jù)相組合地使用。替換地,可以使用硬件網(wǎng)絡(luò)監(jiān)視器,此類監(jiān)視器在其到達物理硬件之前介入活動。根據(jù)示例,F(xiàn)VM是輕量級的虛擬設(shè)備,其可以是例如縮減的典型VM。輕量級確保可以容易地檢查FVM—例如,如果FVM包括幾百萬行的機器可讀代碼或指令,則將難以保持FVM不包括可能造成其不可信賴的任何東西的信心。因此,通過最小化FVM的大小和復(fù)雜度,對其進行檢查(可能例如周期性地)是切實可行的,以保證其正在做其被分配任務(wù)要做的作業(yè)。這可以增加人對FVM的作用的信心,并且保證不存在用于惡意軟件或惡意代碼/指令‘隱藏’在FVM內(nèi)的容易地方。
權(quán)利要求
1.一種通過從主機虛擬機外面觀察計算機系統(tǒng)在程序執(zhí)行中的多個行為來檢測威脅的計算機化方法,包括: 將系統(tǒng)的物理存儲器的一部分映射到取證虛擬機,以確定威脅的第一簽名的存在;以及 基于該確定,部署多個其他取證虛擬機以確定該威脅的多個其他簽名的存在。
2.如權(quán)利要求1所述的方法,還包括: 使用共享物理存儲器的一部分來保持用于取證虛擬機之間的信息共享的信息儲存庫。
3.如權(quán)利要求1所述的方法,還包括: 使用多個其他取證機來掃描分配給主機虛擬機的多個存儲器地址,以確定指示威脅的存在的第二簽名的存在。
4.如權(quán)利要求2所述的方法,其中,取證虛擬機周期性地對共享物理存儲器的該部分進行輪詢以確定計算機系統(tǒng)的狀態(tài)。
5.如權(quán)利要求4所述的方法,還包括: 使用所確定的狀態(tài)來分辨要部署的多個其他取證虛擬機的數(shù)目。
6.一種用于安全計算的設(shè)備,包括: 計算機系統(tǒng),其中,所述計算機系統(tǒng)包括處理器和存儲器; 虛擬機監(jiān)視器程序,其被加載到計算機系統(tǒng)的處理器上以支持用戶可定義數(shù)目的虛擬機; 取證虛擬機,其用以讀取由虛擬機監(jiān)視器分配給虛擬機監(jiān)視器所支持的虛擬機的存儲器并確定指示該虛擬機中的威脅的簽名的存在,以及 監(jiān)督虛擬機,其用以部署多個其他取證虛擬機,以讀取分配給該虛擬機的存儲器以確定指示該威脅的其他簽名的存在。
7.如權(quán)利要求6所述的設(shè)備,其中,所述監(jiān)督虛擬機可操作用于保持用于取證虛擬機的任務(wù)列表,包括計算機系統(tǒng)的虛擬機的優(yōu)先列表。
8.如權(quán)利要求6所述的設(shè)備,其中,在部署多個其他取證虛擬機時,所述監(jiān)督虛擬機可操作用于確定與威脅相關(guān)聯(lián)的風(fēng)險水平。
9.一種存儲被布置成在計算機上執(zhí)行的計算機可讀程序指令的計算機可讀介質(zhì),所述指令包括: 在計算機上將虛擬機實例化; 保持用于分配取證虛擬機以檢驗分配給該虛擬機的存儲器或磁盤位置的任務(wù)列表; 使用該任務(wù)列表來確定多個其他取證虛擬機的分配,以檢驗分配給該虛擬機的存儲器或磁盤位置,以確定與威脅相關(guān)聯(lián)的多個簽名的存在;以及相應(yīng)地更新任務(wù)列表。
10.一種用于安全計算的設(shè)備,包括: 計算機系統(tǒng),其中,所述計算機系統(tǒng)包括處理器和存儲器; 虛擬機監(jiān)視器程序,其被加載到計算機系統(tǒng)的處理器上以支持用戶可定義數(shù)目的虛擬機; 取證虛擬機,其用以讀取由虛擬機監(jiān)視器分配給虛擬機的存儲器以確定指示虛擬機中的威脅的簽名的存在,以及共享存儲器位置,其存儲用于取證虛擬機的數(shù)據(jù),其中,所述共享存儲器位置可被虛擬機監(jiān)視器所支持的其他取證虛擬機訪問。
11.如權(quán)利要求10所述的設(shè)備,其中,所述共享存儲器位置用來使得取證虛擬機能夠確定虛擬機中的潛在威脅的存在并響應(yīng)于所確定的潛在威脅的存在來修改其行為。
12.一種用于通過使用多個自主、協(xié)作的虛擬設(shè)備來檢測虛擬化系統(tǒng)中的威脅的方法,該方法包括: 使用虛擬設(shè)備來掃描由虛擬機監(jiān)視器分配給系統(tǒng)中的虛擬機的存儲器的一部分; 確定指示虛擬機中的威脅的行為的存在;以及 基于該確定,使用多個其他虛擬設(shè)備引起虛`擬機的多次進一步掃描。
全文摘要
一種用于通過從主機虛擬機外面觀察計算機系統(tǒng)在程序執(zhí)行中的多個行為來檢測威脅的計算機化方法,包括將系統(tǒng)的物理存儲器的一部分映射到取證虛擬機以確定威脅的第一簽名的存在;以及基于該確定,部署多個其他取證虛擬機以確定該威脅的多個其他簽名的存在。
文檔編號G06F21/56GK103154961SQ201080069377
公開日2013年6月12日 申請日期2010年9月30日 優(yōu)先權(quán)日2010年9月30日
發(fā)明者K.哈里遜 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)