本發(fā)明涉及協(xié)議逆向領(lǐng)域,更具體的說(shuō)是涉及協(xié)議消息字段劃分的推斷,尤其是基于執(zhí)行軌跡的協(xié)議消息字段劃分方案。
背景技術(shù):
1、協(xié)議逆向工程(protocol?reverse?engineering,pre)是一種在協(xié)議規(guī)約未公開(kāi)或不可用的情況下推斷協(xié)議規(guī)范描述信息的技術(shù)。pre在網(wǎng)絡(luò)審計(jì)、軟件安全性分析、安全漏洞挖掘等涉及網(wǎng)絡(luò)管理和網(wǎng)絡(luò)攻防的領(lǐng)域都有著重要的應(yīng)用。協(xié)議格式提取是pre的核心任務(wù),旨在推斷協(xié)議消息字段的語(yǔ)法和語(yǔ)義。其中,字段語(yǔ)法推斷,也稱(chēng)消息字段劃分,主要用于確定協(xié)議消息的結(jié)構(gòu)規(guī)則,即每個(gè)消息字段在整個(gè)消息結(jié)構(gòu)中的開(kāi)始位置和結(jié)束位置。消息字段劃分是進(jìn)行協(xié)議消息格式提取的第一步和關(guān)鍵,其結(jié)果的準(zhǔn)確性直接影響整個(gè)協(xié)議逆向過(guò)程的質(zhì)量。
2、消息字段劃分可以采用基于網(wǎng)絡(luò)流量的方法和基于執(zhí)行軌跡跟蹤的方法?;诰W(wǎng)絡(luò)流量的方法通常采用構(gòu)建統(tǒng)計(jì)模型或者機(jī)器學(xué)習(xí)的技術(shù),雖然具備不受平臺(tái)限制的優(yōu)勢(shì),但字段劃分結(jié)果的精確性受數(shù)據(jù)多樣性影響較大?;趫?zhí)行軌跡跟蹤的方法通過(guò)監(jiān)控和分析協(xié)議程序在解析報(bào)文時(shí)的執(zhí)行軌跡,來(lái)推斷協(xié)議字段的劃分。其中,基于二進(jìn)制指令分析的方法是該領(lǐng)域的主流技術(shù)。這種方法無(wú)需依賴(lài)協(xié)議實(shí)現(xiàn)的源代碼,可以直接從協(xié)議實(shí)現(xiàn)程序的執(zhí)行過(guò)程中提取協(xié)議字段劃分信息,具有顯著的精確性。
3、然而,盡管可以從程序的執(zhí)行指令中獲取豐富的運(yùn)行時(shí)信息,但是,由于需要各種復(fù)雜的專(zhuān)業(yè)分析技術(shù)的支撐以及協(xié)議代碼實(shí)現(xiàn)的多樣性而導(dǎo)致的二進(jìn)制指令的多樣性,當(dāng)前,基于二進(jìn)制指令分析的字段劃分方法仍面臨著字段過(guò)劃分和欠劃分等問(wèn)題,影響著字段劃分結(jié)果的精確性。如何從二進(jìn)制指令執(zhí)行信息中精確地推斷協(xié)議字段的格式,仍然是一個(gè)尚未解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明的目的是提供一種基于二進(jìn)制指令序列語(yǔ)義相似性的協(xié)議消息字段劃分方法。這種方法通過(guò)捕獲二進(jìn)制指令執(zhí)行信息構(gòu)造指令集合,結(jié)合各指令內(nèi)操作數(shù)的污點(diǎn)傳播情況提取得到候選字段,再根據(jù)指令序列的語(yǔ)義相似性對(duì)相鄰候選字段進(jìn)行合并,得到最終的字段劃分結(jié)果。此法提高了協(xié)議逆向分析中字段劃分的效率和精準(zhǔn)性,為協(xié)議安全性評(píng)估提供了強(qiáng)有力的技術(shù)支持。
2、為了實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
3、一種基于二進(jìn)制指令序列語(yǔ)義相似性的協(xié)議消息字段劃分方法,包括以下步驟:
4、步驟一:將待進(jìn)行字段劃分的消息msg發(fā)送到具有記錄指令執(zhí)行信息功能的服務(wù)器端,以字節(jié)為單位進(jìn)行污點(diǎn)傳播的追蹤,在服務(wù)器的日志信息中提取出處理msg的二進(jìn)制指令執(zhí)行信息集合ins;
5、步驟二:基于處理msg的二進(jìn)制指令執(zhí)行信息集合ins,根據(jù)指令內(nèi)操作數(shù)的使用特征,提取每條指令內(nèi)的被污染的字節(jié)序列作為候選字段,得到msg的初步字段劃分結(jié)果集合l;
6、步驟三:基于處理msg的二進(jìn)制指令執(zhí)行信息集合ins以及msg的初步字段劃分結(jié)果集合l,按照候選字段偏移量位置由小到大,對(duì)l內(nèi)的元素進(jìn)行排序并更新l;
7、步驟四:從ins提取與l中每個(gè)候選字段相關(guān)的指令序列,利用nw算法分析指令序列的語(yǔ)義相似性,合并l內(nèi)指令序列語(yǔ)義相似的相鄰候選字段,輸出msg的最終字段劃分結(jié)果。
8、進(jìn)一步,所述步驟二,具體包括如下步驟:
9、步驟a1:遍歷ins,若ins尚未遍歷完畢,則從ins中讀取一條未被遍歷的指令inst和inst內(nèi)涉及的操作數(shù)集合oprd,繼續(xù)執(zhí)行步驟a2;否則,msg的基于指令內(nèi)分析的初步字段劃分結(jié)束,輸出初步字段劃分結(jié)果集合l;
10、步驟a2:遍歷oprd,若oprd尚未遍歷完畢,則從oprd中讀取一個(gè)未被遍歷的操作數(shù)operand,繼續(xù)執(zhí)行步驟a3;否則,返回步驟a1;
11、步驟a3:判斷operand是否被污染,如果被污染,則從inst的執(zhí)行信息中提取污染operand的msg內(nèi)的連續(xù)字節(jié)偏移量位置,將這些連續(xù)字節(jié)偏移量位置作為一個(gè)候選字段加入集合l中;否則,返回步驟a2;
12、進(jìn)一步,所述步驟四,具體包括如下步驟:
13、步驟b1:按順序遍歷l,若l尚未遍歷完畢,則從l中讀取下一組未被遍歷的候選字段li和li+1,繼續(xù)步驟b2;否則,執(zhí)行步驟b3;
14、步驟b2:判斷l(xiāng)i和li+1的指令序列語(yǔ)義是否相似,若相似,則將li和li+1合并為一個(gè)新的候選字段,更新li+1并將li賦值為空值null;若li和li+1的指令序列語(yǔ)義不相似,則返回b1;
15、步驟b3:刪除l中所有空值null,即得msg的最終字段劃分結(jié)果。
16、進(jìn)一步,所述步驟b2中的判斷候選字段li和li+1的指令序列語(yǔ)義是否相似,,具體包括如下步驟:
17、步驟c1:分別提取候選字段li和li+1對(duì)應(yīng)的字節(jié)序列bs(i,j)和bs(j+1,k);
18、步驟c2:遍歷ins,若ins尚未遍歷完畢,則從ins中取出一條尚未遍歷的指令inst以及inst訪問(wèn)的被污染的字節(jié)構(gòu)成的字節(jié)序列seq,繼續(xù)執(zhí)行c3;否則,執(zhí)行步驟c4;
19、步驟c3:判斷seq是否是bs(i,j)和bs(j+1,k)的子序列,若seq是bs(i,j)的子序列,則將inst加入與候選字段li相關(guān)的指令集合i;若seq是bs(j+1,k)的子序列,則將inst加入與候選字段li+1相關(guān)的指令集合j;若seq既不是bs(i,j)的子序列也不是bs(j+1,k)的子序列,則返回步驟c2;
20、步驟c4:計(jì)算集合i和集合j之間的指令語(yǔ)義相似度得分,若語(yǔ)義相似度得分大于等于相似度閾值,則判定候選字段li和li+1為語(yǔ)義相似;否則,判定候選字段li和li+1語(yǔ)義不相似。
21、經(jīng)由上述的技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本發(fā)明提供了一種基于二進(jìn)制指令序列語(yǔ)義相似性的協(xié)議消息字段劃分方法。本方法針對(duì)當(dāng)前基于二進(jìn)制指令的消息字段劃分方法,由于存在過(guò)劃分和欠劃分而導(dǎo)致劃分結(jié)果不準(zhǔn)確的問(wèn)題,結(jié)合指令間分析技術(shù),提出了一種基于二進(jìn)制指令序列語(yǔ)義相似性的協(xié)議消息字段劃分方法。本方法根據(jù)動(dòng)態(tài)污點(diǎn)分析信息,首先基于二進(jìn)制指令內(nèi)操作數(shù)的使用特征,提取被污染的字節(jié)序列作為候選字段,獲取初步字段劃分初步結(jié)果。然后,使用nw算法,判斷相關(guān)指令序列之間的語(yǔ)義相似性并合并語(yǔ)義行為相似的字段,消除初步字段劃分結(jié)果中存在的過(guò)劃分和欠劃分,從而確保最終劃分結(jié)果的精確性。
1.一種基于二進(jìn)制指令序列語(yǔ)義相似性的協(xié)議消息字段劃分方法,其特征在于,包括以下步驟:
2.根據(jù)權(quán)利要求1所述的協(xié)議消息字段劃分方法,其特征在于,所述步驟二,具體包括如下步驟:
3.根據(jù)權(quán)利要求1所述的協(xié)議消息字段劃分方法,其特征在于,所述步驟四,具體包括如下步驟:
4.根據(jù)權(quán)利要求1所述的協(xié)議消息段劃分方法,其特征在于,所述步驟b2中的判斷候選字段li和li+1的指令序列語(yǔ)義是否相似,具體包括如下步驟: