两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于工控私有協(xié)議的模糊測(cè)試方法與流程

文檔序號(hào):11215548閱讀:966來(lái)源:國(guó)知局
基于工控私有協(xié)議的模糊測(cè)試方法與流程

本發(fā)明屬于工業(yè)網(wǎng)絡(luò)安全技術(shù)領(lǐng)域和模糊測(cè)試技術(shù)領(lǐng)域的結(jié)合,涉及了一種工控私有協(xié)議的學(xué)習(xí)方法和基于工控私有協(xié)議的模糊測(cè)試方法。



背景技術(shù):

工業(yè)控制系統(tǒng)(industrialcontrolsystems,ics)是指工業(yè)生產(chǎn)過(guò)程中的控制網(wǎng)絡(luò)和系統(tǒng),是國(guó)家關(guān)鍵基礎(chǔ)設(shè)施的關(guān)鍵組成部分。目前,工業(yè)控制系統(tǒng)已廣泛應(yīng)用于石油石化,交通控制,電力設(shè)施,制造業(yè)以及核工業(yè)等各工業(yè)領(lǐng)域。隨著我國(guó)信息化和工業(yè)化的深度融合,工業(yè)控制系統(tǒng)在工業(yè)生產(chǎn)過(guò)程中得到了越來(lái)越廣泛的應(yīng)用,越來(lái)越多的工業(yè)現(xiàn)場(chǎng)設(shè)備集成以太網(wǎng)通信功能,與erp甚至互聯(lián)網(wǎng)相連,在提高數(shù)據(jù)共享效率,改進(jìn)企業(yè)管理水平的同時(shí)也引入了黑客,病毒木馬等安全風(fēng)險(xiǎn)。由于工業(yè)控制系統(tǒng)與石油化工等工業(yè)領(lǐng)域息息相關(guān),一旦工業(yè)控制系統(tǒng)等國(guó)家安全基礎(chǔ)設(shè)施受到網(wǎng)絡(luò)攻擊,將會(huì)造成財(cái)產(chǎn)損失、人員傷亡等嚴(yán)重后果,對(duì)社會(huì)穩(wěn)定造成重大威脅。

近年來(lái),針對(duì)工業(yè)控制網(wǎng)絡(luò)的攻擊屢見(jiàn)不鮮。2010年,網(wǎng)絡(luò)超級(jí)武器“stuxnet”病毒通過(guò)針對(duì)性的入侵ics系統(tǒng),嚴(yán)重威脅到伊朗布什爾核電站核反應(yīng)堆的安全運(yùn)營(yíng),這次被稱(chēng)為“震網(wǎng)”的攻擊事件使人們對(duì)關(guān)鍵基礎(chǔ)設(shè)施網(wǎng)絡(luò)安全問(wèn)題的關(guān)注度大大上升。權(quán)威工業(yè)安全事件信息庫(kù)risi(repositoryofsecurityincidents)統(tǒng)計(jì),截止2011年,全球已發(fā)生200余起針對(duì)工業(yè)控制系統(tǒng)的重大攻擊事件,尤其在2000年以后,隨著通用協(xié)議、通用硬件、通用軟件在工業(yè)控制系統(tǒng)中的應(yīng)用,對(duì)過(guò)程控制系統(tǒng)和數(shù)據(jù)采集監(jiān)控系統(tǒng)的攻擊增長(zhǎng)了近10倍。工控系統(tǒng)之所以會(huì)成為攻擊者的目標(biāo),根源之處還是在于系統(tǒng)軟件,網(wǎng)絡(luò)協(xié)議,設(shè)備在設(shè)計(jì)之初只專(zhuān)注于實(shí)用性和功能性,并未考慮安全性問(wèn)題,在使用之中便暴露出安全漏洞。漏洞挖掘是探測(cè)系統(tǒng)軟件漏洞的常見(jiàn)技術(shù)手段,是解決工控系統(tǒng)安全的根本,它可以在威脅未發(fā)生時(shí)就檢測(cè)出系統(tǒng)存在的安全隱患。國(guó)內(nèi)外安全領(lǐng)域?qū)β┒赐诰蚣夹g(shù)的研究已具有一定的成果,但傳統(tǒng)網(wǎng)絡(luò)的漏洞挖掘方法并不適用于工控網(wǎng)絡(luò),如何對(duì)工業(yè)控制系統(tǒng)進(jìn)行漏洞挖掘的研究較少。面對(duì)日益嚴(yán)重的工控網(wǎng)絡(luò)安全問(wèn)題,基于工控網(wǎng)絡(luò)的漏洞挖掘方法也在發(fā)展之中。



技術(shù)實(shí)現(xiàn)要素:

為解決上述問(wèn)題,本發(fā)明考慮了工業(yè)網(wǎng)絡(luò)的特殊性,針對(duì)工控網(wǎng)絡(luò)設(shè)備經(jīng)常使用私有協(xié)議的特點(diǎn),提出了一種工控私有協(xié)議的學(xué)習(xí)方法和基于工控私有協(xié)議的模糊測(cè)試方法。通過(guò)工控主從通信鏈路獲取的報(bào)文樣本數(shù)據(jù),學(xué)習(xí)私有協(xié)議的協(xié)議特征信息,將協(xié)議特征信息作為構(gòu)建測(cè)試用例以及對(duì)測(cè)試用例變異的依據(jù),從而以網(wǎng)絡(luò)流量的方式,測(cè)試支持此私有協(xié)議的過(guò)程邏輯控制器(plc)的健壯性,同時(shí)對(duì)被測(cè)對(duì)象進(jìn)行異常監(jiān)控,記錄被測(cè)對(duì)象發(fā)生的異常信息。

為了達(dá)到本發(fā)明的目的,本發(fā)明結(jié)合工控私有協(xié)議學(xué)習(xí)方法和工控私有協(xié)議模糊方法,提出了一種基于工控私有協(xié)議模糊測(cè)試方法,該方法由數(shù)據(jù)預(yù)處理模塊、協(xié)議學(xué)習(xí)模塊、模糊測(cè)試模塊、異常報(bào)警模塊共四部分構(gòu)成。

數(shù)據(jù)預(yù)處理模塊。此模塊作用是采集樣本數(shù)據(jù)包,將樣本數(shù)據(jù)包讀取到程序內(nèi)存中。因此,此模塊由兩個(gè)功能子模塊構(gòu)成。功能一,樣本采集模塊,在程序運(yùn)行階段,在主從通信鏈路之間使用鏡像端口的方式采集一個(gè)工業(yè)流程周期內(nèi)的雙向數(shù)據(jù)包,保存為pcap文件,作為樣本集,放置在程序根目錄下。功能二,樣本讀取模塊,此功能通過(guò)利用對(duì)winpcap封裝好的sharppcap,使用用于文件數(shù)據(jù)捕獲的icapturedevice接口,使用tcpdump規(guī)則對(duì)樣本集內(nèi)的數(shù)據(jù)包進(jìn)行過(guò)濾,如果不屬于需要進(jìn)行分析的數(shù)據(jù)報(bào)文,則將其丟棄。將需要分析的協(xié)議報(bào)文通過(guò)請(qǐng)求與響應(yīng)對(duì)應(yīng)的形式保存到程序內(nèi)部的請(qǐng)求響應(yīng)隊(duì)列中,再將所有請(qǐng)求保存到請(qǐng)求隊(duì)列中。兩個(gè)緩存隊(duì)列提交給協(xié)議學(xué)習(xí)模塊使用。

