文獻(xiàn)標(biāo)識(shí)碼:A
DOI: 10.19358/j.issn.2096-5133.2019.01.006
引用格式:傅依嫻,蘆天亮,張學(xué)軍.基于Cuckoo平臺(tái)的HDBSCAN惡意代碼聚類算法[J].信息技術(shù)與網(wǎng)絡(luò)安全,2019,38(1):30-35.
0引言
網(wǎng)絡(luò)時(shí)代的迅猛發(fā)展、網(wǎng)民數(shù)量的急劇增加以及網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,使得網(wǎng)絡(luò)逐漸成為現(xiàn)代社會(huì)競(jìng)爭的新資源,高級(jí)網(wǎng)絡(luò)滲透技術(shù)成為了重點(diǎn)發(fā)展的對(duì)象;不法分子利用惡意程序?qū)嵤┓缸?,從而破壞網(wǎng)絡(luò)環(huán)境的穩(wěn)定,成為了網(wǎng)絡(luò)安全領(lǐng)域的研究熱點(diǎn)。面對(duì)惡意軟件使用的常態(tài)化及其破壞性,計(jì)算機(jī)用戶不得不投入更多成本來維護(hù)信息系統(tǒng)安全。
近年來,隨著機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等新技術(shù)的發(fā)展,惡意代碼分析問題也呈現(xiàn)出新的研究趨勢(shì)。SCHULTZ M[1]等人利用可執(zhí)行文件靜態(tài)特征并結(jié)合RIPPER算法實(shí)現(xiàn)對(duì)惡意代碼的精確檢測(cè)。SHAW S等人提出了基于云的檢測(cè)技術(shù)[2];KOLOSNJAJI B等人則提出用深度學(xué)習(xí)算法來對(duì)樣本的系統(tǒng)調(diào)用序列進(jìn)行分類,從而達(dá)到判斷樣本惡意性的目的[3]。
本文通過搭建Cuckoo惡意代碼自動(dòng)分析系統(tǒng)來作為沙箱環(huán)境,提取所需的惡意代碼特征,通過聚類算法來實(shí)現(xiàn)對(duì)惡意代碼的研究,其聚類效果證明行之效。
1惡意代碼的特征提取
1.1特征提取思路
特征提取是進(jìn)行惡意代碼分類的必要前提。而惡意軟件的系統(tǒng)調(diào)用是最主要獲取的特征之一。目前,系統(tǒng)調(diào)用的獲取方法主要為靜態(tài)分析方法和動(dòng)態(tài)分析方法;但是,對(duì)于靜態(tài)分析方法來說,惡意代碼會(huì)使用混淆、花指令等手段,從而影響靜態(tài)分析的結(jié)果。而動(dòng)態(tài)分析當(dāng)前也仍然存在一些問題:(1)基于序列比對(duì)法[4-6]會(huì)產(chǎn)生大量冗余特征,隨著測(cè)試樣本的動(dòng)態(tài)行為越多,檢測(cè)結(jié)果受到干擾越嚴(yán)重;(2)基于行為頻繁度方法[7-8]研究不夠深入,會(huì)影響之后的聚類效果;(3)病毒有反虛擬環(huán)境對(duì)抗技術(shù)。
為了對(duì)上述情況進(jìn)行改善,本文對(duì)常見的特征提取手段進(jìn)行改進(jìn),提出了基于惡意行為的頻繁度和內(nèi)存特征相結(jié)合的惡意代碼特征提取方法。主要包括API函數(shù)特征、行為特征以及內(nèi)存特征。
1.1.1API函數(shù)特征
惡意代碼在執(zhí)行時(shí)會(huì)調(diào)用一些高級(jí)應(yīng)用程序接口,例如Windows API(Windows應(yīng)用程序接口,針對(duì)Microsoft Windows操作系統(tǒng)家族的系統(tǒng)編程接口),而API是由API函數(shù)來實(shí)現(xiàn)的。API函數(shù)包含在API庫文件中,例如勒索軟件要對(duì)計(jì)算機(jī)中相應(yīng)后綴名文件進(jìn)行加解密時(shí)會(huì)先載入CRYPT32.dll動(dòng)態(tài)鏈接庫,再調(diào)用該鏈接庫中一系列的加解密函數(shù)。本文提取的API函數(shù)特征包括API函數(shù)調(diào)用頻繁度以及動(dòng)態(tài)鏈接庫調(diào)用頻繁度。
1.1.2行為特征
在行為特征方面,主要提取了網(wǎng)絡(luò)行為、注冊(cè)表行為、文件行為[9]。
網(wǎng)絡(luò)行為上,惡意代碼在系統(tǒng)中運(yùn)行會(huì)建立多個(gè)網(wǎng)絡(luò)連接,因此本文提取了樣本中建立連接的主機(jī)域名個(gè)數(shù),建立TCP、UDP連接等。
注冊(cè)表行為上,惡意代碼會(huì)通過修改注冊(cè)表,從而將計(jì)算機(jī)中默認(rèn)的主頁改為其指定的網(wǎng)站、非法修改正常信息或者導(dǎo)致正常功能被禁用等。本文對(duì)注冊(cè)表行為中訪問注冊(cè)表、讀取注冊(cè)表、修改注冊(cè)表、刪除注冊(cè)表進(jìn)行計(jì)數(shù),并且考慮到在訪問大量注冊(cè)表時(shí)存在嵌套路徑遍歷,最后進(jìn)行了去重計(jì)數(shù)。
文件行為上,惡意代碼會(huì)頻繁讀取系統(tǒng)文件,從其指定網(wǎng)站下載所需文件并存入指定路徑或者修改某些文件中的內(nèi)容等,本文在文件行為上,對(duì)文件的創(chuàng)建、讀取、修改、刪除、移動(dòng)等進(jìn)行計(jì)數(shù)。行為特征如表1所示。
1.1.3內(nèi)存特征
和其他特征提取思路不同的是,本文考慮到惡意軟件的反沙箱機(jī)制以及反分析技術(shù),基于沙箱技術(shù)的動(dòng)態(tài)行為不一定能夠完全捕獲樣本的行為,因此本文
表1行為特征
特征類別特征名稱特征描述
NetworkUDP、TCP、DNS、HTTPUDP、TCP、DNS、HTTP連接數(shù)
Registerreg_deleted、reg_open、reg_read、reg_Written分別統(tǒng)計(jì)注冊(cè)表刪除、訪問、讀取、修改情況
FileRead=(Nr,distinct extension Nr,Top extension frequency ofNr)、
Write=(Nw,distinct extension Nw,Top extension frequency ofNw)
Delete=(Nd,distinct extension Nd,Top extension frequency ofNd)
Create=(Nc,distinct extension Nc,Top extension frequency ofNc)
Move=(Nm,distinct extension Nm,Top extension frequency ofNm)
Open=(No,distinct extension No,Top extension frequency ofNo)
(讀/寫/刪除/創(chuàng)建/移動(dòng)/打開文件計(jì)數(shù)
讀/寫/刪除/創(chuàng)建/移動(dòng)/打開敏感文件計(jì)數(shù)
前十個(gè)讀/寫/刪除/創(chuàng)建/移動(dòng)/打開敏感文件類型頻繁度)
利用Volatility內(nèi)存取證工具以及Yara匹配工具提取出內(nèi)存行為特征作為補(bǔ)充,最終提取出行為標(biāo)簽特征和互斥體(mutex)的特征,如表2所示。
表2內(nèi)存特征
特征類別特征名稱特征描述
MemorySignature基于Yara匹配規(guī)則的頻繁度
Mutex互斥鎖個(gè)數(shù)
1.2特征降維
本文使用到機(jī)器學(xué)習(xí)算法t-SNE(t-distributed Stochastic Neighbor Embedding)來對(duì)所提取到的高維特征進(jìn)行降維。t-SNE算法屬于非線性降維算法的一種,適用于將高維數(shù)據(jù)降到二維或者三維進(jìn)行可視化展示[10]。
t-SNE算法在高維空間數(shù)據(jù)點(diǎn)之間構(gòu)建了一個(gè)概率分布,該概率分布會(huì)使相似的數(shù)據(jù)點(diǎn)對(duì)應(yīng)較高的概率,不相似的數(shù)據(jù)點(diǎn)對(duì)應(yīng)較低的概率。其計(jì)算公式如下:
pj|i=exp (-xi-xj2/(2σ2i))∑k≠iexp (-xi-xk2/(2σ2i))(1)
pij=pf|i+pi|j2n(2)
t-SNE算法目標(biāo)是在低維空間的映射yi,…,ydt,yi∈Rdt,yi和yj之間的相似度公式為:
qij=(1+yi-yj2)-1∑k≠1(1+yk-yl2)-1(3)
兩個(gè)分布之間的相似度可以使用KL散度來衡量,其計(jì)算公式為:
C=∑i≠jpijlogpijqij(4)
2改進(jìn)算法HDBSCAN的設(shè)計(jì)
2.1傳統(tǒng)的DBSCAN聚類算法
基于密度的DBSCAN(Density-Based Spatial Clustering of Applications with Noise)算法[11]將簇定義為密度相連的點(diǎn)的最大集合,它的主要思想是對(duì)于構(gòu)成類簇的每一個(gè)對(duì)象,其Eps領(lǐng)域包含的對(duì)象個(gè)數(shù),必須不小于某個(gè)給定的值(MinPts)。
DBSCAN算法的描述如下:
輸入:具有n個(gè)對(duì)象的數(shù)據(jù)集D,半徑e,最小領(lǐng)域點(diǎn)數(shù)MinPts;
輸出:目標(biāo)類簇集合。
Repeat:
1 判斷輸入點(diǎn)是否為核心對(duì)象;
2 找出核心對(duì)象的e領(lǐng)域中的所有直接密度可達(dá)點(diǎn);
Until所有輸入點(diǎn)都判斷完畢。
Repeat:
針對(duì)所有核心對(duì)象的e領(lǐng)域內(nèi)所有直接密度可達(dá)點(diǎn)找到最大密度相連對(duì)象集合,中間涉及一些密度可達(dá)對(duì)象的合并;
Until所有核心對(duì)象的e領(lǐng)域都便利完畢。
2.2基于層次的改進(jìn)算法HDBSCAN
DBSCAN有兩個(gè)缺陷:(1)算法對(duì)參數(shù)的變化很敏感,不同的參數(shù)組合對(duì)最后的聚類效果有較大影響;(2)算法需要逐個(gè)判斷輸入的每個(gè)數(shù)據(jù)點(diǎn)是否為核心點(diǎn),如果樣本集較大,聚類收斂時(shí)間較長,則需要較大的I/O開銷。
本文針對(duì)缺陷1和缺陷2,提出了一個(gè)基于層次的對(duì)DBSCAN的改進(jìn)算法HDBSCAN(Hierarchical-based DBSCAN)。
HDBSCAN算法引入了層次聚類的思想,不僅對(duì)由于輸入?yún)?shù)Eps選擇不當(dāng)而造成聚類結(jié)果不佳的問題給予糾正,還有效屏蔽了算法對(duì)輸入?yún)?shù)的敏感性;同時(shí),HDBSCAN不需要對(duì)輸入的每個(gè)數(shù)據(jù)點(diǎn)進(jìn)行檢測(cè)和判斷,它只需要判斷其中某些部分點(diǎn)即可識(shí)別最終生成簇,從而減少了查詢次數(shù),降低了I/O開銷。
HDBSCAN定義了幾個(gè)基本概念:
(1)核心距離corek(x)為當(dāng)前點(diǎn)到其第k近的點(diǎn)的距離:
corek(x)=d(x,Nk(x))
(2)互達(dá)距離:dmreach-k(a,b)=max {corek(a),corek(b),d(a.,b)}
(3)最小生成樹:當(dāng)圖中的每一條邊都具有一個(gè)權(quán)值時(shí),那么會(huì)有一個(gè)生成樹的所有邊的權(quán)值之和小于或者等于其他生成樹的所有邊的權(quán)值之和。
(4)MST(最小生成樹)性質(zhì):設(shè)一個(gè)連通網(wǎng)絡(luò)G(V,E)(V代表點(diǎn)集,E代表邊集),U是頂點(diǎn)集V的一個(gè)真子集。若(u,v)是G中一條“一個(gè)端點(diǎn)在U中,另一個(gè)端點(diǎn)不在U中”的邊,且(u,v)具有最小權(quán)值,則一定存在G的一棵最小生成樹包括此邊(u,v)。
HDBSCAN算法主要分為兩個(gè)大步驟,第一步是生成初始簇集,第二步是對(duì)基于層次的初始簇集進(jìn)行合并。HDBSCAN算法的具體流程如圖1所示。
圖1HDBSCAN算法流程
2.3T-SNE降維后使用HDBSCAN
在使用改進(jìn)算法HDBSCAN聚類前對(duì)數(shù)據(jù)進(jìn)行t-SNE降維處理,可以有效地提高數(shù)據(jù)集聚類的匹配結(jié)果,t-SNE通過基于多個(gè)特征的數(shù)據(jù)點(diǎn)的相似性識(shí)別觀察到的模式來找到數(shù)據(jù)中的規(guī)律,它具有在高維數(shù)據(jù)之間找到合適數(shù)據(jù)結(jié)構(gòu)和相關(guān)連接的極高能力。T-SNE具有非凸目標(biāo)函數(shù),通過隨機(jī)初始化使梯度下降最小化,降維后使用HDBSCAN算法,可以對(duì)數(shù)據(jù)帶來最有效的分割。
3實(shí)驗(yàn)環(huán)境
沙箱技術(shù)是近些年安全領(lǐng)域一個(gè)新的熱點(diǎn),其關(guān)鍵技術(shù)在于隔離、個(gè)性化以及自動(dòng)。本文將Cuckoo沙箱作為惡意樣本分析環(huán)境,提交樣本后便能自動(dòng)化地分析文件并收集樣本文件在隔離的Windows系統(tǒng)中運(yùn)行的行為。并且每次分析都會(huì)從一個(gè)處于純凈狀態(tài)的快照開始,以保證分析的正確性,避免多個(gè)分析之間的相互干擾。完整的實(shí)驗(yàn)環(huán)境如表3所示。
表3實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)環(huán)境配置
處理器Intel(R)Core (TM) i7-8550U
主頻1.80 GHz內(nèi)存8 GB
操作系統(tǒng)Ubuntu14.04
軟件環(huán)境VBox5.1、Python2.7、Cuckoo2.0.5
沙箱操作系統(tǒng)Windows7
沙箱軟件環(huán)境WPS、QQ、IE瀏覽器、
Fox mail、Python2.7
4實(shí)驗(yàn)結(jié)果與分析
4.1實(shí)驗(yàn)設(shè)計(jì)
4.1.1實(shí)驗(yàn)流程
本文從公開網(wǎng)站上下載了900個(gè)惡意代碼作為樣本文件提交至沙箱環(huán)境中,所有的惡意代碼均來源于公開網(wǎng)站www.malware-traffic-analysis.net。
將下載好的惡意代碼提交至Cuckoo沙箱環(huán)境中運(yùn)行,Cuckoo利用其HOOK機(jī)制對(duì)提交樣本的動(dòng)態(tài)行為及其參數(shù)進(jìn)行提取,整個(gè)分析報(bào)告以JSON格式保存。通過樣本的分析報(bào)告提取所需的特征屬性,最后用到聚類算法HDBSCAN對(duì)惡意代碼進(jìn)行研究。整個(gè)實(shí)驗(yàn)?zāi)P腿鐖D2所示。
4.1.2實(shí)驗(yàn)結(jié)果
編寫Python腳本對(duì)收集到的JSON格式的樣本分析報(bào)告提取特征,接著對(duì)提取到的特征直接使用DBSCAN算法、直接使用HDBSCAN算法、先進(jìn)行t-SNE降維再使用HDBSCAN算法,待聚類結(jié)束后,畫出在提取后的特征和聚類后的標(biāo)簽下所有樣本的分布情況,如圖3所示。
圖2實(shí)驗(yàn)流程
圖3分布情況
4.2聚類模型評(píng)估
本文使用調(diào)整蘭德系數(shù)(Adjusted Rand index)、同質(zhì)性(Homogeneity)、完整性(Completeness)、調(diào)和平均(V-measure)、輪廓系數(shù)(Silhouette Coefficient)來對(duì)聚類模型進(jìn)行評(píng)估。
(1)調(diào)整蘭德系數(shù):調(diào)整蘭德系數(shù)假設(shè)模型的超分布為隨機(jī)模型,它具有更高的區(qū)分度:
ARI=RI-E[RI]max(RI)-E[RI](5)
(2)同質(zhì)性:每個(gè)群集只包含單個(gè)類的成員;
完整性:給定類的所有成員都分配給同一個(gè)群集。
同質(zhì)性和完整性分?jǐn)?shù)基于以下公式得出:
h=1-H(C|K)H(C)(6)
c=1-H(K|C)H(K)(7)
其中H(C|K)是給定簇賦值的類的條件熵,由以下公式求得:
H(C|K)=-∑Cc=1∑Kk=1nc,knlognc,knk(8)
H(C)是類熵,公式為:
H(C)=-∑Cc=1ncnlog ncn(9)
其中,n是樣本總數(shù),nc和nk分別屬于類c和類k的樣本數(shù),而nc,k是從類c劃分到類k的樣本數(shù)量。條件熵H(K|C)和類熵H(K),根據(jù)以上公式對(duì)稱求得。
(3) 調(diào)和平均:V-measure是同質(zhì)性和完整性的調(diào)和平均數(shù),公式為:
v=2·h·ch+c(10)
(4) 輪廓系數(shù):對(duì)于單個(gè)樣本,設(shè)a是與它同類別中其他樣本的平均距離,b是與它距離最近不同類別中樣本的平均距離,其輪廓系數(shù)為:
s=b-amax (a,b)(11)
對(duì)于一個(gè)樣本集合,它的輪廓系數(shù)是所有樣本輪廓系數(shù)的平均值。
聚類評(píng)估指標(biāo)如表4所示。
表4聚類評(píng)估指標(biāo)
算法調(diào)整蘭德系數(shù)同質(zhì)性完整性調(diào)和平均輪廓系數(shù)
DBSCAN0.017 20.485 40.480 90.467 60.431 7
HDBSCAN0.019 40.646 80.541 70.589 60.651 8
TSNE-HDBSCAN0.032 90.835 30.848 40.828 30.845 8
由表4的結(jié)果可以得出,對(duì)行為特征進(jìn)行t-SNE降維后,再采用HDBSCAN算法后的聚類效果相對(duì)于直接使用DBSCAN、HDBSCAN的聚類效果更佳,并且其評(píng)估指標(biāo)也是最優(yōu),在時(shí)間復(fù)雜度上,對(duì)特征屬性進(jìn)行降維處理,可以有效減少聚類時(shí)間,更快得出聚類結(jié)果。改進(jìn)后的聚類算法可以研究數(shù)據(jù)對(duì)象的分類問題,在模式識(shí)別、圖像處理、市場(chǎng)研究以及生命科學(xué)等眾多學(xué)科領(lǐng)域具有廣泛的應(yīng)用前景。
5結(jié)論
本文通過自動(dòng)化Cuckoo沙箱平臺(tái)得到惡意代碼分析報(bào)告,提出了基于惡意行為的頻繁度和內(nèi)存特征相結(jié)合的惡意代碼特征提取方法,并運(yùn)用改進(jìn)后的聚類算法來研究惡意代碼的聚類情況,提高聚類質(zhì)量,具有較高的可行性。未來將在此實(shí)驗(yàn)基礎(chǔ)上,繼續(xù)改進(jìn)舊算法或?qū)で笮碌乃惴ㄒ蕴岣呔垲愋Ч徒档蜁r(shí)間復(fù)雜度。
參考文獻(xiàn)
[1] SIDDIQUI M,WANG M C,LEE J.A survey of data mining techniques for malware detection using file features[C].Proceedings of the 46th Annual Southeast Regional Conference on XX.ACM,2008:509-510.
[2] SHAW S,GUPTA M K,CHAKRABORTY S.Cloud based malware detection technique[C]. Proceedings of the 5th International Conference on Frontiers in Intelligent Computing:Theory and Applications.Springer,Singapore,2017:485-495.
[3] KOLOSNJAJI B,ZARRAS A,WEBSTER G,et al.Deep learning for classification of malware system call sequencces[C]. Australasian Joint Conference on Artificial Intelligence.Springer International Publishing,2016:137-149.
[4] 葛雨瑋,康緋,彭小詳.基于動(dòng)態(tài)BP神經(jīng)網(wǎng)絡(luò)的惡意代碼同源性分析[J].小型微型計(jì)算機(jī)系統(tǒng),2016,37(11):2527-2531.
[5] 韓蘭勝,高昆侖,趙保華,等.基于API函數(shù)及其參數(shù)相結(jié)合的惡意軟件行為檢測(cè)[J].計(jì)算機(jī)應(yīng)用研究,2013,30(11):3407-3410.
[6] LIU W,REB P,LIU K,et al.Behavior-based malware analysis and detection[C]. Proceedings of First International Workshop on Complexity and Data Mining.IEEE Computer Society,2011:39-42.
[7] 陳鐵明,楊益敏,陳波.Maldetect:基于Dalvik指令抽象的Android惡意代碼檢測(cè)系統(tǒng)[J].計(jì)算機(jī)研究與發(fā)展,2016,53(10):2299-2306.
[8] CHO I K,KIM T G,YU J S,et al.Malware analysis and classification using sequence alignments[J].Intelligent Automation & Soft Computing,2016,22(3):371-377.
[9] 龔琪,曹金璇,蘆天亮, 等.基于特征頻繁度的勒索軟件檢測(cè)方法研究[J].計(jì)算機(jī)應(yīng)用研究,2017,35(7).
[10] 郗洋.基于與計(jì)算的并行聚類算法研究[D].南京:南京郵電大學(xué),2011.
[11] 蔡穎琨,謝昆青.屏蔽了輸入?yún)?shù)敏感性的DBSCAN改進(jìn)算法[J].北京大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,3(40): 480-486.
(收稿日期:2018-12-09)
作者簡介:
傅依嫻(1995-),女,在研,主要研究方向:網(wǎng)絡(luò)安全。
蘆天亮(1985-),男,博士,副教授,主要研究方向:網(wǎng)絡(luò)攻防、惡意代碼。
張學(xué)軍(1971-),男,助理實(shí)驗(yàn)師,主要研究方向:信息技術(shù)。