• 
    

    
    

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

      ?

      基于改進(jìn)投票專(zhuān)家算法的專(zhuān)有協(xié)議模糊測(cè)試方法

      2018-06-26 10:19:38劉津霖付光遠(yuǎn)李海龍汪洪橋
      關(guān)鍵詞:狀態(tài)機(jī)關(guān)鍵字報(bào)文

      劉津霖,付光遠(yuǎn),李海龍,汪洪橋

      火箭軍工程大學(xué) 信息工程系,西安 710025

      1 引言

      近年來(lái),專(zhuān)有協(xié)議(proprietary protocol)的應(yīng)用越來(lái)越廣泛,尤其是在工業(yè)控制領(lǐng)域。工控系統(tǒng)在逐漸變得更加信息化、自動(dòng)化和智能化的同時(shí),也埋下了安全隱患。工業(yè)控制系統(tǒng)不同于傳統(tǒng)信息系統(tǒng),一旦遭受攻擊,會(huì)對(duì)國(guó)家安全造成重大打擊,如:核電站爆炸、電力系統(tǒng)癱瘓、城市交通停運(yùn)等。因此,研究工控系統(tǒng)安全關(guān)乎國(guó)家的戰(zhàn)略安全,研究意義重大。提升工控系統(tǒng)安全的主要方法是漏洞挖掘,防患于未然。其中,模糊測(cè)試被公認(rèn)為是最有效的漏洞挖掘方法,但是由于工控系統(tǒng)涉及的協(xié)議組成十分復(fù)雜,存在大量廠商自己定義的專(zhuān)有協(xié)議[1],這些專(zhuān)有協(xié)議沒(méi)有公開(kāi)的資料說(shuō)明,對(duì)協(xié)議的結(jié)構(gòu)和會(huì)話過(guò)程等信息無(wú)法輕易獲悉,給模糊測(cè)試造成了巨大的挑戰(zhàn)[2-3]。

      針對(duì)專(zhuān)有協(xié)議的問(wèn)題,可以采用協(xié)議逆向技術(shù),獲得專(zhuān)有協(xié)議的報(bào)文格式和協(xié)議狀態(tài)機(jī),將專(zhuān)有協(xié)議轉(zhuǎn)化成“公有協(xié)議”,再結(jié)合模糊測(cè)試技術(shù)對(duì)被測(cè)目標(biāo)進(jìn)行漏洞挖掘。對(duì)于協(xié)議逆向技術(shù)的研究已經(jīng)有了很多豐碩的成果,如:PI工程和它的改進(jìn)方法Discoverer[4]采用生物信息學(xué)序列比對(duì)算法逆向協(xié)議的報(bào)文格式,為專(zhuān)有協(xié)議逆向解析提供了新思路,但是得到的分析結(jié)果缺少語(yǔ)義信息;Prospex[5]、ScriptGen[6]等方法充分考慮到了報(bào)文的語(yǔ)義信息,定義報(bào)文的關(guān)鍵字作為協(xié)議的語(yǔ)義信息,使逆向的報(bào)文格式和協(xié)議狀態(tài)機(jī)更加完整。因此,協(xié)議關(guān)鍵字提取質(zhì)量的好壞直接影響協(xié)議的逆向結(jié)果。目前提取關(guān)鍵字應(yīng)用最多的方法是n-gram算法[7],即用一個(gè)大小為n的滑動(dòng)窗口將報(bào)文劃分成等長(zhǎng)的子序列。然而,這種方法會(huì)使大于n字節(jié)的協(xié)議關(guān)鍵字被分割,或者使小于n字節(jié)的協(xié)議關(guān)鍵字混入噪聲,從而影響協(xié)議逆向的效果。

      本文提出的專(zhuān)有協(xié)議模糊測(cè)試方法,首先需要對(duì)流量數(shù)據(jù)進(jìn)行流測(cè)度和分類(lèi)預(yù)處理,并且提取協(xié)議關(guān)鍵字。為解決n-gram方法只能將所有報(bào)文劃分為等長(zhǎng)子序列的局限性,本文利用投票專(zhuān)家(Voting Expert,VE)算法提供更為準(zhǔn)確的關(guān)鍵字提取,并且針對(duì)VE算法在處理協(xié)議數(shù)據(jù)時(shí)存在節(jié)點(diǎn)空間爆炸的問(wèn)題,基于有損計(jì)數(shù)算法對(duì)VE算法進(jìn)行了改進(jìn)。在成功獲取協(xié)議的關(guān)鍵字后,采用因果態(tài)分割重建算法重建未知專(zhuān)有協(xié)議的報(bào)文格式ε機(jī)。然后從每個(gè)會(huì)話中提取可以代表該會(huì)話的報(bào)文類(lèi)型,將會(huì)話過(guò)程表示為一個(gè)報(bào)文類(lèi)型序列,將所有的狀態(tài)轉(zhuǎn)換序列融合成一個(gè)確定有窮自動(dòng)機(jī),即協(xié)議的狀態(tài)機(jī)。最后,根據(jù)逆向得到的有關(guān)協(xié)議的報(bào)文結(jié)構(gòu)和協(xié)議狀態(tài)機(jī)信息生成模糊測(cè)試用例,并對(duì)測(cè)試目標(biāo)進(jìn)行模糊測(cè)試。

      2 改進(jìn)的投票專(zhuān)家算法

      2.1 投票專(zhuān)家算法

      投票專(zhuān)家算法[8],屬于局部貪心算法,主要是通過(guò)一個(gè)相對(duì)較小的滑動(dòng)窗口,選擇最有可能的邊界位置對(duì)單詞分區(qū)。本文利用VE算法代替?zhèn)鹘y(tǒng)的n-gram算法,提取被測(cè)專(zhuān)有協(xié)議的關(guān)鍵字。

      為了實(shí)現(xiàn)滑動(dòng)窗口大小為L(zhǎng)的VE算法,用一個(gè)深度為(L+1)的單詞查找樹(shù)(Trie)來(lái)保存數(shù)據(jù)流中所有可能發(fā)生的字節(jié)組合。

      例如,字符序列為“abcabd”,窗口大小為2時(shí),可以生成深度為3的樹(shù),如圖1所示。從圖中可以看出子字符串a(chǎn)b出現(xiàn)兩次,并且每次a出現(xiàn)時(shí),b都是緊隨其后。bc和bd各出現(xiàn)一次。

      圖1 單詞查找樹(shù)示意圖

      VE算法根據(jù)兩項(xiàng)指標(biāo)劃分單詞,一個(gè)是內(nèi)部熵(Internal entropy)用HI表示,代表該子序列在數(shù)據(jù)流中總是作為一個(gè)整體出現(xiàn),應(yīng)作為整體得到保留,表達(dá)式如式(1)所示:

      其中,w代表子序列,而P(w)則表示該子序列出現(xiàn)的概率。HI的值越小,代表子序列w越常作為一個(gè)整體出現(xiàn)。

      另外一個(gè)指標(biāo)是邊界熵(Boundary entropy)用HB(w)表示,若后續(xù)字節(jié)序列經(jīng)常變化,則認(rèn)定該字節(jié)后為一個(gè)詞之間的邊界,表達(dá)式如式(2)所示:

      為了計(jì)算不同長(zhǎng)度的子序列,需要對(duì)表達(dá)式進(jìn)行標(biāo)準(zhǔn)化。

      VE算法可以分為兩個(gè)階段,第一個(gè)階段為投票階段(Voting phase),在大小為L(zhǎng)的滑動(dòng)窗口內(nèi)對(duì)可能是邊界的位置進(jìn)行投票。xIi和xBi分別表示在i處的內(nèi)部投票點(diǎn)(internal voting point)和邊界投票點(diǎn)(boundary voting point),j在0到L之間取值:

      每個(gè)點(diǎn)x存在一個(gè)選票分?jǐn)?shù)(Vote Score)用V(x)表示,其計(jì)算規(guī)則如式(7)所示,1(·)代表一個(gè)指示函數(shù),如果x=y函數(shù)的值為1,否則為0。

      第二個(gè)階段為判決階段(Decision phase),在判斷點(diǎn)x處為詞邊界時(shí)遵循以下兩條規(guī)則:

      (1)點(diǎn)x得到的票數(shù)比相鄰點(diǎn)更多;

      (2)得票數(shù)大于設(shè)定的閾值T。

      通過(guò)VE算法可以得到字節(jié)序列中可能的詞邊界,將字節(jié)序列按一定的語(yǔ)義信息進(jìn)行劃分。

      2.2 存在的局限性

      雖然VE算法在自然語(yǔ)言處理中得到了很好的分詞效果,但是在處理網(wǎng)絡(luò)流量時(shí)存在一些缺陷。如,節(jié)點(diǎn)空間爆炸問(wèn)題。在處理自然語(yǔ)言時(shí),由于傳統(tǒng)的組合習(xí)慣會(huì)限制某些子序列的發(fā)生,以英語(yǔ)為例,如當(dāng)出現(xiàn)“tio”時(shí),后續(xù)的字符極有可能是“n”,這在某種程度上減少了子樹(shù)的數(shù)量,節(jié)省了存儲(chǔ)空間。但是在處理網(wǎng)絡(luò)協(xié)議數(shù)據(jù),特別是純二進(jìn)制數(shù)據(jù)時(shí),網(wǎng)絡(luò)流量中子序列的分布概率更稀疏,往往會(huì)產(chǎn)生更多新的字節(jié)組合,從而導(dǎo)致占用大量存儲(chǔ)空間。

      2.3 改進(jìn)方法

      盡管VE算法在處理協(xié)議時(shí)會(huì)導(dǎo)致節(jié)點(diǎn)空間爆炸,但是通過(guò)觀察發(fā)現(xiàn),大多數(shù)節(jié)點(diǎn)的頻率非常低。因此,雖然捕獲所有節(jié)點(diǎn)需要一個(gè)巨大的存儲(chǔ)空間,但是只需要關(guān)注有足夠高的頻率的子集即可。

      為了解決VE算法在處理協(xié)議時(shí)存在的問(wèn)題,本文通過(guò)有損計(jì)數(shù)算法(Lossy Counting Algorithm,LCA)[9]對(duì)單詞查找樹(shù)進(jìn)行剪枝操作,刪除頻率非常低,不太可能是關(guān)鍵詞的后繼節(jié)點(diǎn),從而節(jié)省空間。

      LCA算法是一種近似計(jì)算算法,可以通過(guò)定期消除低頻數(shù)據(jù)的方式,利用有限的內(nèi)存從數(shù)據(jù)流中返回高頻率數(shù)據(jù)項(xiàng),在處理實(shí)時(shí)大數(shù)據(jù)流上的頻率統(tǒng)計(jì)問(wèn)題中得到了廣泛的應(yīng)用。本文的方法是利用LCA算法在修剪期內(nèi),對(duì)出現(xiàn)頻率低于設(shè)定閾值的子序列進(jìn)行剔除。LCA算法最為關(guān)鍵的參數(shù)就是最大錯(cuò)誤率e,低錯(cuò)誤率會(huì)保留更多的子序列但是會(huì)增加內(nèi)存的壓力,高錯(cuò)誤率可以減少超出內(nèi)存的風(fēng)險(xiǎn)但是可能會(huì)在剪枝操作中剔除一些有用的子序列,因此需要在兩者之間找到平衡。另外,雖然通過(guò)剪枝操作可以在單詞查找樹(shù)中剔除低頻的子序列,但是在計(jì)算選票分?jǐn)?shù)時(shí)需要考慮所有子序列,因此,本文增加了補(bǔ)償環(huán)節(jié),即將沒(méi)有出現(xiàn)在單詞查找樹(shù)中的子序列的出現(xiàn)頻率統(tǒng)一設(shè)定為e/2。

      文中已給出改進(jìn)的投票專(zhuān)家算法ImproveVE的偽代碼(圖2)。算法的參數(shù)分別為P:流量數(shù)據(jù);M:剪枝期處理字節(jié)數(shù);L:滑動(dòng)窗口大??;T:決定階段閾值。ImproveVE函數(shù)首先調(diào)用BuildTrie函數(shù)計(jì)算子序列的頻率(第6~16行),在各個(gè)剪枝期對(duì)低于頻率閾值的子序列節(jié)點(diǎn)進(jìn)行剔除(第17~21行)。構(gòu)建單詞查找樹(shù),然后計(jì)算樹(shù)中所有子序列的熵值(第28~29行),并且補(bǔ)償被剪切子序列(第33行),計(jì)算相應(yīng)的熵值(第34行)。最后計(jì)算投票分?jǐn)?shù),確實(shí)可能的詞邊界(第36~41行),提取所有的候選關(guān)鍵字到集合W中(第42行)。

      3 模糊測(cè)試

      3.1 提取關(guān)鍵字

      通過(guò)ImproveVE算法得到的只能稱(chēng)之為候選關(guān)鍵字集合,所謂的關(guān)鍵字是指那些可以區(qū)分應(yīng)用協(xié)議的字節(jié)子序列。目標(biāo)是根據(jù)權(quán)值對(duì)候選關(guān)鍵字集合中的關(guān)鍵字進(jìn)行降序排序,提取排名靠前的子序列作為協(xié)議的關(guān)鍵字。因此,排序規(guī)則對(duì)特征詞的選取起決定性作用。

      本文利用信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù)——詞頻逆文檔頻率TF-IDF[10-11](Term Frequency-Inverse Document Frequency)作為特征詞排序的評(píng)判標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)需綜合考慮頻率與位置兩方面的信息。因?yàn)?,在?bào)文格式中,存在如源地址、目的地址等信息,雖然出現(xiàn)的頻率會(huì)很高,但是對(duì)報(bào)文格式的表達(dá)沒(méi)有任何意義。

      通過(guò)TF-IDF計(jì)算所有候選特征詞的權(quán)值后,選取排名在前k的子序列作為協(xié)議的關(guān)鍵字,用于協(xié)議的逆向解析過(guò)程。

      3.2 協(xié)議逆向分析

      3.2.1 報(bào)文格式

      圖2 改進(jìn)的投票專(zhuān)家算法ImproveVE的偽代碼

      在得到目標(biāo)協(xié)議的關(guān)鍵字集合后,利用ε機(jī)表示協(xié)議的報(bào)文格式。因?yàn)閰f(xié)議可以看作是一個(gè)隨機(jī)過(guò)程,構(gòu)成協(xié)議的字符串以一定的概率出現(xiàn),協(xié)議的內(nèi)部狀態(tài)與某些字符串的集合之間存在對(duì)應(yīng)關(guān)系。而隱馬爾科夫模型(Hidden Markov Mode,HMM)是一種只通過(guò)可觀察狀態(tài)就能求得系統(tǒng)隱藏的內(nèi)部狀態(tài)的統(tǒng)計(jì)模型。因此,可以運(yùn)用求解HMM的思想得到專(zhuān)有協(xié)議的報(bào)文結(jié)構(gòu)狀態(tài)機(jī)模型。ε機(jī)是一種特殊的隱馬爾科夫模型,可以對(duì)隨機(jī)過(guò)程進(jìn)行最小最優(yōu)預(yù)測(cè),由因果態(tài)方程ε和狀態(tài)轉(zhuǎn)移矩陣T構(gòu)成[11]。所謂的因果態(tài)方程指的是歷史與歷史集合之間的一種映射關(guān)系。其定義如式(8)所示:

      其中,和分別代表一個(gè)隨機(jī)過(guò)程的歷史和未來(lái)兩個(gè)部分,SL和SL分別表示歷史狀態(tài)的最后L個(gè)字符和未來(lái)狀態(tài)的最初L個(gè)字符。

      目前,有幾種重建算法可以用于推斷ε機(jī)。如,因果態(tài)分割重建算法[12](Causal-State Splitting Reconstruction,CSSR)、狀態(tài)合并ε機(jī)推斷算法(State-merging ε-Machine Inference Algorithm)等。因果態(tài)分割重建算法與狀態(tài)合并ε機(jī)推斷算法最主要的區(qū)別是CSSR會(huì)利用一些關(guān)于因果態(tài)的狀態(tài)屬性來(lái)指導(dǎo)搜索和自動(dòng)機(jī)建設(shè),并且收斂速度更快。CSSR的核心思想是分割——將一個(gè)有限的符號(hào)集分割成多個(gè)因果態(tài)。其偽代碼如圖3。

      圖3 CSSR偽代碼

      其總體思路:首先做零假設(shè)(Null Hypothesis),假設(shè)該隨機(jī)過(guò)程中的所有事件屬于同一個(gè)狀態(tài)。然后計(jì)算下一個(gè)事件的未來(lái)分布,通過(guò)Kolmogorov-Smirnov對(duì)零假設(shè)進(jìn)行假設(shè)檢驗(yàn),如果假設(shè)不被拒絕,新的分配被認(rèn)為與現(xiàn)有分布狀態(tài)相同,該事件被添加到這個(gè)狀態(tài),如果有任意一個(gè)事件不滿(mǎn)足于假設(shè)條件,則被分離出來(lái)構(gòu)成新的狀態(tài)。最后得到的狀態(tài)有可能數(shù)量十分龐大,但其中大部分是瞬時(shí)狀態(tài)。通過(guò)刪除瞬時(shí)狀態(tài),保留循環(huán)狀態(tài),得到最終的報(bào)文格式ε機(jī)。

      具體過(guò)程如偽代碼所示,首先Initialization函數(shù)初始化(第1行),然后Sufficiency函數(shù)構(gòu)建因果態(tài)(第11~28行),最后Recursion函數(shù)用于消除瞬時(shí)狀態(tài),確定因果狀態(tài)機(jī)并填充轉(zhuǎn)換表(第11~28行)。在Sufficiency和Recursion函數(shù)中均調(diào)用了TEXT函數(shù)(第30~37行)和MOVE函數(shù)(第39~43行),分別用于進(jìn)行測(cè)試零假設(shè)和狀態(tài)的移動(dòng)、合并操作。參數(shù)W代表用于構(gòu)建報(bào)文格式馬爾科夫模型的字母表,即提取的協(xié)議關(guān)鍵字集合;xˉ表示從W中提取的長(zhǎng)度為N的序列,Lmax表示估計(jì)因果態(tài)時(shí)最大的歷史長(zhǎng)度,α表示假設(shè)檢驗(yàn)的置信度。通過(guò)該算法可以重建協(xié)議的報(bào)文格式ε機(jī)。

      3.2.2 協(xié)議狀態(tài)機(jī)

      網(wǎng)絡(luò)通信是由一個(gè)潛在的狀態(tài)機(jī)驅(qū)動(dòng),當(dāng)某些事件觸發(fā)某些反應(yīng)時(shí)進(jìn)行狀態(tài)交換。報(bào)文格式信息僅僅可以反映協(xié)議的語(yǔ)法和語(yǔ)義信息,缺少揭示協(xié)議行為特征的時(shí)序信息。推斷協(xié)議的狀態(tài)機(jī)模型可以了解報(bào)文之間的相互關(guān)聯(lián),進(jìn)一步完善模糊測(cè)試器。

      獲得協(xié)議報(bào)文格式后,需要對(duì)所有會(huì)話(Session)進(jìn)行分析,從每個(gè)會(huì)話中提取可以代表該會(huì)話的報(bào)文類(lèi)型,將會(huì)話過(guò)程表示為一個(gè)報(bào)文類(lèi)型序列,構(gòu)建APTA(Augmented Prefix Tree Acceptor)樹(shù)。

      然后采用紅藍(lán)節(jié)點(diǎn)框架[13-15]對(duì)APTA樹(shù)進(jìn)行簡(jiǎn)化,最后最小化馬爾科夫模型為一個(gè)有限狀態(tài)自動(dòng)機(jī)(Deterministic Finite Automaton,DFA),即如果將所有的狀態(tài)轉(zhuǎn)換序列融合成一個(gè)確定有窮自動(dòng)機(jī),那么這就是協(xié)議的狀態(tài)機(jī)。

      另外,對(duì)于只能解決單項(xiàng)報(bào)文的專(zhuān)有協(xié)議模糊測(cè)試器,得到的協(xié)議狀態(tài)機(jī)顯然是不全面的。為了能夠應(yīng)對(duì)雙向報(bào)文,本文對(duì)事件序列進(jìn)行標(biāo)記,用以區(qū)分是來(lái)自客戶(hù)端或者是服務(wù)器端。將來(lái)自同方向的報(bào)文構(gòu)成一個(gè)轉(zhuǎn)換條件或者一個(gè)狀態(tài),這樣可以把會(huì)話中的消息看作是一個(gè)狀態(tài)轉(zhuǎn)換序列。例如,將服務(wù)器端到客戶(hù)端的方向的報(bào)文定為狀態(tài)機(jī)模型的邊(edge),將客戶(hù)端到服務(wù)器端的方向的報(bào)文定義為狀態(tài)機(jī)模型的節(jié)點(diǎn)(node),反之亦可。具體的做法是采用大小為k的序列滑動(dòng)窗口進(jìn)行標(biāo)記,例如,假設(shè)觀察到的事件序列為a、b、c、d,并且是從客戶(hù)端和服務(wù)器端交替生成的,則k=2時(shí),得到的結(jié)果如式(9)所示:

      3.3 生成模糊測(cè)試用例

      模糊測(cè)試是通過(guò)向測(cè)試目標(biāo)輸入非預(yù)期的數(shù)據(jù)并監(jiān)測(cè)輸出數(shù)據(jù)中的異常來(lái)發(fā)現(xiàn)測(cè)試目標(biāo)中可能存在的漏洞的方法[16]。生成測(cè)試用例就是產(chǎn)生這些用于測(cè)試的輸入數(shù)據(jù)的過(guò)程。

      協(xié)議逆向階段可以得到有關(guān)協(xié)議的報(bào)文結(jié)構(gòu)和協(xié)議狀態(tài)機(jī)信息,這些信息可以用來(lái)生成模糊測(cè)試階段的測(cè)試用例。報(bào)文結(jié)構(gòu)可以用于構(gòu)造完整的數(shù)據(jù)包,對(duì)于報(bào)文中的固定部分通常不會(huì)造成漏洞,更多的是關(guān)注變長(zhǎng)部分,確定生成模糊測(cè)試用例的測(cè)試點(diǎn)。而協(xié)議狀態(tài)機(jī)可以明確協(xié)議的交互行為,控制協(xié)議的接收與發(fā)送。協(xié)議逆向工程與模糊測(cè)試技術(shù)的完美結(jié)合可以針對(duì)特定協(xié)議生成模糊測(cè)試用例,并且對(duì)測(cè)試目標(biāo)進(jìn)行漏洞挖掘。

      本文采用基于文法驅(qū)動(dòng)[17-18]的模糊測(cè)試用例生成技術(shù),根據(jù)逆向得到的專(zhuān)有協(xié)議報(bào)文格式及狀態(tài)機(jī)信息,利用文法模型自動(dòng)化生成測(cè)試用例。其流程如圖4所示。

      圖4 生成測(cè)試用例流程圖

      根據(jù)數(shù)據(jù)格式規(guī)范構(gòu)建文法模型,結(jié)合通過(guò)協(xié)議逆向工程得到的協(xié)議信息構(gòu)建文法分析樹(shù)。再利用模型中的屬性規(guī)則對(duì)文法元素實(shí)施選擇變異,進(jìn)而生成測(cè)試用例進(jìn)行模糊測(cè)試[19]。

      4 實(shí)驗(yàn)分析

      本文從三個(gè)方面進(jìn)行實(shí)驗(yàn)分析驗(yàn)證:首先,利用公有協(xié)議FTP、HTTP和SMTP對(duì)ImproveVE算法提取關(guān)鍵字的性能進(jìn)行實(shí)驗(yàn)分析;其次,通過(guò)逆向Modbus TCP協(xié)議,并與已有協(xié)議規(guī)范比對(duì),檢驗(yàn)?zāi)嫦虻男Ч蛔詈?,用本文方法?duì)專(zhuān)有協(xié)議WDB RPC進(jìn)行逆向分析,并且針對(duì)WDB RPC協(xié)議對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks進(jìn)行漏洞挖掘。

      首先利用ImproveVE算法和傳統(tǒng)的n-gram算法分別對(duì)協(xié)議規(guī)范已知的公有協(xié)議FTP、HTTP和SMTP提取關(guān)鍵字,統(tǒng)計(jì)在一系列候選關(guān)鍵字集合排名前k項(xiàng)中提取的關(guān)鍵字?jǐn)?shù)量,根據(jù)提取的關(guān)鍵字與真正關(guān)鍵字之間的百分比評(píng)判算法的優(yōu)劣。在實(shí)驗(yàn)參數(shù)的選取上,選擇最為常用的n=3作為n-gram算法的窗口大小,VE算法的滑動(dòng)窗口大小、閾值以及剪枝期處理字節(jié)數(shù)分別取值10、6和10 000 000。

      如圖5的實(shí)驗(yàn)結(jié)果所示,ImproveVE算法相較于n-gram算法對(duì)報(bào)文子序列的劃分更為合理,提取的協(xié)議關(guān)鍵字更接近于真實(shí)情況。尤其是對(duì)FTP協(xié)議關(guān)鍵字的提取,其準(zhǔn)確率已接近98%,準(zhǔn)確地提取協(xié)議關(guān)鍵字更有利于對(duì)協(xié)議進(jìn)行逆向分析。

      另外,針對(duì)VE算法處理協(xié)議數(shù)據(jù)時(shí)存在節(jié)點(diǎn)空間爆炸,占用大量?jī)?nèi)存的問(wèn)題,本文利用LCA算法對(duì)VE算法進(jìn)行了改進(jìn)。圖6是分別采用VE算法和改進(jìn)后的ImproveVE算法處理SMTP協(xié)議時(shí)所產(chǎn)生的節(jié)點(diǎn)數(shù)量比對(duì)。從直觀上不難發(fā)現(xiàn),改進(jìn)后的算法明顯降低了節(jié)點(diǎn)數(shù)量。值得注意的是,雖然改進(jìn)后的算法ImproveVE和VE算法相比減少了生成的節(jié)點(diǎn)數(shù)量,但是和n-gram相比,所占用的內(nèi)存空間仍然較大,這就需要在準(zhǔn)確性和資源占用兩者之間做權(quán)衡。根據(jù)本文的目的,對(duì)專(zhuān)有協(xié)議進(jìn)行模糊測(cè)試,顯然提取關(guān)鍵字的準(zhǔn)確性是首要因素。另外,通過(guò)對(duì)VE算法的改進(jìn),節(jié)省了大量?jī)?nèi)存,對(duì)內(nèi)存資源的占用完全在可承受的范圍之內(nèi)。因此,準(zhǔn)確性這一指標(biāo)更為重要,ImproveVE算法能較好地完成針對(duì)專(zhuān)有協(xié)議的關(guān)鍵字提取任務(wù)。

      對(duì)改進(jìn)的VE算法的性能進(jìn)行對(duì)比實(shí)驗(yàn)分析后,需要進(jìn)一步驗(yàn)證本文方法對(duì)專(zhuān)有協(xié)議的逆向效果。首先對(duì)公有協(xié)議Modbus TCP進(jìn)行逆向分析。

      Modbus是用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議,屬于應(yīng)用層報(bào)文傳輸協(xié)議。Modbus TCP屬于Modbus標(biāo)準(zhǔn)的一種,屬于工業(yè)控制網(wǎng)絡(luò)范圍,是一種公有協(xié)議,Modbus TCP的報(bào)文格式與通過(guò)本文方法得到的報(bào)文格式ε機(jī)如圖7所示。

      圖5 提取關(guān)鍵字的準(zhǔn)確率

      圖6 ImproveVE算法減少節(jié)點(diǎn)數(shù)量

      圖7 Modbus TCP報(bào)文格式與ε機(jī)

      根據(jù)已有的Modbus TCP的報(bào)文格式,可以獲悉該協(xié)議由事務(wù)標(biāo)識(shí)符、協(xié)議標(biāo)識(shí)符、長(zhǎng)度字段、功能字段、單元標(biāo)識(shí)符和負(fù)載構(gòu)成。該協(xié)議對(duì)應(yīng)的隱馬爾科夫模型由報(bào)文頭創(chuàng)建的6個(gè)狀態(tài)和相鄰狀態(tài)之間的轉(zhuǎn)換構(gòu)成,其中Σn代表n個(gè)連續(xù)的字節(jié),EOM代表消息是完整的,并準(zhǔn)備轉(zhuǎn)發(fā)。接下來(lái)通過(guò)300條流量數(shù)據(jù)對(duì)Modbus TCP協(xié)議進(jìn)行逆向分析,得到該協(xié)議的ε機(jī)??梢园l(fā)現(xiàn),前三個(gè)字段被分配到了同一狀態(tài),這是因?yàn)樗鼈兊娜≈凳枪潭ǖ?,因此在學(xué)習(xí)過(guò)程中自然被分配到同一狀態(tài)。雖然得到的ε機(jī)與真實(shí)的報(bào)文格式有所差異,不完全匹配,但卻是一個(gè)合理的分組,是完全基于觀察到的統(tǒng)計(jì)信息得到的結(jié)果。因?yàn)楸疚牡姆椒ㄊ且粋€(gè)增量學(xué)習(xí)的過(guò)程,如果有足夠多的訓(xùn)練數(shù)據(jù),字節(jié)將被分配到正確的字段。

      另外,可以觀察到,通過(guò)因果態(tài)分割重建算法不僅很好地重建了Modbus TCP協(xié)議的報(bào)文結(jié)構(gòu)ε機(jī),并且區(qū)分出了不同的功能字段,如表1所示。

      接下來(lái)利用本文的方法對(duì)專(zhuān)有協(xié)議WDB RPC進(jìn)行實(shí)驗(yàn)分析。WDB RPC屬于嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks的專(zhuān)有協(xié)議,利用WDB RPC協(xié)議既能直接訪問(wèn)系統(tǒng)的內(nèi)存,又能對(duì)VxWorks所有組件的工作狀態(tài)進(jìn)行監(jiān)控,如果組件發(fā)生異常,TAgent會(huì)利用WDB RPC協(xié)議自動(dòng)告知當(dāng)前連接的調(diào)試器。WDB RPC屬于典型的專(zhuān)有協(xié)議,沒(méi)有公開(kāi)的文檔說(shuō)明,公司外部人員對(duì)該協(xié)議的結(jié)構(gòu)一無(wú)所知。WDB RPC目前有兩個(gè)版本,本文所研究的是WDB RPCv2,用于VxWorks 6.6及以上版本。本文通過(guò)500條WDB RPC流量數(shù)據(jù)對(duì)報(bào)文結(jié)構(gòu)進(jìn)行逆向分析,得到WDB RPC報(bào)文結(jié)構(gòu)的ε機(jī)如圖8所示。

      表1 Modbus TCP部分字符與相對(duì)應(yīng)的功能

      圖8 WDB RPC的ε機(jī)

      通過(guò)協(xié)議逆向分析,可以獲得協(xié)議的報(bào)文格式和協(xié)議狀態(tài)機(jī)等信息,這些信息可以用于協(xié)議識(shí)別、異常檢測(cè)和智能模糊測(cè)試等諸多領(lǐng)域。本文主要是將協(xié)議逆向分析用于模糊測(cè)試,以解決由于工控領(lǐng)域存在大量專(zhuān)有協(xié)議給模糊測(cè)試帶來(lái)的實(shí)際困難。利用協(xié)議逆向階段得到的有關(guān)協(xié)議信息,生成模糊測(cè)試階段的測(cè)試用例,并對(duì)測(cè)試目標(biāo)實(shí)施漏洞挖掘。本文利用上述的VxWorks專(zhuān)有協(xié)議WDB RPC對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)進(jìn)行模糊測(cè)試。VxWorks是由美國(guó)風(fēng)河(Wind River)開(kāi)發(fā)的一款嵌入式實(shí)時(shí)操作系統(tǒng),該操作系統(tǒng)以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛應(yīng)用于工業(yè)控制領(lǐng)域。

      通過(guò)本文的專(zhuān)有協(xié)議模糊測(cè)試方法成功發(fā)現(xiàn),WDB RPC存在整數(shù)溢出漏洞,允許攻擊者修改設(shè)備內(nèi)存,存在安全隱患。當(dāng)攻擊者不斷地進(jìn)行寫(xiě)內(nèi)存操作會(huì)造成系統(tǒng)崩潰。圖9為VxWorks操作系統(tǒng)正常的啟動(dòng)畫(huà)面,以及當(dāng)利用WDB RPC的漏洞寫(xiě)入大量的內(nèi)存后,造成系統(tǒng)的崩潰。造成圖中所示現(xiàn)象的原因可能是在顯示的過(guò)程中正好出現(xiàn)了系統(tǒng)的崩潰。

      圖9 VxWorks系統(tǒng)正常啟動(dòng)及造成崩潰的畫(huà)面

      5 總結(jié)與展望

      本文將自然語(yǔ)言處理的知識(shí)拓展到網(wǎng)絡(luò)協(xié)議領(lǐng)域,采用投票專(zhuān)家算法替代傳統(tǒng)的n-gram算法,使協(xié)議關(guān)鍵字的提取過(guò)程更加精確。另外,利用有損計(jì)數(shù)算法對(duì)投票專(zhuān)家算法進(jìn)行了改進(jìn),節(jié)省了對(duì)內(nèi)存資源的占用。本文的方法提升了關(guān)鍵字提取精度,使逆向的協(xié)議信息更接近于真實(shí)值。并且,通過(guò)與協(xié)議逆向工程技術(shù)的結(jié)合運(yùn)用,克服了模糊測(cè)試中專(zhuān)有協(xié)議缺少協(xié)議規(guī)范的問(wèn)題,適用于存在大量專(zhuān)有協(xié)議的環(huán)境,如工業(yè)控制系統(tǒng),有助于提升工業(yè)控制系統(tǒng)的安全性和防護(hù)能力。但本文的方法仍存在一些不足,需要在今后的研究中加以完善,如ImproveVE算法處理文本協(xié)議時(shí)效果十分理想,但在處理純二進(jìn)制協(xié)議時(shí)關(guān)鍵字的提取精度有待進(jìn)一步加強(qiáng)。另外,在內(nèi)存資源占用方面也可以進(jìn)一步優(yōu)化。

      [1]熊琦,彭勇,伊勝偉,等.工控網(wǎng)絡(luò)協(xié)議Fuzzing測(cè)試技術(shù)研究綜述[J].小型微型計(jì)算機(jī)系統(tǒng),2015,36(3):497-502.

      [2]Gascon H,Wressnegger C,Yamaguchi F,et al.Pulsar:Stateful black-box fuzzing of proprietary network protocols[M]//Security and Privacy in Communication Networks.[S.l.]:Springer International Publishing,2015.

      [3]Bermudez I,Tongaonkar A,Iliofotou M,et al.Towards automatic protocol field inference[J].Computer Communications,2016,84(C):40-51.

      [4]Cui W,Kannan J,Wang H J.Discoverer:Automatic protocol reverse engineering from network traces[C]//Usenix Security Symposium,2007.

      [5]Comparetti P M,Wondracek G,Kruegel C,et al.Prospex:Protocol specification extraction[C]//IEEE Symposium on Secuity&Privacy,2009:110-125.

      [6]Leita C,Mermoud K,Dacier M.ScriptGen:An automated script generation tool for Honeyd[C]//Computer Security Applications Conference,2005:203-214.

      [7]Jamdagni A,Tan Z,He X,et al.Review article:RePIDS:A multitier real-time payload-based intrusion detection system[J].International Journal of Computer&Telecommunications Networking,2013,57(3):811-824.

      [8]Cohen P,Adams N,Heeringa B.Voting experts:An unsupervised algorithm forsegmenting sequences[J].Intelligent Data Analysis,2007,11(6):607-625.

      [9]艾佳.海量數(shù)據(jù)上基于抽樣的模式挖掘研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2014.

      [10]Fang H,Tao T,Zhai C X.A formal study of information retrievalheuristics[C]//InternationalACM SIGIR Conference on Research and Development in Information Retrieval,2004:49-56.

      [11]Zhang Y,Xu T,Wang Y,et al.A Markov random field approach to automated protocol signature inference[M]//Security and Privacy in Communication Networks.[S.l.]:Springer International Publishing,2015.

      [12]張淑清,李盼,師榮艷,等.復(fù)雜系統(tǒng)建模的ε機(jī)理論方法及應(yīng)用研究[J].儀器儀表學(xué)報(bào),2014(8):1758-1765.

      [13]孫芳慧.基于Net-Trace的未知協(xié)議格式逆向技術(shù)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2015.

      [14]Bahr A,Thompson J D,Thierry J C,et al.BAliBASE(Benchmark Alignment dataBASE):Enhancements for repeats,transmembrane sequences and circular permutations[J].Nucleic Acids Research,2001,29(1):323-326.

      [15]Lang K J.Faster algorithms for finding minimal consistent DFAs[J].oai:CiteSeerX.psu:10.1.1.29.7130,1999.

      [16]薩頓,格林,阿米尼.模糊測(cè)試:強(qiáng)制發(fā)掘安全漏洞的利器[M].北京:電子工業(yè)出版社,2013.

      [17]梁姝瑞.基于FSM的Zigbee協(xié)議模糊測(cè)試算法[D].北京:北京郵電大學(xué),2014.

      [18]侯瑩,洪征,潘璠,等.基于模型的Fuzzing測(cè)試腳本自動(dòng)化生成[J].計(jì)算機(jī)科學(xué),2013,40(3):206-209.

      [19]吳禮發(fā),洪征,潘璠.網(wǎng)絡(luò)協(xié)議逆向分析及應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2016.

      猜你喜歡
      狀態(tài)機(jī)關(guān)鍵字報(bào)文
      基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
      履職盡責(zé)求實(shí)效 真抓實(shí)干勇作為——十個(gè)關(guān)鍵字,盤(pán)點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
      CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
      成功避開(kāi)“關(guān)鍵字”
      基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
      淺析反駁類(lèi)報(bào)文要點(diǎn)
      ATS與列車(chē)通信報(bào)文分析
      基于用戶(hù)反饋的關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵字查詢(xún)系統(tǒng)
      FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
      基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
      通辽市| 华蓥市| 土默特左旗| 永州市| 沽源县| 玛曲县| 呼和浩特市| 开化县| 淳化县| 南川市| 怀化市| 隆德县| 托里县| 阳高县| 株洲市| 东台市| 肥乡县| 汉沽区| 平江县| 海原县| 弥勒县| 砚山县| 新安县| 博罗县| 永春县| 凌海市| 铁岭县| 乌拉特后旗| 类乌齐县| 青神县| 德安县| 建德市| 玉林市| 禹城市| 壤塘县| 江孜县| 偏关县| 简阳市| 澄城县| 静乐县| 衡山县|