協(xié)議學(xué)習(xí)模塊。此模塊的作用是根據(jù)數(shù)據(jù)預(yù)處理模塊提供的緩存隊(duì)列,利用學(xué)習(xí)算法,首先將請(qǐng)求隊(duì)列中的協(xié)議報(bào)文進(jìn)行分類(lèi),然后針對(duì)每類(lèi)報(bào)文進(jìn)行請(qǐng)求字段特征的學(xué)習(xí),最后對(duì)請(qǐng)求與響應(yīng)之間字段特征的關(guān)系進(jìn)行學(xué)習(xí),因此,此模塊由兩個(gè)功能子模塊構(gòu)成。功能一,報(bào)文分類(lèi)模塊,首先獲取數(shù)據(jù)處理模塊中的請(qǐng)求響應(yīng)隊(duì)列和請(qǐng)求隊(duì)列,根據(jù)請(qǐng)求隊(duì)列,學(xué)習(xí)統(tǒng)計(jì)出請(qǐng)求數(shù)據(jù)包樣本的可變域和不可變域,最大報(bào)文長(zhǎng)度,最小報(bào)文長(zhǎng)度,可變域中該字節(jié)的變化率,稱(chēng)這些屬性為基本屬性,通過(guò)請(qǐng)求響應(yīng)隊(duì)列和請(qǐng)求隊(duì)列以及統(tǒng)計(jì)學(xué)習(xí)到的上述基本屬性,實(shí)例化一個(gè)節(jié)點(diǎn)作為根節(jié)點(diǎn)。通常,工控協(xié)議存在控制命令標(biāo)識(shí)符,命令標(biāo)識(shí)符往往在樣本中屬于可變域并且變化率低,并且在協(xié)議字段頭部的位置,所以,通過(guò)可變域的變化率尋找變化率最小,并且前一個(gè)字節(jié)不為0x00的第一個(gè)字節(jié)索引為劃分依據(jù)字節(jié),根據(jù)此字節(jié)的不同將兩個(gè)緩存隊(duì)列進(jìn)行劃分,并且分別統(tǒng)計(jì)上述的基本屬性,根據(jù)統(tǒng)計(jì)信息實(shí)例化多個(gè)節(jié)點(diǎn)作為根節(jié)點(diǎn)的葉子節(jié)點(diǎn)。在具有葉子節(jié)點(diǎn)的情況下,需要判斷葉子節(jié)點(diǎn)是否需要繼續(xù)劃分,統(tǒng)計(jì)一個(gè)節(jié)點(diǎn)中的最小變化率索引的集合,由于,工控協(xié)議往往存在命令表示符和子命令標(biāo)識(shí)符,同一層的兄弟節(jié)點(diǎn)的命令標(biāo)識(shí)符位置應(yīng)該接近,所以,判斷葉子節(jié)點(diǎn)是否需要繼續(xù)劃分的依據(jù)為,一個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)集合中,如果子節(jié)點(diǎn)的最小變化率索引的集合有交集,則該子節(jié)點(diǎn)集合中所有的節(jié)點(diǎn)都應(yīng)劃分,否則停止劃分。如果滿足劃分的條件,則應(yīng)該確定使用哪一個(gè)字節(jié)進(jìn)行劃分,由于有些需要?jiǎng)澐值墓?jié)點(diǎn)的劃分依據(jù)已經(jīng)成為不可變域,為了使劃分的更加精確,可以將劃分的依據(jù)節(jié)點(diǎn)向后移,所以確定使用哪一個(gè)字節(jié)進(jìn)行劃分的依據(jù)為,根據(jù)一個(gè)節(jié)點(diǎn),獲取此節(jié)點(diǎn)中變化率最小,并且前一個(gè)字節(jié)不為0x00的字節(jié),查看該字節(jié)是否存在于該節(jié)點(diǎn)的兄弟節(jié)點(diǎn)的不可變域中,如果存在,則該節(jié)點(diǎn)和其他兄弟節(jié)點(diǎn)各自按照其變化率最小且前一個(gè)字節(jié)不為0x00的字節(jié)進(jìn)行劃分,否則統(tǒng)計(jì)每個(gè)子節(jié)點(diǎn)其變化率最小且前一個(gè)字節(jié)不為0x00的字節(jié),取出該字節(jié)在各個(gè)兄弟節(jié)點(diǎn)中索引最小的索引,每個(gè)子節(jié)點(diǎn)依據(jù)此字節(jié)進(jìn)行劃分。劃分出來(lái)的子節(jié)點(diǎn)繼續(xù)根據(jù)是否劃分的條件和劃分的節(jié)點(diǎn)進(jìn)行操作,最多不超過(guò)4層,直到所有節(jié)點(diǎn)不可再劃分為止。功能二,協(xié)議學(xué)習(xí)模塊,分類(lèi)完畢后,對(duì)每個(gè)葉子節(jié)點(diǎn),首先劃分該節(jié)點(diǎn)的可變域和不可變域,統(tǒng)計(jì)該節(jié)點(diǎn)可變域的樣本頻率,然后,收集屬于不可變域且前一個(gè)字節(jié)為0x00,或?qū)儆诳勺冇虻墓?jié)點(diǎn)作為長(zhǎng)度域的初始化空間,以向量集的形式,統(tǒng)計(jì)長(zhǎng)度域最小的可能范圍。接著使用apriori算法學(xué)習(xí)協(xié)議字段間的關(guān)聯(lián)規(guī)則,此關(guān)聯(lián)規(guī)則的學(xué)習(xí)共有兩個(gè)步驟,步驟一,尋找數(shù)據(jù)包間的單獨(dú)項(xiàng),統(tǒng)計(jì)出現(xiàn)的次數(shù)形成初始候選集,然后根據(jù)最小支持度進(jìn)行裁剪,得到初始頻繁集,通過(guò)頻繁集的自連接生成下一輪的候選集,直到進(jìn)行裁剪之后頻繁集內(nèi)個(gè)體為零為止,最后,可得到最終的頻繁集。步驟二,根據(jù)頻繁集,首先統(tǒng)計(jì)頻繁集中所有出現(xiàn)的子集,統(tǒng)計(jì)每個(gè)子集出現(xiàn)的次數(shù)。然后,根據(jù)子集的支持度,使用條件概率的方法,計(jì)算不相交的兩個(gè)子集間的關(guān)聯(lián)概率,以最小置信度進(jìn)行裁剪,最后得出該葉子節(jié)點(diǎn)的強(qiáng)關(guān)聯(lián)規(guī)則。學(xué)習(xí)的最后,需要使用請(qǐng)求響應(yīng)隊(duì)列,學(xué)習(xí)請(qǐng)求與響應(yīng)的對(duì)應(yīng)的特征關(guān)系,該方法由三個(gè)步驟,步驟一,針對(duì)請(qǐng)求響應(yīng)隊(duì)列中的一對(duì)請(qǐng)求響應(yīng)數(shù)據(jù),以字節(jié)為單位,使用雙序列比對(duì)算法中的needleman/wunsch算法,將請(qǐng)求的個(gè)數(shù)加一作為行數(shù),響應(yīng)的個(gè)數(shù)加一作為列數(shù),構(gòu)造比對(duì)矩陣,使用動(dòng)態(tài)規(guī)劃的思想和填充規(guī)則,將矩陣內(nèi)部進(jìn)行填充,步驟二,從矩陣的右下角開(kāi)始,使用回溯規(guī)則進(jìn)行規(guī)則,將相等的字節(jié)索引進(jìn)行記錄,獲得一對(duì)請(qǐng)求與響應(yīng)間的比對(duì)序列,步驟三,將該節(jié)點(diǎn)下的請(qǐng)求響應(yīng)數(shù)據(jù)依次進(jìn)行步驟一、二的操作,最后對(duì)所有數(shù)據(jù)所得的結(jié)果求交集,得出最終的請(qǐng)求響應(yīng)特征比對(duì)結(jié)果。將學(xué)習(xí)到的可變域與不可變域,可變域的樣本頻率,長(zhǎng)度域向量集,關(guān)聯(lián)規(guī)則、請(qǐng)求響應(yīng)特征比對(duì)結(jié)果依附于相關(guān)的葉子節(jié)點(diǎn)上。

