[發(fā)明專利]一種基于隱馬爾可夫模型的匯編指令級(jí)漏洞檢測(cè)方法無(wú)效
| 申請(qǐng)?zhí)枺?/td> | 201010257022.8 | 申請(qǐng)日: | 2010-08-19 |
| 公開(kāi)(公告)號(hào): | CN101923618A | 公開(kāi)(公告)日: | 2010-12-22 |
| 發(fā)明(設(shè)計(jì))人: | 王崑聲;李寧;胡昌振;白昊 | 申請(qǐng)(專利權(quán))人: | 中國(guó)航天科技集團(tuán)公司第七一○研究所;北京理工大學(xué) |
| 主分類號(hào): | G06F21/00 | 分類號(hào): | G06F21/00 |
| 代理公司: | 北京理工大學(xué)專利中心 11120 | 代理人: | 付雷杰 |
| 地址: | 100048*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 隱馬爾可夫 模型 匯編 指令 漏洞 檢測(cè) 方法 | ||
1.一種基于隱馬爾可夫模型的匯編指令級(jí)漏洞檢測(cè)方法,其具體操作步驟如下:
步驟一、構(gòu)造漏洞指令庫(kù);
漏洞指令庫(kù)用來(lái)存儲(chǔ)已知漏洞及已知漏洞的特征,一個(gè)漏洞包括3個(gè)屬性:漏洞名稱、匯編指令幀和數(shù)字碼;每個(gè)匯編指令幀包括1條或多條匯編指令;每個(gè)數(shù)字碼包括兩部分,其中一部分為每個(gè)漏洞的唯一編碼,另一部分為該漏洞對(duì)應(yīng)的匯編指令幀中包含的匯編指令的順序編號(hào);對(duì)于每一個(gè)漏洞,其具體構(gòu)造方法為:
步驟1.1:針對(duì)包含一種軟件漏洞的一個(gè)或一個(gè)以上的可執(zhí)行程序使用靜態(tài)反匯編分析工具進(jìn)行反匯編,獲得可執(zhí)行程序中全部函數(shù)的函數(shù)結(jié)構(gòu)圖;將每個(gè)函數(shù)結(jié)構(gòu)圖稱為一個(gè)匯編指令片段;
步驟1.2:從步驟1.1中獲得的匯編指令片段中提取出產(chǎn)生該漏洞的匯編指令片段;
步驟1.3:使用動(dòng)態(tài)反匯編分析工具從步驟1.2中得到的產(chǎn)生該漏洞的匯編指令片段中依次提取出產(chǎn)生該漏洞的匯編指令,將這些匯編指令組成的有序集合稱為匯編指令幀;具體為:
步驟1.3.1:在正常狀態(tài)下運(yùn)行步驟1.1中所述可執(zhí)行程序,使用動(dòng)態(tài)反匯編分析工具依次跟蹤步驟1.2中提取出的產(chǎn)生該漏洞的匯編指令片段,記錄下每個(gè)產(chǎn)生該漏洞的匯編指令片段中在此次運(yùn)行過(guò)程中所執(zhí)行的匯編指令,將這些執(zhí)行的匯編指令組成的有序集合稱為匯編指令集合1;
步驟1.3.2:激活該漏洞,使用動(dòng)態(tài)反匯編分析工具再次運(yùn)行步驟1.1中所述可執(zhí)行程序,跟蹤步驟1.2中提取的產(chǎn)生該漏洞的匯編指令片段,依次記錄下每個(gè)匯編指令片段中在此次運(yùn)行過(guò)程中所執(zhí)行的匯編指令,將這些執(zhí)行的匯編指令組成的有序集合稱為匯編指令集合2;
步驟1.3.3:依次將匯編指令集合1和匯編指令集合2中的匯編指令進(jìn)行匹配比對(duì),并分為以下三種情況處理:
情況1:對(duì)于同時(shí)出現(xiàn)在匯編指令集合1和匯編指令集合2中的匯編指令,視為不是觸發(fā)該漏洞的匯編指令,做刪除處理;
情況2:對(duì)于在編指令集合1中出現(xiàn),但是在匯編指令集合2中沒(méi)有出現(xiàn)的匯編指令,做丟棄處理;做丟棄處理的這些匯編指令是可執(zhí)行程序在正常運(yùn)行時(shí)所執(zhí)行的,而在觸發(fā)漏洞時(shí)未執(zhí)行的匯編指令,因此視為不是觸發(fā)該漏洞的匯編指令;
情況3:對(duì)于在匯編指令集合2中出現(xiàn),但是在編指令集合1中沒(méi)有出現(xiàn)的匯編指令組成的有序集合稱為匯編指令幀;匯編指令幀中存儲(chǔ)與觸發(fā)漏洞有關(guān)的匯編指令;
經(jīng)過(guò)上述步驟的操作即可得到產(chǎn)生該漏洞的匯編指令幀;
步驟1.4:構(gòu)造漏洞指令庫(kù);
按照步驟1.3得到的匯編指令幀中的匯編指令的依次提取順序,為每條匯編指令增加一條數(shù)字碼;
通過(guò)重復(fù)執(zhí)行步驟1.1到步驟1.4的操作,可構(gòu)造包含多個(gè)漏洞的漏洞指令庫(kù);
步驟二、針對(duì)步驟一中構(gòu)造的漏洞指令庫(kù)中的全部漏洞,分別為漏洞指令庫(kù)中的每種漏洞選取多個(gè)含有該漏洞的可執(zhí)行程序作為該漏洞的訓(xùn)練數(shù)據(jù);漏洞指令庫(kù)中的每種漏洞用Vi表示,該漏洞的訓(xùn)練數(shù)據(jù)用Ti表示;i代表漏洞指令庫(kù)中每個(gè)漏洞的唯一編碼;
步驟三、獲取漏洞指令庫(kù)中的每個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段;
針對(duì)步驟二得到的漏洞指令庫(kù)中的每個(gè)漏洞的訓(xùn)練數(shù)據(jù)使用靜態(tài)反匯編分析工具進(jìn)行反匯編,獲得可執(zhí)行程序中全部函數(shù)的函數(shù)結(jié)構(gòu)圖;將每個(gè)函數(shù)結(jié)構(gòu)圖稱為一個(gè)匯編指令片段;
步驟四、獲取訓(xùn)練數(shù)據(jù)的數(shù)字碼序列;
依次對(duì)步驟三得到的漏洞指令庫(kù)中的每個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的匯編指令分別采用結(jié)構(gòu)化處理方法進(jìn)行處理,獲得漏洞指令庫(kù)中每個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段的數(shù)字碼序列;
所述結(jié)構(gòu)化處理方法的具體操作步驟為:
步驟4.1:依次將漏洞指令庫(kù)中的每一條匯編指令中的數(shù)字去掉,組成新字符串;漏洞指令庫(kù)中的所有匯編指令分別用P1~Psum表示,其中,sum為正整數(shù),表示漏洞指令庫(kù)包含的匯編指令的數(shù)量;由漏洞指令庫(kù)中的每一條匯編指令產(chǎn)生的新字符串分別用Q1~Qsum表示;
步驟4.2:漏洞指令庫(kù)包含的匯編指令的數(shù)量使用計(jì)數(shù)器A計(jì)數(shù),計(jì)數(shù)器A的計(jì)數(shù)值用m表示,m≥1且m為正整數(shù);設(shè)定m的初值為1;
步驟4.3:判斷計(jì)數(shù)器A的計(jì)數(shù)值m是否不大于第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段的個(gè)數(shù)N,N為正整數(shù);;如果該條件成立,則執(zhí)行步驟4.4的操作;否則,結(jié)束操作;
步驟4.4:將第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的每一條匯編指令中的數(shù)字去掉,組成新字符串;第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的每一條匯編指令分別用P′1~P′sum′表示,其中,sum′為正整數(shù),表示第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的匯編指令的數(shù)量;第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的每一條匯編指令產(chǎn)生的新字符串分別用Q′1~Q′sum′表示;
步驟4.5:第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的匯編指令的數(shù)量用計(jì)數(shù)器B計(jì)數(shù),計(jì)數(shù)器B的計(jì)數(shù)值用i表示,i為正整數(shù);設(shè)定計(jì)數(shù)器B的計(jì)數(shù)值i的初值為1;
步驟4.6:判斷第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的匯編指令的計(jì)數(shù)器B的計(jì)數(shù)值i是否不大于第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的匯編指令的數(shù)量sum′,如果該條件成立,則執(zhí)行步驟4.7的操作;否則,執(zhí)行步驟4.9的操作;
步驟4.7:依次將第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的每一條匯編指令中的數(shù)字去掉,組成新字符串Q′i與步驟4.1得到的將漏洞指令庫(kù)中的每一條匯編指令中的數(shù)字去掉,組成新字符串Q1~Qsum逐一對(duì)比,并采用字符匹配的方法計(jì)算字符串Q′i分別與字符串Q1~Qsum的相似度,分別用S1~Ssum表示;如果相似度S1~Ssum均小于某一預(yù)先設(shè)定的閾值,則字符串Q′i對(duì)應(yīng)的數(shù)字碼為0;否則,如果相似度S1~Ssum中僅有一個(gè)最大值Smax,則字符串Q′i對(duì)應(yīng)的數(shù)字碼為最大值Smax對(duì)應(yīng)的匯編指令在漏洞指令庫(kù)的數(shù)字碼;否則,如果相似度S1~Ssum中的最大值Smax多于一個(gè),即可隨機(jī)選取任意一個(gè)最大值Smax,則字符串Q′i對(duì)應(yīng)的數(shù)字碼為該最大值Smax對(duì)應(yīng)的匯編指令在漏洞指令庫(kù)的數(shù)字碼;
步驟4.8:將第m個(gè)漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的匯編指令的計(jì)數(shù)器B的計(jì)數(shù)值i值增1,重復(fù)執(zhí)行步驟4.6到步驟4.8;
步驟4.9:將漏洞指令庫(kù)包含的匯編指令的計(jì)數(shù)器A的計(jì)數(shù)值m的值增1,重復(fù)執(zhí)行步驟4.3到步驟4.9;
經(jīng)過(guò)結(jié)構(gòu)化處理方法的一次完整操作,即可得到屬于漏洞指令庫(kù)中的一個(gè)漏洞的數(shù)字碼序列Or={o1,...,ok,...,oN},也稱為該漏洞的一組觀測(cè)序列;1≤k≤N且k為正整數(shù),N為該漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段的個(gè)數(shù),該漏洞的訓(xùn)練數(shù)據(jù)的匯編指令片段中的每一個(gè)匯編指令片段產(chǎn)生一個(gè)該漏洞的觀測(cè)序列;1≤r≤N′,N′為漏洞指令庫(kù)中包含的漏洞的數(shù)量,r和N′均為正整數(shù);
步驟五、依次獲得漏洞指令庫(kù)中的每個(gè)漏洞對(duì)應(yīng)的隱馬爾科夫模型的參數(shù)λr={Ar,Br,πr};
分別利用漏洞指令庫(kù)中的每個(gè)漏洞的訓(xùn)練數(shù)據(jù)訓(xùn)練隱馬爾科夫模型,獲得漏洞指令庫(kù)中的每個(gè)漏洞對(duì)應(yīng)的隱馬爾科夫模型的參數(shù)λr={Ar,Br,πr};
對(duì)于漏洞指令庫(kù)中的每個(gè)漏洞的一組觀測(cè)序列Or={o1,...,ok,...,oN},利用Baum-Welch算法迭代調(diào)整隱馬爾科夫模型模型的參數(shù),得到最優(yōu)的能夠描述該類別漏洞的隱馬爾科夫模型參數(shù)λr={Ar,Br,πr},即為漏洞指令庫(kù)中的每個(gè)漏洞訓(xùn)練一個(gè)隱馬爾科夫模型模型;
步驟六、使用步驟五得到的漏洞指令庫(kù)中的每個(gè)漏洞的隱馬爾科夫模型模型對(duì)待測(cè)可執(zhí)行程序進(jìn)行漏洞識(shí)別;具體為:
步驟6.1:針對(duì)待測(cè)可執(zhí)行程序使用靜態(tài)反匯編分析工具進(jìn)行反匯編,并獲得可執(zhí)行程序中全部函數(shù)的函數(shù)結(jié)構(gòu)圖,并將每個(gè)函數(shù)結(jié)構(gòu)圖稱為一個(gè)匯編指令片段;
步驟6.2:依次對(duì)待測(cè)可執(zhí)行程序的匯編指令片段中的匯編指令進(jìn)行處理,獲得待測(cè)可執(zhí)行程序的數(shù)字碼序列o′={v1,...,vt},也稱為該待測(cè)可執(zhí)行程序的觀測(cè)序列;其中,v1,...,vt為該待測(cè)可執(zhí)行程序的匯編指令片段中的一條匯編指令對(duì)應(yīng)的數(shù)字碼;t為正整數(shù),表示待測(cè)可執(zhí)行程序的匯編指令片段中的匯編指令的數(shù)量;具體操作步驟為:
步驟6.2.1:待測(cè)可執(zhí)行程序的匯編指令片段中的匯編指令的數(shù)量用計(jì)數(shù)器C計(jì)數(shù),計(jì)數(shù)器C的計(jì)數(shù)值用j表示,j為正整數(shù);設(shè)定計(jì)數(shù)器C的計(jì)數(shù)值j的初值為1;;
步驟6.2.2:判斷待測(cè)可執(zhí)行程序的匯編指令片段中的匯編指令的計(jì)數(shù)器C的計(jì)數(shù)值j的值是否不大于待測(cè)可執(zhí)行程序的匯編指令片段中的匯編指令的數(shù)量,如果該條件成立,則執(zhí)行步驟6.2.3的操作;否則,執(zhí)行步驟4.9的操作;
步驟6.2.3:依次將待測(cè)可執(zhí)行程序的匯編指令片段中的每一條匯編指令Cj中的數(shù)字去掉,組成新字符串C′j與步驟4.1得到的將漏洞指令庫(kù)中的每一條匯編指令中的數(shù)字去掉,組成新字符串Q1~Qsum逐一對(duì)比,并采用字符匹配的方法計(jì)算字符串C′j分別與字符串Q1~Qsum的相似度,分別用S′1~S′sum表示;如果相似度S′1~S′sum均小于某一預(yù)先設(shè)定的閾值,則字符串C′j對(duì)應(yīng)的數(shù)字碼為0;否則,如果相似度S′1~S′sum中僅有一個(gè)最大值S′max,則字符串C′j對(duì)應(yīng)的數(shù)字碼為最大值S′max對(duì)應(yīng)的匯編指令在漏洞指令庫(kù)的數(shù)字碼;否則,如果相似度S′1~S′sum中的最大值S′max多于一個(gè),即可隨機(jī)選取任意一個(gè)最大值S′max,則字符串C′j對(duì)應(yīng)的數(shù)字碼為該最大值S′max對(duì)應(yīng)的匯編指令在漏洞指令庫(kù)的數(shù)字碼;
步驟6.2.4:將表示待測(cè)可執(zhí)行程序的匯編指令片段中的匯編指令的計(jì)數(shù)器C的計(jì)數(shù)值j值增1,重復(fù)執(zhí)行步驟6.2.2到步驟6.2.4;
經(jīng)過(guò)步驟6.2.1到步驟6.2.4的操作,即可得到待測(cè)可執(zhí)行程序的數(shù)字碼序列o′={v1,...,vt};
步驟6.3:根據(jù)步驟6.2中得到的待測(cè)可執(zhí)行程序的數(shù)字碼序列o′分別利用步驟五得到的漏洞指令庫(kù)中的每個(gè)漏洞對(duì)應(yīng)的隱馬爾科夫模型的參數(shù)λr={Ar,Br,πr},計(jì)算該待測(cè)可執(zhí)行程序的觀察序列o′={v1,...,vt}在該隱馬爾科夫模型λr={Ar,Br,πr}上發(fā)生的概率P(o′|λr),即得到P(o′|λ1)到P(o′|λN′);
步驟6.4:取P(o′|λ1)到P(o′|λN′)中的最大值,如果該最大值大于某一個(gè)預(yù)先設(shè)定的閾值,則待測(cè)可執(zhí)行程序含有該最大值對(duì)應(yīng)的隱馬爾科夫模型所表示的漏洞;
經(jīng)過(guò)上述步驟的操作,即可檢測(cè)出待測(cè)可執(zhí)行程序中存在的漏洞。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國(guó)航天科技集團(tuán)公司第七一○研究所;北京理工大學(xué),未經(jīng)中國(guó)航天科技集團(tuán)公司第七一○研究所;北京理工大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010257022.8/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過(guò)保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過(guò)保護(hù)特定的外圍設(shè)備,如鍵盤(pán)或顯示器
G06F21-06 .通過(guò)感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過(guò)限制訪問(wèn)計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過(guò)限制訪問(wèn)或處理程序或過(guò)程
- 認(rèn)知無(wú)線電系統(tǒng)中基于隱馬爾可夫模型的頻譜接入方法
- 一種基于隱馬爾可夫模型的人臉識(shí)別方法
- 基于隱馬爾可夫模型的英文簡(jiǎn)歷關(guān)鍵字段抽取方法
- 基于遺傳算法的隱馬爾科夫模型在主機(jī)風(fēng)險(xiǎn)評(píng)估中的應(yīng)用
- 用于推薦系統(tǒng)的數(shù)據(jù)處理方法、數(shù)據(jù)處理裝置和電子設(shè)備
- SDN數(shù)據(jù)中心基于隱馬爾可夫模型的多徑路由選徑方法
- 基于高斯混合的因子隱馬爾可夫負(fù)荷分解方法
- 一種外骨骼步態(tài)辨識(shí)方法和裝置
- 隱馬爾可夫模型在地圖匹配中的優(yōu)化方法及GPS定位方法
- 基于隱馬爾可夫模型的Costas信號(hào)解碼方法、系統(tǒng)及存儲(chǔ)介質(zhì)





