沈元,嚴(yán)寒冰,夏春和,韓志輝
(1.北京航空航天大學(xué) 計(jì)算機(jī)學(xué)院,北京 100083; 2.國家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心,北京 100029)
克隆檢測(cè)主要包括源代碼檢測(cè)及二進(jìn)制代碼檢測(cè),廣泛應(yīng)用于漏洞發(fā)現(xiàn)、代碼克隆檢測(cè)、用戶端崩潰分析等。隨著科技的日益發(fā)展,大量的物聯(lián)網(wǎng)設(shè)備投入使用,惡意代碼分析變得越來越重要。據(jù)Gartner分析在2017年時(shí)全球已經(jīng)有84億物聯(lián)網(wǎng)設(shè)備投入使用,比2016年增長(zhǎng)31%,2020年達(dá)到204億[1]。而物聯(lián)網(wǎng)的快速發(fā)展,導(dǎo)致各種網(wǎng)絡(luò)攻擊及惡意代碼也隨之增多。因此,惡意代碼分析變得十分迫切。
同時(shí),由于針對(duì)企業(yè)或政治動(dòng)機(jī)的高級(jí)持續(xù)性威脅(APT)攻擊的快速增長(zhǎng),APT攻擊已經(jīng)成為網(wǎng)絡(luò)安全領(lǐng)域的熱門話題,這需要安全從業(yè)者快速分析惡意軟件之間的同源性來確定APT攻擊背后的群體。當(dāng)獲得新的惡意代碼時(shí),試圖檢測(cè)其是否是通過其他惡意代碼的源代碼進(jìn)行編譯得到的[2]。眾所周知,同家族樣本或同類型樣本之間存在大量共享代碼庫。
但是出于不同目的,APT組織包含不同族和不同類型的惡意代碼,如Duqu、Stuxnet和Flame屬于同一個(gè)APT組織[3-7]。大多數(shù)惡意軟件研究人員致力于分析、檢測(cè)、家族分類等,但這些努力無法從根本上解決惡意軟件的同源性識(shí)別問題。因此,安全從業(yè)者需要更加關(guān)注惡意軟件的同源性分析,并發(fā)現(xiàn)不同惡意軟件之間的同源性,進(jìn)而挖掘攻擊背后的APT組織。
學(xué)術(shù)界通過利用惡意代碼克隆檢測(cè)來解決惡意軟件同源性問題。因此,為了滿足處理大樣本的需求,需要提出一種能夠自動(dòng)化進(jìn)行的惡意軟件克隆檢測(cè)技術(shù),從而識(shí)別惡意軟件的同源性,大量減少了人工分析的工作量,提高了效率。
本文通過對(duì)每個(gè)惡意軟件樣本進(jìn)行靜態(tài)反匯編分析,再根據(jù)函數(shù)的控制流圖(CFG)構(gòu)建其自定義函數(shù)的反匯編代碼文本,以及整個(gè)樣本的系統(tǒng)函數(shù)調(diào)用圖(AFCG)做為惡意軟件的特征進(jìn)行提取并向量化,換句話說,將惡意軟件建模成一種語言,其可行性已經(jīng)由Awad等[8]驗(yàn)證。構(gòu)建了一個(gè)神經(jīng)網(wǎng)絡(luò)模型來對(duì)數(shù)據(jù)樣本集進(jìn)行分類。實(shí)驗(yàn)表明,本文方法可以有效地進(jìn)行惡意代碼克隆檢測(cè)與分類,且獲得了較高的準(zhǔn)確率和召回率。
同時(shí),本文方法已經(jīng)證明了自動(dòng)實(shí)現(xiàn)惡意軟件克隆檢測(cè)有助于幫助惡意軟件分析師和決策者做出更快的判斷,并可以作為自動(dòng)分析的第一步。
本文的主要貢獻(xiàn)如下:
1)將公共威脅情報(bào)中的樣本集分類到不同的APT組織,并構(gòu)建APT組織的樣本數(shù)據(jù)庫,其中提取了約6 900個(gè)樣本和約80萬個(gè)自定義函數(shù)。
2)提出了一種新方法,首先對(duì)每個(gè)惡意樣本進(jìn)行靜態(tài)反匯編分析,根據(jù)樣本函數(shù)的CFG構(gòu)建其自定義函數(shù)的反匯編代碼文本,以及整個(gè)樣本的AFCG為惡意軟件的特征。然后,利用之前構(gòu)建的神經(jīng)網(wǎng)絡(luò)模型CNN-SLSTM,將卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型與改進(jìn)的遞歸神經(jīng)網(wǎng)絡(luò)長(zhǎng)期短期記憶(LSTM)模型相結(jié)合,對(duì)APT組織樣本進(jìn)行分類。
3)通過廣泛評(píng)估,同時(shí)與MCrab模型[9]進(jìn)行了對(duì)比表明,改進(jìn)模型(GMCrab)優(yōu)于MCrab模型,可以有效地進(jìn)行惡意代碼克隆檢測(cè)與分類,且獲得了較高的檢測(cè)率。
代碼克隆檢測(cè)技術(shù)有很多種方法,如傳統(tǒng)方法中的靜態(tài)抄襲檢測(cè)或克隆檢測(cè),包括基于字符串的檢 測(cè) 方 法[10-12]、基 于 令 牌 的 檢 測(cè) 方 法[13-15]、基于語法樹的檢測(cè)方法[16-18]和基于程序依賴圖(PDG)的檢測(cè)方法[19-22]。有些方法是基于樣本的源代碼進(jìn)行檢測(cè),不適用于實(shí)踐中,尤其不適用于惡意代碼。在基于動(dòng)態(tài)標(biāo)記的方法中,Tamada等[1]提出為Windows應(yīng)用程序進(jìn)行API標(biāo)記;Schuler等[23]提出為Java程序進(jìn)行動(dòng)態(tài)標(biāo)記。但是,由于它們依賴于動(dòng)態(tài)分析,很難將其擴(kuò)展到其他架構(gòu)并適應(yīng)嵌入式設(shè)備,而且在動(dòng)態(tài)分析中的代碼覆蓋率問題是一個(gè)固有的挑戰(zhàn)。
由于研究證明了將機(jī)器學(xué)習(xí)和深度學(xué)習(xí)技術(shù)應(yīng)用于代碼分析的有用性,White等[24]進(jìn)一步提出了用Deep Repair來檢測(cè)源代碼片段之間的相似性。Mou等[25]提出了基于程序抽象語法樹和基于樹的CNN來對(duì)源代碼片段進(jìn)行克隆檢測(cè)。Liu等[26]使用了其代碼特征調(diào)用來表征二進(jìn)制函數(shù)。針對(duì)不同架構(gòu)的相似性檢測(cè),F(xiàn)eng等[27-28]提出了一種跨架構(gòu)二進(jìn)制相似性檢測(cè)的解決方法,分別利用傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)將函數(shù)的CFG轉(zhuǎn)換為用于相似性比較的向量。文獻(xiàn)[29]引入了一種選擇性內(nèi)聯(lián)技術(shù)來捕獲函數(shù)語義,并提取了不同長(zhǎng)度的部分蹤跡來對(duì)函數(shù)建模。
雖然惡意代碼屬于二進(jìn)制代碼中的一種,但因其自身的獨(dú)特性,并不能完全使用于上述的檢測(cè)方法。因此在本文中,通過參考上述方法,提出了一種通過利用惡意代碼進(jìn)行反匯提取的新特征來構(gòu)建惡意代碼的克隆檢測(cè)特征向量,其主要利用惡意軟件AFCG及自定義函數(shù)的語義特征并結(jié)合深度學(xué)習(xí)技術(shù),通過構(gòu)建神經(jīng)網(wǎng)絡(luò)模型對(duì)惡意代碼進(jìn)行克隆檢測(cè)并對(duì)APT組織進(jìn)行分類。
本文提出了一種基于深度學(xué)習(xí)的惡意代碼克隆檢測(cè)技術(shù),該技術(shù)可以快速、有效地檢測(cè)出惡意代碼之間的相似性,識(shí)別出該惡意代碼相關(guān)的APT組織類別信息。
本文原型系統(tǒng)模型如圖1所示。包括以下主要步驟:①APT樣品采集;②原始特征提取;③利用Siamese網(wǎng)絡(luò)對(duì)特征進(jìn)行清洗,由于一些惡意代碼應(yīng)用了較多的開源庫,下載了大量開源庫,并使用局部敏感哈希算法通過匹配去除大量公共函數(shù);④分類模型。其中,第①步旨在從公共威脅情報(bào)中收集APT攻擊的樣本。第②步利用反匯編技術(shù)提取樣本的AFCG及自定義反匯編代碼作為樣本的原始特征。第③步進(jìn)行特征向量化并用來作為模型的輸入。第④步構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)模型來對(duì)帶有標(biāo)記的APT組織樣本進(jìn)行分類。系統(tǒng)模型的使用場(chǎng)景如圖2所示。通過對(duì)已有的知識(shí)庫進(jìn)行訓(xùn)練,并建立模型,當(dāng)發(fā)生新的APT攻擊時(shí),病毒引擎將首次分析樣本。當(dāng)沒有強(qiáng)大的IoC(indicators of compromise)信息(如IP地址、域名、URL等)來確定APT攻擊背后的組織時(shí),可以使用該系統(tǒng)來預(yù)測(cè)和判斷攻擊背后與之相關(guān)的APT組織,并進(jìn)一步指導(dǎo)領(lǐng)域?qū)<易龀雠袆e。
圖1 原型系統(tǒng)GMCrab工作流程Fig.1 Prototype system GMCrab workflow
圖2 GMCrab部署圖Fig.2 Deployment of GMCrab
無論是對(duì)惡意代碼進(jìn)行檢測(cè)還是分類,惡意代碼的特征提取在整個(gè)工作流程中都起著至關(guān)重要的作用。
1)惡意代碼文本特征。CFG是二進(jìn)制分析中常用的特征。因此,根據(jù)自定義函數(shù)的CFG,先通過利用IDA Pro進(jìn)行反匯編構(gòu)成CFG,將非循環(huán)路徑上每3個(gè)代碼塊中的反匯編代碼構(gòu)成1句長(zhǎng)語句。根據(jù)CFG的執(zhí)行路徑,可以將圖3分解為3個(gè)塊來獲得一系列塊,如式(1)所示。使用3個(gè)序列塊中的反匯編代碼形成1個(gè)塊表示該自定義函數(shù)的文本。最終對(duì)構(gòu)造的文本進(jìn)行規(guī)范化,并統(tǒng)一標(biāo)記變量名稱和內(nèi)存地址,以提高系統(tǒng)模型在后續(xù)分類任務(wù)中的準(zhǔn)確率和召回率。
圖3 CFG樣例Fig.3 CFG example
2)惡意代碼AFCG。在本文中,系統(tǒng)函數(shù)指的是調(diào)用操作系統(tǒng)提供的API函數(shù),如Window系統(tǒng)的MSDN中的API。圖4為一個(gè)關(guān)鍵函數(shù)的示例,該函數(shù)調(diào)用了2個(gè)API,其API序列為Get-FileAttributesA→GetLastError。函數(shù)調(diào)用圖表示樣本中函數(shù)間的調(diào)用關(guān)系。由于需要使用AFCG,但是非系統(tǒng)調(diào)用函數(shù)在整個(gè)樣本的占比很高,導(dǎo)致系統(tǒng)函數(shù)間可能不存在直接的調(diào)用關(guān)系,需要通過給圖的邊加入權(quán)值來代替圖中的非系統(tǒng)調(diào)用函數(shù),即AFCG(在函數(shù)調(diào)用圖的基礎(chǔ)上將非系統(tǒng)調(diào)用的函數(shù)去除壓縮而成)。將有向無權(quán)的函數(shù)調(diào)用圖壓縮為有向帶權(quán)值的AFCG,其權(quán)值的賦值遵循以下4個(gè)原則:
圖4 系統(tǒng)函數(shù)調(diào)用示例Fig.4 Example of system function call
①若2個(gè)系統(tǒng)函數(shù)間存在直接調(diào)用關(guān)系,則權(quán)值為1。
②若2個(gè)系統(tǒng)函數(shù)間不存在直接調(diào)用關(guān)系,則權(quán)值為經(jīng)過的非系統(tǒng)函數(shù)個(gè)數(shù)加1。
③若2個(gè)系統(tǒng)函數(shù)間存在多條調(diào)用路徑時(shí),權(quán)值為最短路徑跳數(shù)。
④若2個(gè)系統(tǒng)函數(shù)間存在的調(diào)用路徑都經(jīng)過另外1個(gè)系統(tǒng)函數(shù),則這2個(gè)系統(tǒng)函數(shù)間不存在直接的有向帶權(quán)值路徑。
3)數(shù)據(jù)清洗。收集了3 000個(gè)良性樣本,同樣利用反匯編技術(shù)收集了約2萬個(gè)自定義函數(shù)的代碼片段。利用對(duì)等網(wǎng)絡(luò)架構(gòu),通過計(jì)算代碼片段的局部敏感哈希值進(jìn)行相似性計(jì)算,從而去除與其相似的惡意代碼庫中提取的函數(shù)。最終利用剩下的函數(shù)庫作為輸入特征進(jìn)行分類。
本文模型沿用文獻(xiàn)[9]中的CNN-SLSTM 模型,該模型的結(jié)構(gòu)如圖5所示,其由2個(gè)部分組成:①C-LSTM模型中的CNN模型;②改進(jìn)的SLSTM模型,即引入了結(jié)構(gòu)特征。詳細(xì)的模型介紹如下:
圖5 語義模型的CNN-SLSTM的體系結(jié)構(gòu)Fig.5 Architecture of CNN-SLSTM for semantic model
1)通過CNN進(jìn)行特征提取。對(duì)構(gòu)成的文本特征進(jìn)行建模,CNN利用卷積濾波器提取句子不同位置上的n-gram 特征,該方法表現(xiàn)出色。文獻(xiàn)[30]描述的n-gram特征提取方法即對(duì)從樣本中提取的CFG反匯編代碼文本執(zhí)行相同的處理。對(duì)于文本中的每個(gè)位置i,都有1個(gè)帶有k個(gè)連續(xù)單詞向量的窗口向量Xi,表示為
式中:xi∈Rd為反匯編代碼文本中第i個(gè)字的d維子向量;k為濾波器的長(zhǎng)度。
濾波器w 用于生成新的特征映射,公式如下:
式中:L為文本的長(zhǎng)度。
特征映射的每個(gè)元素ci的產(chǎn)生如下:
式中:b為一個(gè)偏置項(xiàng),b∈R;f為非線性函數(shù)(如sigmoid、雙曲正切等);w為權(quán)值。
選擇ReLU作為本文實(shí)驗(yàn)的濾波器,通過把濾波器應(yīng)用于每個(gè)窗口xi以產(chǎn)生特征圖。
式中:ci為使用第i個(gè)濾波器生成的特征映射;每行C∈R(L-k+1)×n,Ci為從位置i處的窗口矢量的n個(gè)濾波器生成的新特征表示。
在這些處理步驟之后,可以得到1個(gè)高級(jí)窗口表示,其將被用作下1個(gè)SLSTM模型的輸入之一。本文只進(jìn)行卷積而不在特征映射上應(yīng)用max-over-time池化操作來獲取最大值。這是因?yàn)樵贚STM被指定用于序列輸入,如果使用池化,則會(huì)破壞由CNN提取的高級(jí)窗口特征。
2)SLSTM 網(wǎng)絡(luò)。眾所周知,RNN[31-32]中的問題在于:在訓(xùn)練期間,梯度向量的分量可以在長(zhǎng)序列上呈指數(shù)增長(zhǎng)或衰減[33]。梯度爆炸或消失的問題使得RNN模型難以學(xué)習(xí)序列中的長(zhǎng)距離相關(guān)性,而已經(jīng)提出的LSTM 模型可以解決特定學(xué)習(xí)長(zhǎng)期依賴性的問題。本文結(jié)合惡意代碼同源性研究問題,將對(duì)應(yīng)于樣本的系統(tǒng)函數(shù)調(diào)用圖結(jié)構(gòu)特征引入標(biāo)準(zhǔn)LSTM模型,并稱之為SLSTM。
如圖5所示,SLSTM 模型的輸入由2個(gè)部分組成:①CNN提取的高級(jí)窗口表示;②AFCG的嵌入表示。同一個(gè)樣本中的每個(gè)自定義函數(shù)的CFG對(duì)應(yīng)相同AFCG,即每個(gè)自定義函數(shù)的反匯編代碼文本對(duì)應(yīng)同樣的AFCG結(jié)構(gòu)特征。在圖5特征映射層和窗口特征序列層中,相同顏色的塊對(duì)應(yīng)于同一窗口特征,虛線將窗口的特征與源特征圖連接起來,并且黃色塊表示與樣本對(duì)應(yīng)的AFCG嵌入向量,其與CNN模型學(xué)習(xí)的窗口特征一起被輸入到SLSTM 模型中。整個(gè)模型的最終輸出的是SLSTM的隱藏單元。
參考Dai等[34]提出的圖形嵌入網(wǎng)絡(luò),將AFCG表示為g=<V,E>,其中V和E分別為頂點(diǎn)和邊的集合。此外,圖中的每條邊e都具有附加特征xe,對(duì)應(yīng)AFCG中的邊的權(quán)值。圖形嵌入網(wǎng)絡(luò)將先計(jì)算每個(gè)頂點(diǎn)v∈V的p維特征μv,再將g的嵌入向量μg計(jì)算定義為這些頂點(diǎn)的聚合,公式為
將μg表示為結(jié)構(gòu)向量S,將由c維圖形嵌入和由CNN模型獲得的高級(jí)窗口表示生成的新連續(xù)表示饋送到SLSTM模型中。
在每個(gè)時(shí)間將SLSTM單元定義為Rd中的向量集合:輸入門it、遺忘門ft、輸出門ot、存儲(chǔ)器單元ct和隱藏狀態(tài)ht。在模型中,將結(jié)構(gòu)向量S添加到輸入門、遺忘門、單元和輸出門。改進(jìn)后的LSTM模型公式如下:
式中:b為偏差項(xiàng);d為SLSTM 單位的數(shù)量;xt為當(dāng)前時(shí)間步的輸入;σ為邏輯sigmoid函數(shù),其輸出為[0,1];⊙表示數(shù)組元素依次相乘;PiS是對(duì)原始LSTM等式的修改。
遺忘門控制擦除存儲(chǔ)器單元的每個(gè)單元的量,輸入門控制每個(gè)單元的更新量,輸出門控制內(nèi)部存儲(chǔ)器狀態(tài)的曝光。SLSTM 可以處理時(shí)間序列數(shù)據(jù)以學(xué)習(xí)長(zhǎng)期依賴關(guān)系,因此,選擇其作為CNN模型的下一個(gè)輸入模型來學(xué)習(xí)代碼段中的依賴關(guān)系。最終在SLSTM 模型的最后1個(gè)步驟中將softmax層添加到隱藏狀態(tài)的輸出以進(jìn)行分類。
本文利用2年時(shí)間收集了約8 000例不同APT組織樣本,其中大部分來源于公共威脅情報(bào),利用情報(bào)中的樣本哈希值,通過VirusTotal進(jìn)行檢索與篩選,獲得與該組織對(duì)應(yīng)的樣本文件?;诖罅康墓餐{情報(bào),構(gòu)建了APT組織的樣本數(shù)據(jù)庫,并從10個(gè)APT組織的6 972個(gè)樣本中提取了680 718個(gè)自定義函數(shù)。將這些自定義函數(shù)形成數(shù)據(jù)集并進(jìn)一步以8∶2的比例隨機(jī)分為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集,還使用了10%的訓(xùn)練集進(jìn)行交叉驗(yàn)證,相關(guān)統(tǒng)計(jì)數(shù)據(jù)如表1所示。
表1 APT組織樣本數(shù)據(jù)集Table 1 APT group samples dataset
在Python中使用TensorFlow實(shí)現(xiàn)了本文的模型。利用GPU進(jìn)行模型訓(xùn)練。在文本表示中,使用word2vec向量初始化單詞向量。在最終設(shè)置中,使用了整數(shù)線性單位,過濾窗口設(shè)置為3、4和5,每個(gè)過濾窗口得到100個(gè)特征圖,SLSTM 的內(nèi)存尺寸為100,隨機(jī)失活率為0.5,mini-batch設(shè)為50,這些值是通過開發(fā)集上的網(wǎng)格搜索選擇的。本文的模型在單詞序列饋送到卷積層之前,將dropout應(yīng)用于單詞向量,并在softmax層之前將其輸入到LSTM模型的輸出。使用Adadelta更新規(guī)則,通過隨機(jī)梯度下降在亂序的mini-batch上進(jìn)行訓(xùn)練,同時(shí)還在softmax層的權(quán)重中添加了因子為0.001的L2正則化。
選擇MCrab模型作為比較的基線,2個(gè)模型的對(duì)比結(jié)果如圖6所示。此外,還選擇了一些比較先進(jìn)的文本分類方法進(jìn)行比較,如表2所示。將本文模型與其他模型進(jìn)行比較,發(fā)現(xiàn)CNN-SLSTM模型優(yōu)于其他模型??偟膩碚f,本文模型顯示出強(qiáng)大的競(jìng)爭(zhēng)力。這說明CNN-SLSTM模型可以學(xué)習(xí)AFCG的結(jié)構(gòu)特征和其反匯編代碼的文本特征。AFCG的結(jié)構(gòu)特征在惡意代碼克隆檢測(cè)問題中具有重要意義。此外,C-LSTM模型的性能優(yōu)于單個(gè)CNN模型和單個(gè)LSTM模型,這意味著使用CNN模型提取高級(jí)文本表示在學(xué)習(xí)跨序列的長(zhǎng)期依賴性中起著重要作用。在CNN模型中,將其與來自word2vec的預(yù)訓(xùn)練向量、微調(diào)詞向量和多通道進(jìn)行比較,具有動(dòng)態(tài)k-max匯集的DCNN模型[35]。對(duì)于LSTM模型,將其與2個(gè)樹狀結(jié)構(gòu)的LSTM 模型進(jìn)行了比較[36],同時(shí)也與LSTM模型和Bi-LSTM模型進(jìn)行了比較。此外,將改進(jìn)的GMCrab模型與MCrab模型進(jìn)行了對(duì)比,發(fā)現(xiàn)在準(zhǔn)確率上略優(yōu)于MCrab模型,原因在于:在惡意樣本特征提取后做了較好的特征清洗及新特征的選擇,提高了模型準(zhǔn)確率。
表2 不同模型比較Table 2 Comparison with different models
圖6 不同模型的準(zhǔn)確率和損失率對(duì)比Fig.6 Comparison of accuracy and loss for different models
本節(jié)從以下3個(gè)方面評(píng)估本文模型:①卷積層中不同濾波器配置對(duì)模型性能的影響;②數(shù)據(jù)量對(duì)模型性能的影響;③模型在惡意軟件同源性分析中的可行性。
1)過濾器大小。在本文模型中,使用CNN模型通過過濾器捕獲本地n-gram文本特征。在2種情況下進(jìn)行了濾波器長(zhǎng)度為3,4和5的研究:具有相同濾波器長(zhǎng)度的單個(gè)卷積層和多個(gè)卷積層,并行不同長(zhǎng)度的濾波器。對(duì)于第1種情況,每個(gè)n-gram窗口在卷積之后被轉(zhuǎn)換成卷積特征,并且窗口表示的序列被饋送到SLSTM 模型中。第2種情況使用了不同尺寸的濾波器,因此,在每個(gè)卷積層之后獲得的窗口數(shù)量是不同的。根據(jù)最大濾波器長(zhǎng)度切割窗口序列來獲得最小窗口數(shù)。最終每個(gè)窗口由來自不同卷積層輸出的串聯(lián)表示。
2)數(shù)據(jù)大小。為了進(jìn)一步檢查本文方法在不同大小數(shù)據(jù)集上的性能,以1∶100的采樣比率為每個(gè)APT組織選擇樣本,并將數(shù)據(jù)集分成2個(gè)不同大小的數(shù)據(jù)集。基于上述模型評(píng)估了不同大小的數(shù)據(jù)集,發(fā)現(xiàn)SVM在小數(shù)據(jù)集上的表現(xiàn)優(yōu)于本文方法。
本節(jié)通過介紹數(shù)據(jù)集、實(shí)驗(yàn)環(huán)境,以及對(duì)實(shí)驗(yàn)進(jìn)行評(píng)估,表明了與其他分類器相比,本文方法更具有優(yōu)勢(shì)。
本文利用2年時(shí)間收集了多達(dá)8 000例不同APT組織樣本,同時(shí)提出了一種新方法,通過對(duì)每個(gè)惡意軟件樣本進(jìn)行靜態(tài)反匯編分析,再根據(jù)函數(shù)的CFG構(gòu)建其自定義函數(shù)的反匯編代碼文本,以及整個(gè)樣本的AFCG作為惡意軟件的特征相結(jié)合,利用神經(jīng)網(wǎng)絡(luò)模型(CNN-SLSTM)對(duì)APT組織樣本進(jìn)行分類。
通過廣泛評(píng)估并與MCrab模型進(jìn)行對(duì)比,結(jié)果表明,改進(jìn)GMCrab模型優(yōu)于MCrab模型,可以有效地進(jìn)行惡意代碼克隆檢測(cè)與分類,且獲得了較高的檢測(cè)率。但是,一些APT小組惡意模仿其他APT組織的編碼風(fēng)格,會(huì)影響模型判斷,以后將努力解決這個(gè)問題。此外,將擴(kuò)展數(shù)據(jù)集添加更多APT組織樣本,并更全面地進(jìn)行惡意軟件克隆檢測(cè)分析。