許 杰,張鋒軍,陳 捷,李慶華,牛作元,石 凱
(中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
隨著大數(shù)據(jù)技術(shù)的日益成熟,圍繞大數(shù)據(jù)的應(yīng)用呈現(xiàn)出了多種多樣的特點(diǎn),使得大數(shù)據(jù)的流轉(zhuǎn)更加錯(cuò)綜復(fù)雜,導(dǎo)致了數(shù)據(jù)暴露出更大的受攻擊面。同時(shí),大數(shù)據(jù)在全生命周期過(guò)程中呈現(xiàn)出了類型動(dòng)態(tài)化、等級(jí)多樣化、權(quán)屬?gòu)?fù)雜化、使用實(shí)時(shí)化等特點(diǎn),這些特點(diǎn)都導(dǎo)致了大數(shù)據(jù)環(huán)境下的安全威脅攻擊手段多樣化,攻擊程序不斷更新迭代,使得大數(shù)據(jù)在全生命周期過(guò)程中被竊取、被濫用、被篡改的風(fēng)險(xiǎn)不斷增大。傳統(tǒng)的安全手段及體系呈現(xiàn)出的單點(diǎn)、靜態(tài)、被動(dòng)防護(hù)的特點(diǎn)已不能有效應(yīng)對(duì)大數(shù)據(jù)環(huán)境下的安全威脅。在這種趨勢(shì)的推動(dòng)下,安全防御思想正在從“以網(wǎng)絡(luò)為中心”向“以數(shù)據(jù)為中心”轉(zhuǎn)變,安全防御體系正在從單點(diǎn)、靜態(tài)、被動(dòng)防護(hù)向全面、動(dòng)態(tài)、主動(dòng)防護(hù)轉(zhuǎn)變。
在圍繞大數(shù)據(jù)全生命周期安全的主動(dòng)防御體系中,主動(dòng)防御所需采集數(shù)據(jù)的種類多、數(shù)據(jù)量大,應(yīng)盡量減少對(duì)采集系統(tǒng)資源的占用率,不影響被防御對(duì)象系統(tǒng)的正常運(yùn)行,因此,數(shù)據(jù)采集效率對(duì)整個(gè)防御體系的準(zhǔn)確性、實(shí)時(shí)性和高效性至關(guān)重要[1]。
針對(duì)上述問(wèn)題,特別是面向大數(shù)據(jù)分析應(yīng)用場(chǎng)景,本文提出了一種面向大數(shù)據(jù)主動(dòng)防御的低損耗數(shù)據(jù)采集方法。該方法采用無(wú)代理帶外采集方式,結(jié)合虛擬機(jī)內(nèi)省機(jī)制,從大數(shù)據(jù)分析節(jié)點(diǎn)中的虛擬機(jī)外部對(duì)虛擬機(jī)內(nèi)部的數(shù)據(jù)進(jìn)行采集,僅采集安全防御所需數(shù)據(jù),不僅提高了數(shù)據(jù)采集的效率,而且有效降低了大數(shù)據(jù)分析節(jié)點(diǎn)網(wǎng)絡(luò)資源和虛擬機(jī)計(jì)算資源的占用率,從而實(shí)現(xiàn)低損高效的數(shù)據(jù)采集目的。
大數(shù)據(jù)主動(dòng)防御系統(tǒng)數(shù)據(jù)采集架構(gòu)如圖1所示。
圖1 大數(shù)據(jù)主動(dòng)防御系統(tǒng)數(shù)據(jù)采集架構(gòu)
在一個(gè)典型的面向大數(shù)據(jù)環(huán)境下的主動(dòng)安全防御系統(tǒng)中的采集系統(tǒng)主要包括3類數(shù)據(jù):網(wǎng)絡(luò)、終端、大數(shù)據(jù)分析節(jié)點(diǎn)。目前,針對(duì)大數(shù)據(jù)環(huán)境下的網(wǎng)絡(luò)和終端的數(shù)據(jù)采集技術(shù)相對(duì)成熟。網(wǎng)絡(luò)流量主要以探針的方式進(jìn)行數(shù)據(jù)采集,采集技術(shù)主要有:基于SNMP的采集技術(shù)、基于流的采集技術(shù)和基于數(shù)據(jù)包抓取的采集技術(shù);終端主要以代理或探針?lè)绞竭M(jìn)行數(shù)據(jù)采集,終端采集代理或探針主要通過(guò)輕量化軟件容器實(shí)現(xiàn);大數(shù)據(jù)分析節(jié)點(diǎn)由于部署在虛擬機(jī)上,數(shù)據(jù)采集方式以帶內(nèi)采集方式為主,該方式的典型做法是基于主機(jī)的入侵檢測(cè)系統(tǒng),由中心采集程序和植入虛擬機(jī)的代理程序組成,是一種松耦合的方法。帶內(nèi)采集方式由于使用了采集程序和代理,會(huì)占用一定的虛擬機(jī)資源,占用量高時(shí)會(huì)嚴(yán)重影響到虛擬機(jī)的正常運(yùn)行,而且更易于被攻擊和被繞過(guò)而導(dǎo)致數(shù)據(jù)采集失敗,這些問(wèn)題都會(huì)嚴(yán)重影響主動(dòng)防御系統(tǒng)的響應(yīng)效率和防御效能,甚至導(dǎo)致防御失敗。針對(duì)這些問(wèn)題,本文提出了一種高效低損的數(shù)據(jù)采集方法,該方法基于虛擬機(jī)內(nèi)省技術(shù)[2-3],通過(guò)虛擬機(jī)監(jiān)控層從外部對(duì)虛擬機(jī)內(nèi)部進(jìn)行選擇性的數(shù)據(jù)采集和監(jiān)控,實(shí)現(xiàn)了高效低損的采集效果。同時(shí),由于帶外采集對(duì)虛擬機(jī)內(nèi)部是透明的,虛擬機(jī)內(nèi)部無(wú)法感知到帶外監(jiān)控程序,因此本方法還具有更高的安全性。
在大數(shù)據(jù)系統(tǒng)部署的過(guò)程中,為了實(shí)現(xiàn)高效的計(jì)算和存儲(chǔ)能力,一般大數(shù)據(jù)計(jì)算集群和存儲(chǔ)集群分開(kāi)部署,將計(jì)算集群部署在云計(jì)算平臺(tái)上,在這種部署情況下,為了實(shí)現(xiàn)大數(shù)據(jù)環(huán)境下的主動(dòng)防御能力,需要對(duì)計(jì)算集群進(jìn)行高效的數(shù)據(jù)采集和分析。在虛擬化環(huán)境下,從數(shù)據(jù)采集實(shí)現(xiàn)技術(shù)的角度看,采集方法主要有兩種[4]:帶內(nèi)采集(In-band)和帶外采集(Out-of-band)。
帶內(nèi)采集是指從虛擬機(jī)內(nèi)部進(jìn)行數(shù)據(jù)采集。如圖2所示,該方法主要通過(guò)在虛擬機(jī)中加載代理模塊攔截虛擬機(jī)內(nèi)部事件來(lái)實(shí)現(xiàn)。該方法的優(yōu)點(diǎn)在于事件攔截是在虛擬機(jī)內(nèi)部,可以直接獲取操作系統(tǒng)語(yǔ)義,獲取的語(yǔ)義精準(zhǔn)且不需要進(jìn)行語(yǔ)義重構(gòu),因此減少了性能開(kāi)銷;缺點(diǎn)是容易遭受惡意軟件的攻擊和控制,容易成為新的安全隱患點(diǎn),而且代理模塊采用加載的方式容易被用戶終止而輕松繞過(guò)。
圖2 帶內(nèi)采集(In-band)
帶外采集是指從虛擬機(jī)外部,在虛擬機(jī)管理器中對(duì)虛擬機(jī)中的事件進(jìn)行攔截,從而實(shí)現(xiàn)對(duì)虛擬機(jī)數(shù)據(jù)的采集。由于帶外采集是在虛擬機(jī)管理器中執(zhí)行,位于目標(biāo)虛擬機(jī)的底層,可將數(shù)據(jù)采集單元與目標(biāo)虛擬機(jī)隔離開(kāi)來(lái),數(shù)據(jù)采集對(duì)目標(biāo)虛擬機(jī)是不可感知的,因此增強(qiáng)了數(shù)據(jù)采集單元的安全性。與帶內(nèi)采集相比,帶外采集具有更高的安全性,但其存在虛擬機(jī)內(nèi)部的真實(shí)狀態(tài)與虛擬機(jī)外部抽取信息之間的語(yǔ)義鴻溝問(wèn)題[5],也就是如何將從外部抽取的低層信息(寄存器值、系統(tǒng)調(diào)用、I/O請(qǐng)求等)轉(zhuǎn)譯成高層信息(進(jìn)程、文件等)。如圖3所示,這種從虛擬機(jī)外部監(jiān)控虛擬機(jī)內(nèi)部的方法稱為虛擬機(jī)內(nèi)?。╒irtual Machine Introspection,VMI)。
圖3 帶外采集(Out-of-band)
通過(guò)結(jié)合帶內(nèi)和帶外數(shù)據(jù)采集方法的優(yōu)點(diǎn),本文提出了一種基于虛擬機(jī)內(nèi)省機(jī)制,面向大數(shù)據(jù)主動(dòng)防御的低損耗數(shù)據(jù)采集方法。
本方法的主要思路是采用虛擬機(jī)內(nèi)省技術(shù)在虛擬機(jī)監(jiān)控器中設(shè)計(jì)數(shù)據(jù)采集監(jiān)控模塊,通過(guò)監(jiān)控模塊從虛擬機(jī)外部對(duì)虛擬機(jī)內(nèi)部信息進(jìn)行采集,為了避免語(yǔ)義鴻溝問(wèn)題,設(shè)計(jì)一個(gè)采集注入模塊,在虛擬機(jī)啟動(dòng)時(shí),通過(guò)將采集代碼注入目標(biāo)虛擬機(jī)內(nèi)存中,按照采集策略對(duì)所需數(shù)據(jù)安全信息進(jìn)行采集,因此無(wú)須進(jìn)行語(yǔ)義轉(zhuǎn)換。低損耗數(shù)據(jù)采集方法的整體技術(shù)框架如圖4所示。
圖4 基于虛擬機(jī)內(nèi)省的數(shù)據(jù)采集框架
低損耗數(shù)據(jù)采集方法主要包括4個(gè)部分:策略設(shè)置模塊、數(shù)據(jù)采集模塊、采集注入模塊和采集注入代碼。其工作流程說(shuō)明如下:
步驟1:虛擬機(jī)啟動(dòng)時(shí),虛擬機(jī)監(jiān)控器通過(guò)采集注入模塊將采集代碼以無(wú)感方式注入目標(biāo)虛擬機(jī)的非換頁(yè)內(nèi)存中,保證代碼不會(huì)被換出;
步驟2:在虛擬機(jī)運(yùn)行過(guò)程中,數(shù)據(jù)采集監(jiān)控服務(wù)平臺(tái)管理員設(shè)置目標(biāo)虛擬機(jī)的數(shù)據(jù)采集策略,采集策略管理模塊將制定好的策略下發(fā)至虛擬機(jī)監(jiān)控器的策略設(shè)置模塊;
步驟3:策略管理模塊通過(guò)采集注入模塊將策略下發(fā)至目標(biāo)虛擬機(jī)的采集注入代碼中;
步驟4:采集注入代碼根據(jù)策略,采集進(jìn)程、文件操作、磁盤(pán)訪問(wèn)等信息;
步驟5:采集注入代碼將采集的信息定時(shí)或按照一定的數(shù)據(jù)量發(fā)送給數(shù)據(jù)采集模塊;
步驟6:數(shù)據(jù)采集模塊將采集數(shù)據(jù)進(jìn)行清洗后,按照標(biāo)準(zhǔn)格式發(fā)送給數(shù)據(jù)采集監(jiān)控服務(wù)平臺(tái)。
數(shù)據(jù)采集監(jiān)控服務(wù)平臺(tái)將接收到的采集數(shù)據(jù)進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)分析,將發(fā)現(xiàn)的數(shù)據(jù)和進(jìn)程異常行為及時(shí)上報(bào)主動(dòng)防御系統(tǒng),主動(dòng)防御系統(tǒng)根據(jù)接收到的威脅信息調(diào)整防御策略并進(jìn)行相應(yīng)的協(xié)同防御。
數(shù)據(jù)采集模塊位于虛擬機(jī)監(jiān)控器,利用虛擬機(jī)內(nèi)省機(jī)制(LibVMI)[6]實(shí)現(xiàn)虛擬機(jī)內(nèi)部數(shù)據(jù)的外部采集。LibVMI是美國(guó)佐治亞理工學(xué)院的Payne等設(shè)計(jì)的一套開(kāi)源內(nèi)省工具庫(kù),如圖5所示。該工具不需要對(duì)虛擬機(jī)監(jiān)視器進(jìn)行修改,而是直接利用虛擬機(jī)監(jiān)視器提供的接口對(duì)虛擬機(jī)底層信息(進(jìn)程頁(yè)表、內(nèi)存映射等)進(jìn)行重構(gòu),獲取虛擬機(jī)高層信息(進(jìn)程信息、內(nèi)核數(shù)據(jù)),從而實(shí)現(xiàn)監(jiān)控虛擬機(jī)的行為和狀態(tài)。這種方法對(duì)虛擬機(jī)影響最小。
圖5 數(shù)據(jù)采集模塊
基于虛擬機(jī)內(nèi)省機(jī)制的LibVMI也存在語(yǔ)義鴻溝問(wèn)題,為了避免該問(wèn)題,本方法設(shè)計(jì)了采集注入代碼模塊,該模塊在虛擬機(jī)啟動(dòng)時(shí)以無(wú)感的方式通過(guò)采集注入模塊注入虛擬機(jī)非換頁(yè)內(nèi)存區(qū)域中,通過(guò)注入代碼直接采集虛擬機(jī)的高級(jí)信息,因此不需要進(jìn)行語(yǔ)義轉(zhuǎn)換,從而解決了資源消耗問(wèn)題。同時(shí),為了提高數(shù)據(jù)采集效率,并進(jìn)一步減小對(duì)目標(biāo)虛擬機(jī)內(nèi)存的占用率,對(duì)采集注入代碼進(jìn)行了優(yōu)化,設(shè)計(jì)了一種閾值綜合判定規(guī)則,該規(guī)則綜合考慮了采集時(shí)間C和資源占用率S兩個(gè)因素,資源占用率的閾值T一般為目標(biāo)虛擬機(jī)內(nèi)存的1%,該閾值可根據(jù)用戶需要進(jìn)行設(shè)定,采集時(shí)間間隔I由管理員設(shè)定,按照資源優(yōu)先原則,判斷資源占用率,如果S>T,則數(shù)據(jù)輸出,否則如果C>I,則數(shù)據(jù)輸出。
通過(guò)上述的優(yōu)化過(guò)程,從系統(tǒng)層面到采集實(shí)施層面均對(duì)整體數(shù)據(jù)采集進(jìn)行了優(yōu)化,保障了采集效率和效果的有效權(quán)衡。
實(shí)驗(yàn)采用服務(wù)器配置如表1所示。
表1 服務(wù)器配置
采集數(shù)據(jù)如表2所示。
表2 采集數(shù)據(jù)表
本文設(shè)計(jì)的數(shù)據(jù)采集優(yōu)化方法采用了內(nèi)存注入代碼方式,可直接從目標(biāo)虛擬機(jī)內(nèi)部采集數(shù)據(jù),經(jīng)過(guò)測(cè)試,通過(guò)對(duì)數(shù)據(jù)采集1 000次并取平均值計(jì)算,數(shù)據(jù)采集時(shí)間為0.002 s,而采用代理程序方式的采集時(shí)間為0.6 s,采集效率提升了100倍,實(shí)現(xiàn)了高效的數(shù)據(jù)采集能力。
通過(guò)測(cè)試,在目標(biāo)虛擬機(jī)內(nèi)存占用率方面,本文方法內(nèi)存占用量為56 kB,采集代理程序內(nèi)存占用量為1.2 MB,在內(nèi)存占用量上減少了95%;測(cè)試采集9 MB數(shù)據(jù),目標(biāo)虛擬機(jī)內(nèi)存為1 GB,本文方法內(nèi)存占用量為9.056 MB,內(nèi)存占用率小于1%,而采集代理程序內(nèi)存占用量為10.2 MB,內(nèi)存占用率大于1%,說(shuō)明在采集相同數(shù)據(jù)量的情況下,本文方法具有更低的資源占用量,保障了目標(biāo)虛擬機(jī)的高效運(yùn)行。同時(shí),采集的數(shù)據(jù)可根據(jù)采集策略進(jìn)行采集,故可根據(jù)防御的需求隨時(shí)更改采集的數(shù)據(jù)內(nèi)容,保障采集內(nèi)容的完備性,并可根據(jù)需要設(shè)定采集時(shí)間間隔,可動(dòng)態(tài)滿足主動(dòng)防御需求。
通過(guò)實(shí)驗(yàn)分析,本方法從采集效率和效果上均達(dá)到了一種高效、低損的數(shù)據(jù)采集能力。
本文圍繞大數(shù)據(jù)全生命周期安全的主動(dòng)防御體系對(duì)數(shù)據(jù)采集的準(zhǔn)確性、實(shí)時(shí)性和高效性的需求,設(shè)計(jì)了一種基于虛擬機(jī)內(nèi)省機(jī)制的高效低損的數(shù)據(jù)采集方法。該方法結(jié)合了帶內(nèi)采集和帶外采集的優(yōu)點(diǎn),從主動(dòng)防御系統(tǒng)的整體出發(fā),從采集效果和采集效率上對(duì)采集模塊進(jìn)行了優(yōu)化,保證了數(shù)據(jù)采集的完備性和高效性,通過(guò)虛擬機(jī)內(nèi)省機(jī)制和資源占用閾值的設(shè)定,保障了對(duì)虛擬機(jī)本身資源占用率的最小化。本文設(shè)計(jì)的方法為大數(shù)據(jù)主動(dòng)防御系統(tǒng)的構(gòu)建提供了良好的支撐。