模糊測(cè)試模塊。此模塊的作用是根據(jù)協(xié)議學(xué)習(xí)模塊學(xué)習(xí)的協(xié)議特征,構(gòu)造符合協(xié)議特征的應(yīng)用報(bào)文并且在協(xié)議特征的基礎(chǔ)上進(jìn)行變異操作,生成模糊測(cè)試用例,之后通過(guò)數(shù)據(jù)通信模塊將測(cè)試用例發(fā)生給被測(cè)對(duì)象(plc)。因此,此模塊由兩個(gè)功能子模塊構(gòu)成,功能一,用例生成模塊,以葉子節(jié)點(diǎn)作為處理單元,以字節(jié)作為變化單位。首先,通過(guò)該節(jié)點(diǎn)的最后一個(gè)不可變域的索引、樣本最大長(zhǎng)度、樣本最小長(zhǎng)度,確定樣本的data數(shù)據(jù)域,以隨機(jī)的方式生成data數(shù)據(jù)域的長(zhǎng)度,再進(jìn)行隨機(jī)填充。然后,統(tǒng)計(jì)該節(jié)點(diǎn)的不可變域和該節(jié)點(diǎn)的父節(jié)點(diǎn)的不可變域的差集,將該集合作為第一步變異的空間,隨機(jī)選擇字節(jié)進(jìn)行隨機(jī)填充,將所有不可變域存入一個(gè)記錄隊(duì)列。接著,以apriori關(guān)聯(lián)規(guī)則的結(jié)果概率,選擇關(guān)聯(lián)規(guī)則的條件或結(jié)果,使用可變域的變異規(guī)則,進(jìn)行隨機(jī)變異,再次使用可變域的變異規(guī)則,將識(shí)別出的長(zhǎng)度域進(jìn)行隨機(jī)變異,把關(guān)聯(lián)規(guī)則中的條件結(jié)果和長(zhǎng)度域均加入記錄隊(duì)列。最后,從第一個(gè)字節(jié)向后遍歷非data數(shù)據(jù)域的部分,如果該字節(jié)不存在于記錄隊(duì)列意味著該字節(jié)還未生成,因此,使用可變域的變異規(guī)則,生成該可變域,最終將生成的各種域進(jìn)行拼接,形成一個(gè)測(cè)試用例。功能二,數(shù)據(jù)通信模塊,將生成的測(cè)試用例通過(guò)socket異步通信的方式,首先建立連接,然后send測(cè)試數(shù)據(jù),接著監(jiān)聽(tīng)響應(yīng)數(shù)據(jù),receive響應(yīng)信息,將響應(yīng)數(shù)據(jù)和對(duì)應(yīng)的測(cè)試數(shù)據(jù)進(jìn)行記錄,最后斷開(kāi)連接,進(jìn)行下一個(gè)測(cè)試用例的生成和發(fā)送。

異常報(bào)警模塊,此模塊的作用是在測(cè)試用例發(fā)送的同時(shí),實(shí)時(shí)對(duì)接收到的響應(yīng)以及被測(cè)對(duì)象的狀態(tài)進(jìn)行監(jiān)控,如果發(fā)生異常,通過(guò)報(bào)警記錄的功能對(duì)信息記錄。因此該模塊由兩個(gè)功能子模塊構(gòu)成。功能一,異常監(jiān)控模塊,在發(fā)送測(cè)試用例,接收到測(cè)試用例的響應(yīng)數(shù)據(jù)之后,通過(guò)學(xué)習(xí)的請(qǐng)求與響應(yīng)之間的特征關(guān)系,對(duì)記錄的請(qǐng)求與響應(yīng)進(jìn)行匹配,查看是否符合該葉子節(jié)點(diǎn)下的多序列比對(duì)特征,如果不匹配,則進(jìn)行報(bào)警操作;在發(fā)送測(cè)試用例之前,檢測(cè)socket的tcp是否連接成功,如果不成功,則進(jìn)行報(bào)警操作。功能二,報(bào)警記錄模塊,該模塊的作用是將報(bào)警的信息進(jìn)行記錄顯示,需要將報(bào)警進(jìn)行記錄到數(shù)據(jù)庫(kù)中。

本發(fā)明提出了一種工控私有協(xié)議的學(xué)習(xí)方法和基于工控私有協(xié)議的模糊測(cè)試方法,在支持私有協(xié)議的工控設(shè)備運(yùn)行于工業(yè)現(xiàn)場(chǎng)之前,對(duì)設(shè)備的安全性和健壯性進(jìn)行測(cè)試,發(fā)現(xiàn)工控設(shè)備異常情況,提前獲知可能存在的危險(xiǎn)。

附圖說(shuō)明

圖1是本發(fā)明工控私有協(xié)議模糊測(cè)試方法的結(jié)構(gòu)示意圖。

圖2是本發(fā)明私有協(xié)議樹(shù)學(xué)習(xí)構(gòu)建的流程示意圖。

圖3是本發(fā)明私有協(xié)議特征字段學(xué)習(xí)的流程示意圖。

