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