傅依嫻,蘆天亮,張學軍
(中國人民公安大學 信息技術與網絡安全學院,北京 100076)
網絡時代的迅猛發展、網民數量的急劇增加以及網絡技術的廣泛應用,使得網絡逐漸成為現代社會競爭的新資源,高級網絡滲透技術成為了重點發展的對象;不法分子利用惡意程序實施犯罪,從而破壞網絡環境的穩定,成為了網絡安全領域的研究熱點。面對惡意軟件使用的常態化及其破壞性,計算機用戶不得不投入更多成本來維護信息系統安全。
近年來,隨著機器學習、深度學習等新技術的發展,惡意代碼分析問題也呈現出新的研究趨勢。SCHULTZ M[1]等人利用可執行文件靜態特征并結合RIPPER算法實現對惡意代碼的精確檢測。SHAW S等人提出了基于云的檢測技術[2];KOLOSNJAJI B等人則提出用深度學習算法來對樣本的系統調用序列進行分類,從而達到判斷樣本惡意性的目的[3]。
本文通過搭建Cuckoo惡意代碼自動分析系統來作為沙箱環境,提取所需的惡意代碼特征,通過聚類算法來實現對惡意代碼的研究,其聚類效果證明行之效。
特征提取是進行惡意代碼分類的必要前提。而惡意軟件的系統調用是最主要獲取的特征之一。目前,系統調用的獲取方法主要為靜態分析方法和動態分析方法;但是,對于靜態分析方法來說,惡意代碼會使用混淆、花指令等手段,從而影響靜態分析的結果。而動態分析當前也仍然存在一些問題:(1)基于序列比對法[4-6]會產生大量冗余特征,隨著測試樣本的動態行為越多,檢測結果受到干擾越嚴重;(2)基于行為頻繁度方法[7-8]研究不夠深入,會影響之后的聚類效果;(3)病毒有反虛擬環境對抗技術。
為了對上述情況進行改善,本文對常見的特征提取手段進行改進,提出了基于惡意行為的頻繁度和內存特征相結合的惡意代碼特征提取方法。主要包括API函數特征、行為特征以及內存特征。
1.1.1API函數特征
惡意代碼在執行時會調用一些高級應用程序接口,例如Windows API(Windows應用程序接口,針對Microsoft Windows操作系統家族的系統編程接口),而API是由API函數來實現的。API函數包含在API庫文件中,例如勒索軟件要對計算機中相應后綴名文件進行加解密時會先載入CRYPT32.dll動態鏈接庫,再調用該鏈接庫中一系列的加解密函數。本文提取的API函數特征包括API函數調用頻繁度以及動態鏈接庫調用頻繁度。
1.1.2行為特征
在行為特征方面,主要提取了網絡行為、注冊表行為、文件行為[9]。
網絡行為上,惡意代碼在系統中運行會建立多個網絡連接,因此本文提取了樣本中建立連接的主機域名個數,建立TCP、UDP連接等。
注冊表行為上,惡意代碼會通過修改注冊表,從而將計算機中默認的主頁改為其指定的網站、非法修改正常信息或者導致正常功能被禁用等。本文對注冊表行為中訪問注冊表、讀取注冊表、修改注冊表、刪除注冊表進行計數,并且考慮到在訪問大量注冊表時存在嵌套路徑遍歷,最后進行了去重計數。
文件行為上,惡意代碼會頻繁讀取系統文件,從其指定網站下載所需文件并存入指定路徑或者修改某些文件中的內容等,本文在文件行為上,對文件的創建、讀取、修改、刪除、移動等進行計數。行為特征如表1所示。
1.1.3內存特征
和其他特征提取思路不同的是,本文考慮到惡意軟件的反沙箱機制以及反分析技術,基于沙箱技術的動態行為不一定能夠完全捕獲樣本的行為,因此本文利用Volatility內存取證工具以及Yara匹配工具提取出內存行為特征作為補充,最終提取出行為標簽特征和互斥體(mutex)的特征,如表2所示。

表1 行為特征

表2 內存特征
本文使用到機器學習算法t-SNE(t-distributed Stochastic Neighbor Embedding)來對所提取到的高維特征進行降維。t-SNE算法屬于非線性降維算法的一種,適用于將高維數據降到二維或者三維進行可視化展示[10]。
t-SNE算法在高維空間數據點之間構建了一個概率分布,該概率分布會使相似的數據點對應較高的概率,不相似的數據點對應較低的概率。其計算公式如下:
(1)
(2)
t-SNE算法目標是在低維空間的映射yi,…,ydt,yi∈Rdt,yi和yj之間的相似度公式為:
(3)
兩個分布之間的相似度可以使用KL散度來衡量,其計算公式為:
(4)
基于密度的DBSCAN(Density-Based Spatial Clustering of Applications with Noise)算法[11]將簇定義為密度相連的點的最大集合,它的主要思想是對于構成類簇的每一個對象,其Eps領域包含的對象個數,必須不小于某個給定的值(MinPts)。
DBSCAN算法的描述如下:
輸入:具有n個對象的數據集D,半徑e,最小領域點數MinPts;
輸出:目標類簇集合。
Repeat:
1 判斷輸入點是否為核心對象;
2 找出核心對象的e領域中的所有直接密度可達點;
Until所有輸入點都判斷完畢。
Repeat:
針對所有核心對象的e領域內所有直接密度可達點找到最大密度相連對象集合,中間涉及一些密度可達對象的合并;
Until所有核心對象的e領域都便利完畢。
DBSCAN有兩個缺陷:(1)算法對參數的變化很敏感,不同的參數組合對最后的聚類效果有較大影響;(2)算法需要逐個判斷輸入的每個數據點是否為核心點,如果樣本集較大,聚類收斂時間較長,則需要較大的I/O開銷。
本文針對缺陷1和缺陷2,提出了一個基于層次的對DBSCAN的改進算法HDBSCAN(Hierarchical-based DBSCAN)。
HDBSCAN算法引入了層次聚類的思想,不僅對由于輸入參數Eps選擇不當而造成聚類結果不佳的問題給予糾正,還有效屏蔽了算法對輸入參數的敏感性;同時,HDBSCAN不需要對輸入的每個數據點進行檢測和判斷,它只需要判斷其中某些部分點即可識別最終生成簇,從而減少了查詢次數,降低了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)最小生成樹:當圖中的每一條邊都具有一個權值時,那么會有一個生成樹的所有邊的權值之和小于或者等于其他生成樹的所有邊的權值之和。
(4)MST(最小生成樹)性質:設一個連通網絡G(V,E)(V代表點集,E代表邊集),U是頂點集V的一個真子集。若(u,v)是G中一條“一個端點在U中,另一個端點不在U中”的邊,且(u,v)具有最小權值,則一定存在G的一棵最小生成樹包括此邊(u,v)。
HDBSCAN算法主要分為兩個大步驟,第一步是生成初始簇集,第二步是對基于層次的初始簇集進行合并。HDBSCAN算法的具體流程如圖1所示。