圖4是本發(fā)明模糊測(cè)試的流程示意圖。

具體實(shí)施方式

以下將結(jié)合附圖所示的具體實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)描述。

圖1是本發(fā)明基于工控私有協(xié)議模糊測(cè)試方法的結(jié)構(gòu)示意圖,如圖1所示,其步驟包括:

步驟11:在正常工控工藝環(huán)境中,采集私有協(xié)議的通信流量,使用wireshark保存為pcap文件。程序通過(guò)sharppcap的icapturedevice接口實(shí)例化虛擬的捕獲設(shè)備,使用tcpdump規(guī)則對(duì)樣本集進(jìn)行過(guò)濾,將所有的請(qǐng)求數(shù)據(jù)保存在請(qǐng)求隊(duì)列,將所有的請(qǐng)求響應(yīng)數(shù)據(jù)保存在請(qǐng)求響應(yīng)隊(duì)列。

步驟12:通過(guò)兩個(gè)緩存隊(duì)列,使用協(xié)議樹(shù)生成算法對(duì)私有協(xié)議報(bào)文進(jìn)行分類(lèi),以實(shí)例化樹(shù)節(jié)點(diǎn)方法和是否繼續(xù)劃分的判斷條件以及劃分依據(jù)條件,生成一個(gè)私有協(xié)議特征分類(lèi)樹(shù)。其中分類(lèi)的過(guò)程和判斷依據(jù)條件為:首先獲取數(shù)據(jù)處理模塊中的請(qǐng)求響應(yīng)隊(duì)列和請(qǐng)求隊(duì)列,根據(jù)請(qǐng)求隊(duì)列,學(xué)習(xí)統(tǒng)計(jì)出請(qǐng)求數(shù)據(jù)包樣本的可變域和不可變域,最大報(bào)文長(zhǎng)度,最小報(bào)文長(zhǎng)度,可變域中該字節(jié)的變化率,稱(chēng)這些屬性為基本屬性,通過(guò)請(qǐng)求響應(yīng)隊(duì)列和請(qǐng)求隊(duì)列以及統(tǒng)計(jì)學(xué)習(xí)到的上述基本屬性,實(shí)例化一個(gè)節(jié)點(diǎn)作為根節(jié)點(diǎn)。通過(guò)可變域的變化率尋找變化率最小,并且前一個(gè)字節(jié)不為0x00的第一個(gè)字節(jié)索引為劃分依據(jù)字節(jié),根據(jù)此字節(jié)的不同將兩個(gè)緩存隊(duì)列進(jìn)行劃分,并且分別統(tǒng)計(jì)上述的基本屬性,根據(jù)統(tǒng)計(jì)信息實(shí)例化多個(gè)節(jié)點(diǎn)作為根節(jié)點(diǎn)的葉子節(jié)點(diǎn)。在具有葉子節(jié)點(diǎn)的情況下,需要判斷葉子節(jié)點(diǎn)是否需要繼續(xù)劃分,統(tǒng)計(jì)一個(gè)節(jié)點(diǎn)中的最小變化率索引的集合,判斷葉子節(jié)點(diǎn)是否需要繼續(xù)劃分的依據(jù)為,一個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)集合中,如果子節(jié)點(diǎn)的最小變化率索引的集合有交集,則該子節(jié)點(diǎn)集合中所有的節(jié)點(diǎn)都應(yīng)劃分,否則停止劃分。如果滿足劃分的條件,則應(yīng)該確定使用哪一個(gè)字節(jié)進(jìn)行劃分,確定使用哪一個(gè)字節(jié)進(jìn)行劃分的依據(jù)為,根據(jù)一個(gè)節(jié)點(diǎn),獲取此節(jié)點(diǎn)中變化率最小,并且前一個(gè)字節(jié)不為0x00的字節(jié),查看該字節(jié)是否存在于該節(jié)點(diǎn)的兄弟節(jié)點(diǎn)的不可變域中,如果存在,則該節(jié)點(diǎn)和其他兄弟節(jié)點(diǎn)各自按照其變化率最小且前一個(gè)字節(jié)不為0x00的字節(jié)進(jìn)行劃分,否則統(tǒng)計(jì)每個(gè)子節(jié)點(diǎn)其變化率最小且前一個(gè)字節(jié)不為0x00的字節(jié),取出該字節(jié)在各個(gè)兄弟節(jié)點(diǎn)中索引最小的索引,每個(gè)子節(jié)點(diǎn)依據(jù)此字節(jié)進(jìn)行劃分。劃分出來(lái)的子節(jié)點(diǎn)繼續(xù)根據(jù)是否劃分的條件和劃分的節(jié)點(diǎn)進(jìn)行操作,最多不超過(guò)4層,直到所有節(jié)點(diǎn)不可再劃分為止。

對(duì)該樹(shù)進(jìn)行廣度優(yōu)先搜索遍歷,遍歷到每一個(gè)節(jié)點(diǎn)時(shí),統(tǒng)計(jì)該節(jié)點(diǎn)內(nèi)數(shù)據(jù)樣本的最大長(zhǎng)度和最小長(zhǎng)度。以最小長(zhǎng)度為遍歷字節(jié)序列統(tǒng)計(jì)該節(jié)點(diǎn)的可變域和不可變域。根據(jù)統(tǒng)計(jì)出的可變域,統(tǒng)計(jì)序列組中相同域中出現(xiàn)的數(shù)據(jù),計(jì)算相同域中不同數(shù)據(jù)在序列樣本中出現(xiàn)的頻率,例如,設(shè)索引1為序列組中第一個(gè)出現(xiàn)的可變域,長(zhǎng)度為2個(gè)字節(jié),1中出現(xiàn)的(0x81,0x02)概率為0.12,則可將此組信息表示為{1,(0x81,0x02),0.12}。最終得到該節(jié)點(diǎn)的可變域的樣本頻率。

對(duì)該節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)包數(shù)據(jù)的序列,窮舉所有可能出現(xiàn)的連續(xù)字節(jié)的組合,計(jì)算每種組合的字節(jié)長(zhǎng)度值,從起始位遍歷每一個(gè)可變域,查看該可變域中字節(jié)的值是否和出現(xiàn)在該字節(jié)索引之后的連續(xù)字節(jié)組合的長(zhǎng)度相匹配,如果匹配,則形成一個(gè)長(zhǎng)度域向量,例如,s表示起始域序號(hào),e表示終止域序號(hào),l表示長(zhǎng)度域序號(hào),p表示長(zhǎng)度域在可變域之內(nèi)的偏移,h表示長(zhǎng)度域的長(zhǎng)度,則匹配信息以{s,e,l,p,h}的向量形式記錄下來(lái),將一個(gè)數(shù)據(jù)包所有的匹配信息形成一系列的長(zhǎng)度向量集,對(duì)所有數(shù)據(jù)包的長(zhǎng)度向量集做相同的操作,然后求它們的交集。最后得出識(shí)別出的長(zhǎng)度域集合,此長(zhǎng)度域的數(shù)量可能不唯一,但都符合報(bào)文樣本數(shù)據(jù)情況。

