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

        ?

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

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

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

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

        1 引言

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

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

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

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

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

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

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

        2.1 問題定義

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

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

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

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

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

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

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

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

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

        在信息論中,熵是對事物不確定性的度量,而點(diǎn)間互信息(Point Mutual Information)是在熵的基礎(chǔ)上提出來的概念,這一概念經(jīng)常被用于自然語言處理以及數(shù)據(jù)挖掘領(lǐng)域來衡量兩個(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)性越高。

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

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

        2.2 方法概述

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

        2.2.1 預(yù)處理階段

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

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

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

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

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

        此階段的目的是從經(jīng)過預(yù)處理的報(bào)文樣本中提取協(xié)議關(guān)鍵詞,并使用協(xié)議關(guān)鍵詞對報(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分詞方法對報(bào)文樣本進(jìn)行逐一處理,得到所有在樣本集合中出現(xiàn)過的長度為N的字符串,如對報(bào)文進(jìn)行N-gram分詞,將得到等字符串。計(jì)算每一個(gè)字符串相對于完整報(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)鍵詞是對協(xié)議格式或者報(bào)文字段的一種標(biāo)識,往往不會(huì)在同一樣本中重復(fù)出現(xiàn)。

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

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

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

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

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

        (1)候選詞,并且

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

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

        步驟2對于滿足步驟1中條件的候選詞,搜索點(diǎn)間互信息集合PMI(初始為空),若其中存在PMI()則直接獲取其值,若不存在則計(jì)算它們之間的互信息PMI()并存入集合PMI中。得到候選詞之間的互信息后,若PMI()超過所設(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é)議格式推斷階段

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

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

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

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

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

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

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

        2.2.3.2 序列比對

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

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

        圖4 報(bào)文示例

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

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

        由于實(shí)際使用的通信協(xié)議往往具有較強(qiáng)的靈活性,完全依據(jù)協(xié)議關(guān)鍵詞序列進(jìn)行協(xié)議格式提取容易產(chǎn)生較多的冗余格式,即一種協(xié)議格式在推斷時(shí)被劃分為多種不同的協(xié)議格式。過多的格式冗余將導(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í)際上對應(yīng)于一種協(xié)議格式,其中“Host”關(guān)鍵詞和“User-Agent”關(guān)鍵詞的先后順序是可以變化的。但是在擴(kuò)展前綴樹中,兩條報(bào)文對應(yīng)的協(xié)議關(guān)鍵詞序列不同,將被作為不同的協(xié)議格式。另一方面,一些報(bào)文中的協(xié)議關(guān)鍵詞屬于枚舉類型。例如,HTTP請求方法字段可以在“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)文僅僅請求方法不同,實(shí)際隸屬于同一種協(xié)議格式。

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

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

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

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

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

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

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

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

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

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

        3.2 結(jié)果分析

        本文在配置為2.93 GHz的CPU、4 GB內(nèi)存、操作系統(tǒng)為Windows 7的PC上基于Python語言實(shí)現(xiàn)了論文中提出的方法??紤]到AutoReEngine關(guān)鍵字識別方法實(shí)用性強(qiáng),準(zhǔn)確率高,并且具有代表性[5],基于SPMF平臺[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是分別針對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),所以被合并),但受限于樣本的多樣性,可能將某些可變字段被識別成了固定字段,如協(xié)議版本字段“HTTP/1.1”,這是由于所捕獲的樣本中基本都是使用的1.1版本的HTTP協(xié)議。而其中的協(xié)議關(guān)鍵詞“HTTP/1.1”兩邊沒有攜帶空格換行等符號,是由于HTTP協(xié)議請求報(bào)文和應(yīng)答報(bào)文中都包含版本號字段。(2)綜合分析表2和表3可知,相對于AutoReEngine,EPT-PFI提取的協(xié)議關(guān)鍵詞更加豐富,這是由于HTTP協(xié)議首部行中各個(gè)字段的位置是可變的,導(dǎo)致對應(yīng)的關(guān)鍵詞位置偏移較大。依據(jù)這些關(guān)鍵詞結(jié)合擴(kuò)展前綴樹描述,能夠獲取首部行中各個(gè)字段的報(bào)文結(jié)構(gòu),得到更加詳細(xì)的協(xié)議格式信息。

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

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

        如圖7、圖8分別為采用EPT-PFI、Netzob、AutoReEngine對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只保留了位置相對固定的協(xié)議關(guān)鍵詞,對于字段位置可變的協(xié)議關(guān)鍵詞都會(huì)被Apriori算法剪枝,如HTTP協(xié)議中的“Host”、“Connection”等字段由于在報(bào)文樣本中出現(xiàn)的位置變化較大而被忽略。因此,AutoReEngine只能夠提取出位置相對固定的字段關(guān)鍵詞,但無法獲取詳細(xì)的格式信息。(2)在精簡率上Netzob明顯高于EPT-PFI和AutoReEngine,說明所得協(xié)議格式冗余較多,這是由于Netzob是在多序列比對的基礎(chǔ)上進(jìn)行報(bào)文聚類的,可能將同種格式報(bào)文劃分為多種格式。而EPT-PFI由于采用了基于擴(kuò)展前綴樹的格式合并,其精簡率略優(yōu)于AutoReEngine。綜合來看,Netzob對于文本協(xié)議效果明顯優(yōu)于二進(jìn)制協(xié)議,而本文方法對于文本協(xié)議和二進(jìn)制協(xié)議都能取得較好結(jié)果。

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

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

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

        4 總結(jié)

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

        [1]羅建楨,余順爭,蔡君.基于最大似然概率的協(xié)議關(guān)鍵詞長度確定方法[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]黎敏,余順爭.抗噪的未知應(yīng)用層協(xié)議協(xié)議格式最佳分段方法[J].軟件學(xué)報(bào),2013,24(3):604-617.

        [12]李偉明,張愛芳,劉建財(cái),等.網(wǎng)絡(luò)協(xié)議的自動(dòng)化模糊測試漏洞挖掘方法[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)用
        汽車電器(2022年9期)2022-11-07 02:16:24
        圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
        用樣本估計(jì)總體復(fù)習(xí)點(diǎn)撥
        CTCS-2級報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
        淺析反駁類報(bào)文要點(diǎn)
        中國外匯(2019年11期)2019-08-27 02:06:30
        推動(dòng)醫(yī)改的“直銷樣本”
        隨機(jī)微分方程的樣本Lyapunov二次型估計(jì)
        ATS與列車通信報(bào)文分析
        村企共贏的樣本
        CNMARC304字段和314字段責(zé)任附注方式解析
        国产va在线观看免费| 国产乱子伦一区二区三区国色天香| 国产剧情一区二区三区在线 | 久久国产精品免费久久久| 最新国产不卡在线视频| 国产喷水1区2区3区咪咪爱av | 黑人上司粗大拔不出来电影| 亚洲精品国产综合一线久久| 久久亚洲精彩无码天堂| 亚洲一区二区三区熟妇| 欧美老熟妇乱xxxxx| 在线亚洲欧美日韩精品专区| 深夜国产成人福利在线观看女同| 日本大片在线一区二区三区| 青春草免费在线观看视频| 人人爽人人爽人人爽人人片av| 在线观看av手机网址| 日韩伦理av一区二区三区| 久久婷婷五月综合色高清| 亚洲旡码a∨一区二区三区| 精品无人区无码乱码大片国产| 亚洲精品456在线播放狼人| 欧美黑人又大又粗xxxxx| 亚洲日韩∨a无码中文字幕| 亚洲无码毛片免费视频在线观看| 黄色影院不卡一区二区| 国产色在线 | 亚洲| 色yeye免费视频免费看| 久久久一本精品久久久一本| 国产精品久久久久久久久久红粉 | 欧洲午夜视频| 国产精品亚洲在钱视频| 亚洲av日韩av激情亚洲| 国产亚洲情侣一区二区无| 亚洲欧美变态另类综合| 日韩女优图播一区二区| 天天鲁在视频在线观看| 国产精彩视频| 国产亚洲av夜间福利在线观看| 亚洲精品久久7777777| 久久免费国产精品|