• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于模糊測試技術(shù)的電力工控系統(tǒng)漏洞挖掘算法

      2024-05-03 08:16:08賀晉宏馮楠付強(qiáng)付敏羅義釗
      關(guān)鍵詞:工控測試用例漏洞

      賀晉宏 馮楠 付強(qiáng) 付敏 羅義釗

      摘要:針對(duì)工控系統(tǒng)運(yùn)行環(huán)境封閉帶來的傳統(tǒng)漏洞檢測無法導(dǎo)出系統(tǒng)組件進(jìn)行分析的問題,根據(jù)工控網(wǎng)絡(luò)協(xié)議特征,結(jié)合測試用例變異因子,針對(duì)Modbus_TCP公開協(xié)議提出一種改進(jìn)的電力工控系統(tǒng)漏洞測試挖掘方法。所提方法利用變異因子與工控協(xié)議特征依賴關(guān)系,改造協(xié)議測試用例。通過將測試用例的特征值和數(shù)據(jù)域的長度值因子及其數(shù)值的選擇進(jìn)行合并,并做歸一化處理.進(jìn)而簡化協(xié)議測試過程中變異因子的執(zhí)行次數(shù)。針對(duì)Modbus_TCP工控協(xié)議的模糊測試結(jié)果表明,改進(jìn)后的Fuzzing測試表現(xiàn)出了更高的測試用例接收率和測試效率,測試樣例的平均接收率至少提高50。

      關(guān)鍵詞:電力行業(yè);工業(yè)控制系統(tǒng);漏洞挖掘;Fuzzing測試;開源;異常分析和監(jiān)測;數(shù)據(jù)生成;變異率

      中圖分類號(hào):TM73 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1000-1646(2024)01-0103-06

      隨著自動(dòng)化技術(shù)的高速發(fā)展,工業(yè)控制系統(tǒng)逐步與現(xiàn)代網(wǎng)絡(luò)互聯(lián),設(shè)備兼容需求的增大,數(shù)據(jù)共享也帶來了網(wǎng)絡(luò)漏洞的風(fēng)險(xiǎn)。

      電力作為國家的關(guān)鍵性基礎(chǔ)行業(yè),在發(fā)、變、輸、配電,以及綜合調(diào)度等多個(gè)環(huán)節(jié)均涉及設(shè)備應(yīng)用的工業(yè)控制系統(tǒng)。由于工業(yè)自動(dòng)化設(shè)備集成度高、生產(chǎn)廠家眾多,開發(fā)主要考慮功能接口,而深入、安全、有效的健壯性測試和工控漏洞檢測尚有空缺,使得系統(tǒng)在接入公網(wǎng)后存有安全隱患。為了電網(wǎng)系統(tǒng)的安全有效運(yùn)行,對(duì)電力工控系統(tǒng)的安全缺陷進(jìn)行漏洞挖掘,使工控系統(tǒng)能及時(shí)得到完善,已成為當(dāng)下工控領(lǐng)域確保其安全運(yùn)行的熱門研究方向。傳統(tǒng)漏洞挖掘技術(shù)主要有逆向分析和模糊測試兩種模式。由于工控系統(tǒng)環(huán)境封閉、系統(tǒng)組件導(dǎo)出困難,因此逆向分析難以奏效。近些年不少學(xué)者提出Fuzzing模糊化測試,從某種程度上推動(dòng)了漏洞挖掘技術(shù)的發(fā)展。尤其是自2007年以來,較多開源和商業(yè)的Fuzzing工具被研制出來,并向產(chǎn)品化應(yīng)用轉(zhuǎn)化。然而,絕大多數(shù)Fuzzing技術(shù)與框架應(yīng)用于電力工控系統(tǒng)時(shí)仍存在較多問題,工控協(xié)議難以開展智能化漏洞挖掘。所以,為進(jìn)一步提高電力工控系統(tǒng)所涉及的協(xié)議漏洞挖掘效率,本文利用Sulley開源測試軟件,將下位機(jī)層面工業(yè)控制器協(xié)議的漏洞挖掘作為研究重點(diǎn)。通過對(duì)軟件中的Fuzzing框架流程進(jìn)行改進(jìn),提出了針對(duì)Modbus_TCP工控協(xié)議的漏洞挖掘策略。

      1 基于Sulley的Fuzzing框架及改進(jìn)

      1.1 Fuzzing框架

      Fuzzing是一款開源的通用網(wǎng)絡(luò)協(xié)議模糊測試框架,其在簡化數(shù)據(jù)表示、傳輸、測試用例執(zhí)行及目標(biāo)監(jiān)視方面均具有極強(qiáng)的優(yōu)越性,在計(jì)算機(jī)系統(tǒng)中,根據(jù)被分析數(shù)據(jù)的特點(diǎn),模糊測試包括web頁面測試、協(xié)議測試、文件格式測試等,協(xié)議由5個(gè)基本模塊構(gòu)成,F(xiàn)uzzing模糊測試流程如下:

      1)目標(biāo)識(shí)別。在識(shí)別目標(biāo)程序時(shí),盡可能參考以往存在的安全漏洞以及研發(fā)者的研發(fā)習(xí)慣。

      2)輸入識(shí)別。程序缺陷往往源自于對(duì)用戶輸入偏好的了解不足,這里輸入向量由文檔名稱、結(jié)構(gòu)和消息頭構(gòu)成。

      3)模糊測試數(shù)據(jù)的產(chǎn)生。確定需要輸入的資料數(shù)據(jù)(輸入向量)。

      4)模糊測試數(shù)據(jù)的解析。存在缺陷的數(shù)據(jù)輸入到被選定的目標(biāo)程序,如打開存有缺陷的文檔。

      5)異常監(jiān)視。主要記錄引起崩潰的數(shù)據(jù)包以及目標(biāo)程序。

      1.2 模糊測試器

      Sulley作為一種模糊測試器,功能強(qiáng)大,不僅可以簡化數(shù)據(jù),還可以在程序崩潰時(shí)提供崩潰報(bào)告,其基本功能為:

      1)數(shù)據(jù)生成。該模塊用于構(gòu)造測試用例所需的數(shù)據(jù)塊,包括:數(shù)據(jù)表示、塊定義、塊輔助函數(shù)以及積木等。

      2)會(huì)話管理。該模塊的作用是將由數(shù)據(jù)生成的模塊產(chǎn)生一系列Request,連接成一個(gè)有向無環(huán)圖。在Fuzzing測試被啟動(dòng)后,Sulley遍歷會(huì)話路徑,對(duì)每一節(jié)點(diǎn)Request依次做變異處理,以達(dá)到深度Fuzzing測試。

      3)事后監(jiān)視。保存生成的變異數(shù)據(jù),監(jiān)視對(duì)應(yīng)結(jié)果變化。

      基于Sulley進(jìn)行Fuzzing流程,可實(shí)現(xiàn)數(shù)據(jù)生成、測試用例執(zhí)行及過程監(jiān)控自動(dòng)化過程,但作為一種通用網(wǎng)絡(luò)協(xié)議模糊測試框架,將其直接應(yīng)用于電力工控系統(tǒng)協(xié)議測試時(shí),存在協(xié)議格式解析代價(jià)大、測試用例相關(guān)性大、測試效率低等問題。

      1.3 基于溯源的狀態(tài)數(shù)據(jù)改進(jìn)分析

      事實(shí)上,僅有成熟的Fuzzing框架不足以支持工控系統(tǒng)漏洞的發(fā)掘,而將Sulley植入到更強(qiáng)大的硬件系統(tǒng)才能更好地完成Fuzzing功能。因此,通過分析基于開源Sulley的Fuzzing框架在電力工控系統(tǒng)協(xié)議測試時(shí)存在的問題,本文將從兩個(gè)方面對(duì)基于Sulley的Fuzzing框架進(jìn)行改進(jìn),具體如下:

      1)傳統(tǒng)Fuzzing框架中,框架本身對(duì)數(shù)據(jù)包無追溯功能,這使得整個(gè)Fuzzing無法訪問指定的數(shù)據(jù)內(nèi)容,無法滿足數(shù)據(jù)回放。因此,將傳統(tǒng)一對(duì)一的受舉報(bào)收發(fā)方式修改為多對(duì)一的收發(fā)方式。

      2)傳統(tǒng)Fuzzing框架不具備數(shù)據(jù)分析能力,因此需要在接收到上一數(shù)據(jù)包時(shí),相應(yīng)地增加框架本身對(duì)協(xié)議中遇到的數(shù)據(jù)處理、失誤判斷、設(shè)備的存活響應(yīng)等狀態(tài)數(shù)據(jù)進(jìn)行分析。

      上述所提及改進(jìn)部分將在Fuzzing流程執(zhí)行模塊中體現(xiàn),包括通信模塊的產(chǎn)生、流程設(shè)計(jì)和協(xié)議數(shù)據(jù)分析等。

      2 基于改進(jìn)Fuzzing框架的ModbusTCP協(xié)議漏洞挖掘策略

      2.1 Modbus_TCP協(xié)議分析

      Modbus_TCP的報(bào)文由報(bào)文頭、功能碼、數(shù)據(jù)三部分組成,如圖1所示。其中,MBAP報(bào)文頭按照標(biāo)識(shí)符內(nèi)容可分為事務(wù)、協(xié)議、長度及單元四個(gè)域。事務(wù)標(biāo)識(shí)符用于事務(wù)處理配對(duì),保證Modbus_TCP通信數(shù)據(jù)包按序發(fā)送接收;協(xié)議標(biāo)識(shí)符用于系統(tǒng)內(nèi)的多路復(fù)用,默認(rèn)值為0;長度表示次字段域后數(shù)據(jù)包的字節(jié)數(shù);單元標(biāo)識(shí)符用于Modbus_TCP與Modbus串行鏈路,從設(shè)備的通信表示遠(yuǎn)程從設(shè)備的識(shí)別碼。

      Modbus_TCP協(xié)議按照?qǐng)?bào)文類型分為3種:請(qǐng)求、響應(yīng)以及異常響應(yīng)。請(qǐng)求報(bào)文和響應(yīng)報(bào)文具有類似的協(xié)議數(shù)據(jù)單元(PDU),由功能碼和數(shù)據(jù)域構(gòu)成,數(shù)據(jù)域由功能碼決定,包括地址偏移、線圈數(shù)、寄存器數(shù)等信息。異常響應(yīng)報(bào)文的協(xié)議數(shù)據(jù)單元包含差錯(cuò)碼和異常碼,其中請(qǐng)求功能碼的數(shù)值加上“0x80”即為差錯(cuò)碼數(shù)值。

      對(duì)Modbus_TCP協(xié)議進(jìn)行模糊測試時(shí),需要對(duì)其數(shù)據(jù)包進(jìn)行析構(gòu),并基于Sulley框架生成相關(guān)測試數(shù)據(jù)。數(shù)據(jù)的定義是根據(jù)協(xié)議包格式中不同字段功能定義的,分別表達(dá)了該數(shù)據(jù)報(bào)文所包含的信息?;赟ulley對(duì)Modbus_TCP協(xié)議數(shù)據(jù)包的析構(gòu)方式,如表1所示。

      根據(jù)上述拆分的數(shù)據(jù)包,指定、重整待發(fā)送內(nèi)容。例如對(duì)生成的Fuzzing數(shù)據(jù)進(jìn)行分塊、劃分編號(hào)、對(duì)相關(guān)字段進(jìn)行變換,然后發(fā)送指定編號(hào)范圍的數(shù)據(jù)塊。在發(fā)送數(shù)據(jù)之前,分析發(fā)送數(shù)據(jù)內(nèi)容格式,判斷其合法性。若判斷為合法,則根據(jù)待發(fā)送內(nèi)容,預(yù)生成期望的響應(yīng)內(nèi)容。將接收到的響應(yīng)數(shù)據(jù)與期望數(shù)據(jù)取值范圍進(jìn)行對(duì)比,查看接收數(shù)據(jù)取值是否存在異常。若接收數(shù)據(jù)與預(yù)期數(shù)據(jù)功能碼或取值范圍不一致,則記錄相應(yīng)的異常報(bào)文信息,且根據(jù)記錄日志分析異常產(chǎn)生的原因、位置并進(jìn)行顯示?;诟倪M(jìn)的Fuzzing框架,Modbus_TCP數(shù)據(jù)分析過程流程圖,如圖2所示。

      圖2中的數(shù)據(jù)分析部分具體包括:對(duì)事務(wù)處理標(biāo)識(shí)符、協(xié)議標(biāo)識(shí)符、長度字段、單元標(biāo)識(shí)符、功能碼合法性的分析。若數(shù)據(jù)正常,則要生成預(yù)期響應(yīng)數(shù)據(jù),生成標(biāo)準(zhǔn)如下:1)事務(wù)處理標(biāo)識(shí)符與發(fā)送端一致;2)協(xié)議標(biāo)識(shí)符設(shè)置為0;3)長度字段取值根據(jù)請(qǐng)求功能碼進(jìn)行范圍設(shè)置;4)單元標(biāo)識(shí)符與發(fā)送端一致;5)依據(jù)功能碼對(duì)數(shù)據(jù)域格式范圍進(jìn)行設(shè)置。

      2.2 基于概率的變異因子取值選擇

      工控協(xié)議的測試用例涉及協(xié)議特征值和數(shù)據(jù)域長度值,這兩個(gè)數(shù)值的生成與變異因子和變異因子數(shù)值的選擇相關(guān)。為減少選擇次數(shù),將數(shù)據(jù)域長度值的變異因子及其數(shù)值的選擇合并,進(jìn)行歸一化處理。根據(jù)歸一化處理連續(xù)取值區(qū)間的特性,本文采用3層卷積神經(jīng)網(wǎng)絡(luò)計(jì)算變異因子的概率。具體過程如下:

      1)假設(shè)首先輸入第i條報(bào)文Xi,i∈N,協(xié)議分析層根據(jù)卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)數(shù)值分布規(guī)律。

      2)設(shè)概率用符號(hào)ρ表示,輸出卷積神經(jīng)網(wǎng)絡(luò)的概率關(guān)系矩陣,矩陣存儲(chǔ)257個(gè)數(shù)據(jù)值作為輸出值概率ρi,概率之和ρ0+ρ1+…+ρ256=1,概率模型矩陣為

      2.3 關(guān)聯(lián)規(guī)則特征學(xué)習(xí)及測試用例策略生成

      Modbus_TCP協(xié)議特征具有相互依賴的關(guān)系,長度域包含單元標(biāo)識(shí)、功能碼、數(shù)據(jù)域長度等信息。在模糊測試時(shí),需構(gòu)造正常用例監(jiān)控被測對(duì)象狀態(tài)。首先從Modbus_TCP節(jié)點(diǎn)進(jìn)行遍歷搜索,并采用協(xié)議特征生成變異因子,最后生成測試用例。其中,協(xié)議之間的依賴關(guān)系體現(xiàn)為字節(jié)關(guān)系。整個(gè)流程所涉及的關(guān)鍵點(diǎn)分析包括:葉子節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)集的分析,可變字節(jié)間的強(qiáng)關(guān)聯(lián)規(guī)則挖掘,本文主要采用循環(huán)搜索和最小支持度的候選集和裁剪。

      3 Modbus_TCP協(xié)議測試分析

      基于上述提出的改進(jìn)Fuzzing框架策略,對(duì)配電室電力工控系統(tǒng)中的PLC控制器進(jìn)行Fuzzing測試,該控制器由HoneyWell廠商提供,實(shí)驗(yàn)環(huán)境如圖3所示,型號(hào)為PLC S7-1500,本文使用S7-1500的CPU自帶端口部署Modbus_TCP協(xié)議。

      通過與未改進(jìn)的傳統(tǒng)網(wǎng)絡(luò)模糊測試器對(duì)比,在模糊測試過程中,共發(fā)現(xiàn)了3個(gè)協(xié)議漏洞,具體的請(qǐng)求響應(yīng)異常數(shù)據(jù)如表2所示。

      Modbus協(xié)議中存在三種功能碼,已經(jīng)定義好的公共碼、自定義碼及預(yù)留碼。其中,公共碼對(duì)應(yīng)有開關(guān)量輸入和模擬量輸入。常見功能碼有:表示讀線圈的十進(jìn)制功能碼為01,讀多個(gè)存儲(chǔ)器的十進(jìn)制功能碼為03等,具體可參考Modbus_TCP公共協(xié)議說明書。此外,異常響應(yīng)是根據(jù)請(qǐng)求數(shù)據(jù)包內(nèi)容產(chǎn)生預(yù)期響應(yīng)數(shù)據(jù),并將兩者進(jìn)行對(duì)比,當(dāng)出現(xiàn)異常時(shí),即功能碼+0x80,表示為錯(cuò)誤碼。表2中,前2個(gè)異常是寫單個(gè)線圈功能碼為0x05時(shí),通過Modbus_TCP協(xié)議規(guī)約文檔,得到協(xié)議程序處理0x05功能碼的流程。若接收的輸出數(shù)據(jù)非0x00和0xFF00,則應(yīng)返回關(guān)于“讀保持寄存器”的異常碼0x03的響應(yīng),并顯示上位機(jī)請(qǐng)求數(shù)據(jù)出現(xiàn)異常。第3個(gè)異常情況是讀取線圈的0x01功能碼的過程,數(shù)據(jù)域顯示為空,對(duì)于該非合法數(shù)據(jù),Modbus_TCP協(xié)議規(guī)約應(yīng)返回異常功能碼為0x03,該用例可引發(fā)Modbus_TCP協(xié)議指針出現(xiàn)異常。由此可以看出,根據(jù)協(xié)議特征構(gòu)造的測試用例可檢測工控系統(tǒng)的協(xié)議漏洞,獲得系統(tǒng)異常信息。此外,實(shí)驗(yàn)中寫寄存器功能碼還出現(xiàn)了拒絕服務(wù)風(fēng)險(xiǎn)的警告,這說明該設(shè)備存在漏洞。

      此外,實(shí)驗(yàn)統(tǒng)計(jì)了5、10、15、20個(gè)樣本數(shù)據(jù)下改進(jìn)Fuzzing和傳統(tǒng)Fuzzing測試方法生成的測試用例數(shù)量,如圖4所示。測試用例數(shù)是程序崩潰或樣本執(zhí)行完產(chǎn)生的樣例總數(shù)。

      從圖4中可以看出,隨著樣本數(shù)量的增加,本文方法生成的測試數(shù)據(jù)明顯少于未改進(jìn)算法生成的測試數(shù)據(jù)。另外,傳統(tǒng)Fuzzing生成的測試用例數(shù)會(huì)隨著樣本數(shù)量的增加而上升得更為平穩(wěn),這是由于傳統(tǒng)方法中用戶往往提供的樣本存在低質(zhì)量數(shù)據(jù),導(dǎo)致變異產(chǎn)生數(shù)據(jù)冗余,對(duì)輸入樣本進(jìn)行了修剪。

      改進(jìn)Fuzzing和傳統(tǒng)Fuzzing測試方法在接收率方面的對(duì)比如圖5所示。由于本文所提的改進(jìn)方法更依賴樣本數(shù)量,使得策略生成具有強(qiáng)關(guān)聯(lián)規(guī)則,因此產(chǎn)生的用例更具有針對(duì)性。結(jié)果顯示,實(shí)驗(yàn)數(shù)據(jù)顯示的最大差距600s時(shí)約為60%,最小差距1200s時(shí)約為55%,平均接收率至少提高50%。

      4 結(jié)束語

      本文對(duì)Sulley開源Fuzzing框架原理及其模糊測試流程進(jìn)行了分析,針對(duì)數(shù)據(jù)生成和測試方法進(jìn)行拓展,提出了一種針對(duì)電力工控系統(tǒng)協(xié)議的Sulley改進(jìn)Fuzzing框架,并設(shè)計(jì)了Modbus_TCP協(xié)議Fuzzing測試用例。該框架策略可用于電力工業(yè)控制系統(tǒng)中協(xié)議層的漏洞發(fā)掘,具有測試數(shù)據(jù)靈活、效率高等優(yōu)點(diǎn),為協(xié)議Fuzzing的產(chǎn)品化應(yīng)用打下了基礎(chǔ)。

      本文結(jié)合變異因子和協(xié)議特征構(gòu)造了工控網(wǎng)絡(luò)協(xié)議測試用例,提出了適合Modbus_TCP公開協(xié)議的模糊測試方法。根據(jù)變異因子和工控協(xié)議特征的依賴關(guān)系改進(jìn)傳統(tǒng)Fuzzing測試,通過構(gòu)造協(xié)議測試用例,將協(xié)議測試用例的特征值和數(shù)據(jù)域長度值的變異因子及其數(shù)值的選擇合二為一,通過歸一化處理,簡化選擇操作,有效減少協(xié)議測試過程中變異因子的執(zhí)行次數(shù)。仿真實(shí)驗(yàn)結(jié)果表明,對(duì)工控公有協(xié)議進(jìn)行模糊測試,改進(jìn)后Fuzzing測試顯示出更高的測試用例接收率:結(jié)合請(qǐng)求與響應(yīng)的協(xié)議特征關(guān)系,經(jīng)監(jiān)聽獲得了被測對(duì)象的3個(gè)異常信息,相比于未經(jīng)改進(jìn)的Fuzzing測試檢測效率更高;而在測試樣例的接收率方面,平均接收率至少提高50%。下一步研究中可考慮采用多元聯(lián)動(dòng)(即同時(shí)變換多個(gè)相關(guān)字段),引入數(shù)據(jù)行為和狀態(tài)機(jī)的方式來生成數(shù)據(jù)。一方面提高數(shù)據(jù)關(guān)聯(lián)性;另一方面可超越黑盒測試的限制,進(jìn)一步提高數(shù)據(jù)的生成效率,從而解決隨機(jī)產(chǎn)生數(shù)據(jù)所帶來的狀態(tài)爆炸等問題。

      (責(zé)任編輯:楊樹 英文審校:尹淑英)

      猜你喜歡
      工控測試用例漏洞
      漏洞
      基于SmartUnit的安全通信系統(tǒng)單元測試用例自動(dòng)生成
      基于混合遺傳算法的回歸測試用例集最小化研究
      工控速派 一個(gè)工控技術(shù)服務(wù)的江湖
      工控速?zèng)?一個(gè)工控技術(shù)服務(wù)的江湖
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      熱點(diǎn)追蹤 工控安全低調(diào)而不失重要
      基于攻擊圖的工控系統(tǒng)脆弱性量化方法
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      九江县| 台江县| 东台市| 抚远县| 内江市| 囊谦县| 社会| 武宣县| 朝阳区| 莫力| 科尔| 乌苏市| 新密市| 元氏县| 介休市| 剑河县| 桦南县| 诸暨市| 宁蒗| 北海市| 长顺县| 尤溪县| 扎鲁特旗| 庆云县| 东乌珠穆沁旗| 大洼县| 南投市| 阳东县| 德清县| 新疆| 乌兰浩特市| 邢台县| 台山市| 公主岭市| 霍城县| 缙云县| 临泽县| 沂水县| 德令哈市| 涿州市| 浦城县|