對(duì)該節(jié)點(diǎn)的可變域進(jìn)行統(tǒng)計(jì),生成樣本數(shù)據(jù)集。統(tǒng)計(jì)樣本數(shù)據(jù)集內(nèi)部的所有可變域的頻率,生成初始候選集。使用最小支持度進(jìn)行裁剪,然后進(jìn)行自連接操作,統(tǒng)計(jì)每個(gè)個(gè)體在初始樣本集內(nèi)出現(xiàn)的次數(shù),生成第二輪的候選集,再次進(jìn)行上述自連接并且統(tǒng)計(jì)候選集出現(xiàn)頻率的操作,進(jìn)行自連接操作和統(tǒng)計(jì)頻繁集的時(shí)候需要滿足兩個(gè)條件:兩個(gè)項(xiàng)集可以進(jìn)行連接的條件是它們有k-1項(xiàng)是相同的,并且如果一個(gè)項(xiàng)集有一個(gè)子集不為頻繁集中的項(xiàng)集則該項(xiàng)集也不為頻繁集中的項(xiàng)集。在裁剪之后如果候選集為空則停止操作,上一輪的候選集成為頻繁集。統(tǒng)計(jì)這個(gè)頻繁集中的項(xiàng)集符合索引前后關(guān)系且不相交的兩個(gè)子集,前者置信度的條件,后者為置信度的結(jié)論。x為置信度的條件,y為置信度的結(jié)論,其中x,y均表示每個(gè)報(bào)文序列特征域之中的數(shù)據(jù),supp函數(shù)表示x與y同時(shí)在樣本集中出現(xiàn)的概率其值表示x與y的支持度,conf函數(shù)表示在x出現(xiàn)的情況下,y出現(xiàn)的概率,其值表示x與y的置信度,則支持度和置信度的計(jì)算方法為:

對(duì)每一個(gè)條件結(jié)果進(jìn)行計(jì)算之后,生成apriori關(guān)聯(lián)規(guī)則列表,依附于該葉子節(jié)點(diǎn)上。

獲取節(jié)點(diǎn)的請(qǐng)求響應(yīng)列表,對(duì)每一對(duì)請(qǐng)求響應(yīng)構(gòu)建雙序列比對(duì)矩陣x,矩陣的行為m+1,列為n+1,m為請(qǐng)求數(shù)據(jù)長(zhǎng)度,n為響應(yīng)數(shù)據(jù)長(zhǎng)度,首先對(duì)矩陣的0行和第0列進(jìn)行填充,填充的方法為:

x(i,0)=0;x(0,j)=0(0≤i≤m,0≤j≤n)

然后以從左上到右下的方向填充矩陣中的其他元素,

填充的方法為:

ai和bj代表第i個(gè)索引的請(qǐng)求字節(jié)值和第j個(gè)索引的響應(yīng)字節(jié)值,max為取最大值的函數(shù)。接著通過(guò)矩陣,從矩陣的右下角開(kāi)始進(jìn)行回溯操作,若ai=bj,則回溯到左上角單元格,并且對(duì)請(qǐng)求與響應(yīng)的索引進(jìn)行對(duì)應(yīng)記錄,若ai≠bj,回溯到左上角、上邊、左邊中值最大的單元格,若有相同最大值的單元格,優(yōu)先級(jí)按照左上角、上邊、左邊的順序?;厮莸骄仃囎笊辖菫橹?,生成該請(qǐng)求響應(yīng)對(duì)的比對(duì)特征。對(duì)所有請(qǐng)求響應(yīng)序列進(jìn)行特征比對(duì)操作后,求所有比對(duì)特征的交集,生成最終的請(qǐng)求響應(yīng)比對(duì)特征。最后將記錄的協(xié)議請(qǐng)求響應(yīng)比對(duì)特征依附于該節(jié)點(diǎn)上。

步驟13:隨機(jī)選擇一個(gè)葉子節(jié)點(diǎn),該葉子節(jié)點(diǎn)的數(shù)據(jù)包最大長(zhǎng)度為m,最后一個(gè)不可變域的索引為c,隨機(jī)生成一個(gè)x,取值范圍為0≤x≤2,則所生成測(cè)試用例數(shù)據(jù)域的長(zhǎng)度l為:

random(min,max)函數(shù)表示取min到max-1之間的隨機(jī)數(shù),包含min和max-1,然后對(duì)生成的數(shù)據(jù)域進(jìn)行隨機(jī)填充。尋找該節(jié)點(diǎn)和該節(jié)點(diǎn)的父節(jié)點(diǎn)的不可變域的差,隨機(jī)選擇一個(gè)字節(jié)進(jìn)行變異,以長(zhǎng)度域,apriori關(guān)聯(lián)規(guī)則域的,未處理可變域的順序?qū)γ總€(gè)域中的數(shù)據(jù)進(jìn)行變異,維持原有樣本空間內(nèi)的數(shù)據(jù)的概率為pi,i為該可變字節(jié)中每個(gè)字節(jié)值出現(xiàn)的樣本,n為該節(jié)點(diǎn)數(shù)據(jù)包的個(gè)數(shù),qi為i樣本的頻率,則pi為:

最終構(gòu)造了一個(gè)基于該葉子節(jié)點(diǎn)的私有協(xié)議的測(cè)試用例。

通過(guò)socket建立tcp連接,連接建立成功后,將測(cè)試用例數(shù)據(jù)發(fā)送給plc,等待響應(yīng)數(shù)據(jù),將請(qǐng)求與響應(yīng)數(shù)據(jù)成對(duì)放入緩存隊(duì)列中。通過(guò)請(qǐng)求與響應(yīng)的特征,比對(duì)是否滿足該節(jié)點(diǎn)的請(qǐng)求與響應(yīng)的比對(duì)特征以及是否下一次tcp連接成功,如果滿足且連接成功則繼續(xù)發(fā)送下一個(gè)測(cè)試用例,如果不滿足或連接不成功則由異常報(bào)警模塊處理。

步驟14:對(duì)無(wú)法建立tcp連接情況和不符合請(qǐng)求響應(yīng)比對(duì)特征的情況,記錄其有關(guān)信息,存入報(bào)警數(shù)據(jù)庫(kù)中,停止測(cè)試用例發(fā)送過(guò)程。

圖2是本發(fā)明基于工控私有協(xié)議的協(xié)議樹(shù)學(xué)習(xí)構(gòu)建方法的流程示意圖,如圖2所示,其步驟包括:

步驟21:?jiǎn)?dòng)協(xié)議樹(shù)的創(chuàng)建,開(kāi)始創(chuàng)建一顆私有協(xié)議分類(lèi)樹(shù)。

