證券簡稱:天融信 證券代碼:002212
全天候7x24小時服務: 400-777-0777

人工智能安全|AI安全應用:基于代碼語義的惡意代碼同源分析

我們在前文[1]中重點介紹了基于圖像分類的惡意代碼同源分析方法,該方法本質上是根據惡意代碼字節流內容的特征進行分類。然而,這種方法從逆向工程的角度來看不具有可解釋性。

人工智能安全|AI安全應用:基于代碼語義的惡意代碼同源分析

發布時間:2021-11-01
瀏覽次數:4501
分享:

1.引言

我們在前文中重點介紹了基于圖像分類的惡意代碼同源分析方法,該方法本質上是根據惡意代碼字節流內容的特征進行分類。然而,這種方法從逆向工程的角度來看不具有可解釋性。

眾所周知,匯編代碼具有較為鮮明的語法可讀性。如果先把惡意代碼進行反匯編,然后用自然語言處理(Natural Language Processing)技術提取代碼語義特征,再進行同源分析,這樣的方法就容易解釋,這就是本文將介紹的基于代碼語義的同源分析方法。當前,這種方法不僅被用于惡意代碼檢測領域,還被用在代碼克隆搜索、代碼侵權判定等領域。

本文首先介紹了基于代碼語義同源分析的基礎知識;其次介紹了基于代碼語義的同源分析相關工作;最后,給出了基于代碼語義的同源分析技術方案設計,并通過實驗驗證了方案的有效性。

2.基礎知識

基于代碼語義的惡意代碼同源分析的基礎是語義提取。PV-DM和TextCNN是NLP領域有關代碼語義提取的兩種常見的模型, 說明如下:

(1)句向量的分布式記憶模型(Distributed Memory Model of Paragraph Vectors,PV-DM)

在PV-DM模型中,詞向量和句向量相拼接,用來預測文本中的下一個詞,通過在句子上的窗口滑動,使句向量記憶句子中所有詞的上下文關系。在代碼語義提取中使用PV-DM模型,能簡單有效地解決向量長度不一致問題(圖1).

圖1 PV-DM模型

(2)TextCNN模型

TextCNN通過拼接詞向量將文本轉化成矩陣,然后應用卷積神經網絡發揮深度學習的優勢。相比于一般的卷積神經網絡模型,TextCNN在卷積層中應用多個不同尺寸的卷積核(圖2)。TextCNN具有網絡結構簡單、訓練速度快并且效果較好等優點。但是,在嵌入層中采用預訓練的詞向量模型(如Word2Vec)進行語義提取,因而會有長度不一致的問題。

圖2 TextCNN模型

3.相關工作

Zhang等[2]圍繞勒索軟件的家族分類問題,提出一種特征提取方法,該方法將樣本指令序列轉換為不同n值時的n-gram集合,計算每個n-gram的TF-IDF(term frequency–inverse document frequency)并選擇家族中TF-IDF值較高的t個n-gram作為特征。然而,n-gram特征僅僅反映序列化特征,不能提取代碼文本的語義信息。

陳等提出一種基于代碼語義的惡意代碼同源判定方法[3],利用Word2Vec獲取指令的詞向量,并利用TextCNN進行分類。Fang等人則采用了FastText模型提取JavaScript代碼的詞向量[4],FastText將多個單詞及其n-gram作為輸入,直接輸出模型判定的類別。

Ding等提出一種匯編代碼的語義模型-Asm2Vec[5],用于提取指令代碼的語義信息。該方法基于句向量的分布式記憶模型PV-DM設計,并考慮了匯編代碼格式的適應性問題。由于控制流程圖能在一定程度上反映代碼的動態順序信息,一些研究工作先構建代碼的控制流程圖,再利用圖匹配、圖神經網絡(Graph Neural Network,GNN)等技術評估代碼相似性。GNN雖然性能比傳統的圖匹配更好,但在語義學習上仍有不足。為此,Yu等提出一種同時捕捉代碼的語義、結構以及順序的方法[6],利用Bert模型進行預測訓練以獲取語義信息,利用消息傳遞神經網絡(Message Passing NeuralNetwork,MPNN)獲取結構信息,利用Resnet模型提取順序信息。

