梅振輝 方歡



摘 要:惡意代碼已經成為威脅網絡安全的重要因素之一,安全人員一直致力于研究如何有效檢測惡意代碼,在動態分析方法中可以通過程序的API調用序列進行分析。通過對惡意軟件的API調用序列進行編碼處理,可以獲得圖片格式的數據,進而使用卷積神經網絡訓練出分類模型,從而實現對惡意軟件進行分類,獲得較高的準確率,針對阿里云天池上的數據集進行實驗驗證,實驗使用有向圖編碼方式,采用不同的卷積神經網絡架構,對比不同方法的準確性。
關鍵詞:卷積神經網絡;惡意代碼分類;API調用序列
中圖分類號:TP309? 文獻標識碼:A? 文章編號:1673-260X(2023)02-0039-05
1 引言
惡意軟件是當今互聯網面臨的主要安全威脅之一,準確地檢測出惡意軟件,并且把惡意軟件進行準確分類對于防范網絡攻擊很重要。惡意軟件檢測技術主要分為靜態分析技術和動態分析技術[1],靜態分析技術主要通過語法、語義和控制流來判斷是否為惡意代碼,動態分析技術是通過實際執行代碼,觀察程序的執行是否有危害計算機操作的行為來判斷是否是惡意程序。惡意代碼會有一系列的對抗技術來阻止安全人員對其檢測分析,其中包括加殼、代碼混淆技術和反虛擬技術。靜態分析技術容易受到對抗技術影響,在動態分析技術中可以通過可執行程序的API(Application Programming Interface)序列進行分析,惡意代碼在執行某些惡意行為時,要通過調用一系列的API來完成,不同的惡意行為需要調用不同的API序列,因此正常軟件和惡意軟件所執行的API序列特征有很大差異,不同類型的惡意軟件執行的API序列特征也有差異。同類惡意家族類型的軟件,產生的API序列具有相似的行為,所以將API序列可視化為圖像之后也具有相同的紋理、結構等特征。此時,針對惡意軟件分類的問題,可以轉換為圖像分類問題,可以使用機器學習算法和深度學習算法的分類器進行分類。本文使用有向圖將API序列進行編碼為圖像格式的數據,然后使用了四種經典的卷積神經網絡進行訓練分類,準確地分析程序是否為惡意軟件以及惡意程序的類型。
本文結構如下,第二節介紹了相關工作,第三節介紹了我們的研究方法,在第四節中介紹了本文的實驗和結果分析,最后一節進行了總結和展望。
2 相關工作
對惡意軟件的檢測,有些研究者研究把惡意的可執行程序轉化為圖像格式的數據,然后使用深度學習和群體智能算法對惡意軟件進行分類[2]。本文主要研究如何通過使用可執行軟件的API序列來對惡意軟件進行分類。
對于通過使用API調用序列來判斷惡意軟件的類型的工作有很多,主要的思想就提取每種惡意軟件類型中的數據信息,對提取的數據信息采用不同的編碼方式進行編碼,然后使用機器學習或者深度學習建立分類器,從而實現對惡意代碼進行分類。Xu等人最早提出了在windows平臺上為已知病毒和可疑代碼構建API調用序列[3],通過序列對比進行相似性測量,判斷程序是否為惡意代碼。不同于傳統的基于序列挖掘和圖匹配檢測惡意代碼,為了對抗惡意樣本的反檢測行為,趙翠镕等人設計提出了一種基于程序語義API依賴圖的動態分析方法[4],使用隨機森林進行分類。不同于其他文獻只使用API調用序列特征進行學習,韓蘭勝等人提出使用可執行程序運行時API函數調用名、API函數的輸入參數以及兩種特征的組合作為特征[5],利用信息增益選取關鍵特征,最后使用決策樹進行分類,效果要高于僅使用函數名作為特征的方法。Acarman等人使用了n-gram提取特征作為向量[6],用以發現代表惡意軟件行為的特征,然后使用機器學習分類器訓練建立惡意軟件分類模型。Ki等人提出通過使用提取的API調用序列模式和關鍵API調用序列[7],利用了DNA序列比對算法,可以精確地檢測未知惡意軟件或惡意軟件變體。Schofield等人通過提取API調用序列的TF-IDF向量和分類向量[8],使用一維卷積神經網絡進行訓練分類。Sun等人提出使用Word2Vec模型訓練語言模型對提取序列中的名稱進行向量化[9],使用時間卷積網絡(TCN)訓練分類模型。
文獻中提出的方法都使用阿里云天池中的惡意代碼數據集進行驗證。Chai等人采用了一種LGMal[10]惡意軟件檢測框架結合了堆疊卷積神經網絡和圖卷積網絡,使用堆疊卷積神經網絡學習API調用序列中的局部語義特征,使用圖卷積網絡用于學習API調用語義圖結構信息以捕獲全局語義特征。Xu等人提出一種基于卷積神經網絡(CNN)和長短期記憶(LSTM)網絡的混合深度學習結構[11],將API的調用順序與其他統計特征相結合,得到的向量信息通過卷積輸入LSTM單元進行訓練。Zhang等人提出了一種基于譜的有向圖網絡(SDGNet)架構[12]來對有向圖進行分類。王天歌使用了兩種方法[13]訓練分類模型,一種使用n-gram算法對API序列進行特征提取,然后用隨機森林進行訓練模型,另一種使用詞向量的方法對API序列進行向量化表示提取特征,最后用卷積神經網絡學習進行訓練[14]。
現有的惡意軟件API分類的文獻中的編碼方式主要提取不同API名稱的數量信息,或者使用n-gram和詞向量提取特征,其中使用數量的編碼方式,并不能包含序列中的行為信息,使用n-gram和詞向量的方式也只能夠包含惡意執行序列的部分行為信息。針對以上的問題,本文提出了使用有向圖編碼的方式,對API執行的序列編碼為圖像格式,使用經典的卷積神經網絡進行訓練,可以充分利用卷積神經網絡提取API執行序列中的行為信息,從而對不同種類的惡意軟件進行分類。
3 研究方法
卷積神經網絡(Convolutional Neural Network)是目前基于深度學習的計算機視覺領域中重要的研究方向之一,因為其具有強大的特征學習與特征表達能力,被廣泛應用于圖像分類和分割、目標檢測等的應用中。卷積神經網絡最初被LeCun提出用于手寫字識別,CNN有多層結構組成:包括卷積層、非線性層、池化層和全連接層。卷積層和全連接層有參數,池化層和非線性層沒有參數。
LeNet[15]是Yan LeCun在1998年引入的用于手寫數字識別的網絡。他的網絡模型共有7層,包含了三個卷積層、兩個池化層、一個輸入層、輸出層,其網絡如下圖1所示。
AlexNet[16]是由Hinton研究組于2012年提出的一種模型。其主要貢獻在于:(1)采用ReLU作為非線性激活函數,緩解了梯度消失問題;(2)使用Dropout方法用于防止過擬合;(3)通過參數優化策略增強CNN的學習能力;(4)使用CUDA加速深度卷積網絡的訓練,利用GPU強大的并行計算能力處理神經網絡訓練時大量的矩陣運算。ResNet[17]由何凱明等人在2015年提出,解決了一般網絡模型增加卷積層數,造成誤差率上升的問題。MobileNet[18]由Google團隊在2017年提出,核心思想是使用深度可分離卷積代替標準的卷積操作,它是一個輕量級的深度神經網絡,計算復雜度也較低,適合移動和嵌入式應用。
在本文中,我們將使用以上四種結構的卷積神經網絡,對經過有向圖編碼后的惡意代碼數據進行分類,本文的實驗框架如下圖2所示。
4 實驗和結果分析
4.1 數據集描述
本次試驗使用阿里云天池大數據平臺上的公開數據集[14],數據集提供的數據來自windows可執行程序經過沙箱程序模擬運行后的API指令序列,數據經過脫敏處理,樣本數據收集于互聯網,其中惡意文件的類型有勒索病毒、感染型病毒、木馬程序、挖礦程序、DDOS木馬等。天池平臺提供了訓練集和測試集樣本,其中訓練集共有13887個數據樣本,具體每種樣本信息如表1所示。其中因為測試樣本沒有提供標簽,所以在本次試驗中,我們只使用13877個數據樣本,把這些樣本劃分訓練集和測試集,我們采用了5折交叉驗證,驗證對比了不同CNN網絡架構訓練的兩種編碼方法的準確率。
4.2 數據預處理
首先我們對Windows API具有相同含義但是函數名不同的API進行處理,例如CopyFileW、CopyFileExW和CopyFileA三個函數有相同的含義,但是分別以W、ExW和A結尾,是因為計算機系統對于不同的編碼提供的API不同,以W結尾的API主要對UNICODE編碼使用,Ex表示拓展的API函數,A結尾主要是針對ASCII編碼格式使用。對于這種情況,如果把這三個API都作為一個單獨的特征,會使生成的圖像數據很稀疏,因此,對于這三個API,我們把它們統一用CopyFile替換,對于其他的也類似處理,這樣可以有效地減少特征空間。
本節介紹如何把序列數據轉化為圖像格式的數據,為了實現這一目標,我們要解決兩個問題,第一問題,是如何把API序列轉為圖像,第二個問題,是每個API序列的長度不固定,如何轉化為固定大小的矩陣?第一個問題的解決方法是,通過記錄相鄰的API名稱在序列中出現的次數,構成有向圖矩陣,矩陣中的每個數值可以作為一個像素值,同時用圖像的形式存儲API序列,圖的長度由所有不同的API名稱的數量決定,所以使用有向圖的形式存儲為圖像可以容納任意長度的API序列,第二個問題也得以解決。因為數據集中的程序執行的不同線程之間沒有順序關系,所以首先我們將每個文件子線程順序調用的序列連接在一起,然后連接不同線程之間序列,組成一條API序列,對于這個序列,提取所有序列中所有的API名稱組成字母表,通過把序列轉為有向圖向量,可以獲得一個圖像格式的數據。提取兩種序列特征,一種是提取兩個相鄰API序列,構成一個有向圖組成圖像格式數據,另一種是分別從API序列中提取間隔為1、2、3的三個相鄰的序列組成3通道的圖片格式。
為了便于讀者理解,我們以字母表為{A,B,C,D,E}中構成的序列AABDDCDCBD進行說明,他們被編碼為類圖像格式如下圖3和圖4所示。本文的數據處理以及模型訓練的代碼公開在https://github.com/meiief/Malicious-code-classification。
4.3 實驗環境
為了更加高效和穩定地進行模型搭建和模型參數的訓練,本文采用了基于pytorch的深度學習框架,實驗具體的硬件環境和軟件環境如表2所示。對每次訓練我們設置訓練最大迭代次為50輪,并使用早停技術,當連續5次準確度沒有提高時,停止訓練。對于訓練神經網絡使用的參數,我們采用隨機梯度下降(stochastic gradient descent)優化器優化器,動量為0.5,學習率參數設置為0.001。
4.4 結果分析
對于每種方法的試驗結果準確度如下表3所示,為了直觀展示,我們繪制了圖5。由圖可以清楚地發現,在使用3通道的編碼方法訓練的結果中,四種經典卷積神經網絡中三種網絡的準確度比1通道的準確度高,這是因為3通道的編碼方式提取了更多的行為信息,但是同時也耗費了更多的訓練時間和內存資源。
5 總結
本文通過把API序列編碼為圖像格式的數據,提取了API序列中更多的行為信息,把惡意代碼分類問題轉化為圖像分類問題,采用了四種經典的卷積神經網絡架構進行訓練模型,并使用真實的數據集進行試驗,得到了較好的結果。其中對API序列進行三通道編碼的準確度明顯高于1通道的編碼,這是因為3通道包含的行為特征更多,同時訓練的時間也更長,對于未來的研究,我們將計劃考慮數據集中的數據特征,如關鍵每個出現的次數、每個程序的線程數量等,同時使用更有效的編碼方式,使得編碼后的數據更多包含API序列中的行為,這對提高準確度可能會更有效。
——————————
參考文獻:
〔1〕汪嘉來,張超,戚旭衍.Windows平臺惡意軟件智能檢測綜述[J].計算機研究與發展,2021,58(05):977-94.
〔2〕JIN X, XING X, ELAHI H, et al. A malware detection approach using malware images and autoencoders; proceedings of the 2020 IEEE 17th International Conference on Mobile Ad Hoc and Sensor Systems (MASS), F, 2020 [C]. IEEE.
〔3〕XU J-Y, SUNG A H, CHAVEZ P, et al. Polymorphic malicious executable scanner by API sequence analysis; proceedings of the Fourth International Conference on Hybrid Intelligent Systems (HIS'04), F, 2004 [C]. IEEE.
〔4〕趙翠镕,方勇,劉亮.基于語義API依賴圖的惡意代碼檢測[J].四川大學學報:自然科學版,2020,57(03):488-94.
〔5〕韓蘭勝,高昆侖,趙保華.基于API函數及其參數相結合的惡意軟件行為檢測[J].計算機應用研究,2013,30(11):3407-10.
〔6〕PEKTAA, ACARMAN T. Malware classification based on API calls and behaviour analysis [J]. IET Information Security, 2018, 12(02): 107-17.
〔7〕KI Y, KIM E, KIM H K. A novel approach to detect malware based on API call sequence analysis [J]. International Journal of Distributed Sensor Networks, 2015, 11(06): 659101.
〔8〕SCHOFIELD M, ALICIOGLU G, BINACO R, et al. Convolutional neural network for malware classification based on API call sequence; proceedings of the Proceedings of the 8th International Conference on Artificial Intelligence and Applications (AIAP 2021), F, 2021 [C].
〔9〕SUN J, LUO X, GAO H, et al. Categorizing malware via a Word2Vec-based temporal convolutional network scheme[J]. Journal of Cloud Computing, 2020, 9(01): 1-14.
〔10〕CHAI Y, QIU J, SU S, et al. LGMal: A joint framework based on local and global features for malware detection; proceedings of the 2020 International Wireless Communications and Mobile Computing (IWCMC), F, 2020 [C]. IEEE.
〔11〕XU A, CHEN L, KUANG X, et al. A hybrid deep learning model for malicious behavior detection; proceedings of the 2020 IEEE 6th Intl Conference on Big Data Security on Cloud (BigDataSecurity), IEEE Intl Conference on High Performance and Smart Computing,(HPSC) and IEEE Intl Conference on Intelligent Data and Security (IDS), F, 2020 [C]. IEEE.
〔12〕ZHANG Z, LI Y, DONG H, et al. Spectral-based directed graph network for malware detection [J]. IEEE Transactions on Network Science and Engineering, 2020, 8(02): 957-70.
〔13〕王天歌.基于API調用序列的Windows平臺惡意代碼檢測方法[D].北京:北京交通大學,2021.
〔14〕CLOUD Alibaba. Alibaba Cloud Malware Detection Based On Behaviors [Z]. 2018.
〔15〕LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition [J]. Proceedings of the IEEE, 1998, 86(11): 2278-324.
〔16〕KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks [J]. Advances in neural information processing systems, 2012, 25.
〔17〕HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition; proceedings of the Proceedings of the IEEE conference on computer vision and pattern recognition, F, 2016 [C].
〔18〕HOWARD A G, ZHU M, CHEN B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications [J]. arXiv preprint arXiv:170404861, 2017.
收稿日期:2022-09-22
通訊作者:方歡(1982-),女,安徽池州人,博士,碩士生導師,教授。研究方向:Petri網理論與應用、行為輪廓、變化挖掘、過程挖掘。
基金項目:國家自然科學基金(61902002)