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