本發(fā)明涉及計算機安全,具體涉及一種注意力游走核的二進制程序相似性檢測方法及系統(tǒng)。
背景技術(shù):
1、二進制代碼相似性檢測是指通過比較兩個二進制文件之間的特征的相似程度來判斷兩者是否相似,其在安全領(lǐng)域有廣泛的應(yīng)用,例如惡意軟件檢測與分析、漏洞檢測與修復(fù)、知識產(chǎn)權(quán)保護、補丁匹配與版本跟蹤等。
2、目前出現(xiàn)了很多的二進制代碼相似性檢測方法,為了從二進制代碼中提取有意義的信息,通常將二進制代碼轉(zhuǎn)化為圖結(jié)構(gòu),如過程間控制流圖(以下簡稱“icfg”)。接著,使用圖神經(jīng)網(wǎng)絡(luò)算法比較兩個程序的相似性。
3、中國專利文獻cn113254934a公開一種基于圖匹配網(wǎng)絡(luò)的二進制代碼相似性檢測方法及系統(tǒng)。該方法包括獲取待測程序?qū)Γ瑢ζ渲械拇郎y程序反匯編獲取過程間控制流圖icfg及其指令;分別針對待測程序的過程間控制流圖icfg獲取其中基本塊的初始特征嵌入;通過圖匹配神經(jīng)網(wǎng)絡(luò)得到待測程序?qū)Φ倪^程間控制流圖icfg的最終嵌入hg1和hg2;在向量空間中計算待測程序?qū)Φ倪^程間控制流圖icfg的最終嵌入hg1和hg2之間相似性作為待測程序?qū)Φ南嗨菩詸z測結(jié)果。
4、中國專利文獻cn116541273a公開一種基于圖注意力的二進制代碼相似性檢測方法及系統(tǒng)。該方法通過獲取二進制代碼的屬性控制流圖,輸入預(yù)訓(xùn)練的注意力機制中,得到節(jié)點間注意力相關(guān)系數(shù);對每個注意力相關(guān)系數(shù)進行歸一化,并利用leakyrelu函數(shù)激活,得到節(jié)點間權(quán)重系數(shù);并根據(jù)節(jié)點間的權(quán)重系數(shù)生成新的節(jié)點特征;從而根據(jù)新的節(jié)點特征判斷二進制代碼的相似性。該方法采用注意力的思想獲取每個節(jié)點的鄰居節(jié)點對其權(quán)重系數(shù),以達到從局部信息可以獲得整個網(wǎng)絡(luò)的信息。
5、然而,圖神經(jīng)網(wǎng)絡(luò)算法通常應(yīng)用某種置換不變的讀出圖結(jié)構(gòu)的頂點表示,以生成整個圖的表示,但這種方法往往忽略了頂點之間的相互作用。因此,圖結(jié)構(gòu)與特征信息的結(jié)合透明度不足,導(dǎo)致現(xiàn)有的相似性檢測算法無法有效處理大規(guī)模的二進制程序,且效率低、資源消耗高。
6、中國專利文獻cn116700781a提出一種基于可微隨機游走核和神經(jīng)網(wǎng)絡(luò)的二進制代碼相似性檢測方法及系統(tǒng)。該方法包括獲取待檢測二進制代碼對,將待檢測二進制代碼對進行反編譯,獲得其控制流程圖;利用核函數(shù)提取待檢測二進制代碼流程圖的結(jié)構(gòu)特征;通過神經(jīng)網(wǎng)絡(luò)對待檢測二進制代碼的控制流程圖的結(jié)構(gòu)特征進行編碼,并得到對應(yīng)的結(jié)構(gòu)嵌入和利用二進制代碼對的控制流程圖的結(jié)構(gòu)信息嵌入和的相似性作為待檢測二進制代碼的相似性結(jié)果。該方案雖然提出一種通過圖核和神經(jīng)網(wǎng)絡(luò)集合的方法來提取二進制代碼控制流程圖的結(jié)構(gòu)信息進而判斷待檢測二進制代碼相似性的方法,一定程度上能捕捉到隱藏在二進制代碼中的控制依賴。但是該方案基于可微隨機游走核,其采用的是隨機游走的策略,通過隨機初始化生成一定數(shù)量的子圖并與原圖進行直積來捕捉結(jié)構(gòu)特征;可微隨機游走核側(cè)重于在控制流程圖上進行隨機游走,通過神經(jīng)網(wǎng)絡(luò)對提取的子圖特征進行編碼,并使用特定的度量方式來計算圖的相似性;而且該方法不能感知和提取節(jié)點的語義信息,從而能夠更全面地捕捉二進制程序中的復(fù)雜語義特征。
技術(shù)實現(xiàn)思路
1、本發(fā)明要解決的技術(shù)問題是,針對現(xiàn)有技術(shù)上的不足,提供一種基于注意力游走核的二進制程序相似性檢測方法及系統(tǒng)。通過結(jié)合圖核和神經(jīng)網(wǎng)絡(luò)提取過程間控制流圖(icfg)的結(jié)構(gòu)信息,生成圖的特征矩陣,實現(xiàn)二進制程序的相似性檢測。這種方法能夠處理復(fù)雜的函數(shù)結(jié)構(gòu),提高檢測效率,并具有較高的檢測準確率。
2、為了解決上述技術(shù)問題,本發(fā)明采用如下技術(shù)方案:
3、第一方面,本發(fā)明提供一種基于注意力游走核的二進制程序相似性檢測方法,包括如下步驟:
4、s1、對待檢測的二進制程序進行靜態(tài)分析,獲取所述二進制程序的過程間控制流圖(icfg);通常所述icfg包括多個節(jié)點與邊,每個節(jié)點表示二進制程序中的一個基本塊,每條邊表示基本塊之間的跳轉(zhuǎn)或函數(shù)調(diào)用。
5、s2、利用預(yù)訓(xùn)練的生成型預(yù)訓(xùn)練變換模型(簡稱“gpt”)生成所述icfg中每個節(jié)點的特征向量。
6、s3、基于所生成的節(jié)點的特征向量,利用注意力游走圖核方法構(gòu)建icfg的特征矩陣。
7、s4、將所構(gòu)建的特征矩陣進行扁平化處理。
8、s5、將扁平化后的特征矩陣輸入到全連接神經(jīng)網(wǎng)絡(luò)中,計算目標二進制程序與參考二進制程序之間的相似性得分,判斷相似性。
9、進一步地,步驟s2具體包括:
10、s201、對icfg中的每個節(jié)點(即基本塊)使用匯編指令作為文本描述,所述匯編指令包括操作碼和操作數(shù)。
11、如假設(shè)節(jié)點包含指令序列,指令表示為,則節(jié)點的文本描述為:
12、?;
13、式中,表示節(jié)點對應(yīng)的匯編指令,表示匯編指令的操作碼,表示匯編指令的操作數(shù),n表示節(jié)點中匯編指令的數(shù)量。
14、s202、對節(jié)點中的匯編指令進行歸一化,將操作數(shù)值,內(nèi)存地址,寄存器以及非系統(tǒng)函數(shù)名歸一化為對應(yīng)的通用標識符。
15、s203、將每個節(jié)點的文本表示輸入到預(yù)訓(xùn)練的gpt模型中,生成節(jié)點的特征向量。
16、進一步地,步驟s203每個節(jié)點的文本表示輸入到預(yù)訓(xùn)練的gpt模型中,生成節(jié)點的特征向量的過程具體如下:
17、(1)將節(jié)點的文本表示輸入到分詞器中,用于將輸入的匯編指令字符串轉(zhuǎn)換為token?id序列,即生成gpt模型的輸入序列;
18、(2)將輸入序列輸入到gpt模型中,生成序列的特征表示,具體過程如下:
19、所述gpt模型包括嵌入層、位置編碼器和多層transformer編碼器;
20、首先將步驟(1)生產(chǎn)的輸入序列輸入gpt模型的嵌入層轉(zhuǎn)換為嵌入表示;
21、然后將所述輸入序列的位置信息輸入到gpt模型的位置編碼器中得到的位置編碼,并添加到所述嵌入表示中得到包含位置編碼的嵌入表示,用以保留序列中每個位置的信息;
22、接下來,將包含位置編碼的嵌入表示輸入到gpt模型的多層transformer編碼器,每層的輸出作為下一層的輸入;所述transformer編碼器包含兩個子層,即:多頭自注意力機制和前反饋神經(jīng)網(wǎng)絡(luò);所述多頭自注意力機制用于計算輸入序列中每個位置的注意力權(quán)重,并生成加權(quán)表示和;所述前反饋神經(jīng)網(wǎng)絡(luò)由兩個線性變換和一個激活函數(shù)組成;
23、最后,輸入序列的特征表示為gpt模型的最后一層的輸出,即由每個詞的隱層表示構(gòu)成的表示矩陣;
24、(3)采用平均池化的方法對步驟(2)輸出的序列的特征矩陣進行聚合,將每個節(jié)點的特征向量表示為固定長度的向量,即得每個節(jié)點的特征向量。
25、具體地,s203的步驟(1)的計算過程表示為如下:
26、將節(jié)點?的文本表示??輸入到分詞器中,生成gpt模型的輸入序列,表示為如下:
27、;
28、式中,為分詞器函數(shù),用于將輸入的匯編指令字符串轉(zhuǎn)換為token?id序列。
29、具體地,s203的步驟(2)將輸入序列輸入到gpt模型中,生成序列的特征表示的過程具體如下:
30、所述gpt模型包括嵌入層、位置編碼器和多層transformer編碼器,首先將輸入序列輸入gpt模型的嵌入層轉(zhuǎn)換為嵌入表示,即:
31、;
32、式中,表示gpt模型的嵌入層;
33、然后將輸入序列的位置信息輸入到gpt模型的位置編碼器中得到的位置編碼,并添加到嵌入表示中得到包含位置編碼的嵌入表示,用以保留序列中每個位置的信息,即:
34、;
35、式中,表示gpt模型的位置編碼器;
36、接下來,將包含位置編碼的嵌入表示輸入到gpt模型的多層transformer編碼器,每層的輸出作為下一層的輸入,每一層的隱層表示為:
37、;
38、式中,表示多層transformer編碼器的層數(shù),且,表示第層transformer編碼器,是輸入序列的嵌入表示,是第層的隱層表示;
39、transformer編碼器包含兩個子層,即:多頭自注意力機制和前反饋神經(jīng)網(wǎng)絡(luò);
40、所述多頭自注意力機制用于計算輸入序列中每個位置的注意力權(quán)重,并生成加權(quán)表示和,即:
41、;
42、式中,,,分別表示查詢、鍵和值矩陣,是鍵的維度,表示注意力機制的核心計算過程,表示激活函數(shù),表示鍵矩陣的轉(zhuǎn)置;
43、所述前反饋神經(jīng)網(wǎng)絡(luò)由兩個線性變換和一個激活函數(shù)組成,即:
44、;
45、式中,和表示線性變換中的權(quán)重矩陣,和表示相應(yīng)的偏置向量,表示前反饋神經(jīng)網(wǎng)絡(luò),表示relu激活函數(shù);
46、最后輸入序列的特征表示為gpt模型的最后一層的輸出,即由每個詞的隱層表示構(gòu)成的表示矩陣,所述輸入序列的特征表示如下:
47、;
48、式中,表示節(jié)點對應(yīng)的輸入序列的特征表示矩陣,每一行代表一個詞的隱層向量,且,其中是輸入序列的長度,是隱層向量的維度,表示n?行?d列的實數(shù)矩陣,表示gpt模型最后一層的輸出特征表示;
49、具體地,s203的步驟(3)采用平均池化的方法對序列的特征矩陣進行聚合,將每個節(jié)點的特征向量表示為固定長度的向量,計算公式如下:
50、;
51、其中,表示節(jié)點中第個詞的隱層向量,是節(jié)點中的詞數(shù);表示聚合后節(jié)點的特征向量。
52、進一步地,步驟s3基于生成的節(jié)點特征向量,利用注意力游走圖核方法構(gòu)建icfg的特征矩陣的過程具體如下:
53、(1)通過計算相似性矩陣對輸入圖的頂點屬性進行處理;
54、(2)在處理完頂點屬性后的輸入圖上進行基于注意力的游走構(gòu)建輸入圖的特征矩陣。
55、更進一步地,上述步驟(1)通過計算相似性矩陣對輸入圖的頂點屬性進行處理,具體過程如下:
56、將輸入的二進制程序的icfg,即輸入圖表示為:,其中為頂點集合,為邊集合;
57、所述輸入圖具有個頂點,每個頂點有維屬性,則頂點屬性集合;設(shè)置個隱藏圖的集合,其中,第個隱藏圖有個頂點,每個頂點也有維屬性,因此每個隱藏圖的屬性矩陣;
58、根據(jù)輸入圖的頂點屬性和隱藏圖的屬性矩陣,計算相似性矩陣:
59、;
60、其中,,的元素表示隱藏圖的第個頂點和輸入圖的第個頂點的屬性相似性;
61、對相似性矩陣矢量化得到矢量化向量,即:
62、;
63、式中,表示矢量化向量,表示矢量化函數(shù),表示維度為?的實數(shù)向量;
64、更進一步地,上述步驟(2)在處理完頂點屬性后的輸入圖上進行基于注意力的游走構(gòu)建輸入圖的特征矩陣;具體過程如下:
65、將輸入圖和隱藏圖進行直接積,形成一個新的圖即直接圖,直接圖的頂點是輸入圖g和隱藏圖的頂點的有序?qū)?,兩個頂點和之間有邊當且僅當和在輸入圖中相鄰且和隱藏圖中相鄰,計算公式如下:
66、;
67、;
68、;
69、式中,和分別表示直接圖的點集合和邊集合,和分別表示輸入圖和隱藏圖的頂點集合,和分別表示輸入圖和隱藏圖的邊集合;和表示輸入圖g的頂點,和表示隱藏圖的頂點;
70、設(shè)直接圖的鄰接矩陣為,鄰接矩陣的次冪表示步游走中,從一個頂點到另一個頂點的路徑數(shù),注意力游走核通過引入鄰接矩陣的注意力矩陣,并計算鄰接矩陣的冪次來捕捉兩個圖的相似性,計算公式如下:
71、?;
72、?;
73、式中,表示元素乘積,表示直接圖的頂點數(shù)量,表示對所有頂點對進行求和,表示鄰接矩陣的冪;注意力權(quán)重矩陣在訓(xùn)練過程中會被調(diào)整,以優(yōu)化圖核的效果,為全連接層的權(quán)重矩陣;,分別表示矢量化向量的第個和第個值,表示矢量化向量的轉(zhuǎn)置;表示激活函數(shù);
74、由于核函數(shù)對于不同的步數(shù),可以得到不同的核值,因此對于每個輸入圖,構(gòu)建一個特征矩陣f,即:
75、
76、表示輸入圖和隱藏圖之間步的隨機游走核。
77、進一步地,步驟s4將特征矩陣進行扁平化處理的過程具體如下:
78、將特征矩陣f進行扁平化處理,變成一個向量,將特征矩陣輸入到一個全連接層,輸出一個固定維度的向量,設(shè)全連接層的權(quán)重為,則輸出向量的計算公式如下:
79、
80、式中,是全連接層的權(quán)重矩陣,是偏置向量,是激活函數(shù)。
81、進一步地,步驟s5相似性判斷的具體過程如下:
82、s501、將目標二進制程序和參考二進制程序的扁平化特征矩陣分別輸入到全連接神經(jīng)網(wǎng)絡(luò)中;
83、s502、通過全連接神經(jīng)網(wǎng)絡(luò)計算兩個程序的特征向量;
84、s503、使用相似性度量方法計算兩個特征向量之間的相似性得分;
85、s504、根據(jù)相似性得分判斷目標二進制程序與參考二進制程序的相似性。
86、進一步地,步驟s503中相似性度量方法包括余弦相似度法或歐式距離法。
87、進一步地,所述的二進制程序包括但不限于以下類型:可執(zhí)行文件、動態(tài)鏈接庫、靜態(tài)鏈接庫。
88、進一步地,所述方法還包括根據(jù)s5的相似性得分檢測以下內(nèi)容:二進制程序間的重用關(guān)系、二進制程序的漏洞分析、惡意軟件的家族分類。
89、第二方面,本發(fā)明還提供一種基于注意力游走核的二進制程序相似性檢測系統(tǒng),具體包括:數(shù)據(jù)處理模塊、語義感知模塊、結(jié)構(gòu)感知模塊、相似性判斷模塊;
90、數(shù)據(jù)處理模塊,用于對待檢測的二進制程序進行靜態(tài)分析并生成其對應(yīng)的icfg;
91、語義感知模塊,用于生產(chǎn)icfg的節(jié)點特征向量,提取所述二進制程序的語義信息;
92、結(jié)構(gòu)感知模塊,用于結(jié)合注意力游走圖核和神經(jīng)網(wǎng)絡(luò)提取icfg的結(jié)構(gòu)信息,并生成圖的特征矩陣;
93、相似性判斷模塊,用于計算目標二進制程序與參考二進制程序之間的相似性得分,判斷兩者的相似性。
94、本發(fā)明的有益效果:
95、和現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于,通過結(jié)合注意力游走圖核和神經(jīng)網(wǎng)絡(luò)對二進制程序進行相似性檢測,不僅能有效結(jié)合圖的結(jié)構(gòu)和頂點屬性信息,捕捉圖結(jié)構(gòu)信息,還能通過矩陣運算實現(xiàn)高效的圖相似性度量,計算上更加高效。因此本發(fā)明的方法可以處理復(fù)雜的程序結(jié)構(gòu),在提高檢測效率的同時還能具有較高的檢測準確率。
96、本發(fā)明提供的方法中,采用gpt模型來感知節(jié)點的語義信息,通過使用gpt模型對過程間控制流圖(icfg)中的節(jié)點進行特征向量提取。通過使用gpt來感知和提取節(jié)點的語義信息,能夠更全面地捕捉二進制程序中的復(fù)雜語義特征,增強相似性檢測的準確性。
97、本發(fā)明方法中,采用的注意力游走核方法通過引入基于權(quán)重的注意力游走策略,使得算法在探索圖的結(jié)構(gòu)時能夠重點關(guān)注具有更大影響力的路徑,從而提高檢測的準確度和效率。
98、本發(fā)明的方法在使用圖核時,添加了節(jié)點的屬性特征向量,將每個節(jié)點的語義信息和結(jié)構(gòu)特征結(jié)合在一起,通過特征矩陣進行扁平化處理后輸入到全連接神經(jīng)網(wǎng)絡(luò)中,從而實現(xiàn)相似性計算。這種方式不僅考慮了圖的拓撲結(jié)構(gòu),還通過添加節(jié)點的屬性特征向量來豐富特征表示,這種方式能夠有效結(jié)合圖的結(jié)構(gòu)和節(jié)點屬性信息,從而提高相似性度量的精度。
99、本發(fā)明可以廣泛應(yīng)用于二進制程序的惡意軟件檢測與分析、漏洞檢測與修復(fù)、知識產(chǎn)權(quán)保護、補丁匹配與版本跟蹤等,具有廣闊的應(yīng)用前景。