目前,虛擬化技術(shù)(virtualization)在企業(yè)中得到了廣泛地應(yīng)用,并具有巨大的市場前景。據(jù)IDC預(yù)計,2011年,虛擬化服務(wù)市場將達(dá)到117億美元。在2009年和2010年連續(xù)兩年公布的Gartner技術(shù)發(fā)展趨勢報告中,虛擬化技術(shù)都成為十大IT技術(shù)之一。虛擬化技術(shù)改變了系統(tǒng)軟件與底層硬件緊耦合的方式,可以更加靈活地配置與管理計算系統(tǒng)。虛擬化技術(shù)最早由IBM在20世紀(jì)60年代提出,并成功應(yīng)用于大型機VM370。根據(jù)Popek和Goldberg在文獻(xiàn)[8]中提出的可虛擬化體系架構(gòu)的3個條件:等價性(equivalence)、資源控制(resource control)和有效性(efficiency),目前廣泛使用的X86架構(gòu)是不支持虛擬化的。隨著個人計算機(主要是X86架構(gòu))處理能力的增強,同時,VMware將虛擬化技術(shù)引入到X86架構(gòu),從此,虛擬化技術(shù)及其應(yīng)用得到了蓬勃地發(fā)展,常見的虛擬化軟件有VMWare ESX/GSX/Workstation,Xen。根據(jù)虛擬層次的不同,虛擬化技術(shù)可以分為指令級虛擬化、硬件抽象級虛擬化、操作系統(tǒng)級虛擬化、運行庫級虛擬化和編程語言級虛擬化。每個虛擬操作環(huán)境(包括操作系統(tǒng)和其上運行的應(yīng)用程序)被稱為虛擬機(virtual machine,簡稱VM);將底層硬件資源進(jìn)行抽象從而供多個虛擬機使用的虛擬化軟件被稱為虛擬機管理器(virtual machine monitor,簡稱VMM或hypervisor)。
圖1將傳統(tǒng)架構(gòu)與虛擬化架構(gòu)進(jìn)行了比較。從安全的角度來看,傳統(tǒng)架構(gòu)的操作系統(tǒng)具有最高權(quán)限,它負(fù)責(zé)管理整個硬件平臺。而在虛擬化架構(gòu)中,虛擬機管理器位于操作系統(tǒng)和真實硬件平臺之間,比操作系統(tǒng)的特權(quán)級更高,而且代碼量更少。
圖1 傳統(tǒng)架構(gòu)和虛擬化架構(gòu)的比較
與傳統(tǒng)架構(gòu)相比,虛擬化架構(gòu)的優(yōu)勢在于:
(1) 更小的可信計算基(trusted computing base,簡稱TCB):虛擬機管理器的代碼量一般在10萬行左右,遠(yuǎn)遠(yuǎn)小于操作系統(tǒng)的代碼量。例如,Linux 2.6.27大概有1 000萬行,而Windows XP大概有3 500萬行。這就意味著虛擬機管理器自身具有的Bug數(shù)量更少,相比操作系統(tǒng)也更健壯;
(2) 更好的隔離性(isolation):在傳統(tǒng)架構(gòu)中,應(yīng)用程序通過進(jìn)程的虛擬地址空間來進(jìn)行隔離,進(jìn)程之間可能相互干擾。例如,某個進(jìn)程出現(xiàn)故障導(dǎo)致整個系統(tǒng)崩潰,從而影響到其他進(jìn)程的正常運行。而在虛擬化架構(gòu)中,應(yīng)用程序是以虛擬機為粒度進(jìn)行隔離的,因此,虛擬機架構(gòu)提供更好的隔離性。
由于虛擬化架構(gòu)具有上述優(yōu)勢,基于虛擬化架構(gòu)的安全工具能夠有效地監(jiān)控虛擬機的內(nèi)部狀態(tài),同時抵御被監(jiān)控系統(tǒng)中可能發(fā)生的攻擊。因此,在虛擬機管理器層提供服務(wù),可以在一定程度上增強計算系統(tǒng)的安全性(security)和可移動性(mobility)。
文獻(xiàn)[20]列出了基于虛擬化架構(gòu)的3種服務(wù)實例:安全日志(secure logging)、入侵防御和檢測(intrusion prevention and detection)、環(huán)境遷移(environment migration)。
目前,基于虛擬機架構(gòu)來增強安全工具的安全性已經(jīng)成為研究趨勢,例如入侵檢測、系統(tǒng)日志、蜜罐、完整性監(jiān)控、惡意代碼檢測與分析、安全監(jiān)控架構(gòu)、監(jiān)控通用性等。
1 基于虛擬化安全監(jiān)控的分類
近幾年來,由于虛擬機管理器自身具有更小可信基和更好隔離性的優(yōu)勢,基于虛擬機的安全監(jiān)控都是利用虛擬機管理器隔離和保護特定的安全工具。因此,從安全監(jiān)控實現(xiàn)技術(shù)的角度來看,基于虛擬化安全監(jiān)控的相關(guān)研究工作可以分為兩大類:
(1) 內(nèi)部監(jiān)控:在虛擬機中加載內(nèi)核模塊來攔截目標(biāo)虛擬機的內(nèi)部事件,而內(nèi)核模塊的安全通過虛擬機管理器來進(jìn)行保護;
(2) 外部監(jiān)控:通過在虛擬機管理器中對虛擬機中事件進(jìn)行攔截,從而在虛擬機外部進(jìn)行檢測。
1.1 內(nèi)部監(jiān)控
圖2說明了內(nèi)部監(jiān)控的架構(gòu),典型的代表系統(tǒng)是Lares和SIM。被監(jiān)控的系統(tǒng)運行在目標(biāo)虛擬機中,安全工具部署在一個隔離的虛擬域(安全域)中。這種架構(gòu)支持在虛擬機的客戶操作系統(tǒng)的任何位置部署鉤子函數(shù),這些鉤子函數(shù)可以攔截某些事件,例如進(jìn)程創(chuàng)建、文件讀寫等。由于客戶操作系統(tǒng)不可信,因此這些鉤子函數(shù)需要得到特殊的保護。當(dāng)這些鉤子函數(shù)加載到客戶操作系統(tǒng)中時,向虛擬機管理器通知其占據(jù)的內(nèi)存空間。由內(nèi)存保護模塊根據(jù)鉤子函數(shù)所在的內(nèi)存頁面對其進(jìn)行保護,從而防止惡意攻擊者篡改。在探測到虛擬機中發(fā)生某些事件時,鉤子函數(shù)主動地陷入到虛擬機管理器中。通過跳轉(zhuǎn)模塊,將虛擬機中發(fā)生的事件傳遞到管理域的安全驅(qū)動。安全工具執(zhí)行某種安全策略,然后將響應(yīng)發(fā)送到安全驅(qū)動,從而對虛擬機中的事件采取響應(yīng)措施。跳轉(zhuǎn)模塊的功能是在虛擬機和管理域之間通信的橋梁。為了防止惡意攻擊者篡改,截獲事件的鉤子函數(shù)和跳轉(zhuǎn)模塊都是自包含的(self-contained),不能調(diào)用內(nèi)核的其他函數(shù)。同時,它們都必須很簡單,可以方便地被內(nèi)存保護模塊所保護。
這種架構(gòu)的優(yōu)勢在于,事件截獲在虛擬機中實現(xiàn),而且可以直接獲取操作系統(tǒng)級語義。由于不需要進(jìn)行語義重構(gòu),因此減少了性能開銷。然而,它需要在客戶操作系統(tǒng)中插入內(nèi)核模塊,對其不具有透明性。而且,內(nèi)存保護模塊和跳轉(zhuǎn)模塊是與目標(biāo)虛擬機緊密相關(guān)的,不具有通用性。
圖2 內(nèi)部監(jiān)控的架構(gòu)
1.2 外部監(jiān)控
與內(nèi)部監(jiān)控相比,外部監(jiān)控具有一定的優(yōu)勢,因此相關(guān)的研究工作也就更多。圖3說明了外部監(jiān)控的架構(gòu),典型的代表系統(tǒng)是Livewire等。
外部監(jiān)控是指在目標(biāo)虛擬機外部,由位于安全域的安全工具按照某種策略對其進(jìn)行檢測。從圖3中可以看出,監(jiān)控點部署在虛擬機管理器中,它是安全域中的安全工具和目標(biāo)虛擬機之間通信的橋梁。監(jiān)控點攔截目標(biāo)虛擬機中發(fā)生的事件,重構(gòu)出高級語義并傳遞給安全工具。安全工具根據(jù)安全策略產(chǎn)生的響應(yīng),通過監(jiān)控點來控制目標(biāo)虛擬機。虛擬機管理器將安全工具與目標(biāo)虛擬機隔離開來,增強了安全工具的安全性。由于虛擬機管理器位于目標(biāo)虛擬機的底層,因此監(jiān)控點可以觀測到目標(biāo)虛擬機的狀態(tài)(例如CPU信息、內(nèi)存頁面等)。在虛擬機管理器的輔助下,安全工具能夠?qū)δ繕?biāo)虛擬機進(jìn)行檢測。一般來說,外部監(jiān)控一般包含兩種基本功能:事件截獲和語義重構(gòu)。事件截獲是指攔截虛擬機中發(fā)生的某些事件,從而觸發(fā)安全工具對其進(jìn)行檢測。由于虛擬機管理器位于目標(biāo)虛擬機的下層,因此只能獲取低級語義(例如寄存器和內(nèi)存頁面)。而監(jiān)控工具是針對操作系統(tǒng)層的語義,因此兩者之間存在語義鴻溝(semantic gap)。為了使監(jiān)控工具能夠“理解”目標(biāo)虛擬機中的事件,因此必須進(jìn)行語義重構(gòu)(semantic reconstruction)。語義重構(gòu)是指由低級語義重構(gòu)出高級語義(操作系統(tǒng)級語義)。語義重構(gòu)的過程與客戶操作系統(tǒng)的類型和版本密切相關(guān),通過某些寄存器或者內(nèi)存地址來解析出內(nèi)核關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)。
圖3 外部監(jiān)控的架構(gòu)
2 基于虛擬化安全監(jiān)控的相關(guān)工作
安全監(jiān)控主要是對計算系統(tǒng)實現(xiàn)相應(yīng)的安全功能,保證計算系統(tǒng)的正常運行。本文將主要從入侵檢測、蜜罐、文件完整性監(jiān)控、惡意代碼檢測與分析、安全監(jiān)控架構(gòu)、監(jiān)控通用性等方面介紹相關(guān)的研究工作。
2.1 入侵檢測
入侵檢測系統(tǒng)(intrusion detection system,簡稱IDS)是指發(fā)現(xiàn)在非授權(quán)的情況下,試圖存取信息、處理信息或者破壞系統(tǒng),以使系統(tǒng)不可靠、不可用的故意行為的安全工具。根據(jù)收集信息的來源不同,IDS可以分為基于網(wǎng)絡(luò)的IDS(network-based IDS,簡稱NIDS)和基于主機的IDS(host-based IDS,簡稱HIDS)。NIDS部署在局域網(wǎng)中,實時地分析網(wǎng)絡(luò)中的流量(例如Snort);而HIDS則是分析系統(tǒng)的內(nèi)部狀態(tài)和日志,從而發(fā)現(xiàn)入侵行為(例如OSSEC[28])。入侵防御系統(tǒng)(intrusion prevention system,簡稱IPS)則是在入侵檢測的基礎(chǔ)上實現(xiàn)動態(tài)響應(yīng)。
現(xiàn)有的入侵檢測架構(gòu)給系統(tǒng)管理員帶來了兩難的選擇:如果將入侵檢測系統(tǒng)部署在主機上,它可以清晰地觀察到主機的系統(tǒng)狀態(tài),但是容易遭到惡意攻擊或者被屏蔽;如果將入侵檢測系統(tǒng)部署在網(wǎng)絡(luò)上,它可以更好地抵御攻擊,但是對主機的內(nèi)部狀態(tài)一無所知,因此可能讓攻擊者逃脫。因此,Tal Garfinkel和Mendel Rosenblum首次在文獻(xiàn)[23]中提出一種能夠觀察到被監(jiān)控系統(tǒng)的內(nèi)部狀態(tài)、同時與被監(jiān)控系統(tǒng)隔離的入侵檢測架構(gòu)。該架構(gòu)利用虛擬化技術(shù),將入侵檢測系統(tǒng)從被監(jiān)控系統(tǒng)中轉(zhuǎn)移出來。虛擬機管理器能夠直接觀察到被監(jiān)控系統(tǒng)的內(nèi)部狀態(tài),通過直接訪問其內(nèi)存來重構(gòu)出客戶操作系統(tǒng)的內(nèi)核數(shù)據(jù)結(jié)構(gòu),而通過單獨運行的入侵檢測系統(tǒng)來進(jìn)行檢測。這種在虛擬機外部監(jiān)控虛擬機內(nèi)部運行狀態(tài)的方法被稱為虛擬機自省(virtual machine introspection,簡稱VMI)。為了證明該架構(gòu)能夠抵御攻擊以及防止攻擊者逃脫,作者通過修改VMware Workstation實現(xiàn)了原型系統(tǒng)-Livewire],如圖4所示。圖4右側(cè)為被監(jiān)控的系統(tǒng),左側(cè)是基于虛擬機自信機制的入侵檢測系統(tǒng),操作系統(tǒng)接口庫通過虛擬機管理管理器攔截的狀態(tài)來恢復(fù)出操作系統(tǒng)級語義。
圖4 Livewire系統(tǒng)架構(gòu)圖
類似地,Laureano等人提出將被監(jiān)控系統(tǒng)封裝在虛擬機中,同時從外部監(jiān)控其中的系統(tǒng)調(diào)用序列。外部的監(jiān)控器根據(jù)系統(tǒng)調(diào)用序列來判斷進(jìn)程行為是否異常,從而采取相應(yīng)的響應(yīng)措施;赨ser-Mode Linux(UML),作者實現(xiàn)了原型系統(tǒng),當(dāng)檢測到異常時,采用軟件防火墻來阻斷網(wǎng)絡(luò)連接或者關(guān)閉網(wǎng)絡(luò)端口。
與上述不同的是,VNIDA通過建立一個單獨的入侵檢測域(intrusion detection domain,簡稱IDD)來為其他虛擬機提供入侵檢測服務(wù)。虛擬機管理器層的事件傳感器(event sensor)攔截虛擬機中的系統(tǒng)調(diào)用,并通過虛擬機管理器接口(VMM interface)傳遞到IDD中的入侵檢測系統(tǒng)。根據(jù)不同的安全策略,虛擬機管理層的入侵檢測域助手(IDD helper)能夠針對入侵采取相應(yīng)的響應(yīng)。
此外,Zhang等人基于虛擬化和智能磁盤技術(shù)(smart disk technology)提出了面向存儲的入侵檢測系統(tǒng)。虛擬機管理器能夠避免入侵檢測系統(tǒng)受到攻擊,而智能磁盤技術(shù)則能夠讓入侵檢測系統(tǒng)觀測到被監(jiān)控系統(tǒng)的整個文件系統(tǒng)。而Pennington等人提出將入侵檢測嵌入到網(wǎng)絡(luò)文件系統(tǒng)(network file system,簡稱NFS)服務(wù)器中。當(dāng)客戶端進(jìn)行文件操作時,基于存儲的入侵檢測系統(tǒng)能夠?qū)梢傻奈募薷牟僮鬟M(jìn)行在線的、基于規(guī)則的檢測。
在分布式計算系統(tǒng)中,HyperSpector是一種面向虛擬計算環(huán)境的入侵監(jiān)控系統(tǒng)。分布式環(huán)境中的多個入侵檢測系統(tǒng)能夠發(fā)現(xiàn)攻擊者,同時也增加了不安全的因素。因此,HyperSpector將入侵檢測系統(tǒng)部署在虛擬機中,與被監(jiān)控的系統(tǒng)隔離。此外,各個節(jié)點上的入侵檢測虛擬機(IDS VM)通過虛擬網(wǎng)絡(luò)進(jìn)行互聯(lián)。為了對被監(jiān)控系統(tǒng)進(jìn)行有效地檢測,它提供了3種虛擬機內(nèi)部(inter-VM)監(jiān)控機制:軟件端口鏡像(software port mirroring)、虛擬機內(nèi)磁盤掛載(inter-VM disk mounting)和虛擬機內(nèi)進(jìn)程映射(inter-VM process mapping)。此外,Roschke等人提出了面向分布式計算環(huán)境,集成了管理虛擬機和入侵檢測系統(tǒng)的架構(gòu)。該架構(gòu)通過事件收集器(event gatherer)來獲取各個IDS傳感器(IDS sensor)的信息,并記錄在事件數(shù)據(jù)庫(event database)進(jìn)行分析。因此,該架構(gòu)滿足通用分布式入侵檢測系統(tǒng)可伸縮性(extensibility)的需求。
2.2 系統(tǒng)日志
系統(tǒng)日志(Log)是記錄系統(tǒng)中硬件、軟件和系統(tǒng)的問題信息,同時還可以監(jiān)視系統(tǒng)中發(fā)生的事件。系統(tǒng)管理員可以通過它來檢查錯誤發(fā)生的原因,或者尋找攻擊者留下的痕跡。例如,Linux系統(tǒng)中,日志一般存放在文件/var/log/messages中,而Windows XP系統(tǒng)中則可以運行eventvwr命令來查看系統(tǒng)日志。
當(dāng)前的系統(tǒng)日志存在兩個問題:
(1) 它依賴于記錄日志的操作系統(tǒng)的完整性。如果入侵已經(jīng)發(fā)生了,那么攻擊者很有可能通過刪除日志記錄來隱藏其蹤跡,那么系統(tǒng)日志也就不再值得信賴了;
(2) 它沒有記錄充足的信息(例如非確定性事件)來重放和分析攻擊。系統(tǒng)日志只記錄系統(tǒng)中發(fā)生的事件,而這些事件不能充分地確定攻擊者如何入侵到系統(tǒng),因此給系統(tǒng)管理員分析攻擊帶來了極大負(fù)擔(dān)。
ReVirt在虛擬機管理器層將客戶操作系統(tǒng)的行為記錄到系統(tǒng)日志中,它主要記錄了影響進(jìn)程運行的非確定性事件(non-deterministic events):外部輸入和定時器。根據(jù)日志記錄來進(jìn)行系統(tǒng)重放,從而分析攻擊行為。
通過記錄操作系統(tǒng)中發(fā)生的系統(tǒng)調(diào)用和進(jìn)行系統(tǒng)重放,BackTracker能夠自動定位入侵發(fā)生的序列。通過在線記錄系統(tǒng)日志,當(dāng)入侵發(fā)生后,分析日志信息從而獲得入侵過程中進(jìn)程和文件的依賴關(guān)系圖(dependency graph)。為了在軟件漏洞發(fā)布之前發(fā)現(xiàn)入侵,IntroVirt利用虛擬機自省機制來監(jiān)控操作系統(tǒng)和應(yīng)用程序的執(zhí)行過程。在系統(tǒng)運行或者回放過程中,通過執(zhí)行特定的脆弱性斷言(vulnerability-specific predictates)來檢測入侵。與之類似地,通過記錄和回放系統(tǒng)中的相關(guān)事件,ExecRecorder基于Bochs實現(xiàn)了全系統(tǒng)回放。
上述方法都是在系統(tǒng)運行時記錄系統(tǒng)日志,在發(fā)生入侵后通過從某個檢查點(checkpoint)回放系統(tǒng)來重現(xiàn)攻擊行為。與上述方法不同的是,Xenlog提出了一種安全地記錄系統(tǒng)日志的方法。在獲得被監(jiān)控系統(tǒng)的日志之后,通過Xen提供的共享內(nèi)存機制,將日志信息傳輸?shù)揭粋單獨的隔離域中。這種方法可以防止日志被攻擊者嗅探到。同時,與網(wǎng)絡(luò)傳輸日志的方式相比,它提高了傳輸效率。類似地,吳佳民等人提出了一個運行于Xen上的實時日志備份系統(tǒng),通過該系統(tǒng)來傳輸日志信息,可以避免其在傳輸過程中暴露在網(wǎng)絡(luò)上的風(fēng)險。
2.3 蜜罐
蜜罐(honeypot)是通過構(gòu)造類似于真實的系統(tǒng)環(huán)境,從而引誘惡意攻擊,并分析攻擊者的行為特征。目前,蜜罐是研究最新惡意代碼的有效手段,從中可以提取惡意代碼的行為特征。根據(jù)傳感器部署的位置,蜜罐可以分為內(nèi)部蜜罐和外部蜜罐。內(nèi)部蜜罐部署在被監(jiān)控系統(tǒng)內(nèi)部,它能夠提供豐富的語義,然而可能會被惡意攻擊者所破壞;外部蜜罐部署在被監(jiān)控系統(tǒng)外部,它對惡意攻擊者透明,但是不能獲取系統(tǒng)內(nèi)部事件。
由于在物理機器上部署蜜罐通常耗時而且代價大,Honeyd是一種模擬計算機的虛擬蜜罐框架。它不僅能模擬不同操作系統(tǒng)的網(wǎng)絡(luò)棧,而且可以為大量虛擬系統(tǒng)提供任意的路由拓?fù)?routing toplogy)。通過部署Honeyd可應(yīng)用于蠕蟲檢測、垃圾郵件防御等系統(tǒng)安全領(lǐng)域。與之類似地,基于虛擬化技術(shù),Potemkin通過內(nèi)存共享(memory sharing)和推遲綁定資源(late binding of resources)技術(shù)來支持在單個物理節(jié)點上同時模擬上萬個高度逼真的蜜罐,從而增強了蜜罐的可擴展性(scalability)。為了探測本地的蠕蟲,HoneyStat[53]通過修改蜜罐來提高檢測的準(zhǔn)確性,同時具有低誤報率。與入侵檢測系統(tǒng)的報警信息相比,它可以提供更多的信息,例如二進(jìn)制特征(binary signature)、攻擊向量(attack vector)、攻擊速率(attack rate)等。文獻(xiàn)[54]比較了在User-Mode Linux和Xen上實現(xiàn)基于虛擬機的蜜罐,并通過實驗表明,少量的傳感器就能夠探測到大量的入侵行為。由于單個蜜罐或者多個獨立的蜜罐只能發(fā)現(xiàn)攻擊的局部視圖,而且蜜罐的部署也會帶來安全風(fēng)險,Collapsar通過管理專用網(wǎng)絡(luò)中的大量高交互式虛擬蜜罐來建立分布式網(wǎng)絡(luò)攻擊拘留中心(network attack detention center)。這種方法能夠提供網(wǎng)絡(luò)攻擊的多樣化視圖,同時便于進(jìn)行管理。
由于內(nèi)部蜜罐容易受到攻擊,而外部蜜罐無法探測到被監(jiān)控系統(tǒng)的內(nèi)部狀態(tài),VMscope基于虛擬化實現(xiàn)了從蜜罐外部查看內(nèi)部系統(tǒng)狀態(tài)。由于客戶端攻擊急劇地增加,PhoneyC通過模擬客戶端的應(yīng)用(例如網(wǎng)頁瀏覽器)來分析最新的客戶端攻擊方式。針對網(wǎng)絡(luò)中傳播的惡意代碼,Amun[59]在服務(wù)器端模擬系統(tǒng)漏洞,從而主動收集蠕蟲和僵尸網(wǎng)絡(luò)等惡意代碼的行為特征。
2.4 完整性保護
完整性是指能夠保障被傳輸、接收或存儲的信息是完整的和未被篡改的,它是信息安全的重要屬性之一。目前,關(guān)于完整性保護已經(jīng)有一些相關(guān)的研究工作,主要集中在保證文件完整性、內(nèi)核代碼完整性和虛擬機管理器代碼的完整性。
文件完整性保護主要分為周期性文件保護和實時文件保護:周期性文件保護是在不同的時間點來比較文件的Hash值,從而判斷文件是否被篡改,例如Tripwire,AIDE,Samhain等;實時文件保護通過攔截文件操作從而保護其完整性,例如I3FS.Quynh等人提出基于Xen虛擬機來實時地監(jiān)控文件系統(tǒng)的完整性,并將操作文件的報告通過共享內(nèi)存的方式保存在單獨的虛擬機中。然而,文件監(jiān)控器可能被屏蔽,同時對被監(jiān)控系統(tǒng)不具有透明性。RFIM系統(tǒng)通過在虛擬機管理器層截獲虛擬機中的系統(tǒng)調(diào)用,并對文件操作進(jìn)行語義恢復(fù)。因此,RFIM系統(tǒng)對被監(jiān)控系統(tǒng)完全透明。
Copilot通過一個運行在協(xié)處理器中的內(nèi)核完整性監(jiān)視器來探測篡改操作系統(tǒng)內(nèi)核的惡意代碼,它不需要修改被保護系統(tǒng)上運行的軟件,即使內(nèi)核完全被“攻陷”了也能夠正常工作。Pioneer是在不可信的主機上實現(xiàn)代碼執(zhí)行過程的可驗證性,它不需要協(xié)處理器或擴展CPU架構(gòu)。SecVisor通過修改Linux來創(chuàng)建一個輕量級虛擬機,從而保護主機操作系統(tǒng)的完整性;而KOP則是通過映射動態(tài)的內(nèi)核數(shù)據(jù)來保證內(nèi)核完整性。此外, HUKO是基于虛擬化的完整性保護系統(tǒng),從而避免對操作系統(tǒng)內(nèi)核進(jìn)行不可信的擴展。
在虛擬化得到廣泛應(yīng)用的同時,虛擬機管理器自身的安全問題也不容忽視。由于虛擬機管理器是在真實硬件之上運行的軟件,因此近年來也出現(xiàn)了保護虛擬機管理器完整性的相關(guān)文獻(xiàn)。Hypersafe[75]的目標(biāo)是使虛擬機管理器具有自保護性(self-protection)。為了保證虛擬機管理器運行時的完整性,作者提出了兩種技術(shù):不可繞過的內(nèi)存鎖(non-bypassable memory lockdown)和受限制的指針?biāo)饕?restricted pointer indexing)。不可繞過的內(nèi)存鎖通過設(shè)置頁表中的某些位(例如NX,R/W,U/S,WP)來實現(xiàn)惡意程序修改時導(dǎo)致的缺頁故障(page fault),而正常的頁表更新則是通過原子操作來實現(xiàn)。此外,通過構(gòu)造控制流程圖(control flow graph)來限制指針的位置,從而保證控制流完整性。不可繞過的內(nèi)存鎖保證了虛擬機管理器代碼的完整性,不可繞過的內(nèi)存鎖和受限制的指針?biāo)饕WC了虛擬機管理數(shù)據(jù)的完整性。不可繞過的內(nèi)存鎖是直接通過擴展虛擬機管理器的內(nèi)存管理模塊來實現(xiàn);受限制的指針?biāo)饕齽t是擴展了開源的LLVM編譯器來重新編譯虛擬機管理器的代碼。
HyperSentry提出了對運行時虛擬機管理器的完整性度量框架。與現(xiàn)有系統(tǒng)都是保護特權(quán)軟件不同的是, HyperSentry不需要在被度量的目標(biāo)底層引入更高特權(quán)級的軟件,因為這將引起惡意攻擊者獲取系統(tǒng)最高特權(quán)的競賽。與之相反,HyperSentry引入一種軟件組件,它能夠與虛擬機管理器隔離,從而實現(xiàn)對虛擬機管理器進(jìn)行秘密地和實時的完整性度量。然而,秘密性是確保受到攻擊虛擬機管理器不會隱藏攻擊蹤跡,實時性是完整性度量的必須條件。
HyperSentry通過使用外部通道(IPMI)來觸發(fā)秘密地度量,并通過系統(tǒng)管理模式(system management mode,簡稱SMM)來保護代碼和關(guān)鍵數(shù)據(jù)。HyperSentry的貢獻(xiàn)是克服了系統(tǒng)管理模式的限制,提供了完整性度量代理,主要功能包括:
(1) Hypervisor的上下文信息;
(2) 完整的執(zhí)行保護;
(3) 證明輸出。
與之類似的是,HyperCheck是基于硬件輔助的探測篡改框架,用于保證虛擬機管理器的完整性。 HyperCheck也是利用CPU的系統(tǒng)管理模式來檢測被保護機器的狀態(tài),并發(fā)送給遠(yuǎn)程用戶。除了BIOS, HyperCheck不依賴于目標(biāo)機器上運行的任何軟件,而且能夠抵御屏蔽和阻止其功能的惡意攻擊。
2.5 惡意代碼檢測與分析
惡意代碼是指按照攻擊者的意圖在系統(tǒng)中執(zhí)行的程序,一般具有隱蔽性,不易被監(jiān)控工具發(fā)現(xiàn)。如果將檢測工具都部署在被監(jiān)控的系統(tǒng)中,那么容易遭受到攻擊。為了解決上述問題,VMwatcher提出在被監(jiān)控系統(tǒng)外部檢測內(nèi)部的惡意軟件。由于檢測工具與被監(jiān)控系統(tǒng)隔離在不同的虛擬機中,因此需要解決語義鴻溝(semantic gap)的問題。通過語義重構(gòu),在虛擬機外部的檢測軟件能夠發(fā)現(xiàn)虛擬機中的惡意軟件。利用硬件輔助虛擬化技術(shù), Ether提出了一種外部的、透明的惡意代碼分析方法。該方法利用Intel VT技術(shù)對可疑程序程序進(jìn)行跟蹤,同時對被監(jiān)控系統(tǒng)完全透明。由于在虛擬機內(nèi)部和外部進(jìn)行觀測時兩者之間具有一定的時間差,如果在這段時間內(nèi)進(jìn)程創(chuàng)建和撤銷很頻繁,那么將會對檢測結(jié)果帶來一定程度的誤差。因此,Lycosid系統(tǒng)利用統(tǒng)計學(xué)的方法消除了在兩者之間觀測帶來的干擾,從而提高了檢測的精確性。
現(xiàn)有的惡意軟件檢測機制都是探測惡意代碼的存在,而不是動態(tài)地分析惡意代碼的行為。K-Tracer是基于QEMU開發(fā)的惡意代碼行為分析工具,它能夠動態(tài)地收集Windows內(nèi)核的執(zhí)行路徑信息,并采用后向和前向的切片(backward and forward slicing)技術(shù)來提取惡意代碼的行為。與之類似地,Rkprofiler[83]是一個基于沙盒(sandbox)的惡意代碼分析系統(tǒng),它能夠監(jiān)控和報告客戶操作系統(tǒng)中運行的惡意代碼的行為。由于分析惡意代碼的行為是一個非常枯燥而且耗時的工作,Moser等人基于QEMU實現(xiàn)了多執(zhí)行路徑(multiple execution paths)的惡意代碼分析系統(tǒng),從而識別出某些特定條件才會出現(xiàn)的惡意行為。這種方法能夠在可疑行為發(fā)生時,自動地提取應(yīng)用程序的全面行為。此外,Crandall等人提出基于虛擬機的虛擬時間來自動分析與時間相關(guān)的惡意代碼。該方法不需要假定客戶操作系統(tǒng)內(nèi)核的完整性,同時能夠探測惡意代碼的定時炸彈(malware timeBOMb)。而Wang等人利用虛擬機中運行有漏洞的瀏覽器(vulnerable brower)來分析各個Web站點上可能存在的惡意軟件,從而降低了為了保護Internet用戶而監(jiān)控惡意網(wǎng)站的開銷。
2.6 安全監(jiān)控架構(gòu)
安全監(jiān)控架構(gòu)是指安全工具為了適應(yīng)虛擬計算環(huán)境而采用不同的架構(gòu)。Livewire采用了虛擬機自省的監(jiān)控架構(gòu),即在將安全工具放在單獨的虛擬機中來對其他虛擬機進(jìn)行檢測。Xenaccess是在Xen的管理域中實現(xiàn)的虛擬機監(jiān)控庫,它基于Xen提供的libxc和libblktap庫。Xenaccess提供了高級接口,并實現(xiàn)對目標(biāo)虛擬機內(nèi)存和磁盤查看。由于Xenaccess的前提假設(shè)是操作系統(tǒng)內(nèi)核的完整性,當(dāng)惡意攻擊者篡改內(nèi)核關(guān)鍵數(shù)據(jù)結(jié)構(gòu)時,檢測功能會失效。而且,磁盤監(jiān)控是具有一定的延遲,因此可能遭到定時攻擊。Wizard是一個基于Xen的內(nèi)核監(jiān)控器,它能夠發(fā)現(xiàn)高級的內(nèi)核事件和低級的硬件設(shè)備事件之間的相互關(guān)系。因此,它能夠安全和有效地截獲應(yīng)用級和操作系統(tǒng)級行為。
上述系統(tǒng)都是采用虛擬機自省機制。與之不同的是,Lares是基于虛擬化的安全主動監(jiān)控(secure active monitoring)框架。它通過在被監(jiān)控的虛擬機中插入一些鉤子函數(shù)(hook),從而截獲系統(tǒng)狀態(tài)的改變,并跳轉(zhuǎn)到單獨的安全虛擬機中進(jìn)行處理。因此,Lares既進(jìn)行主動監(jiān)控,同時通過隔離的虛擬機來提高安全性。SIM[22]則是利用硬件輔助虛擬化來實現(xiàn)虛擬機內(nèi)部的通用安全監(jiān)控框架。監(jiān)控工具部署在不可信的客戶操作系統(tǒng)中,并通過虛擬機管理器進(jìn)行保護。由于事件截獲在被監(jiān)控的系統(tǒng)中,不存在語義鴻溝的問題,因此降低了監(jiān)控開銷。然而,由于鉤子函數(shù)或者監(jiān)控工具部署在被監(jiān)控系統(tǒng)中,因此需要通過虛擬機管理器來保護其所在的內(nèi)存頁面。
2.7 監(jiān)控的通用性
由于單個物理節(jié)點上同時運行多個不同類型的虛擬機,虛擬機自身具有的動態(tài)性,虛擬機可以動態(tài)地創(chuàng)建、撤銷以及在各個物理平臺之間進(jìn)行遷移。傳統(tǒng)的監(jiān)控工具針對的目標(biāo)系統(tǒng)是相對穩(wěn)定的,而在虛擬化架構(gòu)中,監(jiān)控工具需要對各種虛擬機進(jìn)行有效地監(jiān)控。因此,現(xiàn)有的安全監(jiān)控方法不能滿足要求,需要采用通用的監(jiān)控機制保證有效性。
目前,所有上述監(jiān)控工具都是針對特定的客戶操作系統(tǒng)的類型來實現(xiàn)特定的安全功能。然而單個物理節(jié)點上虛擬機中的客戶操作系統(tǒng)是多種多樣的(例如Linux,Windows等),當(dāng)某個物理節(jié)點上創(chuàng)建一個新的虛擬機,或者從另外一個物理節(jié)點上遷移新的虛擬機時,監(jiān)控工具就會失效。因此,現(xiàn)有的監(jiān)控工具不能滿足監(jiān)控通用性的需求。
文獻(xiàn)[89]首次提出了基于虛擬化安全監(jiān)控的通用性問題,同時提出了一種基于驅(qū)動的通用監(jiān)控系統(tǒng)——VMDriver。VMDriver通過兩種新的設(shè)計策略來實現(xiàn)細(xì)粒度監(jiān)控:
(1) 將客戶操作系統(tǒng)中的事件截獲和語義恢復(fù)相分離。事件截獲在虛擬機管理器層,而語義恢復(fù)在管理域中;
(2) 語義恢復(fù)通過管理域中的監(jiān)控驅(qū)動來實現(xiàn)。采用Linux中設(shè)備驅(qū)動的方式,語義恢復(fù)以內(nèi)核模塊的方式加載到管理域中,從而實現(xiàn)動態(tài)地屏蔽虛擬機中客戶操作系統(tǒng)的差異性。監(jiān)控驅(qū)動與虛擬機中客戶操作系統(tǒng)的類型和版本相對應(yīng),并為上層的監(jiān)控工具提供統(tǒng)一的接口,從而保證了監(jiān)控系統(tǒng)的通用性。
圖5說明了VMDriver系統(tǒng)的總體架構(gòu)。事件截獲模塊位于虛擬機管理器層,語義恢復(fù)模塊位于管理域的內(nèi)核態(tài)。事件截獲模塊實現(xiàn)對虛擬機中客戶操作系統(tǒng)發(fā)生的系統(tǒng)調(diào)用進(jìn)行攔截。不同的形狀(例如橢圓、矩形、菱形)分別代表了不同類型和版本的客戶操作系統(tǒng)。語義恢復(fù)模塊與虛擬機中客戶操作系統(tǒng)的類型相對應(yīng),因此用不同形狀來表示。語義恢復(fù)模塊以內(nèi)核模塊的方式進(jìn)行加載,從而動態(tài)地對新的虛擬機進(jìn)行有效地監(jiān)控,因此也被稱為監(jiān)控驅(qū)動。調(diào)度管理模塊只是對各種監(jiān)控驅(qū)動進(jìn)行管理,例如加載、卸載等。
圖5 VMDriver系統(tǒng)架構(gòu)
VMDriver系統(tǒng)的工作流程:用戶態(tài)監(jiān)控工具需要對某個虛擬機進(jìn)行監(jiān)控,通過調(diào)度管理模塊加載相應(yīng)的監(jiān)控驅(qū)動。當(dāng)虛擬機中發(fā)生系統(tǒng)調(diào)用時,虛擬機管理器中的事件截獲模塊進(jìn)行攔截,并向相應(yīng)的監(jiān)控驅(qū)動報告。監(jiān)控驅(qū)動根據(jù)內(nèi)核數(shù)據(jù)結(jié)構(gòu)重構(gòu)出被監(jiān)控系統(tǒng)中的操作系統(tǒng)級語義,并傳輸給用戶態(tài)監(jiān)控工具。通過這種方式,監(jiān)控驅(qū)動屏蔽了虛擬機中客戶操作系統(tǒng)的差異性。
3 展望
綜上所述,現(xiàn)有的工作主要集中在利用虛擬機管理器來保護目標(biāo)虛擬機中的鉤子函數(shù)(內(nèi)部監(jiān)控)或者從目標(biāo)虛擬機外部查看其內(nèi)部狀態(tài)(外部監(jiān)控),并針對不同類型的安全工具都進(jìn)行了相應(yīng)的研究。然而,現(xiàn)有的研究工作主要存在以下兩個方面的不足:
(1) 現(xiàn)有研究工作的前提條件過強,在實際情況中會存在某些問題
現(xiàn)有的研究工作都是假定虛擬機管理器和管理域自身是安全的,事實上,虛擬機管理器是一層運行在真實硬件之上的系統(tǒng)軟件,其自身也可能存在一定的安全漏洞。雖然與操作系統(tǒng)相比,虛擬機管理器由于其代碼量少和功能簡潔而具有較高的安全性,但是根據(jù)CVE網(wǎng)站已經(jīng)公布出來的漏洞顯示,VMware ESX存在23個漏洞,Xen存在6個漏洞,這與操作系統(tǒng)本身的漏洞相比而言是相當(dāng)少的。但是,虛擬機管理器作為整個虛擬計算平臺的基石,一旦其出現(xiàn)某種安全問題,那么將會導(dǎo)致整個虛擬化平臺上的其他虛擬機遭到非常嚴(yán)重的后果,因此其危害性也就更大。此外,管理域是一個完整的系統(tǒng)環(huán)境(包括操作系統(tǒng)和應(yīng)用程序),平臺管理員可以利用管理域中的管理工具來操作虛擬機,例如創(chuàng)建、暫停、重啟、遷移等。由于管理域比較龐大而且具有較高的權(quán)限,這也會給虛擬計算環(huán)境帶來新的安全風(fēng)險。例如,惡意攻擊者通過入侵管理域從而控制整個虛擬化平臺。相對于破壞虛擬機管理器,這種攻擊方式難度更低而且不易于發(fā)現(xiàn)。
(2) 安全監(jiān)控與現(xiàn)有的安全工具的融合
現(xiàn)有的研究工作都是利用虛擬機管理器實現(xiàn)某種安全功能,例如入侵檢測、惡意代碼分析等。目前,學(xué)術(shù)界和工業(yè)界已經(jīng)開發(fā)或使用了大量安全工具,這些安全工具都是基于系統(tǒng)級語義的。安全監(jiān)控沒有提供統(tǒng)一的接口標(biāo)準(zhǔn),現(xiàn)有的安全工具不能對其直接調(diào)用。因此,如何將基于虛擬化的安全監(jiān)控與現(xiàn)有的安全工具進(jìn)行融合,是主要存在的問題。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標(biāo)題:基于虛擬化的安全監(jiān)控
本文網(wǎng)址:http://www.oesoe.com/html/consultation/1083958739.html