步驟22:從讀取的數(shù)據(jù)包樣本內(nèi)存中,獲取請(qǐng)求隊(duì)列和請(qǐng)求響應(yīng)隊(duì)列。

步驟23:以請(qǐng)求隊(duì)列中數(shù)據(jù)最小長(zhǎng)度為最大值,統(tǒng)計(jì)請(qǐng)求數(shù)據(jù)的可變域和不可變域。

步驟24:根據(jù)統(tǒng)計(jì)的可變域,統(tǒng)計(jì)每個(gè)可變域的變化次數(shù),統(tǒng)計(jì)變化頻率最低的可變域的索引序列。

步驟25:通過(guò)請(qǐng)求隊(duì)列,統(tǒng)計(jì)請(qǐng)求隊(duì)列的最大長(zhǎng)度和最小長(zhǎng)度。

步驟26:將上述統(tǒng)計(jì)信息和兩個(gè)隊(duì)列封裝為一個(gè)樹(shù)節(jié)點(diǎn)。

步驟27:判斷該節(jié)點(diǎn)是否為根節(jié)點(diǎn),如果是則跳轉(zhuǎn)步驟28,否則跳轉(zhuǎn)步驟210。

步驟28:通過(guò)變化頻率最低的可變域的索引序列,尋找第一個(gè),并且前一個(gè)字節(jié)不為0x00的字節(jié)的索引為劃分依據(jù)字節(jié)。

步驟29:根據(jù)劃分依據(jù)對(duì)請(qǐng)求隊(duì)列和請(qǐng)求響應(yīng)隊(duì)列進(jìn)行劃分。

步驟210:如果該節(jié)點(diǎn)的最小變化率索引和其兄弟節(jié)點(diǎn)的最小變化率索引有交集,則該子節(jié)點(diǎn)集合中所有的節(jié)點(diǎn)都應(yīng)劃分,如果需要繼續(xù)劃分則跳轉(zhuǎn)步驟211,否則跳轉(zhuǎn)步驟216。

步驟211:獲取此節(jié)點(diǎn)中變化率最小,并且前一個(gè)字節(jié)不為0x00的字節(jié),查看該字節(jié)是否存在于其兄弟節(jié)點(diǎn)的不可變域中,如果存在,則該節(jié)點(diǎn)和其他兄弟節(jié)點(diǎn)各自按照其變化率最小且前一個(gè)字節(jié)不為0x00的字節(jié)進(jìn)行劃分,否則統(tǒng)計(jì)每個(gè)子節(jié)點(diǎn)其變化率最小且前一個(gè)字節(jié)不為0x00的字節(jié),每個(gè)子節(jié)點(diǎn)依據(jù)此字節(jié)進(jìn)行劃分。根據(jù)此規(guī)則獲取該節(jié)點(diǎn)的劃分的依據(jù)。

步驟212:判讀劃分的依據(jù)是否為同一字節(jié)。如果是則跳轉(zhuǎn)步驟213,否則跳轉(zhuǎn)步驟214。

步驟213:使用獲取的同一個(gè)字節(jié),對(duì)請(qǐng)求與請(qǐng)求響應(yīng)的隊(duì)列進(jìn)行劃分。

步驟214:通過(guò)變化率最小,并且前一個(gè)字節(jié)不為0x00的字節(jié)的條件獲取該節(jié)點(diǎn)的劃分依據(jù)。

步驟215:對(duì)該節(jié)點(diǎn)自身的劃分依據(jù)對(duì)請(qǐng)求隊(duì)列與響應(yīng)請(qǐng)求隊(duì)列進(jìn)行劃分。

步驟216:判斷是否所有的節(jié)點(diǎn)都通過(guò)劃分操作。如果是則跳轉(zhuǎn)步驟217,否則跳轉(zhuǎn)步驟218。

步驟217:劃分完畢,協(xié)議樹(shù)構(gòu)建完成,停止協(xié)議樹(shù)的學(xué)習(xí)操作。

步驟218:獲取下一個(gè)未劃分的節(jié)點(diǎn),進(jìn)行學(xué)習(xí)操作。

圖3是本發(fā)明基于工控私有協(xié)議的協(xié)議特征學(xué)習(xí)方法的流程示意圖,如圖3所示,其步驟包括:

步驟31:通過(guò)葉子節(jié)點(diǎn)開(kāi)始協(xié)議特征的學(xué)習(xí)。

步驟32:獲取一個(gè)分好類(lèi)的葉子節(jié)點(diǎn)。

步驟33:開(kāi)始學(xué)習(xí)該節(jié)點(diǎn)中可變域樣本頻率的學(xué)習(xí)。

步驟34:獲取該節(jié)點(diǎn)中的數(shù)據(jù)包請(qǐng)求隊(duì)列。

步驟35:使用該節(jié)點(diǎn)的最大長(zhǎng)度為最大值遍歷所有請(qǐng)求數(shù)據(jù)的索引。

步驟36:每遍歷到一個(gè)索引之后查看該索引是否存在于該節(jié)點(diǎn)的不可變域中,如果存在則跳轉(zhuǎn)到步驟35,否則跳轉(zhuǎn)到步驟37。

步驟37:將該索引在請(qǐng)求隊(duì)列出現(xiàn)的所有值進(jìn)行統(tǒng)計(jì)。

步驟38:對(duì)所有統(tǒng)計(jì)出的值,統(tǒng)計(jì)它們各自在請(qǐng)求隊(duì)列中出現(xiàn)的頻率。

步驟39:判斷該遍歷的索引是否為最后一個(gè)可變域索引,如果是則跳轉(zhuǎn)到步驟310,否則跳轉(zhuǎn)到步驟35。

步驟310:統(tǒng)計(jì)所有可變域的樣本頻率之后,生成該節(jié)點(diǎn)的可變域樣本頻率特征。

步驟311:對(duì)該節(jié)點(diǎn)的長(zhǎng)度域開(kāi)始進(jìn)行學(xué)習(xí)。

步驟312:通過(guò)該節(jié)點(diǎn)的可變域,找到所有可能成為長(zhǎng)度域的索引,構(gòu)成長(zhǎng)度序列

步驟313:遍歷一個(gè)請(qǐng)求隊(duì)列的序列,統(tǒng)計(jì)該序列的子集,不包含自身序列。

步驟314:根據(jù)長(zhǎng)度序列和該序列的子集,子集出現(xiàn)在長(zhǎng)度域之后,長(zhǎng)度域的值為子集的長(zhǎng)度,以向量的形式表示一種長(zhǎng)度域的可能性,一個(gè)序列統(tǒng)計(jì)出一個(gè)向量集表示來(lái)長(zhǎng)度域的多種可能性。

步驟315:判讀該數(shù)據(jù)序列是否為最后一個(gè)請(qǐng)求隊(duì)列的序列,如果是,跳轉(zhuǎn)到步驟316,否則跳轉(zhuǎn)到步驟313。