4.方案設計

基于代碼語義的同源分析方案主要由語義特征提取和同源分類訓練兩大部分構成。具體處理流程上,主要包括了如下步驟(圖3)

第一步:數據準備。收集樣本并標注類別,構建訓練數據集;

第二步:反匯編。對可移植可執行的惡意代碼文件進行反匯編,獲得匯編代碼;

第三步:預處理。利用NLP技術對匯編進行分詞、關鍵詞篩選等預處理;

第四步:語義提取。構建語義模型,使用訓練數據進行訓練,并提取出每個樣本的語義特征。本文使用了PV-DM以及TextCNN中的Word2Vec作為語義提取模型。

第五步:同源分類。根據語義特征,采用相似性度量或聚類/分類算法分析同源性。本文使用了DNN、KMeans聚類、CNN等技術。

圖3 基于代碼語義的同源分析流程

5.實驗分析

本節通過實驗驗證兩種基于代碼語義模型的同源分析方法。實驗所用樣本來源于網絡,包括Application、Backdoor、Generic、Trojan、Variant、Virus及Worm等類別(表1)。

表1. 實驗數據集

實驗一:基于PV-DM模型的同源分析

圖4為PV-DM語義模型的訓練過程。提取出256維的語義向量,應用神經網絡進行分類,按照比例4:1劃分訓練集和測試集,總體準確率為0.74。另外,對提取的語義特征采用KMeans算法進行了聚類,測試準確率同樣是0.74。

圖4 基于 PV-DM的DNN模型訓練及測試

圖5 基于PV-DM的KMeans聚類(Accuracy=0.74)

實驗二:基于TextCNN的同源分析

圖6為樣本中指令數量的統計,平均指令數量為28,最小為1(195個樣本),最大為74(1個樣本)。構建TextCNN模型,設置不同大小的一維卷積核,將特征圖最大池化并拼接,將數據集按照比例4:1劃分為訓練集和驗證集,如圖7所示,測試準確率為0.65左右。

圖6 指令數量統計

圖7 TextCNN訓練及測試

6.總結

本文通過實驗證明了基于代碼語義的惡意代碼同源分析方法具備一定的可行性。然而,PV-DM、TextCNN方法直接應用于提取匯編代碼語義時,完全將匯編代碼類比成純文本,語義提取的準確性略低。文獻[5]是針對匯編代碼而設計的語義提取方法,能夠更加精確地提取語義信息,后續將圍繞此方法作進一步研究。

參考文獻

[1]智能安全研究組 人工智能安全|AI安全應用|基于圖像分類的同源分析. 2021.10.15

[2]Hanqi Zhang, Xi Xiao.Classification of ransome families with machine learning based on N-gram ofopcodes[J]. Future generation computer system, 2019(90):211-221.

[3]陳涵泊,吳越,鄒福泰 . 基于 Asm2Vec 的惡意代碼同源判定方法 [J]. 通信技術 ,2019,52(12):3010-3015.

[4]Yong Fang, Cheng Huang.Detecting malicious JavaScript code based on semantic analysis[J].Computer&Security, 2020(93):1-9.

[5]Steven H H Ding, Benjamin C MFung. Asm2Vec: Boosting Static Representation Robustness for Binary CloneSearch against Code Obfuscation and Compiler Optimization[C]. S&P,2019:1-18.

[6]Zeping Yu, Rui Cao, Qiyi Tang,et al. Order Matters:Semantic-Aware Neural Networks forBinary Code Similarity Detection[C]. AAAI, 2020:1-8.

版權聲明

轉載請務必注明出處。

版權所有,違者必究。

關鍵詞標簽:
天融信 人工智能安全 AI安全應用
客戶服務熱線

400-777-0777
7*24小時服務

聯系郵箱

servicing@topsec.com.cn

掃碼關注
天天视频在线,影音先锋在线电影,窝窝视频成人影院午夜在线,在线电影导航