葉 菁,黃慶佳
(1. 中國科學院信息工程研究所,北京 100195;2. 中國科學院大學,北京 100190)
一種基于內核級監測的惡意軟件聚類分析方法
葉 菁1,2,黃慶佳1
(1. 中國科學院信息工程研究所,北京 100195;2. 中國科學院大學,北京 100190)
惡意軟件分析技術的研究一直都是安全研究的重點之一。近年來,基于機器學習和數據挖掘算法的惡意軟件行為特征的分析方法逐漸受到研究人員的重視。但目前這類方法普遍基于用戶態行為進行分析。針對用戶態監測所處層級高、容易造成獲取行為不完整等問題,本文提出一種基于內核級監測的惡意軟件聚類方法,在內核中監測獲取惡意軟件內核函數調用序列,提取內核行為表示成內核行為表示模型,并采用層次聚類算法對內核行為序列進行聚類分析。通過實驗,驗證了本文的分析方法能夠獲取較好的分析結果。
計算機軟件與理論;惡意軟件聚類分析;行為分析;內核
隨著計算機網絡技術的迅速發展及在人們工作生活中的廣泛應用,互聯網環境下數量龐大的惡意軟件已成為危害社會的正常運行和人們的隱私安全的重要威脅。對惡意軟件分析技術的研究一直都是安全研究的熱門之一。近年來在惡意軟件分析研究領域,運用機器學習和數據挖掘算法分析惡意軟件運行時行為特征的方法越來越受到安全研究人員的重視。這類分析方法具有對抗惡意軟件混淆技術的特性和進行關聯性分析的能力。目前的這類分析方法普遍基于用戶態監測獲取的惡意軟件行為進行分析,而用戶態的監測技術所處系統層級較高,當惡意軟件有低層級行為,如加載驅動、調用內核函數等時,監測程序無法捕獲其行為,造成行為日志缺失,從而影響分析的準確度。
針對這一問題,本文提出基于內核級監測的惡意軟件聚類分析方法,設計并實現了一個自動分析系統,包括一個內核沙箱和一個分析框架,用于自動化執行惡意軟件獲取惡意軟件內核函數序列,根據內核函數序列提取內核行為,并基于獲取的內核行為進行聚類分析。
基于機器學習和數據挖掘算法分析惡意軟件行為的方法按其分析過程分為惡意軟件行為獲取和行為分析算法兩部分。
1.1 惡意軟件行為獲取
在惡意軟件行為獲取過程中,通過動態分析技術,在受控環境中監測獲取惡意軟件運行時行為,作為行為分析算法的輸入。目前研究人員主要使用開源沙箱工具獲取惡意軟件行為。
TTAnalyze[1]采用Qemu模擬器作為虛擬化環境,通過CR3寄存器實現對目標進程的監測,跟蹤惡意軟件對Windows API和Native API的調用。CWSandbox[2]采用VMware虛擬化環境,通過Inline Hook技術,Hook了總共120余Windows API和Native API,實現對惡意軟件的監測。Cuckoo Sandbox[3],一個始于HoneyNT的開源項目,其支持多虛擬化平臺,采用基于進程注入的API Hook技術Hook了180余Windows API和Native API。除上述較常使用的沙箱工具外,其他動態分析工具還有如PyBox[4]、ZeroWine[5]、TWMAN[6]、Capture[7]等。動態分析工具相關信息匯總如表1所示。

表1 沙箱工具信息匯總Tab.1 Sandbox Tools
1.2 行為分析算法
為了實現對海量數據的分析處理及利用,國內外很多學者對機器學習和數據挖掘算法及其應用[8-12]進行了廣泛研究。行為分析算法,基于機器學習和數據挖掘算法實現,以動態分析工具獲取的惡意軟件行為集合作為輸入,運用各種特征模型進行特征提取,并基于提取的特征進行分類聚類分析。
Rieck等人[13]基于CWSandbox獲取的惡意軟件行為數據,利用向量空間模型和背包模型提起分類特征,并利用支持向量機SVM訓練分類器進行分類分析。Bayer等人[14]基于TTAnalyze獲取的資源對象操作的形式的惡意軟件行為數據,采用局部敏感哈希算法提取特征,并通過分層聚類算法進行聚類分析。Rieck、Trinius等人[15]基于CWSandbox獲取的惡意軟件數據,將行為表示成MIST[16]編碼的形式,通過n-gram模型將行為序列向量化,并采用分層聚類算法和KNN分類算法進行分析。其他研究也都是通過改進特征提取過程和分析算法過程獲取更好的分析結果。
目前行為分析算法的輸入為動分析工具主要是開源沙箱工具獲取的惡意軟件行為,而基于用戶態監測實現的開源沙箱工具面對惡意軟件的內核行為時,其獲取的惡意軟件行為將不完整,從而影響分析的準確度。
2.1 系統架構與設計
分析系統整體架構如圖1所示,分為動態分析和行為分析兩部分。

