亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        新型電力系統(tǒng)終端通信協(xié)議的逆向分析及模糊測(cè)試

        2023-11-28 11:35:18韓嘉佳孫昌華
        浙江電力 2023年11期
        關(guān)鍵詞:分析

        韓嘉佳,孫 歆,呂 磅,孫昌華,錢(qián) 錦

        (國(guó)網(wǎng)浙江省電力有限公司電力科學(xué)研究院,杭州 310014)

        0 引言

        隨著我國(guó)大力推進(jìn)實(shí)施以雙碳和新能源為主的新型電力系統(tǒng)戰(zhàn)略,未來(lái)電力系統(tǒng)結(jié)構(gòu)形態(tài)將發(fā)生較大改變,電力系統(tǒng)逐步打破了以往的封閉性和專(zhuān)有性,接入企業(yè)的終端數(shù)量快速增加。電力行業(yè)安全防護(hù)責(zé)任界限擴(kuò)展,安全防護(hù)壓力增加,各類(lèi)設(shè)備、平臺(tái)廣泛接入電力系統(tǒng),可能出現(xiàn)多種異構(gòu)網(wǎng)絡(luò),通信傳輸模型更為復(fù)雜,可能出現(xiàn)通過(guò)破解算法、協(xié)議及中間人攻擊等多攻擊方式,對(duì)傳輸數(shù)據(jù)及控制指令進(jìn)行篡改、屏蔽等,新型電力系統(tǒng)安全形勢(shì)日益嚴(yán)峻。因此,如何在新型電力系統(tǒng)終端上利用擬態(tài)防御思想,對(duì)提升新型電力系統(tǒng)終端系統(tǒng)的防御能力和安全等級(jí)至關(guān)重要。新型電力系統(tǒng)終端擬態(tài)防御的第一步,就是要通過(guò)對(duì)截獲的新型電力系統(tǒng)終端通信數(shù)據(jù)進(jìn)行分析,動(dòng)態(tài)識(shí)別出新型電力系統(tǒng)終端應(yīng)用程序所用的網(wǎng)絡(luò)協(xié)議,從而理解通信行為,判斷未知數(shù)據(jù)是否為攻擊方發(fā)出的病毒數(shù)據(jù)。

        新型電力系統(tǒng)終端可獲取的通信數(shù)據(jù)類(lèi)型繁多,隨著應(yīng)用程序的爆發(fā)式增長(zhǎng),針對(duì)應(yīng)用程序執(zhí)行產(chǎn)生的數(shù)據(jù)信息的獲取途徑逐漸成為研究熱點(diǎn)。然而,在應(yīng)用程序執(zhí)行過(guò)程中,初始數(shù)據(jù)可能被覆蓋或者刪除,也可能由于加密技術(shù),不能獲得完整的應(yīng)用程序數(shù)據(jù)。為了信息采集的完整性,還應(yīng)對(duì)應(yīng)用程序執(zhí)行過(guò)程中產(chǎn)生的網(wǎng)絡(luò)通信數(shù)據(jù)進(jìn)行獲取。通過(guò)分析截獲的通信數(shù)據(jù),識(shí)別和解析出應(yīng)用程序采用的網(wǎng)絡(luò)協(xié)議,根據(jù)其通信機(jī)制和內(nèi)容,理解通信行為,為判斷網(wǎng)絡(luò)數(shù)據(jù)的危險(xiǎn)性、提取有效證據(jù)信息提供基礎(chǔ)。

        目前工控漏洞挖掘方法有兩種,一種是面向協(xié)議報(bào)文的逆向分析,另一種是面向固件及執(zhí)行程序的逆向分析。對(duì)固件進(jìn)行分析如文獻(xiàn)[1],該類(lèi)方法需要的條件較為嚴(yán)苛,需要對(duì)實(shí)現(xiàn)通信的程序進(jìn)行監(jiān)控,訪問(wèn)其運(yùn)行環(huán)境并記錄產(chǎn)生的指令信息,使用了軟件逆向的方法。但是在實(shí)際工業(yè)控制系統(tǒng)中很難接觸到工控設(shè)備實(shí)體。一般來(lái)說(shuō),為了提高協(xié)議安全研究的效率,需要首先對(duì)協(xié)議進(jìn)行協(xié)議逆向工程,以獲取協(xié)議的消息格式等信息。因此,在工業(yè)互聯(lián)網(wǎng)中更加關(guān)注以協(xié)議逆向?yàn)榍疤岬拿嫦騾f(xié)議的漏洞挖掘和分析技術(shù)。PRE(協(xié)議逆向工程)僅通過(guò)對(duì)捕獲到的通信實(shí)體雙方的通信流量進(jìn)行分析,提取協(xié)議消息格式等相關(guān)內(nèi)容,從而推斷出未知協(xié)議的消息格式和狀態(tài)機(jī)模型的過(guò)程[2]。在相關(guān)領(lǐng)域,已經(jīng)有許多研究對(duì)協(xié)議逆向的方法進(jìn)行探索和改進(jìn),目的是提高逆向結(jié)果的準(zhǔn)確性。近年來(lái),協(xié)議逆向技術(shù)被用于各個(gè)相關(guān)的安全領(lǐng)域,模糊測(cè)試、網(wǎng)絡(luò)入侵檢測(cè)、入侵防御等都使用了協(xié)議逆向來(lái)獲取未知協(xié)議的先驗(yàn)知識(shí),以提高分析工作效率。

        通常采用對(duì)未知協(xié)議流量中的報(bào)文序列分析來(lái)進(jìn)行協(xié)議逆向。最早的協(xié)議逆向技術(shù)的是Protocol Informatics[3]項(xiàng)目(以下簡(jiǎn)稱(chēng)“PI”)。PI 項(xiàng)目借鑒了一種從DNA序列尋找特定基因的算法,類(lèi)比到協(xié)議逆向領(lǐng)域即從捕獲流量報(bào)文數(shù)據(jù)中尋找特定類(lèi)型的消息。PI 項(xiàng)目為后來(lái)的許多工作提供了指導(dǎo),后來(lái)的研究者對(duì)方法進(jìn)行了改進(jìn),例如Al-Dhaq[4]等人的協(xié)議狀態(tài)機(jī)自動(dòng)提取工具ScriptGen就是以PI 項(xiàng)目為指導(dǎo),該工具完成部分語(yǔ)義的提取,但是在推斷狀態(tài)機(jī)之前并未對(duì)消息序列進(jìn)行聚類(lèi),性能上與今天的工具有很大差距。另一個(gè)重要且經(jīng)典的工具是Golubeva[5]等人提出的Discoverer 工具,其對(duì)不同類(lèi)型的待分析報(bào)文能夠選擇合適的方法,提高了分析性能。在此之后,隨著人工智能技術(shù)的興起,機(jī)器學(xué)習(xí)、自然語(yǔ)言處理領(lǐng)域的算法被應(yīng)用于協(xié)議逆向領(lǐng)域中,協(xié)議逆向工程在短時(shí)間內(nèi)得到迅速發(fā)展,研究對(duì)象從普通的文本協(xié)議擴(kuò)展到二進(jìn)制協(xié)議,方法類(lèi)型也不斷豐富,并且準(zhǔn)確率和可靠性等方面得到大幅度提升。比如張明遠(yuǎn)[6]等人使用了基于序列比對(duì)算法將報(bào)文各個(gè)字段對(duì)齊,Casino[7]等人使用了概率模型尋找報(bào)文關(guān)鍵字段,Khan[8]等人基于頻繁集和先驗(yàn)算法提出了一種無(wú)監(jiān)督學(xué)習(xí)方法來(lái)提取消息格式和協(xié)議狀態(tài)機(jī),Li[9]等人和Rahman[10]等人同時(shí)考慮了基于語(yǔ)義分析和語(yǔ)義分析,并提出了一種由數(shù)據(jù)流和控制流信息組成的EFSM(擴(kuò)展有限狀態(tài)機(jī))行為模型。近年來(lái)也不斷有新的方法提出,例如Sun[11]等人提出使用基于聚類(lèi)效果直觀度量的協(xié)議關(guān)鍵詞概率提取算法,Yang[12]等人提出利用報(bào)文本身特點(diǎn)使用連續(xù)段相似性。

        上述文獻(xiàn)針對(duì)協(xié)議安全性分析的工作主要包括對(duì)協(xié)議進(jìn)行逆向,推斷協(xié)議狀態(tài)機(jī),大多數(shù)是基于網(wǎng)絡(luò)流量的被動(dòng)推斷方式。在協(xié)議漏洞挖掘方面主要是模糊測(cè)試,但存在測(cè)試用例效率低下、耗時(shí)長(zhǎng)、程序崩潰時(shí)無(wú)法定位到崩潰點(diǎn)等問(wèn)題。

        為了解決上述問(wèn)題,本文提出了一種基于網(wǎng)絡(luò)流量分析的私有協(xié)議逆向方法,通過(guò)對(duì)捕獲的流量報(bào)文進(jìn)行分層處理,將未知協(xié)議的數(shù)據(jù)字段提取出來(lái),然后利用N-gram算法進(jìn)行分詞,對(duì)協(xié)議關(guān)鍵詞進(jìn)行聚類(lèi),利用增廣前綴樹(shù)合并狀態(tài),推斷出協(xié)議狀態(tài)機(jī)。生成的協(xié)議狀態(tài)機(jī)與標(biāo)準(zhǔn)協(xié)議狀態(tài)機(jī)利用深度學(xué)習(xí)進(jìn)行一致性匹配,推測(cè)出協(xié)議脆弱性可能出現(xiàn)的地方。對(duì)協(xié)議進(jìn)行安全性測(cè)試,利用模糊測(cè)試的方法分別對(duì)Modbus協(xié)議源碼和消息格式進(jìn)行測(cè)試,通過(guò)對(duì)比不同模糊測(cè)試工具的效率和性能,選擇出了一種較好的協(xié)議測(cè)試工具。

        1 Modbus協(xié)議

        物聯(lián)網(wǎng)終端依靠網(wǎng)絡(luò)協(xié)議進(jìn)行通信,不同廠商可能會(huì)使用不同的協(xié)議,而且不同的應(yīng)用場(chǎng)景和需求對(duì)協(xié)議也有不同的要求。例如,生活中常見(jiàn)的FTP(文件傳輸協(xié)議)、SMTP(簡(jiǎn)單郵件傳輸協(xié)議)、汽車(chē)使用的CAN(控制器局域網(wǎng)總線(xiàn)協(xié)議)、工控領(lǐng)域中的Modbus/TCP 協(xié)議和西門(mén)子S7Comm協(xié)議。

        Modbus協(xié)議全稱(chēng)為Modbus/TCP協(xié)議,就是基于TCP/IP 的工控協(xié)議,其通信模式有3 種情況,分別為請(qǐng)求/應(yīng)答、訂閱/推送和主動(dòng)推送。其設(shè)計(jì)是面向功能的,協(xié)議報(bào)文多為二進(jìn)制報(bào)文,主要傳輸控制命令(控制碼),報(bào)文精簡(jiǎn),比較系統(tǒng)化、結(jié)構(gòu)化。

        Modbus 協(xié)議定義了PDU(協(xié)議數(shù)據(jù)單元)和ADU(應(yīng)用數(shù)據(jù)單元)。ADU由4部分組成,分別是地址域、功能碼、數(shù)據(jù)部分和差錯(cuò)校驗(yàn)。地址域和功能碼都為1個(gè)字節(jié),前者表示設(shè)備地址,后者表示操作功能代碼。數(shù)據(jù)部分可包括偏移量、子功能碼、可變參考等,最大為252字節(jié)。差錯(cuò)校驗(yàn)部分為2字節(jié)。

        Modbus 功能碼的有效范圍是1~255,其常用的功能碼及其功能如表1 所示。其中,01 表示讀取線(xiàn)圈狀態(tài),02 表示讀取輸入狀態(tài),03 表示讀取保持寄存器,04 表示讀取輸入寄存器。可用的功能碼有127個(gè),其中108個(gè)為公共功能碼,公開(kāi)聲明的,具有普遍適用性的,包含保留的未定義的功能碼;其余為用戶(hù)定義功能碼,用戶(hù)自定義操作碼功能。

        表1 常見(jiàn)功能碼及功能Table 1 Common function codes and the functions

        2 智能終端協(xié)議安全性分析系統(tǒng)

        系統(tǒng)框架如圖1所示,新型電力系統(tǒng)終端第三方廠商私有協(xié)議安全性分析系統(tǒng)共分為兩個(gè)模塊:協(xié)議逆向模塊和模糊測(cè)試模塊。協(xié)議逆向模塊是基于網(wǎng)絡(luò)流量分析而設(shè)計(jì)的,主要包括4 個(gè)步驟:預(yù)處理、格式推斷、語(yǔ)義分析和狀態(tài)機(jī)推斷。模糊測(cè)試模塊分為兩部分,為基于源碼的模糊測(cè)試和基于消息格式的模糊測(cè)試,分別對(duì)應(yīng)不同的模糊測(cè)試工具AFL和Boofuzz。

        圖1 智能終端協(xié)議安全性分析系統(tǒng)框架圖Fig.1 Framework of protocol security analyzer for intelligent terminal

        對(duì)于網(wǎng)絡(luò)中捕獲的流量,由于帶寬的不穩(wěn)定和混雜流量的影響,需要先對(duì)捕獲的報(bào)文進(jìn)行分流、去重傳等操作,然后基于5層網(wǎng)絡(luò)架構(gòu)體系對(duì)流量報(bào)文進(jìn)行處理。預(yù)處理可將私有協(xié)議字段部分提取出來(lái),然后進(jìn)行格式推斷,通過(guò)分詞提取協(xié)議關(guān)鍵詞,分析各關(guān)鍵詞之間的關(guān)系,初步推斷協(xié)議格式。之后進(jìn)行語(yǔ)義分析,劃分后的關(guān)鍵詞需要推斷其所代表的含義,如報(bào)文長(zhǎng)度、操作功能、地址或ID等,需要對(duì)固定的取值和可變?nèi)≈颠M(jìn)行分析,甚至還有協(xié)議未使用的字段部分。最后依據(jù)前面的分析,推斷協(xié)議狀態(tài)機(jī),將具有相同特征的關(guān)鍵詞聚為同一類(lèi)簇,可視為同一個(gè)狀態(tài),由此為基礎(chǔ)推斷協(xié)議狀態(tài)機(jī),來(lái)獲得每個(gè)狀態(tài)之間的關(guān)系,尤其是最重要的時(shí)序關(guān)系。最后將推斷的狀態(tài)機(jī)與開(kāi)源協(xié)議逆向軟件推斷的結(jié)果進(jìn)行比對(duì),來(lái)對(duì)協(xié)議安全性進(jìn)行分析。

        2.1 基于N-gram的字段分詞

        N-gram 模型是一種基于統(tǒng)計(jì)的語(yǔ)言模型算法,常用于NLP(自然語(yǔ)言處理)。其基本思想是利用了滑動(dòng)窗口的思想,即對(duì)一串文本數(shù)據(jù)進(jìn)行分詞時(shí),按照字節(jié)的先后順序,依次進(jìn)行大小為N的滑動(dòng)窗口分詞操作,形成若干個(gè)長(zhǎng)度為N的字節(jié)片段序列。

        這與協(xié)議關(guān)鍵詞和協(xié)議狀態(tài)機(jī)的思想類(lèi)似,所以將N-gram算法用于劃分協(xié)議格式,推斷協(xié)議關(guān)鍵字是一種有效的方式。常用的算法是基于二元的Bi-Gram和基于三元的Tri-Gram。

        經(jīng)過(guò)前面的處理,私有網(wǎng)絡(luò)協(xié)議的字段被處理成文本,由于協(xié)議未知,無(wú)法進(jìn)行狀態(tài)標(biāo)注,于是可以先用N-gram算法進(jìn)行處理切分,提取協(xié)議關(guān)鍵詞。評(píng)價(jià)N-gram算法的有效性在于N的取值大小。若N的值過(guò)小,會(huì)使得協(xié)議關(guān)鍵詞被切分,影響準(zhǔn)確率;若N的值過(guò)大,會(huì)導(dǎo)致切分結(jié)果體量過(guò)大,影響處理效率。在經(jīng)過(guò)多次實(shí)驗(yàn)后,了解到關(guān)鍵詞的大小多為1~2 字節(jié),因此選取N的值為1~2。

        2.2 協(xié)議狀態(tài)機(jī)推斷

        由于Modbus是單狀態(tài)協(xié)議,很難根據(jù)協(xié)議的運(yùn)行狀態(tài)推斷協(xié)議狀態(tài)機(jī),因此,本節(jié)利用協(xié)議的字段構(gòu)建Modbus協(xié)議狀態(tài)機(jī)。在進(jìn)行關(guān)鍵詞分類(lèi)時(shí),由于對(duì)每個(gè)類(lèi)簇進(jìn)行標(biāo)記,所以進(jìn)行無(wú)監(jiān)督學(xué)習(xí)分類(lèi)。對(duì)于私有網(wǎng)絡(luò)協(xié)議的報(bào)文,其數(shù)據(jù)字段可能由于功能不同,結(jié)構(gòu)也不同,所以根據(jù)分詞后協(xié)議特征關(guān)鍵詞的分布密度進(jìn)行聚類(lèi),測(cè)試結(jié)果也可能是不同的。

        因此,需要用一種方法來(lái)對(duì)聚類(lèi)結(jié)果進(jìn)行有效性評(píng)價(jià),輪廓系數(shù)被認(rèn)為是一種比較好的用于評(píng)估聚類(lèi)有效性的方式。它的取值范圍在-1~1,越接近1 表示聚類(lèi)的結(jié)果越有效。當(dāng)系數(shù)小于0時(shí),表示有部分重疊樣本,即分類(lèi)出現(xiàn)誤差;當(dāng)系數(shù)在0上下浮動(dòng)時(shí),表示邊際有重合;當(dāng)系數(shù)大于0 時(shí),表示聚類(lèi)效果較好,每一類(lèi)簇的分類(lèi)較清晰。

        進(jìn)行輪廓系數(shù)計(jì)算方法時(shí),首先隨機(jī)選擇一個(gè)類(lèi)簇里的樣本,作為初始向量,然后計(jì)算其到同類(lèi)樣本距離的期望,表示簇內(nèi)的聚合度。然后再計(jì)算其到其他類(lèi)簇的距離的最小值:

        式中:a(j)是樣本j與同一簇內(nèi)其他所有樣本的平均距離,這個(gè)值越小,表示該樣本與所在簇的相似度越高;b(i)是樣本i與其他簇內(nèi)所有樣本的最小平均距離,即樣本i與最近的那個(gè)簇的所有樣本的平均距離,這個(gè)值越小,表示該樣本與其他簇的差異性越?。惠喞禂?shù)S(i)的取值范圍是[-1,1],S(i)的值越接近于1,說(shuō)明樣本i與所在的簇匹配得很好,S(i)的值越接近于-1,說(shuō)明樣本i與所在的簇匹配得不好,可能被分到了錯(cuò)誤的簇,如果S(i)接近于0,則說(shuō)明樣本i在兩個(gè)簇的邊界上。

        由于Modbus協(xié)議為單狀態(tài)協(xié)議的特殊性,所以基于協(xié)議的幀格式來(lái)構(gòu)建協(xié)議狀態(tài)機(jī)。構(gòu)建的過(guò)程如下:以幀的起始作為狀態(tài)機(jī)的開(kāi)始狀態(tài),然后對(duì)后面讀入的字節(jié)進(jìn)行校驗(yàn),若為合法的輸入,則轉(zhuǎn)到下一個(gè)狀態(tài),否則回到起始狀態(tài),直到讀入幀結(jié)束字符。

        基于逆向分析推導(dǎo)的協(xié)議狀態(tài)機(jī)如圖2 所示。對(duì)于幀起始,可作為初始狀態(tài),一個(gè)輸入事件可由每一次讀入的字符決定,若判斷為合理輸入,則跳轉(zhuǎn)到下一狀態(tài);若為非法輸入,則狀態(tài)機(jī)返回初始態(tài)。Modbus協(xié)議不同的功能碼則可以對(duì)應(yīng)不同的設(shè)定狀態(tài)。

        圖2 Modbus協(xié)議逆向推導(dǎo)得出的狀態(tài)機(jī)Fig.2 State machines obtained through reverse derivation of Modbus protocols

        3 私有協(xié)議模糊測(cè)試

        在Modbus 協(xié)議分析結(jié)果基礎(chǔ)上,選用Boofuzz作為協(xié)議的模糊測(cè)試工具。Boofuzz是基于Python 語(yǔ)言實(shí)現(xiàn)的,但它無(wú)法直接獲得協(xié)議相關(guān)信息,需要人工定義協(xié)議格式,因此使用Boofuzz對(duì)Modbus的協(xié)議格式進(jìn)行模糊測(cè)試。

        由于Boofuzz 無(wú)法直接獲得協(xié)議的相關(guān)內(nèi)容,需要借助工具PyModbus實(shí)現(xiàn)一個(gè)Modbus服務(wù)器。為了構(gòu)建一個(gè)Modbus服務(wù)器,首先需要實(shí)例化一個(gè)ModbusSlaveContext,并向其傳遞一些與輸入寄存器、線(xiàn)圈等相對(duì)應(yīng)的“數(shù)據(jù)塊”。數(shù)據(jù)塊是一種存儲(chǔ)機(jī)制的實(shí)例,它至少支持在某個(gè)地址讀取和寫(xiě)入數(shù)值。最簡(jiǎn)單的,Modbus Sequential Data Block,只是對(duì)可序列化字節(jié)集合的一個(gè)簡(jiǎn)單封裝,其本質(zhì)上只是一個(gè)C 數(shù)組。在實(shí)驗(yàn)中將使用數(shù)據(jù)塊來(lái)創(chuàng)建數(shù)據(jù)存儲(chǔ),本質(zhì)上只是幾個(gè)數(shù)據(jù)塊的集合,從中構(gòu)建代表設(shè)備狀態(tài)的上下文。設(shè)置TCP服務(wù)器模擬設(shè)備與服務(wù)器之間的通信。Modbus 服務(wù)器主要包括3 個(gè)模塊:Sequential Data Block、Bad Data Block 和Communication Block。第一個(gè)模塊負(fù)責(zé)順序通信,包括定義了線(xiàn)圈、寄存器個(gè)數(shù)等相關(guān)數(shù)據(jù)塊;第二個(gè)模塊只要定義了觸發(fā)崩潰的條件,即服務(wù)器被要求在高于0xFF的地址處輸入值時(shí),程序?qū)?huì)出現(xiàn)崩潰;第三個(gè)模塊主要是定義通信過(guò)程,創(chuàng)建socket 線(xiàn)程與客戶(hù)端通信。

        Boofuzz 進(jìn)行測(cè)試的基本單位是會(huì)話(huà),每個(gè)會(huì)話(huà)由一個(gè)連接和多個(gè)字段定義,這些字段可以組織成塊。通常,每個(gè)Boofuzz字段映射到一個(gè)協(xié)議字段。根據(jù)協(xié)議,某些字段將是“二進(jìn)制”字段。例如s_bytes,這是描述IP數(shù)據(jù)包的源和目標(biāo)字段的一種方式,但其他字段可以是完全的ASCII 字符串。每個(gè)字段都由一個(gè)起始值和一些參數(shù)定義,這些參數(shù)描述了它將如何被模糊化。例如,事務(wù)ID字段如下所示:

        s_bytes(value=bytes([0x00, 0x01]),size=2,max_len=2,name="transaction_id")

        如果一個(gè)字段應(yīng)該是固定的,可以通過(guò)fuzzable=False。但是,對(duì)數(shù)據(jù)包的所有字段進(jìn)行模糊測(cè)試是沒(méi)有意義的,在大多數(shù)情況下都是如此,可以在一個(gè)塊中收集多個(gè)字段。因此,使用Boofuzz構(gòu)建的模糊測(cè)試器工作步驟如下:

        1)實(shí)例化一個(gè)會(huì)話(huà)對(duì)象,將它指向需要模糊測(cè)試的對(duì)象,例如會(huì)話(huà)進(jìn)程。

        2)通過(guò)定義協(xié)議的每個(gè)字段并告知Boofuzz如何修改字段的值來(lái)定義協(xié)議,或者將字段都放入塊中。

        3)使用上面的會(huì)話(huà)對(duì)象連接到被測(cè)目標(biāo),調(diào)用fuzz()開(kāi)始測(cè)試。

        在測(cè)試中將構(gòu)建一個(gè)僅包含一種數(shù)據(jù)包類(lèi)型的協(xié)議定義——讀取輸入寄存器。這個(gè)數(shù)據(jù)包的結(jié)構(gòu)除了典型的Modbus 頭和函數(shù)ID,它只包含兩個(gè)字段:起始地址和要讀取的輸入寄存器的數(shù)量。從輸入地址開(kāi)始,兩者都是2字節(jié)。

        接下來(lái)確定需要模糊測(cè)試的字段。顯而易見(jiàn)的是,起始地址和寄存器數(shù)量字段是被測(cè)對(duì)象,如果處理請(qǐng)求的邏輯有缺陷,它將與這兩個(gè)值相關(guān)聯(lián)。在測(cè)試中對(duì)讀取輸入寄存器函數(shù)進(jìn)行模糊測(cè)試,因此需要將函數(shù)ID字段固定為0x04。協(xié)議字段設(shè)置為:起始地址、寄存器數(shù)量和事務(wù)處理ID字段將模糊測(cè)試;協(xié)議ID、長(zhǎng)度、單元ID和函數(shù)ID字段將固定。

        測(cè)試服務(wù)器主要由4 個(gè)模塊構(gòu)成,分別為:Communication Block、 Fuzz Data Block、 Fixed Data Block和Operation Data Block。第一個(gè)模塊主要是實(shí)現(xiàn)與服務(wù)器的通信;第二個(gè)模塊是定義需要模糊測(cè)試的字段;第三個(gè)模塊是固定字段;最后一個(gè)模塊是向服務(wù)器發(fā)送操作碼。

        為了實(shí)現(xiàn)環(huán)境隔離的原則,實(shí)驗(yàn)中Boofuzz運(yùn)行在虛擬環(huán)境中,并使用pip對(duì)Boofuzz下載安裝,具體安裝命令如下:

        # mkdir boofuzz && cd boofuzz

        # python3 -m venv env

        # source env/bin/activate

        # pip install boofuzz

        首先運(yùn)行Modbus 服務(wù)器,然后開(kāi)始對(duì)TCP會(huì)話(huà)進(jìn)行模糊測(cè)試。通過(guò)觀察運(yùn)行結(jié)果發(fā)現(xiàn)程序崩潰,具體結(jié)果存放在boofuzz-results 文件夾中,這是一個(gè)簡(jiǎn)單的SQLite數(shù)據(jù)庫(kù),可以使用Boofuzz自帶的Web UI進(jìn)行查看,如圖3所示。

        圖3 使用Boofuzz模糊測(cè)試運(yùn)行過(guò)程Fig.3 The operating process using Boofuzz

        在瀏覽器中打開(kāi)127.0.0.1:26000可以查看每次測(cè)試運(yùn)行的具體情況,如圖4所示。由圖4可以看到測(cè)試用例一共運(yùn)行了78次,第78次是嘗試連接但是連接失敗了,所以程序在第77 次發(fā)生了崩潰。程序崩潰的原因在于嘗試從地址0xFF00讀取1 個(gè)寄存器(04)。可以看出Boofuzz 的模糊測(cè)試雖然前期需要準(zhǔn)備協(xié)議的相關(guān)知識(shí),但測(cè)試有效性要高于AFL。

        圖4 測(cè)試數(shù)據(jù)具體情況Fig.4 Data testing

        4 結(jié)語(yǔ)

        針對(duì)現(xiàn)有第三方廠商新型電力系統(tǒng)終端協(xié)議封閉難以識(shí)別及測(cè)試的安全問(wèn)題,提出了基于Ngram 算法和協(xié)議狀態(tài)機(jī)推斷的逆向分析方法,在此基礎(chǔ)上通過(guò)協(xié)議源碼編譯插樁的方式,實(shí)現(xiàn)協(xié)議的模糊測(cè)試。以典型Modbus協(xié)議為例開(kāi)展本文所提方法的有效性驗(yàn)證,經(jīng)測(cè)試表明,該方法可以有效對(duì)第三方廠商私有協(xié)議開(kāi)展快速識(shí)別和安全性測(cè)試,有較高的實(shí)用價(jià)值。

        猜你喜歡
        分析
        禽大腸桿菌病的分析、診斷和防治
        隱蔽失效適航要求符合性驗(yàn)證分析
        電力系統(tǒng)不平衡分析
        電子制作(2018年18期)2018-11-14 01:48:24
        電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
        經(jīng)濟(jì)危機(jī)下的均衡與非均衡分析
        對(duì)計(jì)劃生育必要性以及其貫徹實(shí)施的分析
        GB/T 7714-2015 與GB/T 7714-2005對(duì)比分析
        出版與印刷(2016年3期)2016-02-02 01:20:11
        網(wǎng)購(gòu)中不良現(xiàn)象分析與應(yīng)對(duì)
        中西醫(yī)結(jié)合治療抑郁癥100例分析
        偽造有價(jià)證券罪立法比較分析
        日本高级黄色一区二区三区| 一二三四在线视频社区3| 亚洲动漫成人一区二区| 亚洲成人av一区二区麻豆蜜桃| 亚洲av第一区国产精品| 午夜精品射精入后重之免费观看| 成人综合网亚洲伊人| www.91久久| 蜜臀人妻精品一区二区免费| 国产在线第一区二区三区| 青青草97国产精品免费观看| 国产激情视频在线观看首页| 日本在线观看一区二区三区视频 | 亚洲av无码国产精品久久| 男女性高爱潮免费网站 | 亚洲毛片一区二区在线| 岳好紧好湿夹太紧了好爽矜持 | 51看片免费视频在观看| 18无码粉嫩小泬无套在线观看| 日本丰满熟妇bbxbbxhd| 亚洲国产麻豆综合一区| 亚洲av国产精品色a变脸| 免费观看国产短视频的方法| 久久久久亚洲精品无码网址色欲| 五月婷婷激情六月| 国产91精品自拍视频| 国内精品久久久久久99| 国产白嫩美女在线观看| 一本色道久久综合中文字幕| 女同性恋一区二区三区av| 国产精品美女久久久久久| 999精品全免费观看视频| 国产精品区二区东京在线| 国产一区二区精品久久岳| 国产熟女高潮视频| 无遮挡很爽视频在线观看 | 亚洲传媒av一区二区三区| 国产精品亚洲第一区二区三区| 天天做天天爱天天爽综合网| 日韩国产欧美成人一区二区影院| 日韩在线一区二区三区中文字幕|