欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于在系統(tǒng)管理程序環(huán)境中進行內(nèi)核rootkit保護的系統(tǒng)和方法

文檔序號:6496795閱讀:218來源:國知局
用于在系統(tǒng)管理程序環(huán)境中進行內(nèi)核rootkit保護的系統(tǒng)和方法
【專利摘要】用于在系統(tǒng)管理程序環(huán)境中進行ROOTKIT保護的系統(tǒng)和方法包括用于創(chuàng)建具有與系統(tǒng)管理程序環(huán)境中的來賓操作系統(tǒng)的每一個來賓內(nèi)核頁相對應(yīng)的條目的軟白名單的模塊,其中每個條目是對應(yīng)的來賓內(nèi)核頁的重復(fù)頁,當進程試圖訪問來賓內(nèi)核頁時生成頁錯誤,以及將該進程重定向到對應(yīng)的重復(fù)頁。如果頁錯誤是數(shù)據(jù)頁錯誤,則該方法包括修復(fù)頁錯誤,并將對應(yīng)于來賓內(nèi)核頁的頁表條目標記為非可執(zhí)行的和可寫入的。如果頁錯誤是指令頁錯誤,則該方法包括將對應(yīng)于來賓內(nèi)核頁的頁表條目標記為只讀。通過改變系統(tǒng)管理程序的陰影頁表中的機器頁幀號以指向?qū)?yīng)的重復(fù)頁,來重新定向。
【專利說明】用于在系統(tǒng)管理程序環(huán)境中進行內(nèi)核ROOTKIT保護的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般涉及計算機網(wǎng)絡(luò)領(lǐng)域,更具體而言,涉及用于在系統(tǒng)管理程序(hypervisor)環(huán)境中進行內(nèi)核rootkit保護的系統(tǒng)和方法。
[0002]背景
[0003]計算機網(wǎng)絡(luò)安全領(lǐng)域在當今社會變得越來越重要并復(fù)雜化。為幾乎每一企業(yè)或組織配置了計算機網(wǎng)絡(luò)環(huán)境,通常帶有多個互連的計算機(例如,最終用戶計算機、膝上型計算機、服務(wù)器、打印設(shè)備等等)。此外,云服務(wù)提供商(及運行多個應(yīng)用程序和操作系統(tǒng)的其他組織)可以使用系統(tǒng)管理程序技術(shù)來同時在主機設(shè)備上運行各種不同的來賓(guest)操作系統(tǒng)。系統(tǒng)管理程序是允許多個操作系統(tǒng)同時在主機計算機上運行的計算機軟件/硬件平臺虛擬化軟件。安全威脅會在系統(tǒng)管理程序環(huán)境的外部和內(nèi)部產(chǎn)生。系統(tǒng)管理程序環(huán)境中的這些威脅會給IT管理員帶來進一步的挑戰(zhàn)。
[0004]附圖簡述
[0005]為提供對本發(fā)明以及其特征和優(yōu)點的比較完整的理解,將參考與附圖一起進行的下面的描述,其中,相同參考編號表示相同部件,其中:
[0006]圖1是示出了根據(jù)示例實施例的用于在系統(tǒng)管理程序環(huán)境中進行內(nèi)核rootkit保護的系統(tǒng)的組件的簡化框圖;以及
[0007]圖2是可以與本發(fā)明的實施例相關(guān)聯(lián)的示例操作步驟的簡化流程圖。
[0008]示例實施例的詳細描述
[0009]概覽
[0010]在示例實施例中,系統(tǒng)和方法包括用于創(chuàng)建具有對應(yīng)于系統(tǒng)管理程序環(huán)境中的來賓操作系統(tǒng)的每一個來賓內(nèi)核頁的條目的軟白名單的模塊,其中,每一個條目都是對應(yīng)的來賓內(nèi)核頁的重復(fù)頁,當一進程試圖訪問來賓內(nèi)核頁時生成頁錯誤,以及將該進程重定向到對應(yīng)于來賓內(nèi)核頁的重復(fù)頁。如果頁錯誤是數(shù)據(jù)頁錯誤,則該方法包括修復(fù)頁錯誤,并將對應(yīng)于來賓內(nèi)核頁的頁表條目標記為非可執(zhí)行的和可寫入的。如果頁錯誤是指令頁錯誤,則該方法包括將對應(yīng)于來賓內(nèi)核頁的頁表條目標記為只讀。
[0011 ] 在示例實施例中,重新定向進程包括將來賓內(nèi)核頁的虛擬地址指向?qū)?yīng)于來賓內(nèi)核頁的重復(fù)頁的機器頁幀號。其他實施例包括在系統(tǒng)管理程序的陰影頁表中將每一個來賓內(nèi)核頁的頁表條目標記為N0T_PRESENT (不_存在)。其他實施例可以包括在域創(chuàng)建過程中在系統(tǒng)管理程序中設(shè)置鎖合(lockdown)特征比特,以啟用rootkit保護。
[0012]在某些實施例中,在來賓OS在引導(dǎo)時加載內(nèi)核組件之后創(chuàng)建軟白名單。可以通過漫步(walk)系統(tǒng)管理程序的陰影頁表并將每一個來賓內(nèi)核頁的虛擬地址映射到對應(yīng)的重復(fù)頁的機器頁幀號來創(chuàng)建軟白名單。在又一些其他實施例中如果,如果來賓OS沒有加載至少某些內(nèi)核組件,則該方法包括將每一個來賓內(nèi)核頁的虛擬基地址映射到對應(yīng)的重復(fù)頁的機器頁幀號及其他特征。
[0013]示例實施例[0014]圖1是示出了用于在系統(tǒng)管理程序環(huán)境中進行內(nèi)核rootkit保護的系統(tǒng)10的示例實現(xiàn)的簡化框圖。如此處所使用的,“系統(tǒng)管理程序”是可使一個或多個操作系統(tǒng)(OS)(被稱為來賓OS)在主機設(shè)備(例如,計算機)上同時運行的硬件虛擬化實體。虛擬化可使來賓OS在隔離的虛擬環(huán)境(通常被稱為虛擬機,或來賓)中未修改地運行,在那里,再現(xiàn)了主機設(shè)備的物理特征和行為。更具體而言,來賓可以表示配備有虛擬硬件(處理器、存儲器、磁盤、網(wǎng)絡(luò)接口等等)的隔離的,虛擬環(huán)境。根據(jù)圖1中所示出的實施例,系統(tǒng)10包括向來賓14提供虛擬化環(huán)境的系統(tǒng)管理程序12??梢栽诒景l(fā)明的廣泛的范圍內(nèi)在系統(tǒng)管理程序12上主存任意數(shù)量的來賓。為便于說明,在圖1中象征地示出了單一來賓。
[0015]系統(tǒng)管理程序12控制并管理被分配供來賓14使用的主機設(shè)備(未示出)的硬件
16。來賓14可以在系統(tǒng)管理程序12上運行來賓0S18。來賓0S18可以支持一個或多個應(yīng)用程序20 (此處以單數(shù)作為應(yīng)用程序20來引用應(yīng)用程序中的一個)。如此處所使用的,術(shù)語“應(yīng)用程序”從廣義來講用于一般地指代任何軟件文件、庫模塊、函數(shù)、子例程、二進制、指令集、代碼塊,或包括可以被計算機理解和處理(有或者沒有協(xié)助,例如,編譯,解釋等等))的指令的其他類似的操作單元。
[0016]系統(tǒng)管理程序12可以管理應(yīng)用程序20對諸如處理器22和機器存儲器24之類的底層硬件16的訪問。如此處所使用的,“機器存儲器”是指對系統(tǒng)管理程序12可見的、作為在主機設(shè)備上可用的存儲器元件。來賓0S18可以將訪問來賓物理存儲器28的來賓虛擬存儲器26呈現(xiàn)給應(yīng)用程序20。如此處所使用的,術(shù)語“來賓虛擬存儲器”是指對在來賓14內(nèi)部運行的應(yīng)用程序20可見的基本上連續(xù)的虛擬地址空間。地址空間是指離散地址的范圍,每一個離散地址都可以對應(yīng)于應(yīng)用程序(例如,應(yīng)用程序20)可以存儲數(shù)據(jù)并在以后檢索數(shù)據(jù)的存儲器位置(即,地址)。如此處所使用的,術(shù)語“來賓物理存儲器”是指對來賓0S18可見的虛擬存儲器。
[0017]來賓物理存儲器28可以在操作過程中創(chuàng)建內(nèi)核頁30。當來賓OS將其來賓內(nèi)核加載到存儲器中時,來賓內(nèi)核被分成諸個頁(例如,來賓內(nèi)核頁30),其中某些頁包含內(nèi)核指令,而其他頁包含內(nèi)核數(shù)據(jù)。每一個頁,包括來賓內(nèi)核頁30中的每一個,都通常是標準大小(例如,4kB),并與地址(例如,來賓虛擬地址)相關(guān)聯(lián)。來賓0S18通過頁表將每一個頁的虛擬地址都映射到對應(yīng)的“物理”地址。雖然來賓存儲器(例如,來賓虛擬存儲器26和來賓物理存儲器28)是虛擬的,但是,來賓0S18假設(shè)來賓物理存儲器28是真正的或“物理的”。然而,來賓物理存儲器(例如,來賓物理存儲器28)只是被系統(tǒng)管理程序12用來維持到(真正的)主機物理地址(也叫做機器地址)的正確的映射的抽象。
[0018]頁表是來賓0S18用來存儲虛擬地址和“物理”地址之間的映射的數(shù)據(jù)結(jié)構(gòu)。頁表包含若干個頁表條目(PTE),每一個PTE都將虛擬地址映射到對應(yīng)的“物理”地址(例如,從來賓虛擬地址到來賓物理地址或從來賓物理地址到機器地址)。PTE包括“物理”地址(例如,來賓物理地址或機器地址)及與合適的存儲器元件(例如,來賓物理存儲器28或機器存儲器24)中的頁相關(guān)的其他信息,諸如是否存在頁,頁是只讀的還是讀/寫的等等。
[0019]對于當前正在執(zhí)行的進程,陰影頁表32可以被系統(tǒng)管理程序12用來將來賓物理存儲器28映射到機器存儲器24?!斑M程”是應(yīng)用程序的其指令正在被執(zhí)行的實例(或其一部分)。陰影頁表32包括對應(yīng)于來賓內(nèi)核頁30的頁表條目(PTE) 34。PTE34中的每一個都包括機器地址及與被加載到機器存儲器24的相應(yīng)內(nèi)核頁相關(guān)的其他信息。根據(jù)示例實施例,PTE34可以在陰影頁表32中標記為NOT_PRESENT。
[0020]系統(tǒng)管理程序12中的rootkit保護模塊36可以針對來賓0S18中的對應(yīng)的來賓內(nèi)核頁30,在系統(tǒng)管理程序12中創(chuàng)建重復(fù)的頁38。當進程試圖訪問來賓內(nèi)核頁30時,頁錯誤處理程序40可以有條件地允許或拒絕對合適的來賓內(nèi)核頁30的訪問或執(zhí)行。在系統(tǒng)管理程序12上運行的域O (DOMO) 42可以具有訪問物理硬件16以及與在系統(tǒng)上運行的其他來賓進行交互的特殊權(quán)限。D0M042可以具有用于控制系統(tǒng)管理程序12中的rootkit保護模塊36的某些鎖合特征的鎖合模塊44。
[0021]為了示出系統(tǒng)10的技術(shù),理解可能存在于諸如如圖1所示的系統(tǒng)之類的給定系統(tǒng)中的活動和安全關(guān)切是十分重要的。下面基礎(chǔ)信息可以被視為可以適當?shù)卣f明本發(fā)明的基礎(chǔ)。這樣的信息僅為解釋起見提供的,相應(yīng)地,不應(yīng)該以任何方式理解為限制本發(fā)明的廣泛的范圍以及其潛在的應(yīng)用。
[0022]典型的計算體系結(jié)構(gòu)支持特權(quán)級別的四個環(huán)(編號O到3),以保護系統(tǒng)代碼以及數(shù)據(jù)被較低特權(quán)的代碼免于被無意地或惡意地改寫。環(huán)O是最高特權(quán)級別,而環(huán)3是最低的。OS可以針對不同的進程使用不同的特權(quán)級別。例如,Windows OS針對進程和數(shù)據(jù)安全性使用兩個特權(quán)級別(環(huán)O和3)。諸如Internet Explorer和Microsoft Word以及若干個Windows服務(wù)(例如,服務(wù)控制管理器(Service Control Manager)、本地系統(tǒng)安全認證(Local System Security Authority)、Winlogon (Win 登錄)、會話管理器(SessionManager),以及RPC服務(wù)器(RPC Server)等等)之類的應(yīng)用程序的代碼在環(huán)3內(nèi)運行。
[0023]內(nèi)核級別的代碼在環(huán)O內(nèi)運行,并用于設(shè)備驅(qū)動程序和諸如虛擬存儲器的管理器之類的內(nèi)核組件、緩存、輸入/輸出、對象、即插即用、硬件抽象層、圖形子系統(tǒng)、文件系統(tǒng),以及網(wǎng)絡(luò)協(xié)議實現(xiàn)中。內(nèi)核將應(yīng)用程序連接到計算設(shè)備的硬件。一般而言,內(nèi)核包括可以隨著OS而變化的多個組件。例如,Linux OS可以包括諸如低級別驅(qū)動程序之類的組件(例如,負責(zé)中央處理單元(CPU)、存儲器管理單元(MMU)和板上設(shè)備的初始化的體系結(jié)構(gòu)特定驅(qū)動程序);進程調(diào)度程序(例如,負責(zé)向不同的進程進行公平的CPU時間切片分配的組件);存儲器管理器(例如,負責(zé)向不同的進程分配和共享存儲器的組件);文件系統(tǒng)(例如,提取基礎(chǔ)文件系統(tǒng)以便向用戶呈現(xiàn)統(tǒng)一的文件系統(tǒng)接口的組件);網(wǎng)絡(luò)接口(例如,提供對不同的網(wǎng)絡(luò)設(shè)備的訪問和控制的組件);設(shè)備驅(qū)動程序(例如,高級別驅(qū)動程序)等等。應(yīng)用程序一般使用系統(tǒng)函數(shù)調(diào)用(例如,Win32API調(diào)用)來與內(nèi)核進行通信。
[0024]rootkit改變正常的執(zhí)行路徑的流(例如,應(yīng)用程序中的進程的)以使其秘密實現(xiàn)成功。rootkit是允許對設(shè)備進行特許的訪問同時通過推翻標準OS功能而積極地隱藏其存在的軟件。Rootkit通常修改由系統(tǒng)函數(shù)調(diào)用返回的數(shù)據(jù),以隱藏它們的二進制文件、進程,以及注冊表條目。取決于它們在哪里運行以及它們掛鉤在系統(tǒng)中的什么區(qū)域,rootkit一般可以分類為兩種類型中的一種:用戶模式rootkit和內(nèi)核rootkit。用戶模式rootkit相對容易檢測和檢修,因為它們利用用戶模式特權(quán)來執(zhí)行。另一方面,內(nèi)核rootkit利用系統(tǒng)特權(quán)來執(zhí)行,使它們檢測和檢修起來更具有挑戰(zhàn)性。內(nèi)核rootkit將它們的代碼加載到(即,注入)到內(nèi)核地址空間中,通常通過安裝內(nèi)核模式設(shè)備驅(qū)動程序。例如,可以通過使用內(nèi)核模塊將內(nèi)核代碼注入到正在運行的內(nèi)核中,或通過將新代碼寫入到一塊未使用的內(nèi)核存儲器中,或通過插入內(nèi)核模塊文件等等,來安裝內(nèi)核rootkit。一旦提供機制就位,內(nèi)核rootkit會干擾進程的正常的執(zhí)行路徑的流。[0025]內(nèi)核rootkit在桌面安全中是嚴重的挑戰(zhàn)。內(nèi)核rootkit會啟動各種攻擊,諸如打開系統(tǒng)后門,盜竊個人信息、禁用安全措施,以及執(zhí)行其他惡意代碼應(yīng)用程序。通常,在首先獲得根級別的訪問之后,要么通過利用已知弱點或通過獲得口令(例如,通過破解加密,通過社會工程等等),攻擊者在計算機上安裝內(nèi)核rootkit。一旦安裝了內(nèi)核rootkit,它可使攻擊者通過規(guī)避正常的認證和授權(quán)機制,來屏蔽正在進行的闖入并維持對計算機的特許的訪問。內(nèi)核rootkit可能難以檢測,因為內(nèi)核rootkit能夠推翻旨在發(fā)現(xiàn)它的軟件。檢測方法包括使用替換的,受信任的操作系統(tǒng);基于行為的方法;簽名掃描;差異掃描;以及存儲器轉(zhuǎn)儲分析。移除會復(fù)雜化或幾乎不可能,特別是在內(nèi)核rootkit駐留在內(nèi)核中的情況下。
[0026]在系統(tǒng)管理程序環(huán)境中,攻擊的影響可能是嚴重的。一個被感染的來賓可能會感染主機設(shè)備上的所有其他來賓。例如,攻擊者可以通過感染來賓,來獲得硬件上的管理員特權(quán),并可以通過系統(tǒng)管理程序環(huán)境從一個來賓移動到另一個來賓。在系統(tǒng)管理程序主存數(shù)千來賓的情況下,這樣的來賓-來賓攻擊會具有災(zāi)難性的結(jié)果。
[0027]系統(tǒng)管理程序環(huán)境帶來了提供內(nèi)核rootkit保護的機會,而無需來賓-駐留保護性軟件。來賓在虛擬化主機設(shè)備中的系統(tǒng)管理程序上運行。傳統(tǒng)的內(nèi)核rootkit保護機制可以被安裝于在系統(tǒng)管理程序上運行的來賓的每一個實例上;然而,這樣的方法就存儲器、運行時性能和管理而言會導(dǎo)致大量的開銷。理想地,內(nèi)核rootkit保護機制將位于內(nèi)核(正在被它保護的)外面,這在非虛擬化環(huán)境中是不可能的。此外,在云(虛擬化)環(huán)境中運行來賓的顧客可能希望云服務(wù)提供商透明地提供內(nèi)核rootkit保護。
[0028]在內(nèi)核rootkit保護的一種方法中,基于硬件虛擬化的哈佛(Harvard)體系結(jié)構(gòu)被用來保護商用OS內(nèi)核遭受內(nèi)核rootkit攻擊。此方法基于指令獲取的頁級別的重定向,這偏離了以前的執(zhí)行指令級別的重定向的努力。該方法中的另一種技術(shù)允許通過僅重新定向內(nèi)核指令獲取,來啟用模式敏感的重定向。然而,此方法要求每一個來賓中的代理,從而增加了基礎(chǔ)結(jié)構(gòu)開銷。該方法還修改可執(zhí)行的以及可鏈接的格式(ELF)加載器(在LinuxOS中),以幫助rootkit保護;這樣的對OS的修改是麻煩的。此外,此方法還使用轉(zhuǎn)換后援緩沖器(TLB)高速緩存操縱來在代碼和數(shù)據(jù)頁表之間切換,這會難以實現(xiàn)。
[0029]圖1概述的系統(tǒng)管理程序環(huán)境中的用于內(nèi)核rootkit保護的系統(tǒng)可以解決這些問題等等。本發(fā)明的實施例試圖大大地改善現(xiàn)有的技術(shù)的能力,以允許更穩(wěn)健的解決方案。在示例實施例中,系統(tǒng)10的組件可以在系統(tǒng)管理程序12內(nèi)部創(chuàng)建來賓內(nèi)核頁30的軟白名單,例如,重復(fù)頁38。軟白名單(即,重復(fù)頁38)中的每一個條目是對應(yīng)的來賓內(nèi)核頁的重復(fù)頁。來賓內(nèi)核代碼可以從重復(fù)頁38中執(zhí)行,即使在來賓0S18被引導(dǎo)之后修改了來賓內(nèi)核頁30。類似地,沒有新的代碼可以被允許執(zhí)行,因為對應(yīng)的頁將不會存在于初始白名單(即,重復(fù)頁38)中。陰影頁表32中的N0T_PRESENT比特可以被用來截取對系統(tǒng)管理程序12的訪問??梢詫TE標記為可寫入或可執(zhí)行的(在最初將它們標記為N0T_PRESENT之后)(例如,確保最小頁錯誤,以取得更好的性能)。
[0030]可以在來賓0S18完全引導(dǎo)并加載其內(nèi)核組件(例如,進程調(diào)度程序、存儲器管理器、文件系統(tǒng)等等)之后,創(chuàng)建重復(fù)頁38。如此處所使用的,術(shù)語“引導(dǎo)”是指引導(dǎo)序列,這是當通電時計算機執(zhí)行的初始操作集合。在一示例實施例中,可以僅在引導(dǎo)時創(chuàng)建重復(fù)頁38,以便不能執(zhí)行任何新頁(因為所有執(zhí)行都通過重復(fù)頁被路由)。此外,當創(chuàng)建新內(nèi)核頁時,它被默認地標記為NOT_PRESENT。此后,系統(tǒng)10的組件可以確?,F(xiàn)有的內(nèi)核頁中的任何變化(包括在引導(dǎo)之后添加新頁或修改現(xiàn)有的頁)都不被允許執(zhí)行。在示例實現(xiàn)中,系統(tǒng)10可以防止零時間(day-zero)威脅,因為它基于白名單。系統(tǒng)10可以由公共云基礎(chǔ)結(jié)構(gòu)提供商和使用私有云的公司來實現(xiàn)。系統(tǒng)10可以提供安全的透明層。解決方案可以對不經(jīng)常改變他們的基礎(chǔ)OS配置,而是改變存儲在它中的數(shù)據(jù)的顧客(例如,web主存服務(wù)提供商)有用。
[0031 ] 轉(zhuǎn)向系統(tǒng)管理程序環(huán)境中的存儲器管理,來賓OS (例如,來賓0S18)將來賓虛擬存儲器(例如,來賓虛擬存儲器26)中的虛擬地址空間布局提供到應(yīng)用程序(例如,應(yīng)用程序20)。來賓虛擬存儲器的地址空間可以被分成能夠被應(yīng)用程序(例如,應(yīng)用程序20)訪問的用戶空間,以及系統(tǒng)空間,包括引導(dǎo)驅(qū)動程序、進程頁表、系統(tǒng)高速緩存,分頁的和非分頁的池等等。通常,系統(tǒng)頁的地址位置是硬編碼的(或先驗知曉的)。例如,4GB的來賓虛擬存儲器可以被分離成3GB的用戶空間,帶有從OxBFFFFFFF到0x00000000的地址,以及系統(tǒng)空間,帶有從OxFFFFFFFF到OxCOOOOOOO的地址。
[0032]來賓OS通過頁表來處理虛擬到物理地址映射。盡管虛擬地址空間(例如,來賓虛擬存儲器26) —般是相鄰的,但是,地址可以被映射到物理地址空間(例如,來賓物理存儲器28)中的非相鄰塊。虛擬到物理映射信息被置于叫做頁表條目(PTE)的結(jié)構(gòu)中的頁表中。PTE的格式可以隨著OS變化而變化,例如,Linux OS可以指定一種格式,而Windows XP OS可以指定另一種格式。一般而言,PTE通常包含指出由PTE引用的頁是否存在(或有效)的比特。例如,當進程開始加載到機器存儲器(例如,機器存儲器24)時,來賓OS假設(shè)頁被加載到來賓物理存儲器(例如,來賓物理存儲器28),并生成對應(yīng)的頁表。正在被加載到機器存儲器中的頁的當前比特被設(shè)置為O (指出N0T_PRESENT),直到所有頁被加載到存儲器中。一旦所有頁都被加載,在相應(yīng)的PTE中,頁的當前比特可以設(shè)置為1(指出PRESENT(存在))。在加載過程中,如果(由進程)作出訪問標記為N0T_PRESENT的頁的嘗試,則可能生成頁錯誤。
[0033]在示例實施例中,由來賓14維護的任何頁表都可以具有由系統(tǒng)管理程序12生成和維護的對應(yīng)的陰影頁表(例如,陰影頁表32)。來賓0S18沒有對陰影頁表32的訪問。在引導(dǎo)時,來賓0S18可以將其內(nèi)核從計算機的硬盤加載到存儲器中(例如,以來賓內(nèi)核頁30的形式)。Rootkit保護模塊36可以在陰影頁表32中將對應(yīng)于來賓內(nèi)核頁30的PTE34標記為N0T_PRESENT。在一個示例中,rootkit保護模塊36可以通過讀取頁的虛擬地址來判斷頁是來賓內(nèi)核頁30中的一個。如果虛擬地址在特定范圍內(nèi)(例如,預(yù)定的范圍),則頁可以是來賓內(nèi)核頁30中的一個,并可以將對應(yīng)的PTE34標記為N0T_PRESENT。
[0034]當發(fā)生頁錯誤時,控制從執(zhí)行導(dǎo)致頁錯誤的指令的處理器(例如,處理器22)轉(zhuǎn)移到系統(tǒng)管理程序(例如,系統(tǒng)管理程序12)。系統(tǒng)管理程序的頁錯誤處理程序(例如,頁錯誤處理程序40)可以確定指令指針和故障地址,例如,用以判斷頁錯誤是指令頁錯誤還是數(shù)據(jù)頁錯誤。例如,如果指令指針(即,指向處理器接下來將試圖執(zhí)行的存儲器地址的指針)指向故障地址,那么,頁錯誤是指令頁錯誤。
[0035]轉(zhuǎn)向圖1的基礎(chǔ)結(jié)構(gòu),系統(tǒng)管理程序12可以運行來賓OS的多個實例。系統(tǒng)管理程序12可以是服務(wù)器、防火墻、防病毒解決方案或更一般的計算機的一部分。在一個示例實現(xiàn)中,系統(tǒng)管理程序12是在裸的硬件上運行并提供在同一個硬件上同時運行OS的多個實例的能力的Xen元件。典型的Xen設(shè)置可以涉及在多個OS之下運行的Xen,其中,應(yīng)用程序在與一組來賓(例如,來賓14)相關(guān)聯(lián)的OS上面。整個配置可以在服務(wù)器(或某種其他網(wǎng)絡(luò)電器)中提供。在示例實施例中,來賓14可以運行與D0M042相關(guān)聯(lián)的OS。請注意,Xen實現(xiàn)僅表示本發(fā)明可以應(yīng)用到的一種可能的示例。任意數(shù)量的額外的系統(tǒng)管理程序都可以類似地得益于此處所討論的廣泛的原理。
[0036]用于管理系統(tǒng)管理程序12的控制工具可以在D0M042上運行。D0M042可以提供管理系統(tǒng)管理程序12上的來賓(例如,來賓14)的統(tǒng)一界面。D0M042可以提供供管理員配置系統(tǒng)管理程序12的裝置,包括管理存儲器,控制來賓行為的各方面,設(shè)置虛擬網(wǎng)絡(luò)、配置系統(tǒng)管理程序和一個或多個來賓,以及創(chuàng)建、刪除、關(guān)閉、引導(dǎo)等等來賓。例如,這種設(shè)置在服務(wù)器運行Xen而Xen進而主存多個來賓的實例的數(shù)據(jù)中心流行。D0M042可以包括修改過的Linux內(nèi)核,并可以具有訪問物理I / O資源以及與在系統(tǒng)上運行的其他虛擬機進行交互的特殊權(quán)限。通常,D0M042是當系統(tǒng)被引導(dǎo)時啟動的第一域,并且它可以被用來創(chuàng)建并配置所有其他常規(guī)來賓(例如,來賓14)。系統(tǒng)管理程序環(huán)境可以要求D0M042在其他來賓可以啟動之前運行。
[0037]轉(zhuǎn)向圖2,圖2是可以與本發(fā)明的實施例相關(guān)聯(lián)的示例操作步驟的簡化流程圖。操作100可以在102開始,此時D0M042被激活。在104,鎖合特征可以在域創(chuàng)建過程中通過鎖合模塊44啟用(與從來賓上下文到系統(tǒng)管理程序上下文的VMEXIT (VM退出)過渡相關(guān)聯(lián))。在106,可以在系統(tǒng)管理程序12中設(shè)置域特定的數(shù)據(jù)結(jié)構(gòu)中的鎖合特征比特。在108,可以啟動系統(tǒng)管理程序虛擬機(HVM) ( S卩,來賓14)。在110,來賓0S18可以為來賓內(nèi)核頁30創(chuàng)建頁表條目(PTE),帶有到系統(tǒng)管理程序12的VMEXIT。在112,rootkit保護模塊36可在陰影頁表32中為來賓內(nèi)核頁30創(chuàng)建PTE34。在114,rootkit保護模塊36可以在由系統(tǒng)管理程序12維護的陰影頁表32中將PTE34標記為N0T_PRESENT。因此,對訪問其PTE34被標記的來賓內(nèi)核頁30的任何嘗試會導(dǎo)致頁錯誤。另外,在116,此操作可以連同與處理器22相關(guān)聯(lián)的虛擬機指令(VMRUN(VM運行))一起提供。
[0038]如果啟用了 rootkit保護(例如,來賓0S18引導(dǎo)并加載其內(nèi)核組件),則來賓內(nèi)核頁30中的某些可能不被使用,如此,對于它們,將不會有頁錯誤。為了捕捉這樣的頁,在118,頁錯誤處理程序40可以漫步系統(tǒng)管理程序12中的陰影頁表32,并為來賓內(nèi)核頁30的每一個頁創(chuàng)建重復(fù)頁,并保持對應(yīng)的虛擬地址到重復(fù)頁的機器頁幀號(MFN)的映射。MFN是指機器存儲器24中為對應(yīng)的虛擬地址分配的頁編號。在示例實施例中,這些活動可以在引導(dǎo)完成之后執(zhí)彳丁一次,隨后,系統(tǒng)10可以被視為鎖合。如果:rootkit保護未啟用(例如,來賓0S18沒有引導(dǎo)并加載其內(nèi)核組件),則頁錯誤處理程序40可以為來賓14的內(nèi)核中的每一個頁創(chuàng)建重復(fù)頁,并保持對應(yīng)的虛擬基地址(對應(yīng)于將存儲內(nèi)核頁的第一字節(jié)的虛擬地址)到重復(fù)頁的MFN的映射。
[0039]在120,來賓0S14中的應(yīng)用程序20中的進程可能試圖訪問來賓內(nèi)核頁30。在122,試圖訪問來賓內(nèi)核頁30會導(dǎo)致頁錯誤(因為對應(yīng)于來賓內(nèi)核頁30的PTE34被標記為Ν0Τ_PRESENT)。當在122遇到頁錯誤時,在124就頁錯誤是指令頁錯誤還是數(shù)據(jù)頁錯誤作出判斷。如果頁錯誤是數(shù)據(jù)頁錯誤,則頁錯誤處理程序40可以在126通過指向原始物理頁并將對應(yīng)的PTE標記為NX(不執(zhí)行)和可寫入,來永久地修復(fù)頁錯誤(例如,允許未來訪問/執(zhí)行)。在128,應(yīng)用程序20可以被允許訪問陰影頁表32,過程在130結(jié)束。這可以確保對訪問數(shù)據(jù)的嘗試不會導(dǎo)致頁錯誤,但是對執(zhí)行代碼的嘗試卻會導(dǎo)致頁錯誤,以使得控制被傳遞到系統(tǒng)管理程序12。
[0040]如果124中的判斷是頁錯誤是指令錯誤,則可以在131中判斷對應(yīng)的重復(fù)頁是否存在于重復(fù)頁38中。如果存在重復(fù)頁,則頁錯誤處理程序40可以通過在132中將錯誤虛擬地址指向?qū)?yīng)于重復(fù)頁38的MFN(在陰影頁表32中),永久地修復(fù)頁錯誤,并將頁標記為只讀,以使得對頁的任何寫入都會導(dǎo)致錯誤。此操作可能會導(dǎo)致在創(chuàng)建重復(fù)頁38時存在的代碼被執(zhí)行。另一方面,如果對應(yīng)的重復(fù)頁在重復(fù)頁38中不存在,則頁錯誤處理程序40可以在133阻止頁的執(zhí)行。如此,不可以執(zhí)行新的或修改過的代碼。對代碼的任何修改都可能會在來賓內(nèi)核頁30中發(fā)生,且對修改過的來賓內(nèi)核頁30的任何執(zhí)行都可能來自系統(tǒng)管理程序的重復(fù)頁38。在128中,陰影頁表32可以被應(yīng)用程序20訪問(但是,此時,可以讀取重復(fù)頁36,代替來賓內(nèi)核頁30),過程可以在130結(jié)束。
[0041]可以在各種位置(例如,在rootkit保護模塊36內(nèi))提供用于內(nèi)核rootkit保護(以及抑制危險的代碼執(zhí)行)的軟件。在一個示例實現(xiàn)中,此軟件駐留在尋求被保護免于安全攻擊(或被保護免于對可寫入的存儲器區(qū)域的非希望或未授權(quán)的操縱)的計算機中。在比較詳細的配置中,此軟件具體地常駐在系統(tǒng)管理程序的可以包括(或以其他方式連接)圖1所描繪的組件的安全層中。在其他實施例中,可以從web服務(wù)器接收或下載軟件(例如,在為單獨的設(shè)備、單獨的虛擬機,來賓,系統(tǒng)管理程序、服務(wù)器等等購買單個最終用戶許可證的上下文中),以便提供此內(nèi)核rootkit保護。
[0042]在其他示例中,內(nèi)核rootkit保護功能可以涉及專有的元件(例如,作為防病毒解決方案的一部分),該元件可以在這些標識的元件中提供(或在附近),或在任何其他設(shè)備,服務(wù)器、網(wǎng)絡(luò)電器、控制臺、防火墻、交換機、信息技術(shù)(IT)設(shè)備等等中提供,或作為互補解決方案提供(例如,結(jié)合防火墻),或在網(wǎng)絡(luò)中的某處配置。如此處在本說明書中所使用的,術(shù)語“計算機”旨在包含可操作以影響或處理安全環(huán)境中的電子信息的這些可能的元件(VMM、系統(tǒng)管理程序、Xen設(shè)備、虛擬設(shè)備、網(wǎng)絡(luò)電器、路由器、交換機、網(wǎng)關(guān)、處理器、服務(wù)器、負載平衡器、防火墻,或任何其他合適的設(shè)備、組件、元件,或?qū)ο?。此外,此計算機可以包括任何合適的算法、硬件、軟件、組件、模塊、接口,或促進其操作的對象。這可以包括允許針對內(nèi)核rootkit的有效防護的合適的算法和通信協(xié)議。另外,還可以以任何合適的方式合并內(nèi)核rootkit保護功能。與類似的設(shè)計替代方案一起:可以以各種可能的配置組合各種圖形的所示出的模塊以及組件中的任何一個:所有的這些都在本說明書的廣泛的的范圍內(nèi)。
[0043]這些元件中的任何一種(例如,計算機、服務(wù)器、網(wǎng)絡(luò)電器、防火墻、系統(tǒng)管理程序、任何其他類型的虛擬元件等等)都可以包括可以執(zhí)行軟件或算法以執(zhí)行如本說明書中所討論的內(nèi)核rootkit保護活動的處理器。另外,這些元件中的每一個(例如,計算機、月艮務(wù)器、網(wǎng)絡(luò)電器、防火墻、系統(tǒng)管理程序、任何其他類型的虛擬元件等等)可包括存儲器元件(隨機存取存儲器(RAM)、ROM、EPROM、EEPR0M、ASIC等等)、軟件、硬件,或任何其他合適的組件,設(shè)備,元件,或?qū)ο?,在合適的情況下并基于特定需要??梢曰谔囟ㄐ枰蛯崿F(xiàn),在任何數(shù)據(jù)庫、寄存器、表、緩存、隊列、控制列表,或存儲器結(jié)構(gòu)中提供被跟蹤、發(fā)送、接收、存儲在系統(tǒng)10中的信息,所有的這些都可以以任何合適的時間幀引用。
[0044]這些元件和/或模塊可以彼此進行協(xié)作,以便在此處所討論的系統(tǒng)管理程序環(huán)境中結(jié)合內(nèi)核rootkit保護執(zhí)行活動。在其他實施例中,這些特征可以在其他設(shè)備中所包括的這些元件外部提供,以實現(xiàn)這些預(yù)期功能,或以任何合適的方式合并。例如,可以移除,或以其他方式合并與各種元件相關(guān)聯(lián)的某些處理器,以使得單個處理器和單個存儲器位置負責(zé)某些活動。在一般意義上,圖中所描繪的布局可以在其表示中更符合邏輯,而物理體系結(jié)構(gòu)可以包括這些元件的各種置換、組合,和/或混合。
[0045]此處所討論的存儲器項目中的任何一個(例如,來賓內(nèi)核頁30、陰影頁表32、機器存儲器24、來賓虛擬存儲器26、來賓物理存儲器28、散列38等等)應(yīng)該解釋為包含在廣義的術(shù)語“存儲器元件”內(nèi)。類似地,本說明書中所描述的潛在的處理元件、模塊,以及機器應(yīng)該解釋為包含在廣義的術(shù)語“處理器”內(nèi)。計算機、網(wǎng)絡(luò)電器、虛擬元件等等中的每一個也都可以包括用于接收、傳輸,和/或以別的方式在系統(tǒng)管理程序環(huán)境中傳遞數(shù)據(jù)或信息的合適的接口。
[0046]處理器可以執(zhí)行與數(shù)據(jù)相關(guān)聯(lián)的任何類型的指令以實現(xiàn)本說明書中詳述的操作。在一個示例中,處理器(如圖所示)可以將元件或項目(例如,數(shù)據(jù))從一種狀態(tài)或東西轉(zhuǎn)換為另一種狀態(tài)或東西。在另一個示例中,此處概述的活動可以利用固定邏輯或可編程邏輯(例如,由處理器執(zhí)行的軟件/計算機指令)來實現(xiàn),此處所標識的元件可以是某種類型的可編程處理器、可編程數(shù)字邏輯(例如,現(xiàn)場可編程門陣列(FPGA)、可擦與可編程只讀存儲器(EPROM)、電可擦可編程序只讀存儲器(EEPROM))或包括數(shù)字邏輯、軟件、代碼、電子指令,或其任何合適的組合的ASIC。
[0047]在某些示例實現(xiàn)中,此處概述的內(nèi)核rootkit保護功能可以通過編碼在一個或多個有形的,非瞬時的介質(zhì)中的邏輯(例如,在專用集成電路(ASIC)中所提供的嵌入的邏輯、數(shù)字信號處理器(DSP)指令、要由處理器執(zhí)行的軟件(潛在地包括目標代碼以及源代碼),或其他類似的機器,等等)來實現(xiàn)。在這些實例中的某些中,存儲器元件(如圖所示)可以存儲用于此處所描述的操作的數(shù)據(jù)。這包括存儲器元件能夠存儲被執(zhí)行以實現(xiàn)本說明書中所描述的活動的軟件、邏輯、代碼或處理器指令。在各種實施例中,這些元件中的某些或全部包括可以協(xié)調(diào)、管理,或以其他方式協(xié)作以便實現(xiàn)此處概述的操作的軟件(或交替軟件)。這些元件中的一個或多個可以包括任何合適的算法、硬件、軟件、組件、模塊、接口,或促進其操作的對象。
[0048]請注意,對于此處所提供的很多示例,可以以兩個、三個、四個,或更多網(wǎng)絡(luò)元件以及模塊來描述交互。然而,這只是為了清楚起見,并且只作為示例。應(yīng)該理解,可以以任何合適的方式來合并系統(tǒng)。與類似的設(shè)計替代方案一起,可以以各種可能的配置組合圖1的所示出的組件、模塊,以及元件中的任何一個,所有的這些都在本說明書的寬的范圍內(nèi)。在某些情況下,可以通過只引用數(shù)量有限的元件或組件,更容易地描述給定流程集的功能中的一個或多個,應(yīng)該理解,圖1的系統(tǒng)(以及其原理)是可輕松地擴展的,并可以接納大量的組件,以及更復(fù)雜的布局和配置。相應(yīng)地,所提供的示例不應(yīng)該限制范圍或抑制系統(tǒng)10的廣泛的原理,因為潛在地應(yīng)用于無數(shù)其他體系結(jié)構(gòu)。
[0049]還應(yīng)該指出,參考前面的圖形所描述的操作僅示出了可以由系統(tǒng)執(zhí)行的某些可能的情況。這些操作中的某些可以在合適的情況下刪除,或者可以在不偏離所討論的概念的范圍的情況下,顯著地修改或改變這些步驟。另外,還可以顯著地改變這些操作的時間,仍實現(xiàn)在本發(fā)明中講述的結(jié)果。前面的操作流程是作為示例和討論而提供的。由系統(tǒng)提供相當大的靈活性,因為在不偏離所討論的概念的原理的情況下,可以提供任何合適的布局、時序、配置,以及定時機制。
【權(quán)利要求】
1.一種方法,包括: 創(chuàng)建具有與包括系統(tǒng)管理程序的系統(tǒng)管理程序環(huán)境中的來賓操作系統(tǒng)(OS)的每一個來賓內(nèi)核頁相對應(yīng)的條目的軟白名單,其中每個條目是所述對應(yīng)的來賓內(nèi)核頁的重復(fù)頁;當進程試圖訪問來賓內(nèi)核頁時,生成頁錯誤;以及 如果所述頁錯誤是指令頁錯誤,則將所述進程重定向到對應(yīng)于所述來賓內(nèi)核頁的重復(fù)頁。
2.如權(quán)利要求1所述的方法,其特征在于,所述重新定向包括改變所述系統(tǒng)管理程序的陰影頁表中的機器頁幀號以指向?qū)?yīng)于所述來賓內(nèi)核頁的所述重復(fù)頁。
3.如權(quán)利要求1所述的方法,其特征在于,還包括: 如果所述頁錯誤是數(shù)據(jù)頁錯誤,則: 修復(fù)所述頁錯誤;以及 將對應(yīng)于所述來賓內(nèi)核頁的頁表條目標記為非可執(zhí)行的和可寫入的。
4.如權(quán)利要求1所述的方法,其特征在于,還包括: 如果所述頁錯誤是指令頁錯誤,則將對應(yīng)于所述來賓內(nèi)核頁的頁表條目標記為只讀。
5.如權(quán)利要求1所述的方法,其特征在于,還包括: 在所述系統(tǒng)管理程序的陰影頁表中將每一個來賓內(nèi)核頁的頁表條目標記為NOT_PRESENTο`
6.如權(quán)利要求1所述的方法,其特征在于,還包括: 在域創(chuàng)建過程中在所述系統(tǒng)管理程序中設(shè)置鎖合特征比特,以啟用rootkit保護。
7.如權(quán)利要求1所述的方法,其特征在于,所述創(chuàng)建軟白名單是在所述來賓OS在引導(dǎo)時加載內(nèi)核組件之后執(zhí)行的,并且還包括: 漫步所述系統(tǒng)管理程序的陰影頁表;以及 將每一個來賓內(nèi)核頁的虛擬地址映射到所述對應(yīng)的重復(fù)頁的機器頁幀號。
8.如權(quán)利要求1所述的方法,其特征在于,所述來賓OS沒有加載至少一些內(nèi)核組件,并還包括: 將每一個來賓內(nèi)核頁的虛擬基地址映射到所述對應(yīng)的重復(fù)頁的機器頁幀號。
9.一種設(shè)備,包括: 存儲器;以及 處理器;以及 系統(tǒng)管理程序,以便所述設(shè)備被配置成: 創(chuàng)建具有與包括系統(tǒng)管理程序的系統(tǒng)管理程序環(huán)境中的來賓OS的每一個來賓內(nèi)核頁相對應(yīng)的條目的軟白名單,其中每個條目是所述對應(yīng)的來賓內(nèi)核頁的重復(fù)頁; 當進程試圖訪問來賓內(nèi)核頁時,生成頁錯誤;以及 如果所述頁錯誤是指令頁錯誤,則將所述進程重定向到對應(yīng)于所述來賓內(nèi)核頁的重復(fù)頁。
10.如權(quán)利要求9所述的設(shè)備,其特征在于,所述重新定向包括改變所述系統(tǒng)管理程序的陰影頁表中的機器頁幀號以指向?qū)?yīng)于所述來賓內(nèi)核頁的所述重復(fù)頁。
11.如權(quán)利要求9所述的設(shè)備,其特征在于,所述設(shè)備進一步被配置成: 如果所述頁錯誤是數(shù)據(jù)頁錯誤,則:修復(fù)所述頁錯誤;以及 將對應(yīng)于所述來賓內(nèi)核頁的頁表條目標記為非可執(zhí)行的和可寫入的。
12.如權(quán)利要求9所述的設(shè)備,其特征在于,所述設(shè)備進一步被配置成: 如果所述頁錯誤是指令頁錯誤,則將對應(yīng)于所述來賓內(nèi)核頁的頁表條目標記為只讀。
13.如權(quán)利要求9所述的設(shè)備,其特征在于,所述設(shè)備進一步被配置成: 在所述系統(tǒng)管理程序的陰影頁表中將每一個來賓內(nèi)核頁的頁表條目標記為NOT_PRESENTο
14.編碼在非瞬態(tài)介質(zhì)中的邏輯,所述邏輯包括用于執(zhí)行的代碼,并且所述代碼當由處理器執(zhí)行時可操作用以執(zhí)行包括下列各項的操作: 創(chuàng)建具有與包括系統(tǒng)管理程序的系統(tǒng)管理程序環(huán)境中的來賓OS的每一個來賓內(nèi)核頁相對應(yīng)的條目的軟白名單,其中每個條目是所述對應(yīng)的來賓內(nèi)核頁的重復(fù)頁; 當進程試圖訪問來賓內(nèi)核頁時,生成頁錯誤;以及 如果所述頁錯誤是指令頁錯誤,則將所述進程重定向到對應(yīng)于所述來賓內(nèi)核頁的重復(fù)頁。
15.如權(quán)利要求14所述的邏輯,其特征在于,所述重新定向包括改變所述系統(tǒng)管理程序的陰影頁表中的機器頁幀號以指向?qū)?yīng)于所述來賓內(nèi)核頁的所述重復(fù)頁。
16.如權(quán)利要求14所·述的邏輯,其特征在于,所述操作還包括: 如果所述頁錯誤是數(shù)據(jù)頁錯誤,則: 修復(fù)所述頁錯誤;以及 將對應(yīng)于所述來賓內(nèi)核頁的頁表條目標記為非可執(zhí)行的和可寫入的。
17.如權(quán)利要求14所述的邏輯,其特征在于,所述操作還包括: 如果所述頁錯誤是指令頁錯誤,則將對應(yīng)于所述來賓內(nèi)核頁的頁表條目標記為只讀。
18.如權(quán)利要求14所述的邏輯,其特征在于,所述操作還包括: 在所述系統(tǒng)管理程序的陰影頁表中將每一個來賓內(nèi)核頁的頁表條目標記為NOT_PRESENTο
19.如權(quán)利要求14所述的邏輯,其特征在于,所述創(chuàng)建軟白名單是在所述來賓OS在引導(dǎo)時加載多個內(nèi)核組件之后執(zhí)行的,并且還包括: 漫步所述系統(tǒng)管理程序的陰影頁表;以及 將每一個來賓內(nèi)核頁的虛擬地址映射到所述對應(yīng)的重復(fù)頁的機器頁幀號。
20.如權(quán)利要求14所述的邏輯,其特征在于,所述操作還包括: 在域創(chuàng)建過程中在所述系統(tǒng)管理程序中設(shè)置鎖合特征比特,以啟用rootkit保護。
【文檔編號】G06F21/10GK103858129SQ201280050169
【公開日】2014年6月11日 申請日期:2012年9月15日 優(yōu)先權(quán)日:2011年10月13日
【發(fā)明者】A·丹戈, P·蒙辛德, V·斯里瓦斯塔瓦 申請人:邁克菲股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
商洛市| 夏河县| 安塞县| 商南县| 涟源市| 南川市| 苍山县| 鲁山县| 平湖市| 房山区| 拉孜县| 临颍县| 晋城| 湛江市| 利津县| 麟游县| 邻水| 林甸县| 文山县| 崇左市| 榆社县| 榆林市| 馆陶县| 兴城市| 中山市| 建水县| 五指山市| 潞城市| 台安县| 攀枝花市| 淳化县| 巴青县| 永安市| 阿拉善盟| 昭觉县| 光泽县| 龙南县| 蚌埠市| 安宁市| 祥云县| 鹤岗市|