步驟316:每個(gè)序列進(jìn)行長(zhǎng)度向量集的統(tǒng)計(jì),生成該節(jié)點(diǎn)長(zhǎng)度向量集的集合。

步驟317:對(duì)整個(gè)該節(jié)點(diǎn)長(zhǎng)度向量集的集合求交集。

步驟318:生成最終的該節(jié)點(diǎn)的長(zhǎng)度向量集特征。

步驟319:開(kāi)始對(duì)該節(jié)點(diǎn)進(jìn)行apriori關(guān)聯(lián)規(guī)則的學(xué)習(xí)。

步驟320:定義該方法的最小支持度和最小置信度。

步驟321:對(duì)每個(gè)序列,以索引值的方式,生成一個(gè)序列的樣本,再生成該節(jié)點(diǎn)的樣本集。

步驟322:通過(guò)節(jié)點(diǎn)的樣本集,統(tǒng)計(jì)每個(gè)樣本中的個(gè)體在樣本集中出現(xiàn)的次數(shù),計(jì)算該樣本個(gè)體的支持度。

步驟323:以樣本個(gè)體作為項(xiàng)集,和它所對(duì)應(yīng)的支持度生成初始樣本頻繁集,對(duì)初始樣本頻繁集進(jìn)行裁剪生成初始頻繁集。

步驟324:對(duì)頻繁集中的項(xiàng)集,通過(guò)數(shù)據(jù)表中的自連接方法,進(jìn)行自連接操作,除去相同項(xiàng)集的自連接結(jié)果。

步驟325:兩個(gè)項(xiàng)集長(zhǎng)度都為k,如果不是具有k-1個(gè)相同的個(gè)體索引值,則將該兩個(gè)項(xiàng)集自連接的結(jié)果除去,如果自連接的結(jié)果項(xiàng)集有一個(gè)子集不存在于前一輪的頻繁集中,則將該自連接的結(jié)果除去。進(jìn)行項(xiàng)集的過(guò)濾操作。

步驟326:通過(guò)前一輪的頻繁集,統(tǒng)計(jì)項(xiàng)集在樣本集中出現(xiàn)的頻率,得到的自連接的項(xiàng)集的支持度。

步驟327:使用最小支持度對(duì)自連接結(jié)果進(jìn)行裁剪,生成該輪次的頻繁集。

步驟328:判斷經(jīng)過(guò)裁剪之后該頻繁集是否內(nèi)部項(xiàng)集個(gè)數(shù)為零,如果是,則跳轉(zhuǎn)步驟329,否則跳轉(zhuǎn)步驟319。

步驟329:得出一個(gè)頻繁集,對(duì)其項(xiàng)集進(jìn)行置信度的學(xué)習(xí),獲取一個(gè)項(xiàng)集,統(tǒng)計(jì)其所有的子集,不包括其本身。

步驟330:生成該項(xiàng)集條件結(jié)果的對(duì)應(yīng)列表,保證條件子集索引全在結(jié)果子集索引之前。

步驟331:生成該項(xiàng)集的條件結(jié)果集合。

步驟332:獲取一個(gè)條件結(jié)果,通過(guò)上述置信度計(jì)算公式計(jì)算其置信度。

步驟333:判斷是否為條件結(jié)果集合中最后一個(gè)條件結(jié)果,如果是,則跳轉(zhuǎn)步驟334,否則跳轉(zhuǎn)步驟332。

步驟334:對(duì)該項(xiàng)集學(xué)習(xí)到的條件結(jié)果、置信度集合通過(guò)最小置信度進(jìn)行裁剪,生成該項(xiàng)集最終的關(guān)聯(lián)規(guī)則集。

步驟335:判斷是否為頻繁集中最后一個(gè)項(xiàng)集,如果是,則跳轉(zhuǎn)步驟336,否則跳轉(zhuǎn)步驟329。

步驟336:對(duì)該頻繁集中條件結(jié)果、置信度的所有情況進(jìn)行統(tǒng)計(jì),生成該節(jié)點(diǎn)的apriori關(guān)聯(lián)規(guī)則特征集。

步驟337:開(kāi)啟對(duì)請(qǐng)求響應(yīng)隊(duì)列中的請(qǐng)求響應(yīng)對(duì)的進(jìn)行協(xié)議關(guān)系的學(xué)習(xí)。

步驟338:獲取該節(jié)點(diǎn)的請(qǐng)求響應(yīng)隊(duì)列。

步驟339:對(duì)該獲取的請(qǐng)求響應(yīng)隊(duì)列,遍歷一個(gè)請(qǐng)求響應(yīng)對(duì)。

步驟340:以請(qǐng)求序列的長(zhǎng)度加一為行數(shù),響應(yīng)序列的長(zhǎng)度加一為列數(shù),形成比對(duì)矩陣,根據(jù)上述的填充規(guī)則,首先填充第一行和一列的值,然后再填充剩下的矩陣值,完成比對(duì)矩陣的創(chuàng)建。

步驟341:使用比對(duì)矩陣的回溯方法,從矩陣右下角開(kāi)始回溯。若行列對(duì)應(yīng)的索引值相等,則回溯到左上角單元格,并且對(duì)請(qǐng)求與響應(yīng)的索引進(jìn)行對(duì)應(yīng)記錄,若行列對(duì)應(yīng)的索引值不相等,回溯到左上角、上邊、左邊中值最大的單元格,若有相同最大值的單元格,優(yōu)先級(jí)按照左上角、上邊、左邊的順序?;厮莸骄仃囎笊辖菫橹?。

步驟342:對(duì)回溯過(guò)程中相等的索引,以成對(duì)的方式進(jìn)行記錄。

步驟343:回溯結(jié)束之后,生成一對(duì)請(qǐng)求響應(yīng)的比對(duì)特征。

步驟344:判斷是否為該請(qǐng)求響應(yīng)隊(duì)列的最后一個(gè)請(qǐng)求響應(yīng)對(duì),如果不是,則跳轉(zhuǎn)步驟339,否則跳轉(zhuǎn)步驟345。

步驟345:統(tǒng)計(jì)完該節(jié)點(diǎn)下的所有請(qǐng)求響應(yīng)對(duì)之后,對(duì)所有請(qǐng)求響應(yīng)對(duì)的比對(duì)特征求交集。

步驟346:所得的交集為該節(jié)點(diǎn)的請(qǐng)求響應(yīng)協(xié)議比對(duì)特征。

步驟347:將學(xué)習(xí)的可變域的樣本頻率、長(zhǎng)度域集合特征、apriori關(guān)聯(lián)規(guī)則特征集,請(qǐng)求響應(yīng)協(xié)議比對(duì)特征依附于該葉子節(jié)點(diǎn)上。

步驟348:判斷該節(jié)點(diǎn)是否為此協(xié)議樹(shù)最后一個(gè)葉子節(jié)點(diǎn),如果是,則跳轉(zhuǎn)步驟349,否則跳轉(zhuǎn)步驟32。