圖1 分析系統架構Fig.1 Analysis Framework
2.2 動態分析框架
動態分析框架實現了對惡意軟件的自動化深度監測,獲取惡意軟件內核函數調用序列。動態分析框架中,設計并實現了一個內核監控器程序,并在內核監控器程序的基礎上,設計擴展實現了一個基于內核深度監測的沙箱系統(簡稱內核沙箱系統)。
2.2.1 內核監控器實現
內核監控器采用驅動程序的形式,基于Hook系統服務、Hook IRP和系統回調等多種監測技術實現。其包括進程線程、注冊表、文件系統、網絡行為和系統服務五個監測子模塊。

圖2 內核監控器層次圖Fig.2 Hierarchical Structure of Kernel Monitor
● 進程線程監測子模塊,通過注冊進程、線程、鏡像回調函數,捕獲進程線程創建刪除,鏡像文件加載等操作。
● 注冊表監測子模塊,通過注冊回調函數監測系統注冊表狀態的改變,捕獲系統中的注冊表操作。
● 文件系統監測子模塊,通過文件微過濾驅動的方式,向過濾管理器注冊過濾操作和回調函數。捕獲系統中的指定的文件操作事件。
● 網絡監測子模塊,通過TDI過濾驅動的方式,實現IRP包過濾功能,解析獲取系統中網絡操作的信息。
● 系統服務監測模塊,通過Hook系統服務派遣表的方式,實現截獲系統服務函數的調用事件。
2.2.2 內核沙箱系統實現
內核沙箱基于Cuckoo開源框架和內核監控器程序擴展實現,能夠在內核層中自動化監測獲取惡意軟件行為。Cuckoo為基于虛擬機和Python自動化技術實現的開源框架,擁有并行化分析能力,其提供了可擴展的Analyzer Package分析包。通過在Package抽象類的基礎上擴展實現Kernel子類,添加內核監控器和監測控制程序,實現內核分析功能。
內核沙箱分析流程的偽碼如下所示:

內核沙箱單次分析流程的偽碼如下所示:

2.3 行為分析框架
行為分析框架對動態分析框架獲取的惡意軟件函數調用序列集進行分析,提取行為特征,進行聚類分析。
2.3.1 內核行為提取
對惡意軟件行為進行聚類分析時,分析算法需能明確區分作為輸入的惡意軟件行為。用戶態函數語義固定明確易于區分其具體行為。而內核函數語義凝聚,相同內核函數可能對應不同的行為,同一行為也可能由不同內核函數實現。因此,要基于內核函數序列做聚類分析,必須先從語義凝聚的內核函數序列中提取其具體的內核行為。
相同內核函數可能對應不同的行為,如內核函數ZwDeviceIoControlFile對應到用戶模式下的各類Socket操作。在內核函數實現中,操作系統通過比較函數參數與預置的固定值可判斷具體的操作類型。同一行為可以由不同內核函數實現,如文件刪除行為可由多個不同的內核函數實現。對于這類內核函數,在區分出內核函數具體行為的基礎上,將進行相同類型的操作的不同內核函數的行為會聚標記為同一行為。
基于此思路,采用逆向工程的方式,逆向、調試操作系統系統服務函數的實現,依據操作系統內核函數的實現的方式,并參考WDK文檔,設計了內核函數行為映射表,以內核函數名和函數調用重要參數為輸入,提取其具體的內核行為。

例如提取系統服務函數ZwDeviceIoControlFile代表的行為:

IO控制碼為系統預置或驅動程序使用CTL_ CODE宏定義的。函數通過判斷IO控制碼,通知驅動設備進行指定的操作。當IO控制碼為系統預置時,如此處通過f(ZwDeviceIoControlFile, IoControlCode|73735),將IoControlCode同操作系統預定義的IO控制碼比較,得出其對應操作為一個Socket connect操作。而當IO控制碼為自定義的時,自定義的IO控制碼能夠表征其具體行為類型,通過函數名+IoControlCode+設備對象名,可表示這個設備對象自己定義的操作。
內核行為提取過程,將語義凝聚模糊的內核函數調用轉換成語義離散明確的內核行為表示,獲取適于聚類分析的內核行為。
2.3.2 內核行為模型
提取的內核行為以進程樹的形式按時序存儲在文本中。針對聚類算法處理以文本、XML等形式存儲的用戶模式行為序列較困難,及日志信息冗余度較高等問題,Trinius等人設計了按參數特異性分層的MIST編碼。在MIST編碼中,相同家族的樣本,參數層級越低參數越具相似性。此設計能實現降低冗余度,提供不同粒度的聚類層次等功能。然而,MIST的 Level3及以上的層次中,參數實際上不具有相似性。Rieck、Trinius在其分類聚類實驗中也僅使用了前兩級參數。
相比于用戶模式行為序列,同一樣本的內核行為序列長度一般更長,處理復雜度更大。因此要對內核行為做聚類分析,更需要篩去行為日志中的冗余信息。因此參考MIST編碼,本文設計了編碼表示的內核行為模型KIST。

圖3 KIST模型Fig.3 KIST Model
KIST模型,將單條日志分為BEHAVIOR、ARGBLOCK、TARGET、HANDLE四部分。BEHAVIOR部分用于表征一次API調用的具體行為。ARGBLOCK部分記錄重要參數,即對同一家族惡意軟件可能相同的參數。TARGET和HANDLE為可選項。TARGET表征行為作用的對象,HANDLE記錄行為相關句柄,二者共同表征行為操作作用的對象。

KIST模型表示如下:
0f 01 | 00006b2c 0c7d3f9c | 000d4000
BEHAVIOR部分,0f為鏡像加載回掉所屬的類目范圍,01為具體的操作。
ARGBLOCK部分,00006b2c表示的是加載的鏡像的類型,通過解析FullImageName獲取,此處為DLL,0c7d3f9c為加載的鏡像所在的目錄。對同一惡意代碼及其變種,如果在運行過程中需加載某個動態鏈接庫,鏡像加載行為不變的首先是加載的鏡像的類型,其次是鏡像所處的系統路徑。
TARGET部分表征鏡像加載操作作用的對象,由于鏡像名可能因惡意軟件隨機命名而改變,故選擇加載鏡像的大小表征所加載的鏡像。
2.3.3 聚類分析
聚類分析分三步,分別對惡意軟件行為序列做復雜度降低、序列映射和聚類。
內核行為序列中會出現大量的重復行為。例如,同樣從文件中讀取256比特的行為,可以一次讀取256比特,也可分256次每次讀取1比特。這些重復行為會對分析精度和分析性能造成影響。參考內核函數使用規律和KIST模型的TARGET和HANDLE塊,可將屬于同一個操作的多個行為合并。
行為序列映射,將代表惡意軟件的行為序列映射到多維向量空間,通過多維空間上的距離計算惡意軟件相似性。自然語言處理研究領域提供里很多文本向量化的模型及算法,本文中選用一個基于n-gram模型和TF-IDF的算法,用于將行為序列向量化并計算行為序列間空間上距離。
聚類過程,依據行為序列空間上距離作為相似性比較的依據。運用層次聚類算法對惡意軟件進行聚類分析。本文選用一個簡單的層次聚類算法。其中數據點集合間的距離計算使用complete linkage算法。
3.1 實驗樣本
實驗選取了來自VirusShare[17]上的3163個樣本,通過VirusTotal[18]在線掃描后,選取卡巴斯基的掃描結果為標簽。如表2所示。

表2 實驗樣本Tab.2 Experimental Samples
3.2 實驗環境
分析主機為一臺聯想一體機,內存為8 G,操作系統為Ubuntu 14.04。分析系統部署在一體機上,使用VirtualBox虛擬機中的Windows XP系統。虛擬機中安裝了部分常用軟件,如Office,Flash,Adobe Reader,QQ等,并預置部分文檔,模擬真實計算機環境。
3.3 對比實驗
對照組選用Rieck、Trinius等人提出的分析框架作為對比。該分析框架用于對惡意軟件用戶模式行為進行聚類分類分析。對照組系統架構如圖4所示。

圖4 對照組系統架構Fig.4 Contrast Experimental Framework
3.4 結果分析
為了客觀衡量聚類分析的結果,本文選用準確率,召回率和F值三個標準。假設分析的總樣本數為n,原始樣本家族為Y,聚類結果簇為C。分別定義準確率P,召回率R和F-measure值F如下:

Maxc為一個聚類結果簇c中,包含最大的樣本類中樣本的數目。Maxy為所有聚類結果簇中,單個結果簇中包含標簽為y的樣本的最大數目。
對比實驗中,實驗組和對照組分析系統分別對樣本數據集進行聚類分析,分析結果如表4所示。由實驗數據可知,基于內核行為分析的實驗組,獲取更高的F值,且聚類結果更緊密。由此可見,本文基于內核行為的分析方法能夠獲取較好的分析結果。

表4 實驗結果Tab.4 Experimental Result
[1] Bayer U, Kruegel C, Kirda E. TTAnalyze: A tool for analyzing malware[M]. na, 2006.
[2] Willems C, Holz T, Freiling F. Toward automated dynamic malware analysis using cwsandbox[J]. IEEE Security & Privacy, 2007, 5(2).
[3] Guarnieri C, Tanasi A, Bremer J, et al. The Cuckoo Sandbox (2012)[J].
[4] Engelberth M, G?bel J, Sch?nbein C, et al. PyBox-A Python Sandbox[C]//Sicherheit. 2012: 137-148.
[5] Koret J. Zero Wine Malware Analysis Tool[J]. 2013.
[6] Huang H D, Lee C S, Kao H Y, et al. Malware behavioral analysis system: TWMAN[C]//Intelligent Agent (IA), 2011 IEEE Symposium on. IEEE, 2011: 1-8.
[7] Seifert C, Steenson R, Welch I, et al. Capture-A behavioral analysis tool for applications and documents[J]. digital investigation, 2007, 4: 23-30.
[8] 杜淑穎. 基于大型數據集的聚類算法研究[J]. 軟件, 2016, 37(01): 132-135
[9] 唐波. 改進的K-means聚類算法及應用[J]. 軟件, 2012, 33(3): 100-104
[10] 鄭文超, 徐鵬. 利用word2vec 對中文詞進行聚類的研究[J]. 軟件, 2013, 34(12): 160-162
[11] 陳磊磊. 不同距離測度的K-Means 文本聚類研究[J]. 軟件, 2015, 36(1): 56-61
[12] 徐步云, 倪禾.自組織神經網絡和K-means 聚類算法的比較分析[J].新型工業化, 2014, 4(7): 63-69. XU Buyun, NI He. Comparative analysis of SOM and K-means clustering[J]. The Journal of New Industrialization, 2014, 4(7): 63-65.
[13] Rieck K, Holz T, Willems C, et al. Learning and classification of malware behavior[C]//International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment. Springer Berlin Heidelberg, 2008: 108-125.
[14] Bayer U, Comparetti P M, Hlauschek C, et al. Scalable, Behavior-Based Malware Clustering[C]//NDSS. 2009, 9: 8-11.
[15] Rieck K, Trinius P, Willems C, et al. Automatic analysis of malware behavior using machine learning[J]. Journal of Computer Security, 2011, 19(4): 639-668.
[16] Trinius P, Willems C, Holz T, et al. A malware instruction set for behavior-based analysis[J]. 2009.
[17] VirusShare. ”VirusShare. com-Because Sharing is Caring.”Internet: http://virusshare.com/, Jan. 15, 2017 [Jan. 15, 2017].
[18] VirusTotal. ”virustotal. ” Internet: https: //www. virustotal. com/, 2017 [Jan. 15, 2017].
Indirect Computing Model with Indirect Formal Method
YE Jing1,2, HUANG Qing-jia1
(1. Institute of Information Engineering, Chinese Academy of Sciences, Beijing 100195, China; 2. University of Chinese Academy of Sciences, Beijing 100190)
Malware analysis has been one of the focuses of security research. In recent years, analysis methods of malware behavior using machine learning and data mining algorithms have been paid great attention by researchers. But at present this kind of method is generally based on the behaviors gained by user mode monitoring techniques. User-mode monitoring techniques are at a high system level and may obtain incomplete malware behavior. This paper proposes a malware clustering method based on kernel level monitoring, monitoring malware in the kernel to obtain kernel function call sequences, extracting kernel behaviors, and using hierarchical clustering algorithm to cluster analysis of kernel behavior sequence. The experiment show that this method can get better results.
Computer software and theory; Malware clustering analysis; Behavior analysis; Kernel
TP393.08
A
10.3969/j.issn.1003-6970.2017.05.001
國家863課題(2015AA017202),北京市科委項目(D161100001216001),中科院先導項目(XDA06010703)
葉菁(1992-),男,在讀碩士研究生,計算機軟件與理論。
黃慶佳,助理研究員,主要研究方向:網絡與軟件安全。
本文著錄格式:葉菁,黃慶佳. 一種基于內核級監測的惡意軟件聚類分析方法[J]. 軟件,2017,38(5):01-06