• 
    

    
    

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

      ?

      基于擴(kuò)展前綴樹(shù)的協(xié)議格式推斷方法

      2018-06-26 10:19:24田益凡張洪澤吳禮發(fā)
      關(guān)鍵詞:字段報(bào)文樣本

      洪 征,田益凡,張洪澤,吳禮發(fā)

      解放軍陸軍工程大學(xué) 指揮控制工程學(xué)院,南京 210000

      1 引言

      協(xié)議規(guī)范是對(duì)網(wǎng)絡(luò)協(xié)議語(yǔ)法、語(yǔ)義以及同步等信息的具體描述,在網(wǎng)絡(luò)安全領(lǐng)域扮演著重要角色。僵尸網(wǎng)絡(luò)中,攻擊者使用C&C(Command and Control)協(xié)議來(lái)控制存在漏洞的主機(jī)實(shí)施DDoS(Distributed Denial of Service)攻擊等惡意行為,網(wǎng)絡(luò)管理員需要依據(jù)C&C協(xié)議規(guī)范來(lái)發(fā)現(xiàn)和分析僵尸網(wǎng)絡(luò)[1]。入侵檢測(cè)系統(tǒng)中,需要基于協(xié)議規(guī)范從繁雜的網(wǎng)絡(luò)流量中辨識(shí)出惡意流量。在模糊測(cè)試過(guò)程中,可以利用協(xié)議規(guī)范指導(dǎo)測(cè)試用例生成以實(shí)現(xiàn)更加高效的自動(dòng)化漏洞挖掘[2-3]。然而出于利益、版權(quán)、安全等因素,軟件廠(chǎng)商和個(gè)人往往不愿意公開(kāi)協(xié)議細(xì)節(jié),如微軟使用的網(wǎng)絡(luò)文件共享SMB(Server Message Block)協(xié)議,Oracle數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的TNS(Transparence Network Substrate)協(xié)議以及微信、QQ等即時(shí)通信軟件所使用的協(xié)議都沒(méi)有公開(kāi)協(xié)議細(xì)節(jié),這些未知協(xié)議在網(wǎng)絡(luò)中的廣泛使用,給安全防護(hù)帶來(lái)了極大的阻礙。

      對(duì)于未知協(xié)議而言,目前主要通過(guò)協(xié)議逆向分析方法[4]獲取其協(xié)議規(guī)范。依據(jù)分析對(duì)象的不同,逆向分析方法可分為兩類(lèi):基于網(wǎng)絡(luò)流量的分析方法和基于指令執(zhí)行軌跡的分析方法。基于網(wǎng)絡(luò)流量的分析方法對(duì)截獲的網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行分析,通過(guò)生物信息學(xué)、統(tǒng)計(jì)分析、數(shù)據(jù)挖掘等方法,對(duì)報(bào)文樣本進(jìn)行聚類(lèi)分析,依據(jù)相同格式報(bào)文在取值上的相似性,分析獲取協(xié)議語(yǔ)法、語(yǔ)義信息?;谥噶顖?zhí)行軌跡的分析方法以協(xié)議解析過(guò)程中的指令執(zhí)行軌跡為分析對(duì)象,將協(xié)議輸入數(shù)據(jù)作為污點(diǎn)數(shù)據(jù)源,利用動(dòng)態(tài)污點(diǎn)分析(Dynamic Taint Analysis)方法[5]跟蹤數(shù)據(jù)解析過(guò)程,依據(jù)協(xié)議解析程序如何使用污點(diǎn)數(shù)據(jù)以及相應(yīng)的上下文信息獲取協(xié)議規(guī)范。

      基于指令執(zhí)行軌跡的分析方法通常具有較高的準(zhǔn)確率,能夠獲得更全面的語(yǔ)義信息,但這類(lèi)分析方法的實(shí)施需要分析人員擁有協(xié)議終端的可執(zhí)行程序,并要求依據(jù)協(xié)議解析環(huán)境進(jìn)行分析,依賴(lài)于底層平臺(tái),無(wú)法移植,通用性不強(qiáng)?;诰W(wǎng)絡(luò)流量的分析方法以網(wǎng)絡(luò)數(shù)據(jù)流為輸入,雖然其準(zhǔn)確率依賴(lài)于捕獲樣本的豐富程度,但實(shí)現(xiàn)靈活,適用于各種應(yīng)用場(chǎng)景,能夠?qū)嵤┳詣?dòng)化分析。本文針對(duì)基于網(wǎng)絡(luò)流量的分析方法進(jìn)行研究,重點(diǎn)關(guān)注協(xié)議語(yǔ)法以及語(yǔ)義信息的提取。

      目前國(guó)內(nèi)外已有一些針對(duì)協(xié)議格式提取的研究成果,PI(Protocol Information)項(xiàng)目[6]是最早提出的基于網(wǎng)絡(luò)流量的協(xié)議格式推斷方法,引入了生物學(xué)中的多序列比對(duì)算法,通過(guò)將報(bào)文樣本進(jìn)行比對(duì)對(duì)齊的方式提取協(xié)議格式信息。Cui等人提出一種基于遞歸聚類(lèi)的協(xié)議格式提取方案Discoverer[7],按照文本和二進(jìn)制兩種屬性對(duì)報(bào)文字節(jié)流進(jìn)行標(biāo)注,得到報(bào)文屬性序列,并對(duì)其進(jìn)行序列比對(duì)得到初始聚類(lèi)結(jié)果,隨后利用格式標(biāo)志(Field Distinguish)字段進(jìn)行遞歸聚類(lèi)獲取協(xié)議格式。Krueger提出一種基于統(tǒng)計(jì)的格式推斷方法PRISMA[8]。該方法首先利用自然語(yǔ)言處理中的N-gram思想以及分隔符對(duì)報(bào)文序列進(jìn)行分詞得到候選特征詞,進(jìn)而使用統(tǒng)計(jì)學(xué)方法對(duì)候選特征詞進(jìn)行篩選構(gòu)建特征矩陣,并以特征詞為基礎(chǔ)描述報(bào)文序列。Zhang等人則提出一種基于專(zhuān)家投票算法的特征詞提取方法ProWord[9],并將其應(yīng)用于流量分類(lèi)。Luo等人提出一種基于位置信息的協(xié)議格式推斷方法AutoReEngine[10],采用Apriori算法獲取特征詞,利用位置信息對(duì)特征詞進(jìn)行合并和篩選,得到協(xié)議關(guān)鍵詞集合,最終再次利用Apriori算法對(duì)協(xié)議關(guān)鍵詞進(jìn)行組合提取協(xié)議格式及協(xié)議狀態(tài)機(jī)。

      以上方案都存在一些缺陷:PI項(xiàng)目直接對(duì)整個(gè)報(bào)文樣本進(jìn)行序列比對(duì),時(shí)間復(fù)雜度較高。Discoverer雖然利用報(bào)文屬性序列和格式標(biāo)志字段降低了時(shí)間復(fù)雜度,但其采用常見(jiàn)文本類(lèi)分隔符對(duì)報(bào)文樣本進(jìn)行劃分的處理方法并不適用于二進(jìn)制協(xié)議。此外,對(duì)于未知協(xié)議而言哪些分隔符會(huì)在協(xié)議中被使用具有很大的不確定性。PRISMA中對(duì)文本協(xié)議使用分隔符方法進(jìn)行劃分,也存在類(lèi)似問(wèn)題。且PRISMA在處理二進(jìn)制協(xié)議時(shí),采用N-gram方法選取固定長(zhǎng)度的特征詞,而實(shí)際報(bào)文中特征詞的長(zhǎng)度并不相同,固定長(zhǎng)度的特征詞的權(quán)重也會(huì)受到隨機(jī)串的影響。AutoReEngine通過(guò)Apriori算法結(jié)合位置信息提取協(xié)議關(guān)鍵詞,對(duì)于字段位置可變的協(xié)議,如HTTP、SIP協(xié)議,可能遺失部分關(guān)鍵詞。

      為了提高協(xié)議格式推斷方法的通用性以及準(zhǔn)確率,本文提出一種基于擴(kuò)展前綴樹(shù)的應(yīng)用層未知協(xié)議格式推斷方法,實(shí)現(xiàn)了原型系統(tǒng)EPT-PFI(Extended Prefix Tree based Protocol Format Inference)。EPT-PFI以截獲的網(wǎng)絡(luò)報(bào)文作為輸入,通過(guò)N-gram方法對(duì)報(bào)文樣本進(jìn)行分詞,結(jié)合點(diǎn)間互信息PMI(Point Mutual Information)對(duì)候選關(guān)鍵詞進(jìn)行合并提取協(xié)議關(guān)鍵詞,在此基礎(chǔ)上對(duì)報(bào)文樣本進(jìn)行標(biāo)注獲得協(xié)議關(guān)鍵詞序列。而后構(gòu)建擴(kuò)展前綴樹(shù)(Extended Prefix Tree,EPT)描述協(xié)議關(guān)鍵詞序列,并基于擴(kuò)展前綴樹(shù)實(shí)現(xiàn)分段的多序列比對(duì)。最后,依據(jù)協(xié)議報(bào)文結(jié)構(gòu)對(duì)擴(kuò)展前綴樹(shù)進(jìn)行合并,獲取協(xié)議格式信息。

      2 基于擴(kuò)展前綴樹(shù)的協(xié)議格式推斷

      2.1 問(wèn)題定義

      協(xié)議規(guī)范由協(xié)議格式和協(xié)議狀態(tài)機(jī)兩部分構(gòu)成。協(xié)議狀態(tài)機(jī)指定了合法報(bào)文的傳送順序,通過(guò)特定的報(bào)文發(fā)送序列構(gòu)成特定會(huì)話(huà)(Session)以實(shí)現(xiàn)所需的功能。協(xié)議格式指定了會(huì)話(huà)中每條報(bào)文的語(yǔ)法以及語(yǔ)義信息,只有符合協(xié)議格式的才是合法報(bào)文,才能被協(xié)議終端正確解析。協(xié)議語(yǔ)法規(guī)定了報(bào)文的字段、結(jié)構(gòu)以及字段語(yǔ)義,定義了組成報(bào)文的每一個(gè)字段(Field)的關(guān)鍵詞、數(shù)據(jù)類(lèi)型、位置以及長(zhǎng)度等具體信息。協(xié)議語(yǔ)義則定義了每一個(gè)字段在協(xié)議解析過(guò)程中所代表的實(shí)際意義,如HTTP協(xié)議(Hyper Text Transfer Protocol)請(qǐng)求報(bào)文中的“HOST”字段指定了請(qǐng)求資源所在的主機(jī)和端口號(hào)。常見(jiàn)的協(xié)議報(bào)文主要涉及以下幾種形式[11]:

      (1)二進(jìn)制形式,即預(yù)先規(guī)定若干個(gè)固定比特位為一個(gè)字段,字段內(nèi)容即代表該字段的取值,如DNS協(xié)議的前16個(gè)比特位標(biāo)識(shí)DNS ID號(hào)。

      (2)ASCII碼形式,即采用易于理解的ASCII字符表示字段含義,使用預(yù)定義的分隔符(空格、回車(chē)換行等)作為字段結(jié)束標(biāo)志,如MIME協(xié)議報(bào)文中的協(xié)議版本字段“MIME-Version”。

      (3)TLV(Type-Length-Value)形式,即使用固定長(zhǎng)度字節(jié)表示字段類(lèi)型,固定長(zhǎng)度字節(jié)的Length表名該字段取值的字節(jié)數(shù),而其后緊跟的指定長(zhǎng)度內(nèi)容即字段取值,如eDonkey協(xié)議格式。

      (4)指針形式,即采用指針指出某一個(gè)字段的開(kāi)始和結(jié)束,如DNS協(xié)議響應(yīng)報(bào)文中的回答計(jì)數(shù)指定了回答區(qū)域的條目數(shù)。

      通信報(bào)文中一些字段是固定字段,一些是可變字段。但由于協(xié)議規(guī)范以及使用條件的制約,同種協(xié)議中同類(lèi)格式的報(bào)文樣本往往會(huì)體現(xiàn)出一些統(tǒng)計(jì)相似性或相關(guān)性,具體來(lái)說(shuō)就是在報(bào)文樣本中有一些具有固定模式、頻繁出現(xiàn)的比特串或字符串。文獻(xiàn)[11]將這些具有固定模式的串統(tǒng)稱(chēng)為協(xié)議關(guān)鍵詞。以圖1所示HTTP協(xié)議報(bào)文為例,請(qǐng)求報(bào)文中的請(qǐng)求方法字段“GET”和協(xié)議版本字段“HTTP/1.1”,響應(yīng)報(bào)文中的響應(yīng)碼“200 OK”,以及“Key-Value”格式的字段中起標(biāo)識(shí)作用的字符串“Key”,如“Host”、“Connection”和“Date”等,這些能夠標(biāo)識(shí)報(bào)文類(lèi)型或者協(xié)議字段的字符串都可以被稱(chēng)為協(xié)議關(guān)鍵詞。

      圖1 HTTP協(xié)報(bào)文示例

      另外,由于分隔符通常在單個(gè)報(bào)文中多次出現(xiàn)且位置變化較大,對(duì)于協(xié)議分析會(huì)造成較大困擾,所以本文在沿用文獻(xiàn)[11]定義的基礎(chǔ)上,將分隔符排除在協(xié)議關(guān)鍵詞之外。而分隔符通常為一到兩個(gè)字節(jié),如逗號(hào)、回車(chē)換行符等,可以通過(guò)設(shè)置N-gram分詞方法中N的取值來(lái)過(guò)濾掉分隔符。

      本文的協(xié)議格式提取方案建立在協(xié)議關(guān)鍵詞分析的基礎(chǔ)之上?,F(xiàn)有研究采用分隔符對(duì)文本協(xié)議進(jìn)行分詞以得到協(xié)議關(guān)鍵詞,但未知協(xié)議的分隔符存在較大不確定性。對(duì)于二進(jìn)制協(xié)議,目前方法通常采用N-gram提取關(guān)鍵詞,但所得到的關(guān)鍵詞為固定長(zhǎng)度N,而實(shí)際協(xié)議關(guān)鍵詞的長(zhǎng)度往往不固定,所以這類(lèi)方法與實(shí)際存在出入。論文提出一種基于點(diǎn)間互信息的協(xié)議關(guān)鍵詞提取方法,適用于二進(jìn)制協(xié)議和文本協(xié)議。首先采用N-gram分詞方法對(duì)報(bào)文樣本進(jìn)行處理,在得到固定長(zhǎng)度的候選關(guān)鍵詞后,結(jié)合點(diǎn)間互信息對(duì)候選關(guān)鍵詞進(jìn)行合并,推斷獲得不同長(zhǎng)度的協(xié)議關(guān)鍵詞。

      在信息論中,熵是對(duì)事物不確定性的度量,而點(diǎn)間互信息(Point Mutual Information)是在熵的基礎(chǔ)上提出來(lái)的概念,這一概念經(jīng)常被用于自然語(yǔ)言處理以及數(shù)據(jù)挖掘領(lǐng)域來(lái)衡量?jī)蓚€(gè)單詞間的相關(guān)程度。單詞wi,wj之間的互信息可以定義為:

      p(wi,wj)表示單詞wi,wj同時(shí)出現(xiàn)在一個(gè)報(bào)文中的概率,p(wi)表示單詞wi出現(xiàn)在報(bào)文樣本中的概率,p(wj)表示單詞wj出現(xiàn)在報(bào)文樣本中的概率。PMI(wi,wj)衡量的是兩個(gè)單詞之間的相關(guān)性,即確定了一個(gè)單詞后另一個(gè)單詞的不確定性(即熵值)的減少量,PMI(wi,wj)越大,則兩個(gè)單詞之間的相關(guān)性越高。

      對(duì)于通過(guò)分詞獲得的候選關(guān)鍵詞而言,如果兩個(gè)候選詞是一個(gè)協(xié)議關(guān)鍵詞的子串,那么它們之間將具有較大的相關(guān)性。本文引入點(diǎn)間互信息來(lái)衡量候選關(guān)鍵詞之間的相關(guān)性。如果兩個(gè)候選詞位置相鄰、存在N-1個(gè)連續(xù)的相同字符(如“HTT”和“TTP”)且相關(guān)性較大,則將兩者合并為一個(gè)長(zhǎng)度大于N的候選詞,如此重復(fù)以獲得任意長(zhǎng)度的協(xié)議關(guān)鍵詞。

      獲取協(xié)議關(guān)鍵詞后,依據(jù)報(bào)文樣本對(duì)應(yīng)的協(xié)議關(guān)鍵詞序列構(gòu)建擴(kuò)展前綴樹(shù),實(shí)現(xiàn)報(bào)文樣本的初始聚類(lèi)以及同類(lèi)報(bào)文的分段。隨后,采用分段的多序列比對(duì)獲取報(bào)文的詳細(xì)格式信息。并通過(guò)對(duì)擴(kuò)展前綴樹(shù)進(jìn)行合并以減少冗余,得到最終協(xié)議格式。

      2.2 方法概述

      本文提出的協(xié)議格式推斷方法,主要包括4個(gè)處理階段:預(yù)處理階段、協(xié)議關(guān)鍵詞提取階段、報(bào)文結(jié)構(gòu)提取階段以及協(xié)議格式合并階段,主要流程如圖2所示。其中預(yù)處理階段的主要工作是對(duì)原始數(shù)據(jù)流進(jìn)行劃分獲取報(bào)文樣本集合。協(xié)議關(guān)鍵詞提取階段將利用N-gram分詞方法對(duì)報(bào)文樣本進(jìn)行處理,結(jié)合互信息獲取協(xié)議關(guān)鍵詞序列。報(bào)文結(jié)構(gòu)推斷階段依據(jù)協(xié)議關(guān)鍵詞序列構(gòu)建擴(kuò)展前綴樹(shù),通過(guò)基于擴(kuò)展前綴樹(shù)描述的分段多序列比對(duì)推斷協(xié)議格式。協(xié)議格式合并階段將基于報(bào)文結(jié)構(gòu)對(duì)擴(kuò)展前綴樹(shù)進(jìn)行合并,得到詳細(xì)的協(xié)議格式信息。

      2.2.1 預(yù)處理階段

      圖2 原型系統(tǒng)EPT-PFI的主要處理流程

      對(duì)于未知協(xié)議而言,分析對(duì)象是連續(xù)的網(wǎng)絡(luò)數(shù)據(jù)流,由于網(wǎng)絡(luò)分層結(jié)構(gòu)以及分片機(jī)制,往往需要以會(huì)話(huà)和報(bào)文為粒度對(duì)數(shù)據(jù)流進(jìn)行分割得到便于分析的報(bào)文樣本集合[12],以會(huì)話(huà)為粒度的分割被稱(chēng)為會(huì)話(huà)劃分,以報(bào)文為粒度的分割被稱(chēng)為報(bào)文定界。

      會(huì)話(huà)劃分是從連續(xù)的網(wǎng)絡(luò)數(shù)據(jù)流中分離出通信實(shí)體間的單次會(huì)話(huà),主要依靠底層協(xié)議提供的信息實(shí)現(xiàn)。對(duì)于應(yīng)用層協(xié)議而言,可以使用協(xié)議五元組<源IP地址,源端口號(hào),目的IP地址,目的端口號(hào),傳輸層協(xié)議類(lèi)型>得到獨(dú)立的通信會(huì)話(huà)。

      報(bào)文定界是從一次獨(dú)立會(huì)話(huà)中分離出單個(gè)協(xié)議報(bào)文。對(duì)于應(yīng)用層協(xié)議而言,可以利用傳輸層協(xié)議的報(bào)文首部和首部的長(zhǎng)度字段實(shí)現(xiàn)。定界之后得到的報(bào)文樣本作為后續(xù)階段的輸入。

      2.2.2 協(xié)議關(guān)鍵詞提取階段

      此階段的目的是從經(jīng)過(guò)預(yù)處理的報(bào)文樣本中提取協(xié)議關(guān)鍵詞,并使用協(xié)議關(guān)鍵詞對(duì)報(bào)文進(jìn)行標(biāo)注得到協(xié)議關(guān)鍵詞序列。原始報(bào)文樣本集合可以表示為S={m1,m2,…,mi,…,ms},其中mi為樣本集合中的某一個(gè)報(bào)文,表示報(bào)文mi中的第 j個(gè)字符。得到初始報(bào)文樣本后,采用N-gram分詞方法對(duì)報(bào)文樣本進(jìn)行逐一處理,得到所有在樣本集合中出現(xiàn)過(guò)的長(zhǎng)度為N的字符串,如對(duì)報(bào)文進(jìn)行N-gram分詞,將得到等字符串。計(jì)算每一個(gè)字符串相對(duì)于完整報(bào)文樣本的出現(xiàn)頻率。在統(tǒng)計(jì)時(shí),如果一個(gè)字符串在一個(gè)報(bào)文中出現(xiàn)多次,只進(jìn)行一次統(tǒng)計(jì),因?yàn)榇穗A段處理的目的是獲取候選關(guān)鍵詞集合,而協(xié)議關(guān)鍵詞是對(duì)協(xié)議格式或者報(bào)文字段的一種標(biāo)識(shí),往往不會(huì)在同一樣本中重復(fù)出現(xiàn)。

      在得到的字符串中,大部分字符串出現(xiàn)的頻率較低,它們通常對(duì)應(yīng)著報(bào)文中的變值字段或者是變值字段的子串,這些字段取值不確定甚至完全隨機(jī)產(chǎn)生。協(xié)議格式提取希望確定的是相對(duì)穩(wěn)定的協(xié)議報(bào)文構(gòu)成結(jié)構(gòu),故設(shè)置閾值Tfreq,對(duì)這些出現(xiàn)頻率較低的字符串進(jìn)行過(guò)濾。將頻率高于閾值的字符串作為候選關(guān)鍵詞添加到候選關(guān)鍵詞集合G中。

      由于候選關(guān)鍵詞集合G中的元素都是通過(guò)N-gram分詞得到,其長(zhǎng)度皆為N,而實(shí)際協(xié)議報(bào)文中,協(xié)議關(guān)鍵詞長(zhǎng)度并不完全相同。對(duì)于長(zhǎng)度大于N的協(xié)議關(guān)鍵詞,可以由長(zhǎng)度為N的子串合并得到,如HTTP協(xié)議中的關(guān)鍵詞“Host”可以由“Hos”和“ost”合并得到。鑒于這種相關(guān)性,本文使用點(diǎn)間互信息對(duì)集合G中的候選詞進(jìn)行合并,以得到不同長(zhǎng)度的協(xié)議關(guān)鍵詞。

      為了對(duì)候選關(guān)鍵詞進(jìn)行合并,首先,需要依據(jù)候選關(guān)鍵詞集合G對(duì)報(bào)文樣本進(jìn)行標(biāo)注,得到對(duì)應(yīng)的候選關(guān)鍵詞序列,其中表示報(bào)文mi中的第 j個(gè)候選關(guān)鍵詞,表示在報(bào)文樣本集合中出現(xiàn)的頻率,表示在報(bào)文mi中相對(duì)于報(bào)文起始位置的偏移。進(jìn)而得到整個(gè)報(bào)文樣本對(duì)應(yīng)的候選詞序列集合Seq={key_seq1,key_seq2,…,key_seqi,…}。

      隨后,基于互信息對(duì)集合Seq中的每個(gè)候選關(guān)鍵詞序列key_seqi中的協(xié)議關(guān)鍵詞進(jìn)行合并,具體步驟如下。

      步驟1從左至右遍歷候選關(guān)鍵詞序列key_seqi,尋找位置相鄰且存在相同的連續(xù)N-1個(gè)字符(即滿(mǎn)足以下條件)的候選關(guān)鍵詞:

      (1)候選詞,并且

      (2)候選詞位置相鄰-=1。

      (3)候選詞的后N-1個(gè)字符與的前N-1個(gè)字符相同:bg+lj-N+2…bg+lj-1=bh…bh+N-2。

      步驟2對(duì)于滿(mǎn)足步驟1中條件的候選詞,搜索點(diǎn)間互信息集合PMI(初始為空),若其中存在PMI()則直接獲取其值,若不存在則計(jì)算它們之間的互信息PMI()并存入集合PMI中。得到候選詞之間的互信息后,若PMI()超過(guò)所設(shè)定的閾值TPMI,則合并候選詞1的重疊部分得到新的候選詞w:

      步驟3從key_seqi中刪除,將值替換為w。隨后從繼續(xù)遍歷更新后的key_seqi,重復(fù)步驟1~3直至遍歷完key_seqi。

      步驟4由于協(xié)議關(guān)鍵詞一般不會(huì)在同一報(bào)文中重復(fù)出現(xiàn),故遍歷key_seqi,刪除在同一個(gè)關(guān)鍵詞序列中出現(xiàn)多次的元素,得到最終的協(xié)議關(guān)鍵詞序列以及更新后的關(guān)鍵詞序列集合Seq。

      2.2.3 協(xié)議格式推斷階段

      通過(guò)上述步驟能夠得到每個(gè)報(bào)文樣本對(duì)應(yīng)的協(xié)議關(guān)鍵詞,而相同格式的報(bào)文對(duì)應(yīng)的關(guān)鍵詞序列往往相同,因此可以依據(jù)協(xié)議關(guān)鍵詞序列對(duì)報(bào)文樣本進(jìn)行聚類(lèi),將同種格式報(bào)文聚成一類(lèi),依據(jù)同類(lèi)報(bào)文樣本在結(jié)構(gòu)上的相似性提取協(xié)議格式信息。本文提出使用擴(kuò)展前綴樹(shù)描述協(xié)議關(guān)鍵詞序列,擴(kuò)展前綴樹(shù)中的每條路徑代表一種關(guān)鍵詞序列,節(jié)點(diǎn)對(duì)應(yīng)協(xié)議關(guān)鍵詞,節(jié)點(diǎn)之間的邊代表報(bào)文樣本中對(duì)應(yīng)關(guān)鍵詞之間的報(bào)文片段。采用擴(kuò)展前綴樹(shù)的描述方法,一方面便于實(shí)現(xiàn)對(duì)報(bào)文樣本的初始聚類(lèi),另一方面便于實(shí)現(xiàn)分段的多序列比對(duì)。

      2.2.3.1 構(gòu)建擴(kuò)展前綴樹(shù)

      前綴樹(shù)(Prefix Tree)是一種有序多叉樹(shù)結(jié)構(gòu),通常以字符串為輸入,利用字符串的公共前綴來(lái)實(shí)現(xiàn)快速檢索以及字符串匹配等操作。本文對(duì)前綴樹(shù)進(jìn)行擴(kuò)展,將協(xié)議關(guān)鍵詞序列作為輸入,協(xié)議關(guān)鍵詞作為節(jié)點(diǎn),按照順序?qū)f(xié)議關(guān)鍵詞插入前綴樹(shù)中,以得到的擴(kuò)展前綴樹(shù)描述報(bào)文樣本對(duì)應(yīng)的協(xié)議關(guān)鍵詞序列。

      為了構(gòu)建擴(kuò)展前綴樹(shù),在得到協(xié)議關(guān)鍵詞序列集合Seq后,遍歷集合Seq,將其中的元素依次插入樹(shù)結(jié)構(gòu)中。同時(shí),為了排除樣本中的噪聲,在構(gòu)建擴(kuò)展前綴樹(shù)的過(guò)程中記錄每種關(guān)鍵詞序列對(duì)應(yīng)的報(bào)文樣本總數(shù),刪除樣本數(shù)小于閾值Tnum的關(guān)鍵詞序列。舉例說(shuō)明,對(duì)于包含表1所示元素的集合Seq,首先構(gòu)建根節(jié)點(diǎn)“Start”表示起始位置,隨后遍歷集合Seq,依據(jù)其中的協(xié)議關(guān)鍵詞序列將得到圖3所示的擴(kuò)展前綴樹(shù)。

      圖3 擴(kuò)展前綴樹(shù)示例

      擴(kuò)展前綴樹(shù)中的每條路徑表示一種協(xié)議格式,圖中共有6種協(xié)議格式。樹(shù)中的每一個(gè)節(jié)點(diǎn)表示一個(gè)協(xié)議關(guān)鍵詞,節(jié)點(diǎn)之間的邊表示真實(shí)報(bào)文中對(duì)應(yīng)協(xié)議關(guān)鍵詞之間的報(bào)文片段。例如,擴(kuò)展前綴樹(shù)第1條和第2條路徑中“GET”節(jié)點(diǎn)與“HTTP”節(jié)點(diǎn)之間的邊,表示格式符合表1第1種或第3種關(guān)鍵詞序列的對(duì)應(yīng)的報(bào)文樣本示例中協(xié)議關(guān)鍵詞“GET”和“HTTP”之間的報(bào)文片段“admin.php”和“index.php”。

      構(gòu)建擴(kuò)展前綴樹(shù)的過(guò)程實(shí)際是對(duì)報(bào)文樣本進(jìn)行聚類(lèi)以及對(duì)聚類(lèi)子類(lèi)中的報(bào)文進(jìn)行分段的過(guò)程,同種格式的報(bào)文會(huì)匯聚在同一條路徑上,并且依據(jù)節(jié)點(diǎn)對(duì)應(yīng)的協(xié)議關(guān)鍵詞分為多個(gè)片段,這種表示方式有利于后續(xù)提取每個(gè)報(bào)文片段的結(jié)構(gòu)以及語(yǔ)義信息。

      2.2.3.2 序列比對(duì)

      對(duì)于得到的擴(kuò)展前綴樹(shù),采用先深搜索遍歷每一條路徑,對(duì)同一路徑上相鄰兩節(jié)點(diǎn)之間的報(bào)文(即擴(kuò)展前綴樹(shù)中的邊)采用Needleman-Wunsch多序列比對(duì)算法進(jìn)行比對(duì),以提取詳細(xì)的協(xié)議格式信息。包括協(xié)議字段取值類(lèi)型(字符串、整數(shù)或二進(jìn)制數(shù)等)、取值范圍(包含常量字段、枚舉字段、隨機(jī)字段)等,并在擴(kuò)展前綴樹(shù)上做相應(yīng)標(biāo)注。

      舉例來(lái)看,若圖3擴(kuò)展前綴樹(shù)中第1條路徑所對(duì)應(yīng)的報(bào)文如圖4所示,其協(xié)議關(guān)鍵詞序列為<“GET”,“HTTP”,“Host”,“User-Agent”>(圖中“_”表示報(bào)文中本身包含的空格,“--”表示序列比對(duì)填充的空格)。通過(guò)多序列比對(duì)能夠得到詳細(xì)的格式信息,如第2個(gè)片段取值為一個(gè)浮點(diǎn)數(shù)后接回車(chē)換行符,且浮點(diǎn)數(shù)取值為“1.1”或“1.0”。

      圖4 報(bào)文示例

      通過(guò)這種分段的多序列比對(duì),能夠抽象出每個(gè)序列片段的報(bào)文結(jié)構(gòu),相對(duì)于PI項(xiàng)目等直接對(duì)整個(gè)報(bào)文進(jìn)行序列比對(duì),降低了時(shí)間復(fù)雜度。同時(shí)這種分段的格式提取方法,將報(bào)文依據(jù)協(xié)議關(guān)鍵詞進(jìn)行劃段,也解決了多序列比對(duì)方法應(yīng)用于結(jié)構(gòu)復(fù)雜、報(bào)文過(guò)長(zhǎng)的協(xié)議樣本效果不佳的問(wèn)題。

      2.2.4 協(xié)議格式合并階段

      由于實(shí)際使用的通信協(xié)議往往具有較強(qiáng)的靈活性,完全依據(jù)協(xié)議關(guān)鍵詞序列進(jìn)行協(xié)議格式提取容易產(chǎn)生較多的冗余格式,即一種協(xié)議格式在推斷時(shí)被劃分為多種不同的協(xié)議格式。過(guò)多的格式冗余將導(dǎo)致推斷結(jié)果的適用性降低。

      一方面,一些報(bào)文字段的位置順序是可變的。如HTTP 協(xié) 議 中 ,“GET admin.php HTTP/1.1 Host:www.foobar.com User-Agent:Opera/9.20”和“GET index.php HTTP/1.1 User-Agent:Mozillia/5.0 Host:www.baidu.com ”兩條報(bào)文實(shí)際上對(duì)應(yīng)于一種協(xié)議格式,其中“Host”關(guān)鍵詞和“User-Agent”關(guān)鍵詞的先后順序是可以變化的。但是在擴(kuò)展前綴樹(shù)中,兩條報(bào)文對(duì)應(yīng)的協(xié)議關(guān)鍵詞序列不同,將被作為不同的協(xié)議格式。另一方面,一些報(bào)文中的協(xié)議關(guān)鍵詞屬于枚舉類(lèi)型。例如,HTTP請(qǐng)求方法字段可以在“GET”、“POST”、“HEAD”等協(xié)議關(guān)鍵詞組成的集合中枚舉。例如“GET admin.phpHTTP/1.1 Host:www.foobar.com User-Agent:Opera/9.20”和“POST/eapi/pl/count HTTP/1.1 Host:music.163.com User-Agent:Mozilla/5.0”兩條報(bào)文僅僅請(qǐng)求方法不同,實(shí)際隸屬于同一種協(xié)議格式。

      表1 關(guān)鍵詞序列集合的示例

      因此需要對(duì)得到的擴(kuò)展前綴樹(shù)進(jìn)行合并,本文提出以下合并策略:

      (1)若擴(kuò)展前綴樹(shù)中兩條路徑所包含的節(jié)點(diǎn)種類(lèi)完全相同,或某一條路徑包含的協(xié)議關(guān)鍵詞是另一條路徑對(duì)應(yīng)關(guān)鍵詞的子集,并且兩條路徑上相同節(jié)點(diǎn)對(duì)應(yīng)的邊結(jié)構(gòu)相似,則認(rèn)為這兩條路徑對(duì)應(yīng)著位置可變的協(xié)議格式,故將兩者合并為一種格式(保留節(jié)點(diǎn)數(shù)較多的路徑)。例如,圖3擴(kuò)展前綴樹(shù)中路徑1和路徑2、路徑5和路徑6所包含的節(jié)點(diǎn)種類(lèi)完全相同,只是部分節(jié)點(diǎn)位置不同,若兩條路徑中相同節(jié)點(diǎn)間的邊對(duì)應(yīng)的結(jié)構(gòu)相似,則可刪除其中任一條路徑,得到如圖5所示擴(kuò)展前綴樹(shù)。

      圖5 第一種格式合并策略的示例

      (2)若兩條路徑僅有一個(gè)節(jié)點(diǎn)不同,且與此節(jié)點(diǎn)相關(guān)的邊在兩條路徑上結(jié)構(gòu)相似,則認(rèn)為這兩條路徑中的不同節(jié)點(diǎn)對(duì)應(yīng)著同種協(xié)議格式的枚舉字段的兩種取值,故將兩節(jié)點(diǎn)合并為一個(gè)節(jié)點(diǎn),兩條路徑合并為一種協(xié)議格式。譬如,采用方法(1)對(duì)圖3擴(kuò)展前綴樹(shù)進(jìn)行合并后,最左邊的路徑和最右邊的路徑中僅有一個(gè)節(jié)點(diǎn)“GET”和“POST”不同,中間兩條路徑中僅有一個(gè)節(jié)點(diǎn)“200 OK”和“404 Not found”不同,則可實(shí)施合并,得到如圖6所示的擴(kuò)展前綴樹(shù)。

      圖6 第二種格式合并策略的示例

      通過(guò)格式合并得到的最終擴(kuò)展前綴樹(shù)即代表了目標(biāo)協(xié)議的詳細(xì)格式,每一條路徑對(duì)應(yīng)一種協(xié)議格式。這種協(xié)議格式表示方式能夠有效減少冗余,提高協(xié)議格式結(jié)果的實(shí)用性。

      3 實(shí)驗(yàn)結(jié)果及分析

      3.1 實(shí)驗(yàn)方法

      為了對(duì)本文提出的方法進(jìn)行驗(yàn)證,在重用Netzob[13]多序列比對(duì)代碼的基礎(chǔ)上,實(shí)現(xiàn)了原型系統(tǒng)EPT-PFI。實(shí)驗(yàn)中,選取文本協(xié)議HTTP和FTP與二進(jìn)制協(xié)議DNS和NetBIOS作為實(shí)驗(yàn)對(duì)象。同時(shí)選取了現(xiàn)有的協(xié)議逆向工具Netzob、AutoReEngine進(jìn)行對(duì)比試驗(yàn)。本文采用文獻(xiàn)[7]中的準(zhǔn)確率(Correctness)和精簡(jiǎn)率(Conciseness)作為評(píng)價(jià)指標(biāo)對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)估。準(zhǔn)確率表示的是推斷所得格式與實(shí)際格式相符的報(bào)文樣本所占的比例,準(zhǔn)確率越接近1說(shuō)明推斷結(jié)果越接近實(shí)際格式。精簡(jiǎn)率表示的是推斷所得格式的種類(lèi)數(shù)目與實(shí)際樣本中包含的格式種類(lèi)數(shù)的比值。由于是比值,精簡(jiǎn)率沒(méi)有單位。精簡(jiǎn)率越接近1說(shuō)明所得結(jié)果越接近真實(shí)格式。由于協(xié)議格式推斷中??赡軐⑼N格式報(bào)文劃分為多種格式造成冗余,因此精確率越小說(shuō)明得到的協(xié)議格式種類(lèi)越少,冗余越少。

      3.2 結(jié)果分析

      本文在配置為2.93 GHz的CPU、4 GB內(nèi)存、操作系統(tǒng)為Windows 7的PC上基于Python語(yǔ)言實(shí)現(xiàn)了論文中提出的方法??紤]到AutoReEngine關(guān)鍵字識(shí)別方法實(shí)用性強(qiáng),準(zhǔn)確率高,并且具有代表性[5],基于SPMF平臺(tái)[14]提供的Apriori算法實(shí)現(xiàn)了AutoReEngine方法,與本文方法進(jìn)行比較。

      原型系統(tǒng)EPT-PFI設(shè)定閾值Tfreq為0.6,設(shè)定閾值TPMI為0.8,依據(jù)文獻(xiàn)[15]N-gram分詞中N 取3。表2、表3是分別針對(duì)HTTP協(xié)議所獲得的協(xié)議關(guān)鍵詞(其中“_”表示空格)。分析實(shí)驗(yàn)結(jié)果:(1)從表2可以看出,EPT-PFI得到的協(xié)議關(guān)鍵詞與實(shí)際基本吻合(所得關(guān)鍵詞附帶“ ”或“_”,因?yàn)樗鼈兛偸峭瑫r(shí)出現(xiàn),所以被合并),但受限于樣本的多樣性,可能將某些可變字段被識(shí)別成了固定字段,如協(xié)議版本字段“HTTP/1.1”,這是由于所捕獲的樣本中基本都是使用的1.1版本的HTTP協(xié)議。而其中的協(xié)議關(guān)鍵詞“HTTP/1.1”兩邊沒(méi)有攜帶空格換行等符號(hào),是由于HTTP協(xié)議請(qǐng)求報(bào)文和應(yīng)答報(bào)文中都包含版本號(hào)字段。(2)綜合分析表2和表3可知,相對(duì)于AutoReEngine,EPT-PFI提取的協(xié)議關(guān)鍵詞更加豐富,這是由于HTTP協(xié)議首部行中各個(gè)字段的位置是可變的,導(dǎo)致對(duì)應(yīng)的關(guān)鍵詞位置偏移較大。依據(jù)這些關(guān)鍵詞結(jié)合擴(kuò)展前綴樹(shù)描述,能夠獲取首部行中各個(gè)字段的報(bào)文結(jié)構(gòu),得到更加詳細(xì)的協(xié)議格式信息。

      表2 EPT-PFI針對(duì)HTTP協(xié)議提取的協(xié)議關(guān)鍵詞

      表3 AutoReEngine針對(duì)HTTP協(xié)議提取的協(xié)議關(guān)鍵詞

      如圖7、圖8分別為采用EPT-PFI、Netzob、AutoReEngine對(duì)4種目標(biāo)協(xié)議進(jìn)行實(shí)驗(yàn)所得結(jié)果。從實(shí)驗(yàn)結(jié)果可以看出:(1)EPT-PFI在準(zhǔn)確率上高于Netzob,稍低于AutoReEngine。AutoReEngine準(zhǔn)確率幾乎都達(dá)到了100%,這是因?yàn)锳utoReEngine只保留了位置相對(duì)固定的協(xié)議關(guān)鍵詞,對(duì)于字段位置可變的協(xié)議關(guān)鍵詞都會(huì)被Apriori算法剪枝,如HTTP協(xié)議中的“Host”、“Connection”等字段由于在報(bào)文樣本中出現(xiàn)的位置變化較大而被忽略。因此,AutoReEngine只能夠提取出位置相對(duì)固定的字段關(guān)鍵詞,但無(wú)法獲取詳細(xì)的格式信息。(2)在精簡(jiǎn)率上Netzob明顯高于EPT-PFI和AutoReEngine,說(shuō)明所得協(xié)議格式冗余較多,這是由于Netzob是在多序列比對(duì)的基礎(chǔ)上進(jìn)行報(bào)文聚類(lèi)的,可能將同種格式報(bào)文劃分為多種格式。而EPT-PFI由于采用了基于擴(kuò)展前綴樹(shù)的格式合并,其精簡(jiǎn)率略?xún)?yōu)于AutoReEngine。綜合來(lái)看,Netzob對(duì)于文本協(xié)議效果明顯優(yōu)于二進(jìn)制協(xié)議,而本文方法對(duì)于文本協(xié)議和二進(jìn)制協(xié)議都能取得較好結(jié)果。

      圖7 正確率實(shí)驗(yàn)結(jié)果

      圖8 精簡(jiǎn)率實(shí)驗(yàn)結(jié)果

      通過(guò)上述實(shí)驗(yàn)分析,可以看出原型系統(tǒng)MI-PFE能夠較好地完成文本協(xié)議以及二進(jìn)制協(xié)議的格式推斷工作。

      4 總結(jié)

      本文提出了一種基于擴(kuò)展前綴樹(shù)的協(xié)議格式推斷方法,通過(guò)N-gram分詞結(jié)合互信息獲取協(xié)議關(guān)鍵詞,依據(jù)協(xié)議關(guān)鍵詞序列構(gòu)建擴(kuò)展前綴樹(shù),在擴(kuò)展前綴樹(shù)描述的基礎(chǔ)上進(jìn)行分段多序列比對(duì),最終通過(guò)對(duì)報(bào)文結(jié)構(gòu)的擴(kuò)展前綴樹(shù)進(jìn)行合并得到最終協(xié)議格式。實(shí)驗(yàn)表明,本方法能夠適用于文本協(xié)議和二進(jìn)制協(xié)議,并且與現(xiàn)有的協(xié)議格式推斷工具相比具有一定優(yōu)勢(shì)。

      [1]羅建楨,余順爭(zhēng),蔡君.基于最大似然概率的協(xié)議關(guān)鍵詞長(zhǎng)度確定方法[J].通信學(xué)報(bào),2016,37(6):119-128.

      [2]Sija B D,Goo Y H,Shim K S,et al.A survey of automatic protocol reverse engineering approaches,methods,and tools on the inputs and outputs view[J].Security&Communication Networks,2018:1-17.

      [3]Gascon H,Wressnegger C,Yamaguchi F,et al.Pulsar:Stateful black-box fuzzing of proprietary network protocols[M]//Security and Privacy in Communication Networks.Germany:Spring International Publishing,2015:330-347.

      [4]Duchêne J,Guernic C L,Alata E,et al.State of the art of network protocol reverse engineering tools[J].Journal of Computer Virology&Hacking Techniques,2017:1-16.

      [5]Narayan J,Shukla S K,Clancy T C.A survey of automatic protocol reverse engineering tools[J].ACM Computing Surveys,2015,48(3):1-26.

      [6]Marshall B.Protocol information project[EB/OL].(2004-10-05)[2017-12-24].http://www.4tphi.net/~awalters/PI/PI.html.

      [7]Cui W,Kannan J,Wang H J.Discoverer:Automatic protocolreverse engineering from network traces[C]//16th USENIX Security Symposium.Boston:USENIX Association,2007:199-212.

      [8]Krueger T,Kraemer N.PRISMA:Protocol inspection and state machine analysis[J].Journal of the American Chemical Society,2015,98(25):8101-8107.

      [9]Zhang Zhuo,Zhang Zhibin,Lee P P C,et al.ProWord:An unsupervised approach to protocol feature word extraction[C]//Proceedings IEEE INFOCOM,2014:1393-1401.

      [10]Luo J Z,Yu S Z.Position-based automatic reverse engineering of network protocols[J].Journal of Network&Computer Applications,2013,36(3):1070-1077.

      [11]黎敏,余順爭(zhēng).抗噪的未知應(yīng)用層協(xié)議協(xié)議格式最佳分段方法[J].軟件學(xué)報(bào),2013,24(3):604-617.

      [12]李偉明,張愛(ài)芳,劉建財(cái),等.網(wǎng)絡(luò)協(xié)議的自動(dòng)化模糊測(cè)試漏洞挖掘方法[J].計(jì)算機(jī)學(xué)報(bào),2011,34(2):242-255.

      [13]Bossert G,Hiet G.Towards automated protocol reverse engineering using semantic information[C]//ACM Symposium on Information,Computer and Communications Security,2014:51-62.

      [14]Fournier-Viger P,Gomariz A,Gueniche T,et al.SPMF:A Java open-source pattern mining library[J].Journal of Machine Learning Research,2014,15(1):3389-3393.

      [15]Wang Y,Zhang Z,Yao D D,et al.Inferring protocol state machine from network traces:A probabilistic approach[C]//International Conference on Applied Cryptography and Network Security.Berlin:Springer-Verlag,2011:1-18.

      猜你喜歡
      字段報(bào)文樣本
      基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
      圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
      用樣本估計(jì)總體復(fù)習(xí)點(diǎn)撥
      CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
      淺析反駁類(lèi)報(bào)文要點(diǎn)
      推動(dòng)醫(yī)改的“直銷(xiāo)樣本”
      隨機(jī)微分方程的樣本Lyapunov二次型估計(jì)
      ATS與列車(chē)通信報(bào)文分析
      村企共贏的樣本
      CNMARC304字段和314字段責(zé)任附注方式解析
      吉隆县| 太原市| 兴化市| 阳城县| 合肥市| 德庆县| 丹凤县| 微博| 安吉县| 岢岚县| 元阳县| 余姚市| 通州区| 贵定县| 利津县| 玉山县| 搜索| 栾城县| 潮安县| 定襄县| 铜鼓县| 苏尼特右旗| 大冶市| 璧山县| 全州县| 绵阳市| 兴化市| 利川市| 孟津县| 赤城县| 朝阳县| 龙川县| 金乡县| 张家口市| 江西省| 宜黄县| 高安市| 长兴县| 汉川市| 雅江县| 红原县|