步驟349:生成該協(xié)議樹(shù)中葉子節(jié)點(diǎn)的協(xié)議特征,結(jié)束協(xié)議特征的學(xué)習(xí)。

圖4是本發(fā)明基于工控私有協(xié)議的模糊測(cè)試方法的流程示意圖,如圖4所示,其步驟包括:

步驟41:開(kāi)始模糊測(cè)試過(guò)程,向被測(cè)對(duì)象發(fā)送測(cè)試用例,監(jiān)聽(tīng)響應(yīng)數(shù)據(jù)。

步驟42:獲取協(xié)議樹(shù)中的所有葉子節(jié)點(diǎn)。

步驟43:根據(jù)協(xié)議樹(shù)獲取到的葉子節(jié)點(diǎn),隨機(jī)選擇一個(gè)葉子節(jié)點(diǎn)。

步驟44:使用該節(jié)點(diǎn)的最大長(zhǎng)度,最小長(zhǎng)度,最后一個(gè)不可變域的索引,和隨機(jī)數(shù)生成方法,確定數(shù)據(jù)域的長(zhǎng)度。

步驟45:遍歷數(shù)據(jù)域,對(duì)每個(gè)索引字節(jié)進(jìn)行隨機(jī)填充,生成該測(cè)試用例的數(shù)據(jù)域部分。

步驟46:根據(jù)該節(jié)點(diǎn)的不可變域和該節(jié)點(diǎn)父節(jié)點(diǎn)的不可變域,確定該節(jié)點(diǎn)的不可變域的差集。

步驟47:根據(jù)該節(jié)點(diǎn)的不可變域的差集,隨機(jī)選擇一個(gè)不可變域差集的索引字節(jié)進(jìn)行變異。

步驟48:使用apriori關(guān)聯(lián)規(guī)則的結(jié)果概率,隨機(jī)選擇關(guān)聯(lián)規(guī)則的條件或結(jié)果,使用可變域的變異規(guī)則,隨機(jī)選擇一個(gè)索引字節(jié)進(jìn)行變異操作。

步驟49:獲取該節(jié)點(diǎn)的長(zhǎng)度域集合,對(duì)所有長(zhǎng)度域進(jìn)行遍歷,對(duì)每個(gè)長(zhǎng)度域進(jìn)行變異操作。

步驟410:將以進(jìn)行處理變異的特征,apriori特征,長(zhǎng)度域特征,不可變域加入到變異記錄隊(duì)列。

步驟411:獲取該節(jié)點(diǎn)的可變域,遍歷該節(jié)點(diǎn)的可變域。

步驟412:判斷此可變域的索引是否在記錄隊(duì)列里。如果是,則跳轉(zhuǎn)步驟411,否則,跳轉(zhuǎn)步驟413。

步驟413:對(duì)變異到的索引字節(jié)進(jìn)行隨機(jī)變異。

步驟414:對(duì)進(jìn)行了變異操作的索引加入到記錄隊(duì)列。

步驟415:判斷該遍歷的可變域是否是該節(jié)點(diǎn)最后一個(gè)可變域,如果是,則跳轉(zhuǎn)步驟416,如果不是,則跳轉(zhuǎn)步驟411。

步驟416:和之前生成的數(shù)據(jù)域進(jìn)行合并,生成一個(gè)測(cè)試用例。

步驟417:通過(guò)socket技術(shù),與被測(cè)對(duì)象進(jìn)行tcp連接。

步驟418:判斷tcp連接是否連接成功,如果連接成功,則跳轉(zhuǎn)到步驟419,如果未連接成功,則認(rèn)為是異常信息需要進(jìn)行報(bào)警操作,則跳轉(zhuǎn)步驟424。

步驟419:通過(guò)socket向被測(cè)對(duì)象send該生成的測(cè)試用例。

步驟420:判斷發(fā)送的測(cè)試用例是否接受到了被測(cè)設(shè)備的響應(yīng),如果接受到了,則跳轉(zhuǎn)步驟421,否則跳轉(zhuǎn)步驟43。

步驟421:將發(fā)送的測(cè)試用例和該測(cè)試用例接受到的響應(yīng)進(jìn)行配對(duì),保存到緩存隊(duì)列中。

步驟422:使用學(xué)習(xí)的請(qǐng)求響應(yīng)協(xié)議比對(duì)特征對(duì)該請(qǐng)求與響應(yīng)數(shù)據(jù)進(jìn)行比對(duì)。

步驟423:查看通過(guò)請(qǐng)求響應(yīng)協(xié)議比對(duì)特征是否匹配成功,如果成功則跳轉(zhuǎn)步驟425,否則,發(fā)生請(qǐng)求與響應(yīng)信息不匹配,認(rèn)為是異常信息,需要報(bào)警操作,跳轉(zhuǎn)步驟424。

步驟424:將未成功建立tcp連接或請(qǐng)求響應(yīng)未匹配成功的異常信息記錄到報(bào)警信息數(shù)據(jù)庫(kù)中。

步驟425:判讀用戶是否自行停止模糊測(cè)試過(guò)程,如果是,則跳轉(zhuǎn)步驟426,否則跳轉(zhuǎn)步驟43。

步驟426:完成一次模糊測(cè)試,停止該模糊測(cè)試過(guò)程。

本發(fā)明可以解決在面對(duì)工控私有網(wǎng)絡(luò)協(xié)議的情況下進(jìn)行漏洞挖掘的問(wèn)題,相比較于傳統(tǒng)模糊測(cè)試框架,具有更高的測(cè)試效率。

應(yīng)當(dāng)理解,雖然本說(shuō)明書(shū)根據(jù)實(shí)施方式加以描述,但是并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說(shuō)明書(shū)的這種敘述方式僅僅是為了清楚起見(jiàn),本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)將說(shuō)明書(shū)作為一個(gè)整體,各個(gè)實(shí)施方式中的技術(shù)方案也可以適當(dāng)組合,按照本領(lǐng)域技術(shù)人員的理解來(lái)實(shí)施。

上文所列出的一系列詳細(xì)說(shuō)明僅僅是針對(duì)本發(fā)明的可行性實(shí)施方式的具體說(shuō)明,它們并非用于限制本發(fā)明的保護(hù)范圍,凡是未脫離發(fā)明技藝精神所作的等效實(shí)施方式或變更均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
政和县| 泗水县| 本溪| 涞源县| 介休市| 新建县| 文昌市| 仁布县| 德兴市| 始兴县| 冕宁县| 凤翔县| 同心县| 伽师县| 阿拉善右旗| 汝南县| 乐昌市| 抚顺县| 绥滨县| 翁牛特旗| 巴马| 阿克苏市| 伽师县| 新昌县| 开原市| 商都县| 怀柔区| 内江市| 浮梁县| 资源县| 孟州市| 昔阳县| 罗源县| 五家渠市| 繁昌县| 盐池县| 永安市| 舞钢市| 基隆市| 柘荣县| 炉霍县|