胡建偉,車欣,周漫,崔艷鵬
(1. 西安電子科技大學(xué)網(wǎng)絡(luò)與信息安全學(xué)院,陜西 西安 710071;2. 華中科技大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,湖北 武漢 430074)
近年來(lái),利用惡意軟件進(jìn)行網(wǎng)絡(luò)攻擊的行為越來(lái)越多[1]。惡意軟件利用欺騙技術(shù)可以在發(fā)動(dòng)攻擊的同時(shí)逃避反病毒檢測(cè),具有多態(tài)性、隱蔽性、易感染性等特性,嚴(yán)重影響網(wǎng)絡(luò)數(shù)據(jù)或程序的安全性、使用性與整合性,給互聯(lián)網(wǎng)和用戶帶來(lái)巨大威脅,造成嚴(yán)重的損失,因此,惡意軟件檢測(cè)技術(shù)已經(jīng)成為目前信息安全人員的研究熱點(diǎn)之一。
然而,當(dāng)前的惡意軟件檢測(cè)技術(shù)存在高誤報(bào)率和高漏報(bào)率的不足[2],難以檢測(cè)出采用了欺騙技術(shù)的惡意軟件。值得注意的是,目前流行的惡意軟件都具有很強(qiáng)的目的性,惡意代碼編寫者依據(jù)已有的惡意軟件不斷開發(fā)出行為目的相似但代碼結(jié)構(gòu)又不完全相同的惡意軟件,從而形成惡意軟件家族。據(jù)研究結(jié)果證實(shí)[3],超過(guò)98%的新惡意軟件樣本實(shí)際上是來(lái)自現(xiàn)有惡意軟件系列的“衍生物”,新的惡意軟件繼承了原始惡意軟件的部分功能。為了躲避檢測(cè)并快速地部署惡意軟件,黑客通常不會(huì)重新開發(fā)新的惡意軟件,而是改進(jìn)惡意軟件現(xiàn)有的行為邏輯或者在現(xiàn)有的惡意軟件中添加新的惡意行為邏輯,即新的惡意軟件具有繼承性與多態(tài)性。本文將具有相似行為邏輯或者相同行為目的的惡意軟件集合稱為惡意軟件家族。
為了提高惡意軟件檢測(cè)的準(zhǔn)確率與檢測(cè)效率,本文提出了基于高斯混合模型(GMM, Gaussian mixture model)的增量聚類方法來(lái)識(shí)別惡意軟件家族。本文的主要工作如下。
1) 依據(jù)屬于同一個(gè)家族的惡意軟件的行為特征具有邏輯相似性這一特點(diǎn),本文從行為檢測(cè)的角度分析并識(shí)別惡意軟件家族。
2) 為了構(gòu)建惡意行為特征的分析框架,本文利用靜態(tài)分析與動(dòng)態(tài)分析相結(jié)合的方法來(lái)提取API函數(shù)調(diào)用的抽象特征,通過(guò)分析API函數(shù)調(diào)用的參數(shù)依賴關(guān)系來(lái)構(gòu)建惡意軟件行為邏輯圖。
3) 為了找到擁有整個(gè)軟件家族惡意行為特征的惡意軟件群UM與擁有軟件家族成員共有的惡意行為特征的惡意軟件群CM,本文依據(jù)惡意軟件家族行為的繼承性與多樣性,為特定目的的惡意軟件家族構(gòu)建4個(gè)行為傳遞閉包,并建立特征行為與惡意軟件的一對(duì)一映射關(guān)系。
4) 針對(duì)傳統(tǒng)聚類方法不能利用上一次聚類結(jié)果,從而導(dǎo)致耗時(shí)、資源浪費(fèi)等問(wèn)題,本文采用基于高斯混合模型的增量聚類方法來(lái)識(shí)別惡意軟件家族,創(chuàng)建并動(dòng)態(tài)調(diào)整與惡意軟件家族的進(jìn)化史相一致的高斯混合模型樹,并引入增量學(xué)習(xí),同時(shí)進(jìn)行惡意軟件家族的識(shí)別與惡意樣本的聚類。
隨著當(dāng)前惡意軟件的欺騙技術(shù)越來(lái)越成熟,以及各類病毒數(shù)量的急劇增加,導(dǎo)致傳統(tǒng)的惡意軟件檢測(cè)技術(shù)不再有效。因此,出現(xiàn)了各種基于行為的惡意軟件檢測(cè)技術(shù)。Pektas等[4]通過(guò)API調(diào)用序列挖掘和搜索n-gram從而收集代表惡意軟件行為特征的集合。針對(duì)目前惡意軟件識(shí)別率下降的現(xiàn)狀,Han等[5]指出造成這種困境的原因是越來(lái)越多的目的性惡意軟件攻擊已經(jīng)出現(xiàn),與傳統(tǒng)惡意軟件幾乎沒(méi)有共同特征。Han等基于可判定理論,證明了任何軟件執(zhí)行的任務(wù)都是遞歸的和可確定的,并通過(guò)建立從軟件到任務(wù)的多對(duì)一的映射,證明了包括惡意軟件在內(nèi)的各類軟件也是遞歸的,并且可以由相應(yīng)的任務(wù)來(lái)確定。
為了提高檢測(cè)惡意軟件的準(zhǔn)確率,Kolosnjaji等[6]提出首先在沙箱中執(zhí)行惡意軟件樣本以收集系統(tǒng)調(diào)用,然后使用深度神經(jīng)網(wǎng)絡(luò)對(duì)惡意軟件的系統(tǒng)調(diào)用序列進(jìn)行建模以用于惡意軟件分類。Cho等[7]利用動(dòng)態(tài)行為分析工具將API序列提取為惡意軟件行為報(bào)告,然后使用Malheur進(jìn)行聚類和分類分析。
近年來(lái),基于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法的惡意軟件行為特征的分析方法逐漸受到研究人員的重視。Santos等[8]提出使用可執(zhí)行文件的操作碼序列頻率來(lái)檢測(cè)和分類惡意軟件,通過(guò)這種方式來(lái)訓(xùn)練機(jī)器學(xué)習(xí)算法從而檢測(cè)未知的惡意軟件變種。Arp等[9]將針對(duì)API函數(shù)的靜態(tài)分析與機(jī)器學(xué)習(xí)算法相結(jié)合,以檢測(cè)惡意軟件。他們?cè)谙蛄靠臻g中嵌入了特征,從向量空間中發(fā)現(xiàn)了惡意軟件模型,并使用這些模型構(gòu)建了機(jī)器學(xué)習(xí)檢測(cè)系統(tǒng)。
傳統(tǒng)的聚類方法主要是利用批處理模型來(lái)發(fā)現(xiàn)固定特征數(shù)據(jù)庫(kù)的數(shù)據(jù)集群,但是目前出現(xiàn)了越來(lái)越多的動(dòng)態(tài)數(shù)據(jù)集,數(shù)據(jù)點(diǎn)以流形方式輸入。在這種情況下,增量聚類可以有效地處理這樣的數(shù)據(jù)集[10]。當(dāng)不斷輸入數(shù)據(jù)點(diǎn)時(shí),增量聚類逐步更新聚類結(jié)果,使當(dāng)前的所有數(shù)據(jù)存在一個(gè)最新的聚類。為了對(duì)流數(shù)據(jù)進(jìn)行數(shù)據(jù)聚類,Wan等[11]提出了一種基于高斯混合模型的新型增量聚類方法,稱為ICGT(incremental clustering of GMM tree)。ICGT創(chuàng)建并動(dòng)態(tài)調(diào)整與數(shù)據(jù)流順序一致的GMM樹,樹中的每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)于密集高斯分布,每個(gè)非葉子節(jié)點(diǎn)對(duì)應(yīng)于GMM。為了更新GMM樹以插入新輸入的數(shù)據(jù)點(diǎn),Wan等引入了節(jié)點(diǎn)連接和連接子集的定義,并提出了樹更新算法,實(shí)驗(yàn)結(jié)果證實(shí)所提方法是有效的。
基于軟件家族惡意行為的依賴性與繼承性[12],人們能為每個(gè)惡意軟件家族建立一個(gè)特征庫(kù),并挑選出具有代表性的惡意軟件集合。當(dāng)出現(xiàn)未知的惡意軟件時(shí),人們可以提取它的特征,并與最具代表性的惡意軟件集合的特征進(jìn)行比對(duì),如果具有該家族的惡意簽名或特征,則此未知的惡意軟件屬于該惡意軟件家族;否則,需要分析軟件的行為特征,將分析出來(lái)的有意義的特征加入特征庫(kù)中再進(jìn)行聚類[13]。本文將新樣本劃分到一個(gè)已知的惡意軟件家族的過(guò)程定義為聚類過(guò)程,并將依據(jù)新樣本的行為特征更新已知的惡意軟件特征庫(kù),直到最后發(fā)現(xiàn)新的家族并更新已知家族成員的過(guò)程定義為惡意軟件家族識(shí)別。同時(shí)執(zhí)行惡意軟件識(shí)別與惡意聚類,提高惡意軟件的檢測(cè)效率。
若追根溯源,每一個(gè)惡意軟件家族一定會(huì)有“祖先”[3]。隨著時(shí)間推移,惡意代碼需要不斷“衍生”,不斷更新技術(shù)以滿足功能需求,逃避惡意軟件檢測(cè),但“衍生”的惡意軟件與其祖先的行為特征相似,這體現(xiàn)了惡意軟件家族的繼承性。為了躲避檢測(cè)并快速地部署惡意軟件,惡意代碼創(chuàng)建者通常不會(huì)重新開發(fā)新的惡意軟件,而是在已有的惡意代碼的基礎(chǔ)上運(yùn)用欺騙技術(shù),改進(jìn)惡意軟件現(xiàn)有的行為邏輯或者添加新的惡意行為邏輯。欺騙技術(shù)包括靜態(tài)欺騙技術(shù)與動(dòng)態(tài)欺騙技術(shù)兩方面[14]。靜態(tài)欺騙技術(shù)包括:1) 代碼混淆,一種在不改變程序功能的前提下,將正常源代碼轉(zhuǎn)換成更難以閱讀和理解的形式的技術(shù);2) 加殼,一種為了保護(hù)目標(biāo)程序,而在運(yùn)行時(shí)先于目標(biāo)程序運(yùn)行的一段代碼,常見的壓縮殼有UPX、Aspack等,常見的加密殼有 ASProtect、Armadillo等;3) 自修改代碼(SMC, self modifying code),一種對(duì)程序核心代碼和數(shù)據(jù)進(jìn)行加密,且在被加密代碼執(zhí)行前,才進(jìn)行解密的一種技術(shù)。動(dòng)態(tài)欺騙技術(shù)包括:1) 反調(diào)試技術(shù),當(dāng)惡意代碼檢測(cè)到程序正在一個(gè)調(diào)試器上運(yùn)行時(shí),它會(huì)修改自身代碼來(lái)躲避調(diào)試;2) 反虛擬機(jī)技術(shù),惡意代碼在運(yùn)行前會(huì)檢測(cè)自己是否運(yùn)行在虛擬機(jī)中,如果檢測(cè)到正在虛擬機(jī)中運(yùn)行,惡意代碼會(huì)執(zhí)行與其本身行為不同的行為,其中最簡(jiǎn)單的行為是停止運(yùn)行。
巴西惡意代碼進(jìn)化史大致可分為3個(gè)階段:1)初級(jí)階段,在這個(gè)階段,惡意代碼就是一段開源的鍵盤記錄器代碼,沒(méi)有使用任何反分析機(jī)制;2)中級(jí)階段,惡意代碼開發(fā)者開發(fā)出鼠標(biāo)記錄器和釣魚木馬,并且為了釣魚木馬不輕易被識(shí)別出來(lái),開發(fā)者修改host文件,將銀行網(wǎng)站的域名解析到一個(gè)硬編碼的服務(wù)器上;3)高級(jí)階段,惡意代碼開發(fā)者使用Internet explorer自動(dòng)化來(lái)操作轉(zhuǎn)賬頁(yè)面內(nèi)容,同時(shí)為了延長(zhǎng)惡意代碼的生存周期,惡意代碼開發(fā)者采用代碼混淆、反調(diào)試技術(shù)、反虛擬機(jī)技術(shù)等來(lái)躲避反病毒軟件的檢測(cè)。每個(gè)階段的代碼實(shí)現(xiàn)方式及采用的惡意欺騙手段如表1所示。
表1 巴西惡意代碼進(jìn)化史
當(dāng)前的惡意軟件有很強(qiáng)的目的性,它們通過(guò)已有的惡意代碼不斷開發(fā)出行為目的相似但代碼結(jié)構(gòu)不完全相同的惡意軟件,從而形成惡意軟件家族。依據(jù)惡意軟件行為的目的性,本文從行為檢測(cè)的角度分析并識(shí)別惡意軟件家族,將惡意軟件家族分為8類,分類框架如表2所示。該檢測(cè)方法的優(yōu)勢(shì)在于不管惡意軟件的結(jié)構(gòu)如何復(fù)雜、數(shù)量如何龐大,其根本的行為特征都具有相似的邏輯性,從而使基于行為的檢測(cè)方法可以有效地對(duì)已知和未知的惡意代碼進(jìn)行鑒別和檢測(cè)。這種方法一方面可以提高檢測(cè)效率和檢測(cè)成本,另一方面可以避免傳統(tǒng)的病毒檢測(cè)技術(shù),只有等到計(jì)算機(jī)被感染時(shí)才能實(shí)現(xiàn)檢測(cè)的弊端,實(shí)現(xiàn)病毒快速、準(zhǔn)確的防御。
表2 基于惡意目的的惡意軟件分類框架
基于惡意軟件行為的檢測(cè)方法分為基于行為的精確匹配和模糊匹配,其中精確匹配方法對(duì)目前的惡意軟件幾乎不起作用,因?yàn)楫?dāng)前的惡意代碼大多利用惡意欺騙技術(shù)來(lái)偽裝自己以逃避防火墻和反病毒軟件的檢測(cè),它們會(huì)經(jīng)過(guò)一層層封裝后再執(zhí)行,因此模糊匹配成為主要的判別方法,其中利用API函數(shù)調(diào)用來(lái)識(shí)別惡意行為是比較常用的方法[15]。惡意程序會(huì)以異常的頻率調(diào)用實(shí)現(xiàn)特定功能的或者罕見的API函數(shù)序列,或者在正常軟件中不常使用的API函數(shù)。因此,分析樣本軟件在運(yùn)行時(shí)API的調(diào)用情況可以有效地鑒別樣本軟件。
提取API調(diào)用序列可以通過(guò)2種途徑,靜態(tài)分析與動(dòng)態(tài)分析。靜態(tài)分析是指不運(yùn)行可執(zhí)行文件,而是通過(guò)反匯編目標(biāo)文件來(lái)提取有用的低級(jí)行為特征,如字節(jié)序列、操作碼等。高級(jí)行為特征可以通過(guò)分析API調(diào)用序列、函數(shù)功能、控制流程圖來(lái)提取。但是靜態(tài)分析會(huì)受到代碼混淆、加密和加殼等欺騙技術(shù)的影響。動(dòng)態(tài)分析是指在惡意代碼運(yùn)行時(shí)提取行為特征,提供更有效的結(jié)果。通過(guò)在虛擬機(jī)中運(yùn)行可執(zhí)行文件樣本,跟蹤程序的執(zhí)行過(guò)程并分析其惡意性,能夠有效地檢測(cè)出使用欺騙技術(shù)的惡意軟件。此外,還可以利用沙箱技術(shù)在線分析病毒,檢測(cè)軟件惡意行為,已知的沙箱 Cuckoo可以有效地分析和處理未知的惡意軟件[16]。但是動(dòng)態(tài)分析僅著眼于惡意代碼在當(dāng)前實(shí)驗(yàn)環(huán)境中的行為,忽略了惡意代碼程序本身的代碼,因此會(huì)受實(shí)驗(yàn)環(huán)境的限制,進(jìn)而有可能無(wú)法得出樣本真實(shí)的惡意行為特征。因此,本文采用靜態(tài)分析與動(dòng)態(tài)調(diào)試聯(lián)合分析的方法,具體如圖1所示。
本文將靜態(tài)分析與動(dòng)態(tài)分析相結(jié)合來(lái)分析惡意軟件并提取其特征。在靜態(tài)分析部分,本文首先對(duì)樣本進(jìn)行預(yù)處理,然后利用Python的pefile模塊來(lái)提取樣本導(dǎo)入的API。具體操作是:首先,解析樣本 PE文件;然后,通過(guò)屬性 DIRECTORY_ENTRY_IMPORT遍歷樣本文件所有導(dǎo)入的dll;最后,通過(guò)屬性 imports遍歷所有的導(dǎo)入函數(shù)。但是單純通過(guò)分析樣本文件導(dǎo)入表中的API函數(shù)來(lái)判斷樣本的行為是不準(zhǔn)確的,因?yàn)閻阂廛浖拈_發(fā)者可通過(guò)函數(shù) LoadLibrary和 GetProcAddress來(lái)動(dòng)態(tài)加載所需要的API函數(shù),所以還需繼續(xù)進(jìn)行動(dòng)態(tài)分析。
在動(dòng)態(tài)分析部分,本文利用一個(gè)動(dòng)態(tài)API函數(shù)調(diào)用跟蹤器Drltrace來(lái)提取樣本的動(dòng)態(tài)API調(diào)用序列、參數(shù)和返回值。Drltrace是基于 DBI[17]的、主要用于Windows和Linux的惡意代碼分析,其優(yōu)點(diǎn)是運(yùn)行、分析惡意代碼足夠快,能夠有效對(duì)抗基于時(shí)間的反調(diào)試技術(shù),并且支持所有類型的庫(kù)連接,能有效對(duì)抗多種反分析機(jī)制。獲取API調(diào)用序列后,本文使用污點(diǎn)傳播分析技術(shù)來(lái)提取樣本的動(dòng)態(tài)行為特征。首先標(biāo)記污染源,然后根據(jù)API函數(shù)調(diào)用流程,跟蹤被標(biāo)記為污點(diǎn)的數(shù)據(jù)在整個(gè)程序中的傳播路徑。使用污點(diǎn)傳播分析技術(shù),可以清晰地觀察到污點(diǎn)在整個(gè)程序中的傳播路徑,其本質(zhì)是可以反映參數(shù)變量在程序中的傳播過(guò)程。
以3個(gè)階段的巴西惡意代碼為例,本文首先利用靜態(tài)分析得到部分的API函數(shù),然后再結(jié)合動(dòng)態(tài)分析得到惡意代碼完整的API調(diào)用序列、參數(shù)及返回值,最后得到 3個(gè)階段的巴西惡意代碼的部分API調(diào)用序列及其參數(shù)依賴性,如圖2所示。圖2中加粗顯示的函數(shù)是實(shí)現(xiàn)竊取用戶信息的主要功能函數(shù),相同的參數(shù)是通過(guò)追蹤器Drltrace與污點(diǎn)傳播技術(shù)分析后得到的。
圖1 惡意軟件分析框架
同一惡意軟件家族具有相似的行為邏輯,而惡意軟件API函數(shù)的調(diào)用也具有強(qiáng)邏輯性。表3展示了惡意代碼家族Wannacry、NotPetya和Kuzzle的API調(diào)用邏輯規(guī)則。結(jié)合圖2的分析可以得到,API調(diào)用存在參數(shù)依賴性,函數(shù)調(diào)用在時(shí)序上有特定的邏輯,因此,本文通過(guò)分析惡意軟件API調(diào)用的邏輯規(guī)則來(lái)提取行為特征。
圖2 API調(diào)用序列及參數(shù)
表3 惡意代碼家族的API調(diào)用邏輯規(guī)則
本文從行為檢測(cè)的角度分析并識(shí)別惡意軟件家族,依據(jù)惡意軟件家族的目的將其分為8類,任意軟件均可以依據(jù)其行為目的、技術(shù)手段與危害性得到量化后的行為特征軌跡。本文構(gòu)建一個(gè)四維空間來(lái)表示惡意軟件所使用的不同惡意技術(shù),即將軟件行為(獲取、創(chuàng)建、跟蹤、破壞)量化為一個(gè)四元組b=(f(a),f(c),f(t),f(d))。并依據(jù)其目的,將整個(gè)空間劃分為8個(gè)小空間,不同目的的惡意行為屬于不同的小空間。為了簡(jiǎn)化計(jì)算,本文設(shè)置具有不同目的的軟件(如間諜軟件、蠕蟲、木馬、后門、Rootkit、病毒、勒索軟件、惡意挖礦軟件等)行為特征,其四元組分量的取值范圍分別為[0,1)、[1,2)、[2,3)、[3,4)、[4,5)、[5,6)、[6,7)、[7,8),即不同目的的軟件的特征節(jié)點(diǎn)位于不同的空間??臻g中的節(jié)點(diǎn)是軟件的特征節(jié)點(diǎn),代表軟件的行為,特征節(jié)點(diǎn)的位置取決于軟件行為量化后四元組的值。軟件行為的危害性越大,則軟件行為特征的四元組取值越大,表現(xiàn)為特征節(jié)點(diǎn)的半徑越大。集合軟件所有的特征節(jié)點(diǎn)能得到軟件的行為軌跡。
圖 3為間諜軟件類部分惡意軟件經(jīng)量化后得到的行為特征,坐標(biāo)軸為量化的四元組。間諜軟件類軟件行為特征的四元組分量取值為[0,1),取值越大,表示其危害性越大。圖3中的3條曲線分別表示表1中巴西惡意軟件3個(gè)階段的行為特征軌跡。圖3中初級(jí)階段的惡意軟件行為特征可用4個(gè)四元組來(lái)表示:{[0.12,0.08, 0.16, 0.09],[0.24,0.12,0.09,0.13],[0.13,0.17,0.23, 0.36],[0.15,0.32,0.31,0.36]}。
圖3 間諜軟件特征的量化空間
為了量化軟件行為特征,本文利用靜態(tài)分析與動(dòng)態(tài)分析相結(jié)合的方法來(lái)分析惡意軟件行為,然后提取軟件的L個(gè)行為,構(gòu)成L個(gè)四元組。軟件的特征軌跡一定屬于8個(gè)小空間中的一個(gè),體現(xiàn)了惡意軟件家族的目的性;在同一個(gè)家族中具有“衍生”關(guān)系的軟件的行為特征軌跡會(huì)有交集,揭示了惡意軟件家族的繼承性;繼承了“祖先”部分代碼并“衍生”出新的惡意技術(shù)的后代軟件具有更嚴(yán)重的危害性,其特征節(jié)點(diǎn)半徑更大,體現(xiàn)了惡意軟件的多樣性。
為了能夠有效地度量具有繼承性與多樣性的惡意軟件的相似性,本文將惡意軟件的“繼承”與“衍生”過(guò)程定義為一種傳遞閉包關(guān)系,并找到能代表所屬的惡意軟件家族的惡意軟件集合。對(duì)于任意關(guān)系R,R的傳遞閉包總是存在的,具有傳遞關(guān)系的任意家族的交集也是傳遞的。具體的惡意軟件家族的傳遞閉包關(guān)系定義過(guò)程如下。
惡意軟件的行為(獲取、創(chuàng)建、跟蹤、破壞)用四元組b=(f(a),f(c),f(t),f(d))來(lái)表示。若惡意軟件家族初始的“族長(zhǎng)”R0的惡意行為特征為(f(a0),f(c0),f(t0),f(d0)),且由R0派生的惡意軟件為R11與R12,其惡意行為特征為(f(a101),f(c101),f(t101),f(d101))與(f(a102),f(c102),f(t102),f(d102))。則(f(a0),f(a101))、(f(c0),f(c101))、(f(t0),f(t101))、(f(d0),f(d101))、(f(a0),f(a102))、(f(c0),f(c102))、(f(t0),f(t102))與(f(d0),f(d102))為傳遞關(guān)系,且針對(duì)四元組b=(f(a),f(c),f(t),f(d)),具有特定目的的惡意軟件家族的行為特征可以構(gòu)成4個(gè)傳遞閉包關(guān)系:T(f(aij),f(ai+1jm))、T(f(cik), f(ci+1kn))、T(f(tiy),f(ti+1yp))與T(f(diz),f(di+1zq))。若“衍生”N代,則i∈(0,N)。m、n、p、q分別是行為特征為f(aij)、f(cik)、f(tiy)、f(diz)的樣本的第m、n、p、q個(gè)衍生對(duì)象,j、k、y、z分別是惡意行為特征f(ai+1jm)、f(ci+1kn)、f(ti+1yp)、f(di+1zq)的派生史。
其中,T1表示某個(gè)惡意家族的惡意行為特征的集合,T2表示該惡意家族成員共有的惡意行為特征的集合,并且(f(aNew),f(cNhx),f(tNrg),f(dNsl))屬于(f(a),f(c),f(t),f(d))的第N代衍生對(duì)象中的任意一個(gè)。由Han等[5]的研究可知,?e,h,r,s,w,x,g,l,必有一個(gè)或多個(gè)惡意軟件與惡意行為特征(f(aNew),f(cNhx),f(tNrg),f(dNsl))相對(duì)應(yīng),即可以建立行為與惡意軟件的一對(duì)多的映射關(guān)系。在T1中,對(duì)?e,h,r,s,w,x,g,l,在(f(aNew),f(cNhx),f(tNrg),f(dNsl))所對(duì)應(yīng)的多個(gè)惡意軟件中任意選取一個(gè),并建立一一映射關(guān)系,如式(2)所示。
然后,由T1中所有的惡意行為特征所對(duì)應(yīng)的惡意軟件來(lái)構(gòu)成集合UM,則集合UM可以代表整個(gè)惡意軟件家族,如式(3)所示。
所以新的不定性的軟件只需要與UM進(jìn)行相似性比較,而不需要與整個(gè)惡意軟件家族進(jìn)行相似性比較。
同理,由T2中所有的惡意行為特征對(duì)應(yīng)的惡意軟件構(gòu)成的集合為CM,CM所包含的行為特征是整個(gè)惡意軟件家族成員共有的。
如圖3所示,將惡意軟件行為特征量化后可得到特征軌跡,依據(jù)軌跡曲線可以發(fā)現(xiàn)具有“衍生”關(guān)系的軟件的軌跡曲線會(huì)有交集,并且后代軟件的特征節(jié)點(diǎn)的半徑更大,即四元組分量的取值更大。因此,可以依據(jù)惡意軟件家族內(nèi)特征軌跡的重疊面積或交集數(shù)目、特征節(jié)點(diǎn)的半徑或取值來(lái)生成家族的傳遞閉包關(guān)系,從而找到擁有整個(gè)軟件家族惡意行為特征的惡意軟件群UM與擁有軟件家族成員共有的惡意行為特征的惡意軟件群CM。
基于模型的聚類方法試圖優(yōu)化給定數(shù)據(jù)和擬合某些數(shù)學(xué)模型。傳統(tǒng)的基于模型的聚類方法GMM 能夠平滑地近似任意形狀的密度分布[18]。GMM 使用無(wú)監(jiān)督學(xué)習(xí)方法將數(shù)據(jù)劃分為多個(gè)集群,每個(gè)數(shù)據(jù)簇由高斯分布近似,稱為混合分量,具有自己的均值和協(xié)方差。假設(shè)一個(gè)n維樣本空間中有隨機(jī)向量x,若x服從多元高斯分布,則其概率密度函數(shù)為
其中,μ是n維均值向量,Σ是n×n的協(xié)方差矩陣。高斯混合分布被定義為k個(gè)高斯分布的凸組合,如式(5)所示。
其中,k為混合成分的數(shù)量,μj、Σj分別為第j個(gè)高斯成分的均值向量和協(xié)方差矩陣,jλ為混合系數(shù),滿足
求解GMM時(shí),需要使用最大似然估計(jì)來(lái)迭代更新GMM的參數(shù),并計(jì)算該參數(shù)屬于不同簇的概率,具體的求解步驟詳見文獻(xiàn)[19]。
傳統(tǒng)的GMM通過(guò)假設(shè)待估計(jì)的分布來(lái)自固定成分?jǐn)?shù)量的高斯混合分布,把密度估計(jì)問(wèn)題轉(zhuǎn)變?yōu)橐粋€(gè)求解最大似然估計(jì)的問(wèn)題,這樣的假設(shè)大大減少了模型的參數(shù),降低了空間復(fù)雜度。GMM 的學(xué)習(xí)過(guò)程從參數(shù)的初始估計(jì)開始,然后使用期望最大化(EM, expectation maximization)算法進(jìn)行估計(jì)并最大化后驗(yàn)估計(jì)[20]。然而,GMM對(duì)選定的初始參數(shù)估計(jì)過(guò)于敏感,并且可能會(huì)收斂到參數(shù)的邊界,導(dǎo)致估計(jì)不準(zhǔn)確。因此,在傳統(tǒng)的高斯混合模型的基礎(chǔ)上[21],本文引入增量學(xué)習(xí),構(gòu)建基于增量的高斯混合模型來(lái)識(shí)別惡意軟件家族。增量學(xué)習(xí)是指在學(xué)得模型后,接收到訓(xùn)練樣本時(shí),僅需根據(jù)新樣例對(duì)模型進(jìn)行更新,不必重新訓(xùn)練整個(gè)模型,不需要每次對(duì)所有數(shù)據(jù)進(jìn)行重新聚類,這種學(xué)習(xí)方法很適合用來(lái)識(shí)別惡意軟件家族。因?yàn)楫?dāng)需要檢測(cè)一個(gè)未知的惡意樣本時(shí),只需要利用上一次聚類的結(jié)果,即已有的惡意軟件家族,每次將一個(gè)數(shù)據(jù)樣本劃分到已有簇中或新增一個(gè)簇,這樣新增的數(shù)據(jù)樣本也不會(huì)影響原有劃分。
本文利用改進(jìn)的高斯混合模型的樹結(jié)構(gòu)來(lái)刻畫惡意軟件家族內(nèi)的傳遞閉包關(guān)系。一方面,傳遞閉包關(guān)系是依據(jù)惡意軟件家族的進(jìn)化史構(gòu)建的,一個(gè)顯著的特點(diǎn)是后代軟件功能的強(qiáng)化與多樣化;另一方面,GMM 樹結(jié)構(gòu)構(gòu)建的依據(jù)是軟件行為特征的一致多樣性,根節(jié)點(diǎn)具有軟件家族中最普遍的特征,葉子節(jié)點(diǎn)的特征最能代表整個(gè)軟件家族的特征,而普通成員的特征需要與葉子節(jié)點(diǎn)的特征相似且比根節(jié)點(diǎn)的特征更具多樣性。而軟件的功能是軟件外在行為的表現(xiàn),軟件的特征是對(duì)軟件行為的標(biāo)識(shí),兩者都是對(duì)軟件行為的刻畫。因此,本文提出的高斯混合模型的樹結(jié)構(gòu)能有效地揭示惡意軟件家族的進(jìn)化史及惡意軟件行為的目的性、繼承性與多樣性。
Wan等[11]提出的ICGT算法首先并未考慮節(jié)點(diǎn)的繼承性與多樣性,只是簡(jiǎn)單地將新的節(jié)點(diǎn)插入GMM 樹中,而且新的節(jié)點(diǎn)需要與所有的葉子節(jié)點(diǎn)進(jìn)行簡(jiǎn)單的距離比較,簡(jiǎn)單的距離比較也不能反映節(jié)點(diǎn)的相似性。其次,當(dāng)GMM樹更新時(shí),需要更新葉子節(jié)點(diǎn)的所有祖先節(jié)點(diǎn)的GMM參數(shù),因此,ICGT算法不僅不能揭示節(jié)點(diǎn)間的內(nèi)在關(guān)系,而且數(shù)據(jù)的插入與更新速率太慢,影響聚類效率。本文依據(jù)惡意軟件家族的目的性、繼承性與多樣性,提出了適用于惡意軟件聚類的基于高斯混合模型的增量聚類方法,稱為ICGM(incremental clustering of GMM model)。ICGM創(chuàng)建并動(dòng)態(tài)調(diào)整與惡意軟件家族的進(jìn)化史相一致的GMM樹,每一個(gè)GMM樹代表一個(gè)有相同目的的惡意軟件家族,由樣本點(diǎn)生成的所有的GMM樹就構(gòu)成了GMM森林。GMM樹的定義為TG=(NR,NM,NL),其中,NR是根節(jié)點(diǎn),由式(3)中CM包含的數(shù)據(jù)樣本構(gòu)成,代表了家族成員共有的行為特征;NM是成員節(jié)點(diǎn),是由NR派生得到的;NL是葉子節(jié)點(diǎn),葉子節(jié)點(diǎn)中的部分節(jié)點(diǎn)由式(3)中的UM構(gòu)成,代表惡意軟件家族的惡意行為特征,本文將這群葉子節(jié)點(diǎn)記為NLR。
相對(duì)熵(KL, kullback leibler)可以用來(lái)度量2個(gè)概率分布之間的差異,當(dāng)待比較的2個(gè)統(tǒng)計(jì)模型服從高斯分布時(shí),KLD(kullback-leibler divergence)有閉式解[22],如式(6)所示。其中,KLD(gi,gj)是指高斯分布gi到gj間的KL距離,n是特征向量的維數(shù)。但由于KL不滿足對(duì)稱性,本文采用式(7)定義的距離度量方法來(lái)比較形如式(5)的高斯分布之間的相似性。
由于GMM樹的節(jié)點(diǎn)均是GMM,當(dāng)輸入新的數(shù)據(jù)點(diǎn)時(shí),需要度量數(shù)據(jù)點(diǎn)與GMM之間的相似性。本文給出的方法是,對(duì)于新的數(shù)據(jù)點(diǎn)也創(chuàng)建相應(yīng)的高斯分布,其平均向量是數(shù)據(jù)向量,并賦予協(xié)方差很小的值,這樣能使高斯分布被協(xié)方差約束在一個(gè)小的范圍內(nèi)。若新的節(jié)點(diǎn)對(duì)應(yīng)的高斯分布為gnew,則gnew與擁有k個(gè)高斯分布的GMM之間的相似性度量如式(8)所示,其中,lλ為高斯分布的混合系數(shù),gl為GMM的第l個(gè)高斯分布。
基于高斯混合模型的增量構(gòu)建算法如算法 1所示。
算法1基于高斯混合模型的增量構(gòu)建算法
輸入已知惡意軟件家族數(shù)量N,樣本數(shù)量M,樣本,閾值其中,im表示第i個(gè)GMM樹的節(jié)點(diǎn)數(shù)
輸出插入M個(gè)樣本點(diǎn)后的GMM樹
初始化GMM 樹的根節(jié)點(diǎn):k=1,S=0
1) 構(gòu)建每個(gè)GMM樹的根節(jié)點(diǎn),根節(jié)點(diǎn)由CM中的數(shù)據(jù)點(diǎn)組成
3) 根據(jù)式(8)計(jì)算 GMM 樹中數(shù)據(jù)點(diǎn)Xk和之間的相似性
6) 從根節(jié)點(diǎn)開始,數(shù)據(jù)點(diǎn)按照從上到下的順序插入第i個(gè)GMM樹
17) 否則,將生成一個(gè)新的葉子節(jié)點(diǎn)。該葉子節(jié)點(diǎn)僅有一個(gè)數(shù)據(jù)點(diǎn)Xk,并且葉子節(jié)點(diǎn)的父節(jié)點(diǎn)是當(dāng)前節(jié)點(diǎn)。令k=k+1
算法1采用基于高斯混合模型的方法,在構(gòu)建增量的同時(shí)進(jìn)行惡意樣本聚類,最終通過(guò)惡意軟件家族邏輯行為的相似性識(shí)別出M個(gè)惡意軟件樣本。當(dāng)輸入新的樣本數(shù)據(jù)Xk時(shí),僅需要與GMM樹的NLR進(jìn)行相似性比較,若相似性滿足閾值條件,則從根節(jié)點(diǎn)開始將新樣本數(shù)據(jù)與GMM樹的節(jié)點(diǎn)進(jìn)行相似性比較,然后插入最優(yōu)的節(jié)點(diǎn)中。否則,尋找下一個(gè)GMM樹。當(dāng)數(shù)據(jù)點(diǎn)Xk插入相應(yīng)的GMM樹后,需要更新GMM樹。依據(jù)條件1~條件3,本文分4種情況討論GMM樹的更新方法,即update函數(shù)的實(shí)現(xiàn)。
下面,從惡意軟件的繼承性與多樣性角度來(lái)分析GMM樹更新的4種情況。
1) 若數(shù)據(jù)點(diǎn)Xk同時(shí)滿足條件1~條件3,首先,數(shù)據(jù)點(diǎn)Xk繼承了第i個(gè)惡意軟件家族的目的性特征,則數(shù)據(jù)點(diǎn)Xk屬于GMMi。并且數(shù)據(jù)點(diǎn)Xk需要插入GMMi的新葉子節(jié)點(diǎn)中,則將該葉子節(jié)點(diǎn)的高斯分布的平均向量賦值為,并且協(xié)方差被賦予非常小的值。
2) 若數(shù)據(jù)點(diǎn)Xk滿足條件1和條件2,但不滿足條件3,則數(shù)據(jù)點(diǎn)Xk屬于GMMi,且數(shù)據(jù)點(diǎn)Xk需要插入GMMi的已有葉子節(jié)點(diǎn)中,此時(shí)依據(jù)式(9)調(diào)整該葉子節(jié)點(diǎn)的混合高斯分布的參數(shù)即可。
3) 若數(shù)據(jù)點(diǎn)Xk不滿足條件1,說(shuō)明Xk不屬于當(dāng)前任意一個(gè)惡意軟件家族。此時(shí),將節(jié)點(diǎn)的平均向量賦值為,并且協(xié)方差被賦予非常小的值。令N=N+1,找到一類新的惡意軟件家族。
4) 當(dāng)數(shù)據(jù)點(diǎn)Xk滿足條件1但不滿足條件2,即數(shù)據(jù)點(diǎn)Xk需要插入GMMi的jmax節(jié)點(diǎn)中作為成員節(jié)點(diǎn),說(shuō)明數(shù)據(jù)點(diǎn)Xk不僅繼承了第i個(gè)惡意軟件家族的目的性特征,而且改進(jìn)了家族的行為邏輯或者添加了新的惡意行為邏輯。此時(shí),應(yīng)依據(jù)式(9)調(diào)整節(jié)點(diǎn)jmax的混合高斯分布的參數(shù)。并且,依據(jù)家族的繼承性可知,當(dāng)前節(jié)點(diǎn)參數(shù)的變化會(huì)影響節(jié)點(diǎn)派生的子節(jié)點(diǎn),而派生的子節(jié)點(diǎn)應(yīng)當(dāng)擁有當(dāng)前節(jié)點(diǎn)的所有行為特征,所以再根據(jù)式(9),從節(jié)點(diǎn)jmax開始向下調(diào)整由jmax派生出的子節(jié)點(diǎn)的混合高斯分布的參數(shù)。調(diào)整完時(shí),再依據(jù)式(1)重新確立第i個(gè)GMM樹的NRLi,從而保證聚類的有效性。同時(shí),因?yàn)椴恍枰獙?duì)整個(gè)GMM樹進(jìn)行調(diào)整,提高了惡意行為的識(shí)別效率。
其中,n表示在插入新數(shù)據(jù)點(diǎn)之前,當(dāng)前節(jié)點(diǎn)中數(shù)據(jù)點(diǎn)的數(shù)量;x表示插入的數(shù)據(jù)點(diǎn)向量;μ、Σ表示插入的數(shù)據(jù)點(diǎn)的平均向量與協(xié)方差矩陣;xn與表示插入前后的數(shù)據(jù)點(diǎn)向量nΣ、Σn+1分別表示插入新數(shù)據(jù)點(diǎn)前后節(jié)點(diǎn)的混合系數(shù)、平均向量和協(xié)方差矩陣。
傳統(tǒng)聚類方法不能利用上一次的聚類結(jié)果,從而導(dǎo)致耗時(shí)、資源浪費(fèi)等問(wèn)題,而本文提出的ICGM算法引入增量學(xué)習(xí),在接收到訓(xùn)練樣本時(shí),僅需根據(jù)新樣本對(duì)模型進(jìn)行更新,不必重新訓(xùn)練整個(gè)模型。當(dāng)比較相似性時(shí),新的樣本點(diǎn)僅需要與惡意軟件家族的部分葉子節(jié)點(diǎn)進(jìn)行比較,并且當(dāng)新的樣本點(diǎn)插入GMM樹后,僅需更新被插入節(jié)點(diǎn)的后代節(jié)點(diǎn)的高斯分布混合參數(shù)。因此,本文提出的ICGM方法適用于具有目的性、繼承性與多樣性的惡意軟件家族的聚類。
本文實(shí)驗(yàn)平臺(tái)的具體配置如下,CPU是Intel(R)Core(TM) i5 2.50 GHz,內(nèi)存是8 GB,操作系統(tǒng)是Windows10。為了獲取樣本的動(dòng)態(tài)API函數(shù)調(diào)用序列,所有樣本運(yùn)行在一臺(tái)主機(jī)上,具體配置如下,CPU是Intel(R) Core(TM) i5 2.50 GHz,內(nèi)存是1 GB,操作系統(tǒng)是Windows XP Professional。實(shí)驗(yàn)框架如圖4所示,共分為三大模塊:惡意軟件行為分析模塊、惡意軟件家族傳遞閉包關(guān)系構(gòu)建模塊和惡意軟件識(shí)別算法模塊。
在惡意軟件分析模塊,本文將分別提取樣本的靜態(tài)特征和動(dòng)態(tài)特征,最后組成混合行為特征。提取樣本的靜態(tài)特征時(shí),首先對(duì)樣本進(jìn)行靜態(tài)分析,然后提取樣本導(dǎo)入表中的API函數(shù),以此作為靜態(tài)特征;提取樣本的動(dòng)態(tài)特征時(shí),首先通過(guò)動(dòng)態(tài)分析,提取樣本的API調(diào)用序列、參數(shù)和返回值;同時(shí)利用污點(diǎn)傳播分析技術(shù),對(duì)污染源進(jìn)行標(biāo)記,標(biāo)記污點(diǎn),并記錄污點(diǎn)的傳播路徑,以此作為動(dòng)態(tài)特征。然后將靜態(tài)特征和動(dòng)態(tài)特征進(jìn)行組合,最后得到樣本的混合行為特征。
圖4 實(shí)驗(yàn)框架
在惡意軟件家族傳遞閉包關(guān)系構(gòu)建模塊,首先依據(jù)每個(gè)樣本的混合行為特征構(gòu)建L個(gè)四元組,并做出軟件在目的空間內(nèi)的行為特征軌跡圖。然后依據(jù)特征軌跡圖的重疊面積或交集數(shù)目、特征節(jié)點(diǎn)的半徑或取值來(lái)生成家族的傳遞閉包關(guān)系,從而找到擁有整個(gè)軟件家族惡意行為特征的惡意軟件群UM與擁有軟件家族成員共有的惡意行為特征的惡意軟件群CM。最后利用算法1同時(shí)進(jìn)行惡意軟件家族的識(shí)別與惡意樣本的聚類。首先判斷是否為惡意軟件,若不是,則標(biāo)記為正常軟件;若是,則進(jìn)一步識(shí)別樣本是否屬于已知的惡意家族,若屬于,則將其插入相應(yīng)惡意家族的節(jié)點(diǎn)中,否則生成新的惡意家族GMM樹。
實(shí)驗(yàn)使用的數(shù)據(jù)集[23]如表4所示,包含了來(lái)自8個(gè)家族共計(jì)10 826個(gè)惡意軟件樣本。將每個(gè)家族的樣本分為兩部分,一部分用作訓(xùn)練,另一部分用作測(cè)試。訓(xùn)練集包括1 600個(gè)惡意樣本和2 800個(gè)良性樣本,測(cè)試集包括9 226個(gè)惡意樣本和10 000個(gè)良性樣本。
表4 實(shí)驗(yàn)數(shù)據(jù)集描述
在實(shí)驗(yàn)過(guò)程中,未知樣本點(diǎn)通過(guò)本文提出的ICGM法將被識(shí)別為良性樣本、已知家族中的惡意樣本、未知家族的惡意樣本。并通過(guò)以下參數(shù)來(lái)評(píng)價(jià)該方法的有效性:召回率或真陽(yáng)性率(TPR, true positive rate)、誤報(bào)率(FNR, false negative rate)、精確度和靈敏度的調(diào)和平均(F1)、準(zhǔn)確度(ACC, accuracy)。其中,TPN(false negative number)表示被正確判定為良性的樣本點(diǎn),TNN(true negative number)表示被正確判定為惡意的樣本點(diǎn)(包括已知家族的惡意樣本點(diǎn)與未知家族的惡意樣本點(diǎn)),F(xiàn)PN(false positive number)表示3種類型的樣本點(diǎn):被錯(cuò)誤判定為良性的惡意樣本點(diǎn)、未知家族中被判定為已知家族的惡意樣本點(diǎn)、已知家族中被判定為未知家族的惡意樣本點(diǎn),F(xiàn)NN(false negative number)表示被判定為惡意的良性樣本點(diǎn)。則TPR、TNR、F1、ACC的定義分別為
本實(shí)驗(yàn)中需要確定的參數(shù)有四元組的長(zhǎng)度L和取值為(0,1)范圍的閾值參數(shù)θ、ψ。依據(jù)樣本中多數(shù)惡意軟件的行為,本文將L設(shè)置為8。閾值參數(shù)的取值取決于參數(shù)對(duì)惡意檢測(cè)誤報(bào)率與漏報(bào)率的影響。圖5仿真了閾值參數(shù)θ、ψ在(0,1)內(nèi)取值時(shí)對(duì)惡意檢測(cè)效率的影響,當(dāng)θ取值范圍為(0,0.4]時(shí),漏報(bào)率低但誤報(bào)率高;當(dāng)θ取值范圍為(0.4,1)時(shí),誤報(bào)率低但漏報(bào)率高。為了綜合考慮惡意檢測(cè)的漏報(bào)率與誤報(bào)率,本文設(shè)置閾值θ=0.4。同理,設(shè)置閾值ψ=0.6。
圖5 閾值參數(shù)的選擇
結(jié)合長(zhǎng)短期記憶(LSTM, long short term memory)深度學(xué)習(xí)模型[24]和隨機(jī)森林模型,Lu等[25]提出了一種基于API調(diào)用統(tǒng)計(jì)特征的惡意軟件檢測(cè)體系結(jié)構(gòu)(ASSCA, API-based sequence and statistics feature combined malware detection architecture),將傳統(tǒng)的機(jī)器學(xué)習(xí)與遞歸神經(jīng)網(wǎng)絡(luò)結(jié)合以獲得更好的分類性能。Santos等[8]提出了一種表示依賴于操作碼序列的惡意軟件的方法(OSDM, opcode sequence as representation of executable for data-mining-based unknown malware detection),使用靜態(tài)檢測(cè)方來(lái)提取可執(zhí)行文件的操作碼序列頻率從而檢測(cè)和分類惡意軟件。Kolosnjaji等[6]構(gòu)建了一個(gè)基于卷積和循環(huán)網(wǎng)絡(luò)層的神經(jīng)網(wǎng)絡(luò)(NCLN, neural network based on convolutional and recurrent network layer),并通過(guò)動(dòng)態(tài)特征提取的方式得到了一種分層特征提取架構(gòu),將基于n-gram的卷積與完整的順序建模相結(jié)合來(lái)檢測(cè)惡意軟件。
表 5將本文提出的方法 ICGM與 ASSCA、OSDM 和 NCLN就真陽(yáng)性率(TPR)與誤報(bào)率(FNR)進(jìn)行比較。由表5可知,ICGM與ASSCA方法的 TPR幾乎相同,這說(shuō)明基于軟件的 API調(diào)用序列可以表示惡意軟件家族的行為特征,從而識(shí)別惡意軟件家族成員。此外,OSDM、NCLN的誤報(bào)率遠(yuǎn)高于ICGM的誤報(bào)率,說(shuō)明采用靜態(tài)與動(dòng)態(tài)檢測(cè)相結(jié)合的方式能更好地區(qū)分良性樣本與惡意樣本。
表5 ICGM與ASSCA、OSDM和NCLN方法的性能比較
表6將ICGM與ASSCA就精確度和靈敏度的調(diào)和平均(F1)與準(zhǔn)確度(ACC)進(jìn)行比較。從表6可以看出,ICGM 的整體性能高于 ASSCA,因?yàn)锳SSCA方法對(duì)于API調(diào)用序列的提取僅關(guān)注惡意軟件自身行為方面,忽略了惡意軟件家族的繼承性,但是ICGM方法可以有效利用同一惡意軟件家族行為的相似性來(lái)識(shí)別惡意軟件家族成員。ICGM方法用傳遞閉包關(guān)系來(lái)刻畫軟件家族的惡意行為的繼承性與衍生性,得到了4個(gè)由具有特定目的的惡意軟件家族的行為構(gòu)成的傳遞閉包關(guān)系,然后定義并找到了惡意軟件家族中代表性的特征集合與惡意軟件集合,并將代表性的惡意軟件集合作為GMM 樹的葉子節(jié)點(diǎn)。當(dāng)需要辨別新樣本點(diǎn)時(shí),僅需要將新樣本點(diǎn)與惡意軟件家族的部分葉子節(jié)點(diǎn)進(jìn)行相似性比較,并且當(dāng)樣本點(diǎn)插入GMM樹后,僅需更新被插入節(jié)點(diǎn)的后代節(jié)點(diǎn)的高斯分布混合參數(shù)。因此,采用ICGM方法可以提高惡意軟件家族的檢測(cè)效率。
表6 ICGM方法與ASSCA方法的F1與ACC值的比較
Ahmed等[26]同樣提出過(guò)利用污點(diǎn)傳播技術(shù)來(lái)跟蹤分析 Windows操作系統(tǒng)運(yùn)行時(shí) API的調(diào)用序列,并且運(yùn)用機(jī)器學(xué)習(xí)算法來(lái)提高惡意軟件檢測(cè)的準(zhǔn)確性,該惡意軟件檢測(cè)方法稱為 STAM(spatio-temporal information in API calls with machine learning algorithm)。表 7列舉了 ICGM 與STAM 的檢測(cè)時(shí)間(T)與存儲(chǔ)空間(S)。從表 7可以看出,ICGM方法的存儲(chǔ)成本明顯低于STAM方法的存儲(chǔ)成本。因?yàn)镾TAM方法需要存儲(chǔ)來(lái)自同一個(gè)惡意軟件家族的所有訓(xùn)練樣本的 API調(diào)用序列,而ICGM只需要存儲(chǔ)惡意軟件家族葉子節(jié)點(diǎn)中訓(xùn)練樣本的API調(diào)用序列。檢測(cè)時(shí)間包括生成API調(diào)用序列的時(shí)間成本與樣本訓(xùn)練的時(shí)間成本。STAM方法的檢測(cè)時(shí)間約為ICGM方法的1.3倍,因?yàn)樵跈z測(cè)惡意軟件時(shí),ICGM方法只需要利用上一次聚類的結(jié)果,每次將一個(gè)數(shù)據(jù)樣本劃分到已有GMM樹中或新增GMM樹,這樣新增的數(shù)據(jù)樣本也不會(huì)影響原有劃分,并且樣本只需要與NLR進(jìn)行相似性比較,而不需要與整個(gè)惡意軟件家族進(jìn)行對(duì)比。因此ICGM方法不僅能節(jié)省存儲(chǔ)空間,還能減少檢測(cè)時(shí)間。
綜上,本文提出的基于高斯混合模型的增量聚類算法不僅能節(jié)省惡意軟件檢測(cè)的存儲(chǔ)空間,還能提高惡意軟件的檢測(cè)準(zhǔn)確率與識(shí)別效率。
表7 ICGM與STAM方法的檢測(cè)時(shí)間與存儲(chǔ)空間的比較
為了提高惡意軟件的檢測(cè)準(zhǔn)確率與識(shí)別效率,本文在高斯混合模型中引入增量機(jī)制,提出了基于高斯混合模型的增量聚類算法來(lái)識(shí)別惡意軟件家族,同時(shí)執(zhí)行家族識(shí)別與惡意軟件聚類。首先,依據(jù)惡意軟件的目的性與繼承性,本文從行為檢測(cè)的角度通過(guò)追蹤API函數(shù)調(diào)用的邏輯規(guī)則來(lái)提取惡意軟件的特征。然后,從惡意行為的角度為每個(gè)惡意軟件家族構(gòu)建4個(gè)行為傳遞閉包關(guān)系,并建立特征行為與惡意軟件的一對(duì)一映射關(guān)系。最后,本文創(chuàng)建并動(dòng)態(tài)調(diào)整與惡意軟件家族的進(jìn)化史相一致的GMM 樹,采用基于高斯混合模型的增量聚類方法來(lái)識(shí)別惡意軟件家族。