本發(fā)明涉及深度學(xué)習(xí),具體涉及一種基于ai的二進(jìn)制同源樣本分析方法。
背景技術(shù):
1、隨著深度學(xué)習(xí)的興起,基于深度學(xué)習(xí)的二進(jìn)制同源樣本分析也成為了當(dāng)下熱點(diǎn),經(jīng)大量調(diào)查與實(shí)踐,深度學(xué)習(xí)方法在樣本分類中取得顯著成績(jī),其中的二進(jìn)制同源樣本分析是指通過惡意代碼的特征,分析代碼之間的關(guān)系;在很多行業(yè)和領(lǐng)域都涉及樣本分析,都可以識(shí)別和歸類惡意軟件家族、檢測(cè)代碼復(fù)用、追蹤惡意軟件的演變過程以及識(shí)別未來威脅。
2、但目前使用深度學(xué)習(xí)對(duì)惡意代碼進(jìn)行同源樣本分類依然存在諸多挑戰(zhàn);例如,常規(guī)的方法會(huì)直接處理原始的二進(jìn)制匯編指令,通過匯編指令來提取特征以及結(jié)合訓(xùn)練的模型做同源樣本的分類,但是匯編指令中除了順序執(zhí)行外,還涉及跳轉(zhuǎn)以及調(diào)用,這些通常以相對(duì)地址表示,直接提取特征可能無法理解語義,處理不了上下文關(guān)系,無法直接利用。
3、例如一中國(guó)專利,申請(qǐng)?zhí)枮?02311724479?.9,申請(qǐng)日為2023?.12?.14,專利名稱為《一種惡意代碼的同源分析方法、裝置、電子設(shè)備》的發(fā)明專利,其技術(shù)方案為:一種惡意代碼的同源分析方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì),其中,該方法包括:獲取包含惡意代碼的可執(zhí)行文件;提取所述可執(zhí)行文件中的匯編指令;對(duì)所述匯編指令進(jìn)行代碼語義序列構(gòu)建,得到匯編指令語義序列;提取所述匯編指令語義序列中的深度特征;將所述深度特征進(jìn)行分類算法訓(xùn)練,得到檢測(cè)模型;根據(jù)所述檢測(cè)模型對(duì)所述匯編指令進(jìn)行同源分析,得到同源分析結(jié)果。
4、雖然上述專利能夠?qū)崿F(xiàn)對(duì)惡意代碼的分析,但是該方案將二進(jìn)制代碼,先轉(zhuǎn)匯編指令,再通過gist特征提取轉(zhuǎn)為圖像;首先,這樣的方式不但會(huì)丟失一些準(zhǔn)確信息,比如語義信息以及指令跳轉(zhuǎn)之間的聯(lián)系,而且通用常規(guī)的代碼通過編譯器生成的指令,往往具備較高的相似度,而惡意代碼往往就只有幾行代碼,在圖形特征上分類特征往往并不明確;其次,gist特征是具有相對(duì)固定的維度,如果攻擊者了解gist提取算法,是可以規(guī)避檢測(cè)的,并且gist只關(guān)注圖像中的宏觀布局,往往忽略了指令的具體含義,可能會(huì)降低對(duì)某些惡意指令的同源分析能力。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述現(xiàn)有技術(shù)存在的問題,本發(fā)明提供了能將底層語言轉(zhuǎn)為高級(jí)語言,再結(jié)合lstm模型實(shí)現(xiàn)更高效的標(biāo)記惡意代碼特征以及同源分類的一種基于ai的二進(jìn)制同源樣本分析方法。
2、為實(shí)現(xiàn)上述技術(shù)效果,本發(fā)明的技術(shù)方案如下:
3、一種基于ai的二進(jìn)制同源樣本分析方法,具體步驟包括:
4、步驟一:讀取文件內(nèi)容,識(shí)別出具體的加殼類型,再進(jìn)行脫殼處理得到原始數(shù)據(jù)文件;
5、步驟二:將脫殼后的原始數(shù)據(jù)文件,進(jìn)行反匯編,得到匯編指令代碼;
6、步驟三:將匯編指令代碼轉(zhuǎn)為中間代碼,通過自然語言大模型再將中間代碼轉(zhuǎn)為高級(jí)語言,用于惡意代碼特征標(biāo)記,制作出惡意樣本數(shù)據(jù)集;
7、步驟四:對(duì)數(shù)據(jù)集中的部分惡意樣本進(jìn)行預(yù)處理,再進(jìn)行標(biāo)簽編碼;
8、步驟五:構(gòu)建一個(gè)能增強(qiáng)對(duì)惡意樣本特征提取能力以及檢測(cè)能力的lstm模型,將處理后的部分惡意樣本,輸入到lstm模型進(jìn)行訓(xùn)練;
9、步驟六:將預(yù)處理后的新的惡意樣本輸入到已經(jīng)訓(xùn)練完成的lstm模型,從而得出最終結(jié)果。
10、進(jìn)一步的,步驟一中讀取文件內(nèi)容的具體方式為打開二進(jìn)制文件,逐步讀取字節(jié),將文件內(nèi)容讀取到內(nèi)存中;加殼類型的具體識(shí)別方式為通過工具分析內(nèi)存中的二進(jìn)制數(shù)據(jù)掃描文件頭和節(jié)表;脫殼處理的具體方式為調(diào)用脫殼工具進(jìn)行脫殼處理得到原始二進(jìn)制數(shù)據(jù);步驟二中反匯編的具體方式為將脫殼后的原始數(shù)據(jù)文件輸入給反匯編工具,通過反匯編工具自動(dòng)化解析分析得到匯編指令代碼。
11、進(jìn)一步的,步驟三中匯編指令代碼轉(zhuǎn)為中間代碼具體為:匯編指令代碼通過使用llvm工具包轉(zhuǎn)為llvm?ir代碼,llvm?ir代碼再通過提示詞模版調(diào)用自然語言大模型將llvmir代碼轉(zhuǎn)為高級(jí)語言;所述高級(jí)語言為c語言。
12、進(jìn)一步的,步驟四和步驟六中預(yù)處理的具體方式為:將部分惡意樣本中的每個(gè)惡意樣本分配一個(gè)家族分類標(biāo)簽,然后將惡意樣本代碼拆分為詞匯,然后進(jìn)行整數(shù)編碼,把拆分的詞匯進(jìn)行整數(shù)序列化,將所有整數(shù)序列填充或截?cái)嗟揭粯拥拈L(zhǎng)度,為所有整數(shù)序列構(gòu)建一個(gè)詞匯表,并為每個(gè)詞匯分配一個(gè)唯一整數(shù)id;標(biāo)簽編碼的具體方式為將家族分類標(biāo)簽轉(zhuǎn)為唯一整數(shù)id或者one-hot編碼。
13、更進(jìn)一步的,將惡意樣本拆分為詞匯,然后進(jìn)行整數(shù)編碼的具體步驟為:
14、步驟a:先進(jìn)行分詞,將完整的句子拆分為單詞或字詞序列:
15、
16、式中,t1、t2和t3的含義均為拆分的單詞或字詞序列;
17、步驟b:分詞完成后,將每個(gè)拆分后的單詞或字詞序列映射到詞匯表中的id序列:
18、
19、式中,a1、a2和a3的含義均為每個(gè)分詞或字詞序列所對(duì)應(yīng)的整數(shù)id;
20、步驟c:將所有整數(shù)序列填充或截?cái)嗟揭粯娱L(zhǎng)度的具體方式為:若,則在句子的末尾填充特殊的填充符號(hào),使得填充后的長(zhǎng)度為:,式中的含義為整數(shù)序列的長(zhǎng)度,為句子的長(zhǎng)度上限,c為填充符號(hào);若,則截?cái)酁殚L(zhǎng)度,保留前?個(gè)詞,得到截?cái)嗪蟮拈L(zhǎng)度為。
21、進(jìn)一步的,步驟六中的最終結(jié)果為對(duì)應(yīng)的各個(gè)家族的類別概率,其中家族代表apt攻擊組織;步驟六中將預(yù)處理后的新的惡意樣本輸入到已經(jīng)訓(xùn)練完成的lstm模型,得出最終結(jié)果的具體步驟如下:
22、步驟a1:將輸入層的整數(shù)序列通過查表操作,映射到詞向量矩陣w;
23、步驟b1:在lstm層,輸入詞向量矩陣w,通過lstm層計(jì)算得到層輸出矩陣h;
24、步驟c1:將層輸出矩陣h通過均值層取平均值,得到一個(gè)固定長(zhǎng)度的稠密向量;
25、步驟d1:稠密向量v經(jīng)過全連接層,通過激活函數(shù)最終得到類別概率向量。
26、更進(jìn)一步的,所述步驟a1中詞向量矩陣w是一個(gè)v×d?的矩陣,其中?v?是詞匯表的大小,d?是詞向量的維度;給定整數(shù)序列,每個(gè)?都是一個(gè)詞匯表中的id,通過嵌入矩陣,映射為對(duì)應(yīng)的詞向量,公式表示如下:
27、
28、最終,整數(shù)序列將被轉(zhuǎn)換為詞向量矩陣,其中每個(gè)詞向量,表示d維實(shí)數(shù)空間;
29、所述步驟b1中通過lstm層得到層輸出矩陣的具體步驟如下:
30、步驟a2:計(jì)算遺忘門,其具體公式如下:
31、
32、式中,與分別表示遺忘門的權(quán)重與偏置,表示在時(shí)間步的隱藏狀態(tài)向量,表示在時(shí)間步t輸入的詞向量,表示 sigmoid函數(shù);
33、步驟b2:計(jì)算輸入門和候選記憶,其具體公式如下:
34、;
35、
36、式中,表示每個(gè)詞向量,在式中作為輸入門類別i的權(quán)重,表示輸入門的偏執(zhí),與表示候選記憶的權(quán)重與偏置,表示雙曲正切函數(shù);
37、步驟c2:更新細(xì)胞狀態(tài),其具體公式如下:
38、
39、式中,表示lstm層在時(shí)間步t的長(zhǎng)時(shí)記憶;表示lstm層在時(shí)間步t-1的長(zhǎng)時(shí)記憶;
40、步驟d2:計(jì)算輸出門,其具體公式如下:
41、
42、式中,與分別表示輸出門的權(quán)重與偏置;
43、步驟e2:計(jì)算隱藏狀態(tài),其具體公式如下:
44、
45、最后,lstm層輸出一個(gè)序列隱藏狀態(tài)的層輸出矩陣;
46、所述步驟c1中,將層輸出矩陣h通過均值層取平均值,得到一個(gè)固定長(zhǎng)度的稠密向量,其中層輸出矩陣,表示維實(shí)數(shù)空間,層輸出矩陣h是一個(gè)矩陣,則該步驟的具體公式為:
47、
48、式中,稠密向量是均值池化后的稠密向量,hi表示輸出矩陣h的第i個(gè)列向量,n代表層數(shù);
49、所述步驟d1中激活函數(shù)選用為softmax函數(shù);稠密向量v經(jīng)過全連接層,通過激活函數(shù)最終得到類別概率向量的具體步驟如下:
50、步驟a3:稠密向量v在全連接層進(jìn)行線性變換,其具體公式如下:
51、
52、式中,是全連接層的權(quán)重矩陣,是偏置向量,,k表示類別數(shù),z的含義為全連接層的輸出,對(duì)稠密向量v進(jìn)行線性變換的結(jié)果;
53、步驟b3:使用softmax函數(shù)轉(zhuǎn)換為概率向量,其具體公式如下:
54、
55、式中,pi表示模型預(yù)測(cè)樣本屬于第i類的概率,是輸出的類別概率向量,為類別數(shù),為全連接層輸出類別i的對(duì)數(shù)幾率值,為全連接層輸出類別j的對(duì)數(shù)幾率值,e表示自然常數(shù)。
56、更進(jìn)一步的,為了增強(qiáng)步驟b1中l(wèi)stm層對(duì)惡意樣本的特征提取,對(duì)lstm層的調(diào)整包括如下具體步驟:
57、步驟a4:引入雙向lstm,用于捕捉從左到右和從右到左的序列信息,并將兩個(gè)方向的隱藏狀態(tài)進(jìn)行拼接,其具體公式如下:
58、;
59、;
60、;
61、式中,表示從左向右處理序列時(shí)lstm在時(shí)間步的隱藏狀態(tài);表示從右向左處理序列時(shí)lstm在時(shí)間步的隱藏狀態(tài);表示雙向lstm在時(shí)間步的輸出狀態(tài),包含從左到右和從右到左的隱藏狀態(tài)拼接后的輸出;表示輸入在lstm層的計(jì)算;表示從右向左處理序列時(shí)lstm在時(shí)間步的隱藏狀態(tài);表示從左向右處理序列時(shí)lstm在時(shí)間步的隱藏狀態(tài);
62、步驟b4:增加lstm的層數(shù),使模型能夠捕捉更深層次的特征信息,其具體公式如下:
63、
64、式中,表示lstm在第層的時(shí)間步的隱藏狀態(tài);表示lstm在第層的時(shí)間步的隱藏狀態(tài);表示lstm在第層的時(shí)間步的隱藏狀態(tài)。
65、更進(jìn)一步的,對(duì)步驟d1中全連接層的權(quán)重和激活函數(shù)進(jìn)行調(diào)整,用于增強(qiáng)惡意樣本的檢測(cè)性能,其具體的調(diào)整步驟如下:
66、步驟a5:引入l2正則化,用于防止過擬合,正則化后的損失函數(shù)為:
67、
68、式中,表示損失函數(shù),其中是模型參數(shù),為交叉熵?fù)p失,n表示樣本數(shù)量,為正則化參數(shù),表示l2正則化項(xiàng),模型參數(shù)的l2范數(shù)平方,表示預(yù)測(cè)概率,表示樣本屬于第i類的標(biāo)記;
69、步驟b5:在全連接層之前加入dropout層,以隨機(jī)丟棄部分神經(jīng)元,減少過擬合,其具體公式為:
70、
71、式中,表示全連接層的輸出,為丟棄概率。
72、更進(jìn)一步的,使用softmax函數(shù)轉(zhuǎn)換為概率向量后,為了增強(qiáng)惡意樣本區(qū)分能力,引入加權(quán)交叉熵?fù)p失函數(shù),其具體公式為:
73、
74、式中,表示每個(gè)詞向量,在式中作為輸入門類別i的權(quán)重;yi表示樣本屬于第i類的標(biāo)記;pi表示模型預(yù)測(cè)樣本屬于第i類的概率。
75、根據(jù)上述技術(shù)方案,本發(fā)明具有的有益效果如下:
76、1.本發(fā)明采用基于ai的二進(jìn)制同源樣本分析方法,將底層語言轉(zhuǎn)換為高級(jí)語言,并將深度學(xué)習(xí)模型lstm應(yīng)用于樣本家族分類,實(shí)現(xiàn)了更快捷的提取語言中的特征關(guān)系,并且顯著提高了對(duì)惡意樣本進(jìn)行家族分類的效果。
77、2.本發(fā)明將匯編指令代碼轉(zhuǎn)換為高級(jí)語言代碼,解決了跨平臺(tái)的兼容性問題,以及方便人工快速理解二進(jìn)制代碼的含義,更快捷準(zhǔn)確的提取其中的特征關(guān)系。
78、3.本發(fā)明的方法構(gòu)建了一個(gè)能增強(qiáng)對(duì)惡意樣本特征提取能力以及檢測(cè)能力的lstm模型,通過利用該lstm模型,能夠更快速的提取語言中的特征關(guān)系,提高了對(duì)惡意樣本的檢測(cè)效果以及家族分類效果和效率。
79、4.本發(fā)明的方法中引入了雙向lstm,解決了傳統(tǒng)lstm只能從左至右處理序列信息的缺點(diǎn),使得lstm可以從左至右以及從右至左的捕捉序列信息,讓lstm模型能夠更好的增強(qiáng)對(duì)惡意樣本的特征提取效果。
80、5.本發(fā)明的方法中通過增加lstm的層數(shù),實(shí)現(xiàn)了能夠捕捉惡意樣本中更深層次特征信息的技術(shù)效果。
81、6.本發(fā)明的方法通過引入l2正則化和在全連接層之前加入dropout層,以此來對(duì)全連接層進(jìn)行優(yōu)化,調(diào)整全連接層的權(quán)重和激活函數(shù),增強(qiáng)了對(duì)惡意樣本的檢測(cè)能力。
82、7.本發(fā)明的方法中通過引入加權(quán)交叉熵?fù)p失函數(shù),使得本方法實(shí)現(xiàn)了對(duì)惡意樣本更好的區(qū)分效果。
83、8.本發(fā)明的方法中采用對(duì)語句的詞匯拆分、整數(shù)序列化以及對(duì)整數(shù)序列的填充與截?cái)?,?shí)現(xiàn)了將整數(shù)序列映射到詞向量矩陣,保證了lstm模型對(duì)惡意代碼的同源分析效果。
84、9.本發(fā)明采用llvm?ir作為中間代碼,能夠在不同的操作系統(tǒng)和硬件上移植,且llvm可以優(yōu)化提高程序性能,減少內(nèi)存使用以及改善代碼的可讀性和維護(hù)性。