◆周顯春 史路遙
基于TensorFlowOnSpark分布式平臺的惡意代碼檢測方法
◆周顯春 史路遙
(三亞學院信息與智能工程學院 海南 572022)
針對大部分惡意代碼檢測技術在檢測時存在檢測精度與實時性、魯棒性之間的矛盾,提出基于TensorFlowOnSpark分布式平臺的惡意代碼檢測方法。在TensorFlowOnSpark平臺上二次開發(fā),運用RNN+ LSTM提取有效特征,利用CNN完成分類檢測,改善了惡意代碼檢測時的實時性和精度,增強了檢測效果的魯棒性。實驗對比結果顯示:與其他檢測方法相比,該方法檢測效果大幅提升并且可行性好,減少檢測時間約6分鐘,提升檢測效果超過40%。
深度學習;TensorFlowOnSpark;惡意代碼檢測;精度;實時性;魯棒性
近年來,反惡意軟件行業(yè)已擁有一個組織良好的市場,不僅吸引了大量資金投入,而且大量企業(yè)、研究機構開始研究新的惡意代碼檢測技術和開發(fā)出新的應用產(chǎn)品。目前,大量含有惡意代碼的數(shù)據(jù)和文件需要檢測是惡意代碼檢測技術面臨的主要挑戰(zhàn)之一。例如,微軟需要在全球超過1.6億臺計算機上實時檢測包含惡意代碼的軟件產(chǎn)品,每月檢查超過7億臺計算機[1]。面對每日產(chǎn)生數(shù)以千萬計的數(shù)據(jù)點,快速而有效地找到惡意代碼典型特征非常有研究意義。為了逃避檢測,惡意代碼開發(fā)者會引入加密、變形、多態(tài)等變形技術[2],這造成了大量含有惡意代碼的文件涌現(xiàn)。如果分析這些惡意代碼,就會發(fā)現(xiàn)其中的大多數(shù)惡意代碼的功能結構相同,屬于同源惡意代碼[3]。
目前,惡意代碼檢測過程可以分為特征提取、特征檢測兩個階段[4],國內外學者分別對此進行了比較深入的研究。特征提取,根據(jù)提取特征是靜態(tài)、動態(tài)特征還是靜態(tài)、動態(tài)的組合特征,分別采用靜態(tài)技術、動態(tài)技術及混合技術。靜態(tài)技術主要采用IDA、CWSandbox靜態(tài)反匯編工具提取API調用序列[5]、N-Gram[6]、紋理熵值圖[7]等靜態(tài)特征。文獻[1]和文獻[8]分別運用機器學習、深度學習提取靜態(tài)單一特征進行檢測,文獻[9]把紋理、Opcode和API特征組合分析,雖然檢測效果提高了,但是檢測效果缺乏健壯性和檢測數(shù)據(jù)量太少;與靜態(tài)技術相比,動態(tài)技術比較復雜,文獻[10]在用虛擬的沙箱環(huán)境中對惡意代碼模擬運行特征進行分析,檢測效果提升了,但分析時間也變長了。為了彌補靜態(tài)或動態(tài)技術的不足,文獻[11]同時提取靜態(tài)和動態(tài)特征,盡可能完整刻畫惡意代碼的畫像,提高了檢測精度,但是,隨著惡意代碼類型和包含惡意代碼的文件量增多,檢測實時性得不到保證。
以上方法都未解決惡意代碼檢測技術在檢測時存在檢測精度與實時性、魯棒性之間的矛盾。本研究通過二次開發(fā)TensorFlowOnSpark[12]分布式計算框架,提出RNN+ LSTM+CNN惡意代碼特征提取、檢測模型設計,充分利用了RNN+ LSTM智能提取功能、卷積神經(jīng)網(wǎng)絡CNN較好的分類預測性能和Spark平臺的迭代計算優(yōu)勢,改善惡意代碼檢測實時性和精度,增強了檢測效果的魯棒性。
在TensorFlowOnSpark分布式平臺上,利用深度學習方法來對惡意軟件進行檢測和分析,模型設計如圖1所示。
該模型分為惡意代碼特征提取和分析與預測兩部分。在惡意代碼特征提取階段,先把數(shù)據(jù)集提交到Cuckoo Sandbox沙箱中模擬運行并獲取惡意代碼的API調用序列運行狀態(tài)構成的日志文件,接著在TensorFlowOnSpark平臺上利用RNN+LSTM提取日志文件中惡意代碼的有效特征并轉換成圖像[13],然后建立惡意代碼特征圖像庫。在惡意代碼檢測與分析階段,通過訓練數(shù)據(jù)訓練基于TensorFlowOnSpark 的CNN[8]算法檢測模型,反復調參和評估優(yōu)化,確定最優(yōu)檢測模型并檢測效果。
圖1 基于TensorFlowOnSpark的惡意代碼檢測模型設計
Cuckoo Sandbox[14]是跨Windows、Linux、macOS和Android的虛擬化環(huán)境,開源和模塊化,能夠自動對EXE、辦公文檔、pdf文件、Email以及惡意網(wǎng)站進行惡意代碼軟件分析,能夠跟蹤API調用、文件的普通行為和轉儲、分析網(wǎng)絡流量,即使使用SSL/TLS對數(shù)據(jù)加密[15]也不影響正常使用。現(xiàn)在,該軟件最新版本2.0.7,支持Python3進行二次開發(fā)。
本實驗搭建了一個基于Cuckoo Sandbox管理軟件的分布式虛擬環(huán)境,由4臺計算機組成,1臺主機3臺客戶機,CPU最大頻率4.4 GHz,其他重要配置參數(shù)如表1所示。
在管理端的主機運行核心組件,它管理、接受客戶機的分析報告,在客戶機群則創(chuàng)建了一個惡意代碼運行的隔離環(huán)境,讓惡意軟件樣本在其中得到實際安全的執(zhí)行、分析并生成病毒分析報告。
表1 Cuckoo Sandbox集群的配置
機器名及角色系統(tǒng)內存容量處理器數(shù)目 MasterWindows108G2 slave1、slave2、slave3CentOS 83*4G2
TensorFlowOnSpark是由Yahoo開發(fā)的,在Yahoo私有云中對Hadoop集群進行大規(guī)模分布式深入學習。它融入、拓展了TesnorFlow的功能,能夠輕松部署機器學習算法和支持Python3,不僅代碼簡潔,還能上云部署。本文的實驗環(huán)境配置情況與表1的配置基本相同。
在RNN中,它有一個特殊循環(huán)結構或存儲單元,是保留以前輸入或狀態(tài)的信息隱藏層,它的輸出取決于前面的輸入,為了解決RNN在反向傳播過程中要不斷地傳播梯度,Gers等人提出LSTM[16]。因此,本惡意代碼檢測系統(tǒng)的特征提取部分采用RNN+LSTM結構,有輸入層x、普通隱藏層h1,兩個LSTM層h2和h3以及一個輸出層y,在訓練階段,使用了Dropout[17]方法避免過擬合現(xiàn)象。其結構設計如圖2前部分所示。輸入向量x代表在日志文件上提取的動作序列集,經(jīng)過提取有效特征后轉換為1-hot向量,標識單個API動作,經(jīng)過RNN+LSTM方法進一步處理,轉換成RGB圖像[7]并作為檢測部分的輸入特征。
檢測部分的CNN,包括輸入層(1個)、濾波器(2個)、卷積池層(2個)、連接層(1個)和輸出層(1個)組成,其結構如圖2后部分所示。第一卷積層濾波器10維輸入圖像內核。每層濾波器都把數(shù)據(jù)維數(shù)減少為原來的二分之一。為了減少計算量,每個池層大小設置減小為輸入的1/2,步幅為2。因為預測輸出結果為數(shù)值,需要使用sigmoid函數(shù)計算惡意軟件出現(xiàn)的概率p。
圖2 RNN+LSTM+CNN模型設計
(1)MIST數(shù)據(jù)集,作為訓練集,由Marco Ramilli提供。它包含API 1292 Samples、Crypto 2024 Samples、Locker 434 Samples,Zeus 2014 Samples等4個不同系列的組合。整個數(shù)據(jù)集包括靜態(tài)和動態(tài)特征JSON文件,主要包括CWSandbo交互式反匯編工具從二進制文件中提取的各種元數(shù)據(jù)信息,如函數(shù)調用、字符串和動態(tài)行為特征。
(2)測試數(shù)據(jù)集,Windows平臺上惡意樣本。主要從https://virusshare.com以及www.malware-traffic-analysis.net兩個公開網(wǎng)站下載Windows惡意PE文件集;另外從360官方應用商城下載正常樣本集,一共12360個樣本[8]。
先用N-Gram方法對樣本提取特征后使用TF-IDF處理,接著測試支持向量機、XGBoost、MLP以及有Spark平臺情況下訓練模型預測效果。為了對比檢測效果,在有無Spark平臺下,分別利用RNN+ LSTM提取日志文件中惡意代碼的有效特征并轉換成圖像和使用CNN訓練并檢測惡意代碼檢測效果。模型性能量化評估指標使用Accuracy,Recall和F1-score。檢測結果如表2所示。
由表2可以發(fā)現(xiàn)在此實驗環(huán)境下,檢測效果最好的模型是CNN和基于TensorFlowOnSpark的CNN,并且檢測效果比較穩(wěn)定。把這兩種檢測方法進行對比,基于分布式架構的方法可以有效降低訓練時間,時間節(jié)省可以達到6分鐘。
表2 不同條件下檢測算法的檢測效果
特征提取方法檢測算法SparkAcurrayRecallF1-score檢測算法訓練時間 2-GramSVM無0.9120.9070.9095m34s XGBoost0.9510.9480.95912m45s MLP0.9350.9320.9337m13s RNN+ LSTMCNN0.9620.9460.95320m16s 2-GramSVM有0.9130.9100.9113m13s XGBoost0.9570.9540.9559m25s MLP0.9320.9360.9336m31s RNN+ LSTMCNN0.9680.9570.96214m53s
為檢測模型自我學習能力,需與其他產(chǎn)品比較對未知惡意代碼的檢測能力。隨機取樣了測試數(shù)據(jù)集中1000個惡意代碼文件,選取兩款殺毒軟件與本研究模型檢測效果相對比。其檢測效果如表3所示。
表3 與兩款殺毒軟件檢測效果對比
檢測算法Recall TotalDefense0.556 Malwarebytes0.486 TensorFlowOnSpark+RNN+ LSTM+CNN0.921
由表3可知,對于沒有參與模型訓練的測試文件,基于TensorFlowOnSpark的RNN+LSTM+CNN模型的惡意代碼檢測率高達92.1%以上,遠遠高于其他殺毒軟件。
針對大部分惡意代碼檢測技術在檢測時存在檢測精度與實時性、魯棒性之間的矛盾,通過在TensorFlowOnSpark分布式計算框架上二次開發(fā),充分利用了神經(jīng)網(wǎng)絡的自我學習、較好的分類預測能力和Spark的基于內存快速迭代計算優(yōu)勢,改善惡意代碼檢測的實時性和精度,增強了檢測效果的穩(wěn)定性。實驗結果證實,與基于Spark平臺的MLP、XGBoost、SVM、RNN檢測方法對比,該方法檢測精度、實效性大幅提升、效果穩(wěn)定,而且可行。因為實驗數(shù)據(jù)不足,并沒有完全體現(xiàn)分布式計算的優(yōu)勢,而且訓練數(shù)據(jù)的惡意代碼的類型少、數(shù)據(jù)不平衡處理、惡意代碼類別識別都是下一步研究方向。
[1]陸中州. 基于機器學習的惡意軟件分類研究[D]. 蘭州:蘭州大學,2018.
[2]周梅紅,胡曉雯,王娟,等. 惡意代碼多態(tài)變形技術的研究[J]. 計算機與數(shù)字工程,2008,036(010):149-153.
[3]錢雨村,彭國軍,王瀅,等. 惡意代碼同源性分析及家族聚類[J]. 計算機工程與應用,2015(18):76-81.
[4]王楠楠. 無線網(wǎng)絡中基于CDS的拓撲控制算法研究[D]. 曲阜:曲阜師范大學,2011.
[5]Ding,Yuxin & Siyi,Zhu. Malware detection based on deep learning algorithm[J].Neural Computing and Applications,2019,31(2):461-472.
[6]Nix R,Zhang J. Classification of Android apps and malware using deep neural networks[C].International Joint Conference on Neural Networks,2017,1871-1878.
[7]蔣晨,胡玉鵬,司凱,等.基于圖像紋理和卷積神經(jīng)網(wǎng)絡的惡意文件檢測方法[J].計算機應用,2018:1-6.
[8]傅依嫻,蘆天亮,馬澤良. 基于One-Hot的CNN惡意代碼檢測技術[J]. 計算機應用與軟件,2020,037(001):304-308,333.
[9]Liu LIU,Bao-sheng WANG,Bo YU,Qiu-xi ZHONG.Automatic malware classification and new malwaredetection using machine learning[J].Frontiers of Information Technology & Electronic Engineering,2017,18(9):1336-1347.
[10]Gui X,Liu J,Chi M,et al. Analysis of Malware Application Based on Massive Network Traffic[J].China Communications,2016,13(8):209-221.
[11]Kolosnjaji B,Zarras A,Lengyel T K,et al. Adaptive Semantics-Aware Malware Classification[C]//International Conference on Detection of Intrusions and Malware,and Vulnerability Assessment. Springer,Cham,2016.
[12]yahoo.https://github.com/yahoo/TensorFlowOnSpark/wiki/GetStarted.
[13]Tobiyama S,Yamaguchi Y,Shimada H,et al. Malware Detection with Deep Neural Network Using Process Behavior[C].Computer Software and Applications Conference,2016:577-582.
[14]Cuckoo Foundation. Cuckoo Sandbox[EB/OL].https://cuckoosandbox.org/.
[15]田小娣. Word和PDF文檔的惡意性檢測算法研究[D].西安:西安電子科技大學.
[16] Gf A,Schmidhuber J,F(xiàn) Cummins . Learning to Forget: Continual Prediction with LSTM[C]. Istituto Dalle Molle Di Studi Sull Intelligenza Artificiale. Istituto Dalle Molle Di Studi Sull Intelligenza Artificiale,1999.
[17] Hinton G E,Srivastava N,Krizhevsky A,et al.Improving neural networks by preventing co-adaptation of feature detectors[J].Computer Science,2012,3(4),212-223.
三亞市院地科技合作資助項目(2019YD26);海南省自然科學基金資助(620MS064);三亞學院2019年度一流本科課程建設教學專項研究項目:人工智能課程群教學團隊(syxyylbkkc01-10)