圖1 HDBSCAN算法流程
在使用改進算法HDBSCAN聚類前對數據進行t-SNE降維處理,可以有效地提高數據集聚類的匹配結果,t-SNE通過基于多個特征的數據點的相似性識別觀察到的模式來找到數據中的規律,它具有在高維數據之間找到合適數據結構和相關連接的極高能力。T-SNE具有非凸目標函數,通過隨機初始化使梯度下降最小化,降維后使用HDBSCAN算法,可以對數據帶來最有效的分割。
沙箱技術是近些年安全領域一個新的熱點,其關鍵技術在于隔離、個性化以及自動。本文將Cuckoo沙箱作為惡意樣本分析環境,提交樣本后便能自動化地分析文件并收集樣本文件在隔離的Windows系統中運行的行為。并且每次分析都會從一個處于純凈狀態的快照開始,以保證分析的正確性,避免多個分析之間的相互干擾。完整的實驗環境如表3所示。

表3 實驗環境
4.1.1實驗流程
本文從公開網站上下載了900個惡意代碼作為樣本文件提交至沙箱環境中,所有的惡意代碼均來源于公開網站www.malware-traffic-analysis.net。
將下載好的惡意代碼提交至Cuckoo沙箱環境中運行,Cuckoo利用其HOOK機制對提交樣本的動態行為及其參數進行提取,整個分析報告以JSON格式保存。通過樣本的分析報告提取所需的特征屬性,最后用到聚類算法HDBSCAN對惡意代碼進行研究。整個實驗模型如圖2所示。
4.1.2實驗結果
編寫Python腳本對收集到的JSON格式的樣本分析報告提取特征,接著對提取到的特征直接使用DBSCAN算法、直接使用HDBSCAN算法、先進行t-SNE降維再使用HDBSCAN算法,待聚類結束后,畫出在提取后的特征和聚類后的標簽下所有樣本的分布情況,如圖3所示。

圖2 實驗流程

圖3 分布情況
本文使用調整蘭德系數(Adjusted Rand index)、同質性(Homogeneity)、完整性(Completeness)、調和平均(V-measure)、輪廓系數(Silhouette Coefficient)來對聚類模型進行評估。
(1)調整蘭德系數:調整蘭德系數假設模型的超分布為隨機模型,它具有更高的區分度:
(5)
(2)同質性:每個群集只包含單個類的成員;
完整性:給定類的所有成員都分配給同一個群集。
同質性和完整性分數基于以下公式得出:
(6)
(7)
其中H(C|K)是給定簇賦值的類的條件熵,由以下公式求得:
(8)
H(C)是類熵,公式為:
(9)
其中,n是樣本總數,nc和nk分別屬于類c和類k的樣本數,而nc,k是從類c劃分到類k的樣本數量。條件熵H(K|C)和類熵H(K),根據以上公式對稱求得。
(3) 調和平均:V-measure是同質性和完整性的調和平均數,公式為:
(10)
(4) 輪廓系數:對于單個樣本,設a是與它同類別中其他樣本的平均距離,b是與它距離最近不同類別中樣本的平均距離,其輪廓系數為:

(11)
對于一個樣本集合,它的輪廓系數是所有樣本輪廓系數的平均值。
聚類評估指標如表4所示。

表4 聚類評估指標
由表4的結果可以得出,對行為特征進行t-SNE降維后,再采用HDBSCAN算法后的聚類效果相對于直接使用DBSCAN、HDBSCAN的聚類效果更佳,并且其評估指標也是最優,在時間復雜度上,對特征屬性進行降維處理,可以有效減少聚類時間,更快得出聚類結果。改進后的聚類算法可以研究數據對象的分類問題,在模式識別、圖像處理、市場研究以及生命科學等眾多學科領域具有廣泛的應用前景。
本文通過自動化Cuckoo沙箱平臺得到惡意代碼分析報告,提出了基于惡意行為的頻繁度和內存特征相結合的惡意代碼特征提取方法,并運用改進后的聚類算法來研究惡意代碼的聚類情況,提高聚類質量,具有較高的可行性。未來將在此實驗基礎上,繼續改進舊算法或尋求新的算法以提高聚類效果和降低時間復雜度。