馬海龍 尹梓諾 胡 濤
(中國(guó)人民解放軍戰(zhàn)略支援部隊(duì)信息工程大學(xué) 鄭州 450001)
隨著計(jì)算機(jī)科學(xué)和互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,各種各樣的計(jì)算機(jī)程序呈現(xiàn)爆炸式增長(zhǎng)。但與此同時(shí),主機(jī)等信息系統(tǒng)也面臨大量惡意程序的威脅,國(guó)家互聯(lián)網(wǎng)應(yīng)急中心(CNCERT)發(fā)布的《2019年中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告》中指出2019年全年捕獲計(jì)算機(jī)惡意程序樣本數(shù)量超過(guò)6200萬(wàn)個(gè),仍有大量主機(jī)遭受惡意程序控制從而引發(fā)信息泄漏等一系列安全危害。一些惡意攻擊者通過(guò)借助主機(jī)中的一些漏洞來(lái)編寫(xiě)惡意程序進(jìn)行攻擊,使得用戶主機(jī)崩潰或被黑客控制,造成較大的安全問(wèn)題[1]。
近年來(lái),有多種方法被提出,以檢測(cè)帶有惡意企圖的程序。這些技術(shù)可以分為兩大類:靜態(tài)分析和動(dòng)態(tài)分析[2]。靜態(tài)分析(基于簽名的檢測(cè))提取代碼本身的特征并搜索惡意標(biāo)志,如shell代碼或與已知惡意程序樣本相似的特征進(jìn)行異常識(shí)別[3]。Ma等人[4]提出一種組合靜態(tài)行為的程序異常分析方法,使用3種靜態(tài)特征,運(yùn)用C4.5,長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)以及深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNN)3種模型進(jìn)行訓(xùn)練,結(jié)合投票法進(jìn)行異常樣本檢測(cè)。靜態(tài)分析雖應(yīng)用廣泛,但存在一定缺陷:部分攻擊者對(duì)程序模糊處理使惡意程序難以被檢測(cè)出來(lái),導(dǎo)致靜態(tài)分析技術(shù)檢測(cè)效率大大下降,因此僅依賴靜態(tài)技術(shù)無(wú)法識(shí)別異常程序。動(dòng)態(tài)分析監(jiān)控程序執(zhí)行過(guò)程中產(chǎn)生的行為,判斷是否存在惡意行為[5]。張若楠等人[6]提出一種融合改進(jìn)的K-means和K近鄰 (K-Nearest Neighbor, KNN)的攻擊程序檢測(cè)方法(I2K)來(lái)改善檢測(cè)的準(zhǔn)確率和速度,但K-means和KNN算法都對(duì)數(shù)據(jù)噪聲較為敏感;汪潔等人[7]提出基于子圖相似性的惡意程序檢測(cè)方法來(lái)減少惡意程序檢測(cè)的時(shí)間開(kāi)銷;陳志峰等人[8]提出一種基于聚類分析的內(nèi)核惡意程序檢測(cè)方法來(lái)提高惡意軟件檢測(cè)效率。Yoo等人[9]提出一種基于機(jī)器學(xué)習(xí)的混合決策模型,該模型結(jié)合隨機(jī)森林和深度學(xué)習(xí)模型,可以對(duì)惡意程序?qū)崿F(xiàn)高檢測(cè)率和低誤報(bào)率。但是這類結(jié)合機(jī)器學(xué)習(xí)的檢測(cè)方法需要進(jìn)行大量的預(yù)先訓(xùn)練和學(xué)習(xí),且具有一定的誤報(bào)率?;谏鲜龇治隹梢缘贸觯延械漠惓z測(cè)方法面臨如下問(wèn)題:需要預(yù)先對(duì)正常行為模式進(jìn)行大量學(xué)習(xí),時(shí)間開(kāi)銷較大;無(wú)法有效消除噪聲干擾,導(dǎo)致檢測(cè)準(zhǔn)確率低以及誤報(bào)率高。
針對(duì)現(xiàn)有研究中存在的問(wèn)題,本文從異構(gòu)平臺(tái)對(duì)應(yīng)用程序的影響角度出發(fā),研究基于平臺(tái)異構(gòu)性的程序異常檢測(cè)。由于異構(gòu)化平臺(tái)在指令集、字節(jié)序、內(nèi)存布局等方面的特異性、差異性,應(yīng)用程序在某個(gè)平臺(tái)出現(xiàn)的特定錯(cuò)誤在其他異構(gòu)平臺(tái)中通常不會(huì)出現(xiàn)。研究表明,對(duì)攻擊者而言,跨平臺(tái)的漏洞利用比針對(duì)單個(gè)平臺(tái)的漏洞利用更難實(shí)現(xiàn),并且在多個(gè)異構(gòu)平臺(tái)間發(fā)現(xiàn)相同漏洞的難度很高[10]。Garcia等人[11]分析了10種操作系統(tǒng)發(fā)布版在過(guò)去18年內(nèi)發(fā)現(xiàn)的漏洞數(shù)據(jù),研究結(jié)果表明,不同操作系統(tǒng)出現(xiàn)公共漏洞的數(shù)量極少。異常程序通常只會(huì)作用于特定平臺(tái)、主機(jī)、系統(tǒng)等,當(dāng)它作為輸入同時(shí)運(yùn)行在由多個(gè)主機(jī)組成的異構(gòu)平臺(tái)環(huán)境時(shí),只會(huì)令特定目標(biāo)主機(jī)出現(xiàn)惡意行為,而其他與之異構(gòu)的主機(jī)正常運(yùn)行不受影響。通過(guò)對(duì)比差異化運(yùn)行結(jié)果,可以快速檢測(cè)出異常程序并準(zhǔn)確定位作用域。
基于此,本文提出一種面向異構(gòu)化平臺(tái)的輕量級(jí)程序異常檢測(cè)方法,不同于已有靜態(tài)分析和動(dòng)態(tài)分析檢測(cè)方案依靠異常樣本構(gòu)造啟發(fā)式算法,它利用平臺(tái)異構(gòu)性檢測(cè)異常程序,其核心思想是:將安全風(fēng)險(xiǎn)未知的程序同時(shí)運(yùn)行在異構(gòu)化平臺(tái)上,如果某個(gè)平臺(tái)的行為特征與其他異構(gòu)平臺(tái)存在不一致或者較大差異性,則認(rèn)為該程序?qū)儆诋惓3绦?。本文的主要工作總結(jié)如下:
(1)以真實(shí)環(huán)境下異常程序(惡意PDF文檔)檢測(cè)為研究案例,實(shí)例化分析說(shuō)明異構(gòu)化平臺(tái)對(duì)于異常程序檢測(cè)的有效性,在兩臺(tái)異構(gòu)主機(jī)上同時(shí)執(zhí)行待檢測(cè)PDF文檔,根據(jù)其執(zhí)行過(guò)程中產(chǎn)生的主機(jī)間系統(tǒng)行為差異判斷其是否異常。
(2)提出了一種面向異構(gòu)化平臺(tái)的程序異常檢測(cè)架構(gòu),包含基于3個(gè)異構(gòu)平臺(tái)的數(shù)據(jù)收集模塊和異常檢測(cè)模塊。數(shù)據(jù)收集模塊實(shí)現(xiàn)各種程序在異構(gòu)平臺(tái)執(zhí)行時(shí)系統(tǒng)狀態(tài)信息的獲取。異常檢測(cè)模塊實(shí)現(xiàn)對(duì)收集的數(shù)據(jù)處理、分析和檢測(cè)。
(3)建立了基于異構(gòu)平臺(tái)差異性的異常檢測(cè)模型,設(shè)計(jì)了基于系統(tǒng)狀態(tài)多維特征差異性的異常檢測(cè)算法,采用標(biāo)簽編碼和Min-Max歸一化對(duì)系統(tǒng)狀態(tài)數(shù)據(jù)預(yù)處理,使用熵權(quán)法計(jì)算特征權(quán)重并引入異構(gòu)平臺(tái)系統(tǒng)狀態(tài)差異性計(jì)算中,應(yīng)用閾值規(guī)則有效判別異常。
(4)通過(guò)實(shí)驗(yàn)研究和分析對(duì)提出的方法進(jìn)行評(píng)估,綜合多種指標(biāo)評(píng)價(jià)其性能,并與典型無(wú)監(jiān)督K-means聚類算法進(jìn)行比較,驗(yàn)證本文所提出方法的有效性。
目前基于異構(gòu)性檢測(cè)異常應(yīng)用程序進(jìn)展如下:?sterlund等人[12]針對(duì)Linux內(nèi)核漏洞導(dǎo)致信息泄露問(wèn)題,提出內(nèi)核多變量執(zhí)行 (kernel Multi-Variant eXecution, kMVX)技術(shù):在一臺(tái)機(jī)器上同時(shí)運(yùn)行多個(gè)不同的內(nèi)核,這些內(nèi)核在正常情況下表現(xiàn)出相同行為,但若攻擊者試圖利用此漏洞,內(nèi)核間可能會(huì)呈現(xiàn)不同行為,因此可檢測(cè)這一內(nèi)核信息泄露漏洞。Kirat等人[13]提出了一種基于裸機(jī)分析的逃避型惡意軟件檢測(cè)方法,其核心思想是在不考慮資源開(kāi)銷的情況下,通過(guò)在不同的系統(tǒng)環(huán)境:包括裸機(jī)、與基于仿真和不同類型虛擬化惡意軟件分析平臺(tái)中執(zhí)行惡意軟件,獲取磁盤級(jí)和網(wǎng)絡(luò)級(jí)行為等,根據(jù)行為偏差來(lái)檢測(cè)某些對(duì)分析環(huán)境有一定識(shí)別能力的逃避型惡意軟件。
本文以Xu等人[14]提出的惡意PDF程序檢測(cè)為例,證明平臺(tái)異構(gòu)性可有效應(yīng)用于異常程序檢測(cè)中,其檢測(cè)架構(gòu)如圖1所示,同時(shí)收集PDF程序在兩個(gè)不同主機(jī):Windows主機(jī)和Mac主機(jī)上執(zhí)行時(shí)的系統(tǒng)行為,如文件系統(tǒng)操作、網(wǎng)絡(luò)活動(dòng)、啟動(dòng)進(jìn)程、系統(tǒng)調(diào)用等,通過(guò)比較執(zhí)行時(shí)系統(tǒng)行為差異來(lái)判斷異常。
系統(tǒng)行為的對(duì)比,對(duì)于捕獲PDF程序執(zhí)行時(shí)觸發(fā)漏洞利用而產(chǎn)生的行為差異至關(guān)重要。如果一個(gè)正常PDF在某個(gè)主機(jī)上執(zhí)行時(shí)觸發(fā)某些操作(如引發(fā)用于表單提交的連接到遠(yuǎn)程主機(jī)),則在另一主機(jī)上執(zhí)行時(shí)會(huì)顯示相同的操作,兩個(gè)主機(jī)具有相同的系統(tǒng)行為特征。但如果遠(yuǎn)程連接等操作是惡意PDF執(zhí)行時(shí)觸發(fā)的,則可能在另一主機(jī)上由于系統(tǒng)調(diào)用語(yǔ)義等的差異而觸發(fā)失敗,此時(shí)兩主機(jī)具有不同系統(tǒng)行為特征。
圖1 惡意文檔檢測(cè)架構(gòu)
針對(duì)這種惡意PDF檢測(cè)方法的結(jié)果分析驗(yàn)證如表1所示,檢測(cè)結(jié)果按照通用漏洞披露 (Common Vulnerabilities & Exposures, CVE)編號(hào)分組,兩次崩潰表示執(zhí)行惡意PDF時(shí)兩個(gè)主機(jī)均崩潰。差異表示在兩臺(tái)主機(jī)上至少觀察到一種系統(tǒng)行為差異。
表1 檢測(cè)結(jié)果
根據(jù)表中檢測(cè)結(jié)果不難發(fā)現(xiàn),大多數(shù)情況下,惡意PDF程序只能作用于特定平臺(tái),可以依據(jù)不同主機(jī)的系統(tǒng)層行為差異進(jìn)行判別。
綜上分析,基于平臺(tái)異構(gòu)性可以實(shí)現(xiàn)一種系統(tǒng)層面的程序異常檢測(cè)。
基于研究動(dòng)機(jī)案例分析,本文面向異構(gòu)化平臺(tái)實(shí)施異常程序檢測(cè),系統(tǒng)架構(gòu)如圖2所示,主要由以下模塊組成:基于3個(gè)異構(gòu)平臺(tái)的狀態(tài)數(shù)據(jù)收集模塊和異常檢測(cè)模塊。
異構(gòu)平臺(tái)功能等價(jià),但在指令集、內(nèi)核、操作系統(tǒng)及組件庫(kù)等層面的實(shí)現(xiàn)存在差異以構(gòu)建異構(gòu)性,例如指令集可為X86,X86-64,ARM32,ARM64等,操作系統(tǒng)可為Ubuntu,Debian,RedHat,CentOS等。輸入代理將程序輸入持續(xù)分發(fā)至各平臺(tái)執(zhí)行,狀態(tài)監(jiān)測(cè)代理分布在各異構(gòu)平臺(tái)上,同時(shí)收集和統(tǒng)計(jì)程序執(zhí)行過(guò)程中產(chǎn)生的系統(tǒng)狀態(tài)信息,這些狀態(tài)信息涵蓋CPU使用、磁盤讀寫(xiě)、網(wǎng)絡(luò)使用、其他系統(tǒng)信息、當(dāng)前占用內(nèi)存資源最高的進(jìn)程、當(dāng)前占用i/o資源最高的進(jìn)程、當(dāng)前占用CPU資源最高的進(jìn)程、系統(tǒng)調(diào)用讀寫(xiě)信息8個(gè)數(shù)據(jù)特征大類,如表2所示。根據(jù)攻擊規(guī)律和異常程序執(zhí)行時(shí)平臺(tái)行為表現(xiàn)選擇這些特征[15]。例如惡意程序等多表現(xiàn)為CPU使用、磁盤讀寫(xiě)以及網(wǎng)絡(luò)使用中的1個(gè)或多個(gè)顯著變化,有些攻擊會(huì)新產(chǎn)生一些非法進(jìn)程,這些特征可為程序異常檢測(cè)提供良好的數(shù)據(jù)支撐。對(duì)這些數(shù)據(jù)特征大類進(jìn)行約簡(jiǎn)和選擇,留下其中9維能夠較大程度表現(xiàn)內(nèi)部狀態(tài)變化的小特征,包括用戶空間程序CPU利用率usr、系統(tǒng)空間程序CPU利用率sys、磁盤讀帶寬read、磁盤寫(xiě)帶寬write、網(wǎng)絡(luò)收包帶寬recv、網(wǎng)絡(luò)發(fā)包帶寬send、系統(tǒng)中斷次數(shù)int、占用i/o資源最高的進(jìn)程i/o process、占用CPU最高的進(jìn)程cpu process,構(gòu)成數(shù)據(jù)集,由各平臺(tái)狀態(tài)監(jiān)測(cè)代理發(fā)送給異常檢測(cè)模塊進(jìn)行異常檢測(cè)。
異常檢測(cè)模塊利用第4節(jié)設(shè)計(jì)的基于系統(tǒng)狀態(tài)多維特征差異性的異常檢測(cè)方法,對(duì)從3個(gè)異構(gòu)平臺(tái)收集的數(shù)據(jù)集進(jìn)行異常檢測(cè)和定位:利用特征工程構(gòu)建多維矢量,分別對(duì)其進(jìn)行量化和標(biāo)準(zhǔn)化以實(shí)現(xiàn)對(duì)數(shù)據(jù)的預(yù)處理。然后利用熵權(quán)法計(jì)算特征權(quán)重,綜合數(shù)據(jù)和權(quán)重計(jì)算數(shù)據(jù)集間差異度,應(yīng)用閾值規(guī)則進(jìn)行異常判別和作用域判定。
圖2 系統(tǒng)架構(gòu)
表2 數(shù)據(jù)集中的特征
相對(duì)于從單個(gè)平臺(tái)上收集已知樣本來(lái)生成區(qū)分正常和異常的規(guī)則與模式而言,本文所提出的檢測(cè)架構(gòu),僅需比較異構(gòu)平臺(tái)間產(chǎn)生的狀態(tài)差異,綜合異構(gòu)平臺(tái)的多個(gè)特征進(jìn)行比對(duì),可以更全面地考慮到系統(tǒng)變化的復(fù)雜性和難預(yù)知性,有效增加檢測(cè)準(zhǔn)確性和平穩(wěn)性,降低誤報(bào)率。
基于系統(tǒng)狀態(tài)多維特征差異性的異常檢測(cè)方法處理流程如圖3所示。首先,對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,將系統(tǒng)狀態(tài)特征數(shù)據(jù)從高量級(jí)轉(zhuǎn)換至低量級(jí),有效降低高量級(jí)的特征對(duì)檢測(cè)的干擾,提升檢測(cè)的準(zhǔn)確性。然后,計(jì)算異構(gòu)平臺(tái)系統(tǒng)狀態(tài)特征矢量間的加權(quán)差異度。最后,利用閾值規(guī)則衡量平臺(tái)間狀態(tài)特征的差異程度實(shí)現(xiàn)異常判別。
由于數(shù)據(jù)集包含諸如使用I/O最大的進(jìn)程,使用CPU最大的進(jìn)程名這類特征,其值(如:python3,vim,traceroute等)是非數(shù)字值。這些非數(shù)字屬性需要量化為數(shù)字屬性,以便于在后續(xù)階段進(jìn)行處理。本文采用標(biāo)簽編碼方法對(duì)進(jìn)程特征多種數(shù)據(jù)進(jìn)行數(shù)值化操作,對(duì)所有進(jìn)程屬性按序編碼。采用標(biāo)簽編碼的優(yōu)勢(shì)在于:對(duì)不連續(xù)進(jìn)程特征編碼,有效實(shí)現(xiàn)數(shù)據(jù)量化,解決了正常和異常分類過(guò)程中無(wú)法處理屬性數(shù)據(jù)的問(wèn)題。
特征量化后,數(shù)據(jù)集僅包含數(shù)值。由于每種屬性的數(shù)據(jù)單位不一定相同,會(huì)影響差異度的計(jì)算結(jié)果,且數(shù)據(jù)量級(jí)之間的差異也會(huì)影響計(jì)算的準(zhǔn)確性。因此,需要將數(shù)據(jù)集中每個(gè)特征值歸一化到統(tǒng)一范圍區(qū)間[0, 1]中。使用式(1)實(shí)現(xiàn)數(shù)據(jù)的歸一化處理
表3 數(shù)據(jù)預(yù)處理算法(算法1)
異常檢測(cè)模型的目的是發(fā)現(xiàn)異常程序。當(dāng)異常程序執(zhí)行時(shí),異構(gòu)平臺(tái)之間狀態(tài)特征存在差異。差異度是用來(lái)衡量數(shù)據(jù)樣本間差異程度的尺度[16,17],可通過(guò)計(jì)算收集到的各平臺(tái)狀態(tài)特征樣本之間的距離進(jìn)行度量。
定義1 N×M的空間的樣本X和樣本Y的歐氏距離定義為
其中,X,Y為兩個(gè)N×M的樣本,xij為樣本X的第i個(gè)實(shí)例的第j個(gè)屬性,yij為樣本Y的第i個(gè)實(shí)例的第j個(gè)屬性,i=1,2,...,n,j=1,2,...,m。
利用系統(tǒng)狀態(tài)多維特征差異度來(lái)檢測(cè)平臺(tái)是否有異常程序執(zhí)行,其本質(zhì)表現(xiàn)在各種系統(tǒng)狀態(tài)特征屬性的變化上。異常程序執(zhí)行時(shí),不同特征屬性的變化程度不同。如果為其分配相同權(quán)重,則會(huì)導(dǎo)致異常判斷不準(zhǔn)確。因此在差異度的計(jì)算中引入各屬性的權(quán)重來(lái)提高檢測(cè)靈敏度。
本文使用熵權(quán)法根據(jù)特征的變異程度來(lái)確定特征權(quán)重,對(duì)在異常檢測(cè)中表征性強(qiáng)的特征賦予較高權(quán)重。計(jì)算權(quán)重的過(guò)程如下:
(1)取出3個(gè)平臺(tái)歸一化后的所有數(shù)據(jù)。
其中,wj為第j類特征的權(quán)值。
應(yīng)用閾值規(guī)則進(jìn)行異常判別。如果某個(gè)平臺(tái)和其他兩個(gè)平臺(tái)的差異度均高于這兩個(gè)平臺(tái)間的差異度且差值超出預(yù)設(shè)的閾值范圍,則判斷這一平臺(tái)發(fā)生異常;如果差異度差值處于預(yù)設(shè)的閾值范圍內(nèi),則認(rèn)為當(dāng)前狀態(tài)正常。例如:平臺(tái)1和平臺(tái)2之間的差異度為d1,平臺(tái)1和平臺(tái)3之間的差異度為d2,平臺(tái)2和平臺(tái)3之間的差異度為d3,如果d1>d3, d2>d3且d1-d3>ε, d2-d3>ε,則判斷平臺(tái)1異常。
基于系統(tǒng)狀態(tài)多維特征差異性的異常檢測(cè)方法如表4所示,行(1)~(2)用于特征權(quán)重計(jì)算,行(3)~(7)用于差異度及其差值計(jì)算,行(8)~(11)對(duì)異常判別和定位。
表4 基于系統(tǒng)狀態(tài)多維特征差異性的異常檢測(cè)方法(算法2)
為了對(duì)所提程序異常檢測(cè)方法進(jìn)行性能測(cè)試與驗(yàn)證,搭建了實(shí)驗(yàn)環(huán)境并進(jìn)行系統(tǒng)狀態(tài)數(shù)據(jù)收集。實(shí)驗(yàn)環(huán)境中建立了3個(gè)具有不同版本操作系統(tǒng)、內(nèi)核和CPU類型的平臺(tái),平臺(tái)1使用Redhat4.8.5操作系統(tǒng)和ARM64 處理器,平臺(tái)2使用Ubuntu7.2.0操作系統(tǒng)和X86處理器,平臺(tái)3使用Ubuntu18.04操作系統(tǒng)和X86-64處理器,同時(shí)這些平臺(tái)中安裝有常用軟件,具備正常的操作系統(tǒng)功能。實(shí)驗(yàn)過(guò)程中,在3個(gè)平臺(tái)上同時(shí)執(zhí)行各種待檢測(cè)程序,同時(shí)在3個(gè)平臺(tái)上利用狀態(tài)收集工具獲取當(dāng)前系統(tǒng)時(shí)間和系統(tǒng)狀態(tài)特征,將收集的信息按照適當(dāng)?shù)母袷酱鏋閿?shù)據(jù)文件以便后續(xù)處理。按照此數(shù)據(jù)采集方法,在3個(gè)平臺(tái)中同時(shí)且連續(xù)采集28800次系統(tǒng)數(shù)據(jù)。將dirtycow提權(quán)攻擊程序分時(shí)段同時(shí)在3個(gè)平臺(tái)執(zhí)行,將攻擊時(shí)段內(nèi)平臺(tái)的系統(tǒng)狀態(tài)定義為異常狀態(tài),其他時(shí)段內(nèi)系統(tǒng)狀態(tài)定義為正常狀態(tài)來(lái)實(shí)現(xiàn)測(cè)試數(shù)據(jù)集的構(gòu)建。
本節(jié)實(shí)驗(yàn)利用本文所提方法對(duì)收集的數(shù)據(jù)集進(jìn)行異常檢測(cè)來(lái)驗(yàn)證其檢測(cè)效果,并將精確率 (Precision)、召回率(Recall, TPR)、誤報(bào)率(False Positive Rate, FPR)、漏報(bào)率(Missing Alarm Rate, MAR)4種指標(biāo)作為驗(yàn)證本文所提面向異構(gòu)化平臺(tái)異常檢測(cè)方法性能的指標(biāo),其計(jì)算公式如式(9)-式(12)所示。
式(9)-式(12)中各變量的含義解釋如下:
真正例(True Positive, TP):預(yù)測(cè)異常且實(shí)際異常的樣本數(shù);真負(fù)例(True Negative, TN):預(yù)測(cè)正常且實(shí)際正常的樣本數(shù);假正例(False Positive, FP):預(yù)測(cè)異常但實(shí)際正常的樣本數(shù);假負(fù)例(False Negative, FN):預(yù)測(cè)正常但實(shí)際異常的樣本數(shù)。其中,正例表示異常數(shù)據(jù),負(fù)例表示正常數(shù)據(jù)。
本文所提方法精確性和誤報(bào)率等方面的性能如圖4和圖5所示,圖4為5次實(shí)驗(yàn)情況下的檢測(cè)精確率和召回率,檢測(cè)精確率和召回率均大于95%,檢測(cè)平均精確率為98.79%,平均召回率為98.84%。圖5為5次實(shí)驗(yàn)的誤報(bào)率和漏報(bào)率,5次實(shí)驗(yàn)情況的誤報(bào)率都不超過(guò)10%,其平均值為5.75%,漏報(bào)率均不超過(guò)5%,其平均值為1.16%。在個(gè)別情況下,異常剛發(fā)生時(shí),系統(tǒng)狀態(tài)特征變化不太明顯,此時(shí)平臺(tái)間的差異度差值沒(méi)有超出閾值,異常被判定為正常,因此召回率會(huì)有所下降,產(chǎn)生一定的漏報(bào)率,由式(10)和式(12)可知,召回率和漏報(bào)率成正比,召回率降低導(dǎo)致漏報(bào)率上升。由于平臺(tái)正常狀態(tài)下,狀態(tài)間的細(xì)微差異的積累可能影響平臺(tái)間的差異度計(jì)算,導(dǎo)致正常狀態(tài)被判定為異常程序運(yùn)行狀態(tài),此時(shí)精確度會(huì)有輕微下降,誤報(bào)率會(huì)有輕微上升。圖4和圖5中實(shí)驗(yàn)結(jié)果綜合表明,本文的方法可以以較高的精確率和召回率及較低誤報(bào)率和漏報(bào)率檢測(cè)到異常。
圖4 檢測(cè)精確率和召回率
圖5 檢測(cè)的誤報(bào)率和漏報(bào)率
針對(duì)收集的數(shù)據(jù)集,使用基于距離的K-means聚類方法與本文所提出的方法進(jìn)行檢測(cè)性能對(duì)比實(shí)驗(yàn)。將檢測(cè)準(zhǔn)確率和誤報(bào)率作為本實(shí)驗(yàn)的評(píng)價(jià)標(biāo)準(zhǔn)[18,19]。K-means算法的思想是以k為參數(shù),把n個(gè)樣本分成k個(gè)簇,使每個(gè)簇內(nèi)具有較小的距離,而不同簇間的距離較大。在本實(shí)驗(yàn)中使用K-means算法聚類檢測(cè),對(duì)在3個(gè)異構(gòu)平臺(tái)收集到的所有測(cè)試數(shù)據(jù)集進(jìn)行檢測(cè),檢測(cè)的平均準(zhǔn)確率為89.8%,而使用本文提出的檢測(cè)方法對(duì)同樣的樣本進(jìn)行檢測(cè),檢測(cè)的平均準(zhǔn)確率為97.8%。
對(duì)數(shù)據(jù)集進(jìn)行10次隨機(jī)抽樣檢測(cè),結(jié)果如圖6所示。使用3種方法對(duì)數(shù)據(jù)集進(jìn)行檢測(cè),方法1是使用K-means算法檢測(cè)單個(gè)平臺(tái)的測(cè)試數(shù)據(jù)集,方法2是使用K-means對(duì)從整個(gè)異構(gòu)平臺(tái)架構(gòu)中收集的所有數(shù)據(jù)集進(jìn)行抽樣檢測(cè),方法3是使用本文所提出的面向平臺(tái)異構(gòu)性的輕量級(jí)程序異常檢測(cè)方法對(duì)整個(gè)異構(gòu)平臺(tái)中收集的所有數(shù)據(jù)集進(jìn)行抽樣檢測(cè)。
當(dāng)使用方法1時(shí),如果異常樣本較多,其檢測(cè)準(zhǔn)確率較高,可達(dá)99%,但當(dāng)抽樣樣本中異常樣本較少時(shí),由于K-means算法的效果嚴(yán)重依賴初始聚類中心,因而當(dāng)初始聚類中心選擇不當(dāng)時(shí),檢測(cè)的準(zhǔn)確性迅速下降到75%左右,并產(chǎn)生22.4%的誤報(bào)率,誤報(bào)率較高;當(dāng)使用方法2時(shí),由于不同平臺(tái)間也有一定的差異,K-means在檢測(cè)過(guò)程中對(duì)噪聲敏感產(chǎn)生一定的誤報(bào)率,檢測(cè)的平均準(zhǔn)確率為86.46%;使用方法3時(shí),由于利用加權(quán)差異度算法橫向?qū)Ρ绕脚_(tái)間差異,有針對(duì)性的計(jì)算會(huì)對(duì)狀態(tài)差異識(shí)別更為明顯,因而達(dá)到提升準(zhǔn)確率的目的,準(zhǔn)確率穩(wěn)定在95%以上,平均檢測(cè)準(zhǔn)確率較高,其值為97.8%,與方法2相比,檢測(cè)準(zhǔn)確率提升了13.12%;與方法1相比,大大減少了檢測(cè)誤報(bào)率。
圖6 檢測(cè)準(zhǔn)確率對(duì)比
本文還比較了所提算法和K-means算法在不同抽樣數(shù)下的檢測(cè)時(shí)間,實(shí)驗(yàn)結(jié)果如表5所示??梢缘贸?,兩種算法的檢測(cè)時(shí)間都會(huì)隨著樣本數(shù)量增加而增加,本文所提算法與K-means算法相比,由于K-means在每輪迭代時(shí)都需要計(jì)算所有樣本點(diǎn)到質(zhì)心的距離,而本文所提算法僅需計(jì)算平臺(tái)間樣本的距離,因此大大縮短了異常檢測(cè)時(shí)間,具有較好的實(shí)時(shí)性。
表5 兩種算法在不同抽樣數(shù)量下的異常檢測(cè)時(shí)間(s)
對(duì)上述比對(duì)情況進(jìn)行總結(jié),就檢測(cè)準(zhǔn)確率、誤報(bào)率和檢測(cè)時(shí)間而言,本文所提算法性能優(yōu)于K-means算法的性能。
本文針對(duì)程序異常檢測(cè)中準(zhǔn)確率低、誤報(bào)率高和檢測(cè)時(shí)間長(zhǎng)的問(wèn)題,提出一種面向異構(gòu)化平臺(tái)的輕量級(jí)程序異常檢測(cè)方法。該方法通過(guò)構(gòu)建異構(gòu)平臺(tái),獲取異構(gòu)平臺(tái)對(duì)相同輸入程序執(zhí)行時(shí)產(chǎn)生的系統(tǒng)狀態(tài),跨平臺(tái)橫向?qū)Ρ认到y(tǒng)狀態(tài)的差異,進(jìn)行程序異常檢測(cè)。實(shí)驗(yàn)結(jié)果表明,所提方法有效提升了程序異常檢測(cè)的準(zhǔn)確率、降低了誤報(bào)率且耗時(shí)較短,是一種有效的程序異常檢測(cè)方法。在后續(xù)工作中,將會(huì)對(duì)算法等進(jìn)行改進(jìn),并提高算法在不同實(shí)際攻擊場(chǎng)景下的檢測(cè)準(zhǔn)確性。