[發(fā)明專利]一種基于動態(tài)污點分析的Modbus協(xié)議漏洞挖掘方法有效
| 申請?zhí)枺?/td> | 202110471457.0 | 申請日: | 2021-04-29 |
| 公開(公告)號: | CN113179274B | 公開(公告)日: | 2022-05-20 |
| 發(fā)明(設(shè)計)人: | 田健彤 | 申請(專利權(quán))人: | 哈爾濱工程大學(xué) |
| 主分類號: | H04L9/40 | 分類號: | H04L9/40;H04L43/18;H04L12/40 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 150001 黑龍江省哈爾濱市南崗區(qū)*** | 國省代碼: | 黑龍江;23 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 動態(tài) 污點 分析 modbus 協(xié)議 漏洞 挖掘 方法 | ||
1.一種基于動態(tài)污點分析的Modbus協(xié)議漏洞挖掘方法,其特征在于,包括以下步驟:
步驟1:配置好工控協(xié)議通信環(huán)境,使工控協(xié)議進行正常通信;對通信報文進行抓取,并將部分正常通信報文進行變異處理;
所述的對正常通信報文進行變異處理的方法具體為:以正常工控協(xié)議格式為模板,根據(jù)變異方法,將協(xié)議中的字段替換為變異數(shù)據(jù),利用協(xié)議生成器,逐一生成大量的變異后的協(xié)議;所述的變異數(shù)據(jù)包括字節(jié)域數(shù)據(jù)變異元素和數(shù)據(jù)域變異元素;
所述的字節(jié)域數(shù)據(jù)變異元素是把協(xié)議中各字段的字節(jié)特征作為單位,把其中的特殊字節(jié)數(shù)據(jù)從各字段所要求的取值范圍中提取出來,并分為數(shù)值邊界值變異元素、格式化字符變異元素以及特殊值變異元素,作為變異元素生成變異后的協(xié)議報文;所述的字節(jié)域數(shù)據(jù)變異元素分為數(shù)值邊界值變異元素、格式化字符變異元素以及特殊值變異元素;
所述的數(shù)值邊界值變異元素是將協(xié)議中的字節(jié)值修改為字節(jié)的邊界值;所述的格式化字符變異元素是將協(xié)議中各個字節(jié)的數(shù)值修改為特殊的字符;所述的特殊值變異元素包含的是在協(xié)議的取值范圍中,將數(shù)值邊界值變異元素以及格式化字符變異元素去除,剩下的可以取值的元素;
所述的數(shù)據(jù)域變異元素是通過以數(shù)據(jù)域長度的不同,將不同功能類型碼f的長度值進行分類,確定生成的變異協(xié)議中數(shù)據(jù)域的長度,再利用不同類型的字節(jié)變異元素來填充數(shù)據(jù)域中的字節(jié)值;數(shù)據(jù)域變異元素分為空指針變異元素、功能區(qū)的緩沖區(qū)溢出變異元素、協(xié)議的緩沖區(qū)變異元素;
所述的空指針變異元素的取值范圍表示為[0,Min(f)],Min(f)表示功能類型碼f對應(yīng)的數(shù)據(jù)域的最小長度;所述的功能區(qū)的緩沖區(qū)溢出變異元素的取值范圍是[Max(f),Max(all)],Max(f)表示功能類型碼f對應(yīng)的數(shù)據(jù)域的最大長度,Max(all)表示工控協(xié)議中所有的功能類型碼中數(shù)據(jù)域的最大長度;所述的協(xié)議的緩沖區(qū)變異元素的取值范圍是[Max(all),+∞);
步驟2:對正常通信報文和變異報文分別進行污點源數(shù)據(jù)標(biāo)記;
通過采取細粒度大小,以Modbus協(xié)議中各個字節(jié)作為污點標(biāo)記單位,一個字節(jié)被標(biāo)記為一個污點源數(shù)據(jù)TaintData;以一個三元組的形式對每一個污點數(shù)據(jù)進行描述,三元組中包含協(xié)議通信報文序號PID、協(xié)議字段編號PFID、字段偏移位置FOP,污點源數(shù)據(jù)表示為:
TaintData=PID,PFID,F(xiàn)OP
其中,PID是通信報文作為污點數(shù)據(jù)的唯一序號;FOP是對工控協(xié)議結(jié)構(gòu)中各個字段進行編號;FOP是污點源數(shù)據(jù)在各個字段中的字節(jié)偏移量;
步驟3:將完成污點源數(shù)據(jù)標(biāo)記后的正常通信報文和變異報文分別發(fā)送到協(xié)議服務(wù)器中;
步驟4:協(xié)議服務(wù)器對正常通信報文和變異報文的污點源數(shù)據(jù)標(biāo)記進行識別,獲得當(dāng)前污點源的操作數(shù)執(zhí)行的指令類型;依據(jù)指定的細粒度污點傳播規(guī)則,進行污點傳播;
步驟5:判斷當(dāng)前操作數(shù)的污染情況;如果當(dāng)前操作數(shù)仍保持被污染狀態(tài),則根據(jù)當(dāng)前危險函數(shù)的污染狀態(tài),更新危險函數(shù)的調(diào)用狀態(tài)信息,返回步驟4;如果當(dāng)前操作數(shù)的污染情況被消除,則結(jié)束。
2.根據(jù)權(quán)利要求1所述的一種基于動態(tài)污點分析的Modbus協(xié)議漏洞挖掘方法,其特征在于:所述的步驟4中指令類型包括賦值復(fù)制指令、算數(shù)計算指令以及特殊指令,特殊指令中又包含清零指令和單操作數(shù)指令;將所有的指令操作過程,抽象為一個映射過程F,表示為:
F(INS):Y=f(X)
其中,INS被定義為程序中的指令集合{insi};X被定義為指令中源操作數(shù)的集合{xi};Y被定義為指令中目的操作數(shù)的集合{yi};f被定義為指令的運算方式;
針對污點傳播規(guī)則來說,也同樣將其看作是一個映射關(guān)系,表示為公式:
Ft(INS):Yt=ft(Xt)
其中,Xt被定義為指令的源操作數(shù)當(dāng)前存在的污點的集合{xti};Yt被定義為被傳遞的指令目的操作數(shù)的污點集合{ytj};對于其中任意取值的i和j對應(yīng)的xti以及ytj,分別表示為指令的源操作數(shù)集合、指令的目的操作數(shù)集合中當(dāng)前的污點狀態(tài);xt1=0表示指令中第一個源操作數(shù)不是污點數(shù)據(jù),yt1=1表示指令運算后,第一個目的操作數(shù)被傳播為污點數(shù)據(jù);
根據(jù)復(fù)制規(guī)則進行污點傳播的賦值復(fù)制指令包括:mov、cmov、movsz、repmovs、replpds;
賦值復(fù)制指令mov對應(yīng)的映射過程為公式:
F(mov dest,src):dest=src
賦值復(fù)制指令mov的污點傳播規(guī)則為公式:
Ft(mov dest,src):destt=srct
依據(jù)計算規(guī)則進行污點傳播的算數(shù)計算指令包括:add、inc、div、mul;
算數(shù)計算指令add對應(yīng)的映射過程為公式:
F(add dest,src):dest=dest+src
算數(shù)計算指令add的污點傳播規(guī)則為公式:
其中,dest0與dest1是為了將源操作數(shù)和目的操作數(shù)集合中的元素區(qū)分開;
需要指定特殊污點傳播規(guī)則的特殊指令包括sub、movsd、push、pop、call、ret;
當(dāng)sub指令的源操作數(shù)和目的操作數(shù)是同一個數(shù)據(jù),進行相減操作后,得出的結(jié)果為0,是個常數(shù),這時對于污點傳播過程來說,需要將源操作數(shù)的污點狀態(tài)漂白,運算結(jié)果不再帶有污點屬性;
movsd指令的污點傳播規(guī)則按照復(fù)制規(guī)則進行傳播,規(guī)則為公式:
Ft(movsd):[dest]t=[src]t。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于哈爾濱工程大學(xué),未經(jīng)哈爾濱工程大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110471457.0/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





