叢培鑫, 李曉慧, 王俊峰
(1.四川大學(xué)計(jì)算機(jī)學(xué)院, 成都 610065; 2.四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院, 成都 610065)
沒有網(wǎng)絡(luò)安全就沒有國家安全[1].隨著網(wǎng)絡(luò)安全的重要性日益增加,網(wǎng)絡(luò)中數(shù)據(jù)的通信量也在與日劇增.網(wǎng)絡(luò)協(xié)議作為網(wǎng)絡(luò)通信的核心傳遞方式,它的種類和結(jié)構(gòu)直接關(guān)系到通信的安全性、穩(wěn)定性和可靠性.比特流作為網(wǎng)絡(luò)協(xié)議數(shù)據(jù)傳輸?shù)囊粋€(gè)重要載體,其中傳輸?shù)亩M(jìn)制協(xié)議有著傳輸效率高、適用場景廣泛等特點(diǎn).由于未知協(xié)議的廣泛使用,比特流中40%以上的流量數(shù)據(jù)難以被識(shí)別和分析[2].因此在沒有先驗(yàn)知識(shí)的情況下,定性地對(duì)未知協(xié)議進(jìn)行分類就成為了協(xié)議逆向工程的第一步.這一步將未知二進(jìn)制協(xié)議聚類到不同集合中,能夠降低人工分析對(duì)協(xié)議規(guī)范的依賴[3],同時(shí)對(duì)進(jìn)一步推斷協(xié)議格式、提高網(wǎng)絡(luò)協(xié)議分析的效率和準(zhǔn)確率都具有重要意義.
網(wǎng)絡(luò)協(xié)議通常分成兩大類,即公有網(wǎng)絡(luò)協(xié)議和私有網(wǎng)絡(luò)協(xié)議.第一類公有協(xié)議包括如絕大部分協(xié)議依托的網(wǎng)絡(luò)層IP協(xié)議,傳輸直播流量的UDP協(xié)議,平時(shí)訪問網(wǎng)頁經(jīng)常用到的HTTPS、DNS協(xié)議等.公有協(xié)議往往是已知結(jié)構(gòu)的,體現(xiàn)為字段格式公開,取值約束已知,也是各種標(biāo)準(zhǔn)化組織、網(wǎng)絡(luò)運(yùn)營商、網(wǎng)絡(luò)通信技術(shù)方案提供者[4]等制定的公開協(xié)議.第二類協(xié)議往往存在于衛(wèi)星、雷達(dá)、無人機(jī)等特殊設(shè)備,多數(shù)企業(yè)和組織單位,可穿戴設(shè)備使用的藍(lán)牙協(xié)議以及各個(gè)廠商推出的智能家居系列產(chǎn)品等場景.特別對(duì)于企業(yè)來說大量的數(shù)據(jù)在公網(wǎng)上進(jìn)行傳輸,如果不采用私有協(xié)議會(huì)導(dǎo)致用戶和企業(yè)的敏感數(shù)據(jù)易被不法分子攔截分析,損害用戶和企業(yè)的利益.在此場景下使用私有協(xié)議進(jìn)行傳輸,可以在實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)耐瑫r(shí),還能滿足私有網(wǎng)絡(luò)的經(jīng)濟(jì)利益、保護(hù)商業(yè)利益等安全性需求.而隨著各大企業(yè)的產(chǎn)品覆蓋生活的方方面面,私有協(xié)議的數(shù)量和種類正在快速增加.私有協(xié)議在傳輸時(shí)因?yàn)樾枰銐虬踩?往往會(huì)按照自己的標(biāo)準(zhǔn),提出新的協(xié)議規(guī)范構(gòu)造協(xié)議報(bào)文.這類協(xié)議規(guī)范由于不會(huì)公開,所以對(duì)外界來說往往是未知的.
當(dāng)前公有協(xié)議解析工具成熟,但對(duì)于新協(xié)議的規(guī)范分析仍面臨較大的困難.目前現(xiàn)有的協(xié)議分析軟件僅支持對(duì)已知協(xié)議的分析,例如Wireshark可以解析2000余種已知協(xié)議,對(duì)于協(xié)議規(guī)范沒有公開的各類私有協(xié)議則無能為力.在這種情況下,獲取未知協(xié)議規(guī)范,定性定量地進(jìn)行協(xié)議逆向解析就顯得尤為重要.
當(dāng)前私有協(xié)議解析尚不能實(shí)現(xiàn)協(xié)議分類的全面性.之前協(xié)議規(guī)范的挖掘過于依賴人工分析,使得對(duì)未知協(xié)議的解析工作成為了一項(xiàng)準(zhǔn)確率沒有保證,時(shí)間耗費(fèi)長且具有挑戰(zhàn)性的任務(wù).例如,開源項(xiàng)目Samba[5]通過人工分析的方法花了12年的時(shí)間才基本生成私有協(xié)議SMB[6]的協(xié)議規(guī)范.因此,研究自動(dòng)化的協(xié)議逆向分析技術(shù)在網(wǎng)絡(luò)安全領(lǐng)域具有重要意義.而協(xié)議聚類工作能夠從原始流量角度出發(fā),將其中相同種類的報(bào)文重新組合,成為以數(shù)據(jù)為基礎(chǔ)的協(xié)議逆向工程中不可或缺的一步,并逐漸成為協(xié)議漏洞挖掘[7]和工控協(xié)議安全需求[8]的重要工作.作為研究對(duì)象的網(wǎng)絡(luò)協(xié)議可以分為文本協(xié)議和二進(jìn)制協(xié)議兩種.目前的研究通常依賴于文本類協(xié)議.Discover[9]模擬了報(bào)文解析的層次化過程,首次提出了在協(xié)議解析過程中存在一些關(guān)鍵字段決定報(bào)文子結(jié)構(gòu)解析方式的假設(shè).潘璠等[10]提出一種基于遞歸聚類的協(xié)議解析方法,使用報(bào)文中的格式標(biāo)識(shí)字段(Format Distinguisher, FD)和文本段提取層次化報(bào)文結(jié)構(gòu).這些方法和開源工具NetZob[11,12]一樣都依賴于文本類協(xié)議,無法解析二進(jìn)制協(xié)議.
相比于文本協(xié)議,二進(jìn)制協(xié)議通常以ASCII碼形式呈現(xiàn),序列透明且限制條件較少[13],是非常好的協(xié)議報(bào)文聚類對(duì)象,大大降低了協(xié)議聚類對(duì)協(xié)議種類和報(bào)文特征的依賴.Yan等[14]提出基于改進(jìn)的主成分分析法和改進(jìn)的密度峰值聚類對(duì)二進(jìn)制協(xié)議聚類.張路煜等[15]提出了應(yīng)用卷積神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行協(xié)議識(shí)別.但是在訓(xùn)練過程中未知協(xié)議的種類數(shù)量需要給定,缺乏普適性.
生物信息學(xué)聚類方法依托于序列數(shù)據(jù),簡潔緊湊、傳輸較快[7]、適用場景更廣的二進(jìn)制協(xié)議就是很好的聚類目標(biāo),并且多序列比對(duì)匹配精度高,具備從序列角度解決分類問題的能力.從PI[16]項(xiàng)目開始,生物信息學(xué)方法中的漸進(jìn)多序列比對(duì)算法就已經(jīng)用于協(xié)議逆向工程領(lǐng)域.學(xué)者改進(jìn)后又誕生了Discover、AutoFormat[17]、Tupni[18]等傳統(tǒng)方案和Biprominer[19]、Pro-Decoder[20]、Proword[21]等改進(jìn)方案.生物信息學(xué)已經(jīng)逐漸成為解決協(xié)議分析問題有效的解決方法之一.
本文提出一種基于生物信息的未知二進(jìn)制協(xié)議聚類方法.該方法面向協(xié)議原始二進(jìn)制報(bào)文序列,不局限于文本協(xié)議中的特定字段,可以廣泛應(yīng)用于文本協(xié)議和二進(jìn)制協(xié)議.首先對(duì)原始二進(jìn)制數(shù)據(jù)包內(nèi)序列進(jìn)行預(yù)處理,分離出二進(jìn)制報(bào)文序列,對(duì)二進(jìn)制序列轉(zhuǎn)化成四進(jìn)制的基因序列進(jìn)行快速聚類,實(shí)現(xiàn)預(yù)分簇,最后再次對(duì)分好后的每一簇協(xié)議序列進(jìn)行進(jìn)制轉(zhuǎn)換,將四進(jìn)制序列轉(zhuǎn)化成十六進(jìn)制的蛋白質(zhì)鏈進(jìn)行二次高精度聚類,得到協(xié)議子集.本文使用真實(shí)環(huán)境下的網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行了大量實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果較其他算法在準(zhǔn)確率和效率上均有一定的提升.
國際標(biāo)準(zhǔn)化組織公布了開放系統(tǒng)互連參考模型(OSI/RM).OSI/RM是一種分層的體系結(jié)構(gòu),參考模型共有7層.TCP/IP作為Internet的核心協(xié)議,它是個(gè)協(xié)議簇,包含F(xiàn)TP、SMTP、TCP、UDP、IP等多種協(xié)議.以此為例可以得到通常的協(xié)議模型,如圖1所示.由此可見已知協(xié)議都有著公開的文法和規(guī)范,通過分析上層協(xié)議頭中的端口號(hào)就能得到下層協(xié)議類型.目前通過tshark[22]、tcpdump[23]等工具就可以對(duì)已知共有協(xié)議進(jìn)行解析分類,但是由于未知協(xié)議沒有公開的特定端口號(hào)以及標(biāo)準(zhǔn)化的協(xié)議規(guī)范,這些工具都無法進(jìn)行準(zhǔn)確的聚類和分析.
圖1 公有協(xié)議模型Fig.1 Model of public protocols
隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大和應(yīng)用類型的不斷豐富,未知協(xié)議的種類也在快速增加.依據(jù)分析對(duì)象的不同,可以把未知協(xié)議的解析方法分為基于執(zhí)行軌跡的協(xié)議解析方法和基于網(wǎng)絡(luò)流量的協(xié)議解析方法兩種.
(1) 基于執(zhí)行軌跡的協(xié)議解析方法面向指令序列,利用動(dòng)態(tài)污點(diǎn)技術(shù)跟蹤報(bào)文數(shù)據(jù)在通信實(shí)體間的解析過程來解析協(xié)議.AutoFormat針對(duì)PI與Discover項(xiàng)目中逆向得到的報(bào)文格式為平坦的線性結(jié)構(gòu),通過構(gòu)造一個(gè)字段樹去研究字段之間存在的層次關(guān)系(hierarchical field)、并列關(guān)系(sequential field)和序列關(guān)系(parallel field),提出了基于指令軌跡的字段結(jié)構(gòu)識(shí)別方案.Tupni沿用AutoFormat的思想,利用多條協(xié)議信息發(fā)現(xiàn)協(xié)議格式.這類方法依賴協(xié)議平臺(tái),需要執(zhí)行信息,在使用時(shí)的操作性和通用性上存在一定問題.
(2) 基于網(wǎng)絡(luò)流量的協(xié)議解析方法也被稱作基于報(bào)文的協(xié)議逆向技術(shù),分析的對(duì)象是從網(wǎng)絡(luò)上捕獲的真實(shí)流量.2004年P(guān)I(Protocol Informatics)由Beddoe啟動(dòng)并發(fā)布[16],在算法中首次引入了生物信息學(xué)領(lǐng)域中的漸進(jìn)多序列對(duì)比算法[24]來解決協(xié)議逆向工程問題,并根據(jù)相同類型分組的統(tǒng)計(jì)特征對(duì)報(bào)文格式進(jìn)行分析.之后的Discover使用報(bào)文序列分析方法實(shí)現(xiàn)完整的協(xié)議格式提取,模擬了報(bào)文解析的層次化過程.2014年由Bossert等人發(fā)起的Netzob項(xiàng)目目前已經(jīng)成為了協(xié)議逆向領(lǐng)域的重要開源工具.孫芳慧[25]針對(duì)PI、Netzob中的初始聚類方法進(jìn)行優(yōu)化并提出了一種將基于協(xié)議格式關(guān)鍵字識(shí)別的聚類劃分方法與基于網(wǎng)絡(luò)流量特征的聚類歸約方法相結(jié)合的私有協(xié)議格式提取方法.Li等[2]結(jié)合了協(xié)議框架的位置信息,設(shè)計(jì)了一種基于Jaccard距離的層次聚類方法.可見現(xiàn)階段的協(xié)議聚類仍然依賴于人工分析或者文本協(xié)議、無法完全應(yīng)用于包括二進(jìn)制協(xié)議在內(nèi)的各類協(xié)議.
本節(jié)介紹進(jìn)制轉(zhuǎn)換的未知協(xié)議聚類解析方法,包括兩次多序列比對(duì)過程,針對(duì)一定數(shù)量的協(xié)議序列數(shù)據(jù),在聚類耗時(shí)降低的同時(shí)保證了協(xié)議種類聚類的準(zhǔn)確率.
未知二進(jìn)制協(xié)議聚類方法(Unknown Binary Protocol Clustering,UBPC)采用兩次進(jìn)制轉(zhuǎn)換進(jìn)行數(shù)據(jù)預(yù)處理.當(dāng)前,由于私有未知協(xié)議在傳輸過程中由于安全需要絕大部分不會(huì)以明文形式傳輸,報(bào)文數(shù)據(jù)在轉(zhuǎn)義后也很少以可打印字符的形式出現(xiàn).因此UBPC沒有選取協(xié)議報(bào)文轉(zhuǎn)義后的字符作為聚類分析的標(biāo)志性字段進(jìn)行分析,而是將真實(shí)環(huán)境下捕獲數(shù)據(jù)包的原始二進(jìn)制序列數(shù)據(jù)作為分析的目標(biāo),將二進(jìn)制的協(xié)議序列數(shù)據(jù)進(jìn)行兩次進(jìn)制轉(zhuǎn)換,即分別把原始協(xié)議序列轉(zhuǎn)化成基因序列和蛋白質(zhì)序列.對(duì)于所有的數(shù)據(jù),通過第一次快速聚類方法將所有協(xié)議序列預(yù)分簇降低聚類時(shí)間,再對(duì)分好的每一簇協(xié)議序列進(jìn)行第二次高精度算法聚類提升準(zhǔn)確率,整體流程如圖2所示.
圖2 未知二進(jìn)制協(xié)議聚類方法流程Fig.2 Unknown binary protocol clustering method process
此階段將協(xié)議原始的二進(jìn)制報(bào)文序列轉(zhuǎn)化成四進(jìn)制形式,將其序列長度縮減為之前的1/2,使用基因序列的4種堿基A,T,G,C對(duì)四進(jìn)制0,1,2,3等4種字符進(jìn)行替換,將其轉(zhuǎn)化成DNA序列形式.
首先將其轉(zhuǎn)化成四進(jìn)制形式,由于四進(jìn)制形式共包含0,1,2,3等4種字符,這里在保證語義的基礎(chǔ)上選取兩個(gè)四進(jìn)制字符代表一個(gè)十六進(jìn)制的組合,因此共有從00到33十六種組合方式,以滑動(dòng)窗口大小為2從頭掃描序列, 統(tǒng)計(jì)每種字符組合的個(gè)數(shù),而統(tǒng)計(jì)后的字符組合記為k-seed.
需要說明的是,由于這一階段的目標(biāo)是產(chǎn)生第一步多重對(duì)齊,強(qiáng)調(diào)提高聚類速度,所以要求k-seed的個(gè)數(shù)既不能太多,同時(shí)還需要保證構(gòu)造出的k-seed距離矩陣能夠在一定程度上起到區(qū)分協(xié)議種類的作用,以保證一定的準(zhǔn)確率.因此將初始序列轉(zhuǎn)化成四進(jìn)制形式是唯一且必要的.算法1具體流程如下.
算法1基于MUCLE的聚類方法
Step1計(jì)算距離矩陣D1.計(jì)算每對(duì)輸入序列的k-seed距離,采用Smith-Waterman算法給出距離矩陣D1.
Step2構(gòu)造,分割引導(dǎo)樹TREE1.矩陣D采用非加權(quán)成對(duì)群算術(shù)平均法(Unweighted PairGroup Method with Arithmetic means, UPGMA)計(jì)算子類間的距離逐步將距離最小的子類進(jìn)行合并,子類Ci和Cj的距離公式如下,產(chǎn)生二叉樹TREE1.
(1)
Step3按照TREE1的分支順序構(gòu)造漸進(jìn)對(duì)齊.在每個(gè)葉子上,根據(jù)輸入序列構(gòu)建配置文件.樹中的節(jié)點(diǎn)按前綴順序訪問(子節(jié)點(diǎn)在父節(jié)點(diǎn)之前).在每個(gè)內(nèi)部節(jié)點(diǎn),由兩個(gè)子配置文件構(gòu)建成對(duì)對(duì)齊,給出分配給該節(jié)點(diǎn)的新配置文件,會(huì)在根處生成所有輸入序列的多重比對(duì).
在k-seed處理后終止算法,選取Tree1作為第一階段的聚類分簇結(jié)果.由于依照k-seed組合的聚類方式經(jīng)驗(yàn)證,能夠在一定程度上作為整體協(xié)議序列種類的分類依據(jù)[26],在保證了一部分準(zhǔn)確率的基礎(chǔ)上,在第一次面對(duì)大量原始協(xié)議序列時(shí),降低了協(xié)議數(shù)量N對(duì)聚類時(shí)間復(fù)雜度的影響.
由于協(xié)議序列中的語義通常是以4位二進(jìn)制數(shù)據(jù)為單位表示的,因此UBPC將原始二進(jìn)制數(shù)據(jù)進(jìn)行十六進(jìn)制轉(zhuǎn)換,同時(shí)將協(xié)議報(bào)文序列的長度縮減為之前的1/4,具體時(shí)間復(fù)雜度分析見3.4節(jié).針對(duì)第一階段的序列簇,使用改進(jìn)的mBed算法得到引導(dǎo)樹,算法過程如算法2所示.每次將最近的兩個(gè)序列進(jìn)行組合構(gòu)造引導(dǎo)樹,并不斷重復(fù),完成了最終的引導(dǎo)樹創(chuàng)建,為了提升對(duì)齊過程的靈敏度[27],使用了Soding的 HHalign包用于拼接所有漸進(jìn)對(duì)齊.
算法2基于Clustal-Omega的多序列比對(duì)
輸入:X表示第一階段預(yù)分簇的序列集合,P表示查找有助于表征數(shù)據(jù)集的潛在種子的算法
輸出:嵌入距離矩陣D
(1) procedure Clustal O(X)
(2) ∥初始種子選取
(3) for allNi∈Xdo:
(4)Ni為簇,令li為簇中的協(xié)議序列個(gè)數(shù),遵循LLR近似算法,按照默認(rèn)設(shè)置t=(log2li)2進(jìn)行采樣,按照恒定步長采樣t個(gè)種子,構(gòu)造成種子集合R
(5)th=0∥閾值, 用于判斷種子是否相同
(6) for all 種子s∈Rdo:
(7) ifdij (8) 丟棄種子 (9) else (10)s添加到K∥K表示可用種子集合 (11) end if (12) end for (13) ∥潛在種子挖掘 (14) ifP=UPO then ∥UPO表示單序列查找 (15) for all 序列s∈Rdo (16) 令a為Ni中使d(a,s)最大的序列 (17) 令b為Ni中使d(b,a)最大的序列 (18)b添加到K (19) end for (20) else if UPG then ∥UPG表示序列組查找 (21) for alls∈Rdo (22) 令a為Ni中使d(a,s)最大的序列 (23) 令b為Ni中使d(b,a)+d(b,s)最大的序列 (24) 令c為Ni中使d(c,a)+d(c,b)+d(c,s)最大的序列 (25) if 同一序列多次識(shí)別 or 數(shù)量達(dá)上限 then (26) break (27) end if (28) {a,b,c, …}添加到K (29) end for (30) end if (31) 計(jì)算所有序列到種子的UPGMA距離d,使得所有序列都與一個(gè)t維向量相關(guān)聯(lián) (32) for all 序列n∈Nido (33) 按照下面公式計(jì)算對(duì)應(yīng)的嵌入向量 F(s)=[d(s,K1),d(s,K2),…,d(s,Kt)] (34) 更新D (35) end for (36) end for (37) end procedure 對(duì)于協(xié)議報(bào)文序列而言,其在數(shù)據(jù)包中的原始形式如圖3所示.假設(shè)其中有N條M種的協(xié)議,將每條協(xié)議序列記為Seq,那么, 協(xié)議序列長度記為L. 圖3 pcap數(shù)據(jù)包序列分布示意圖 算法1將原始二進(jìn)制序列轉(zhuǎn)換成四進(jìn)制形式,序列長度縮短為之前的二分之一,時(shí)間復(fù)雜度O(NL2)縮短到四分之一. 算法2的時(shí)間復(fù)雜度為O(NlogN),因此它的時(shí)間開銷只與序列數(shù)量N有關(guān).算法1的預(yù)分簇結(jié)束后,將大量的協(xié)議序列分割,其本身的時(shí)間復(fù)雜度已經(jīng)加快到O(NlogN).因?yàn)榉执氐慕Y(jié)果沒法預(yù)知,假設(shè)一共預(yù)分為k簇,那么整體算法時(shí)間復(fù)雜度計(jì)算公式為 O(NL2)+O(NlogN) (2) 每一簇協(xié)議序列記為ni(i=1,2,…,k),替換后得時(shí)間復(fù)雜度計(jì)算公式為 (3) 對(duì)于每一個(gè)ni(i=1,2,…,k),都可以表示成只有序列個(gè)數(shù)N的表達(dá)式, (4) (5) 即將每簇的協(xié)議序列個(gè)數(shù)表示為包含一個(gè)常數(shù)與序列個(gè)數(shù)N的表達(dá)式,將式(4) 和式(5)帶入式(3)化簡后得 (6) 根據(jù)對(duì)數(shù)性質(zhì),結(jié)合式(3)~式(6)可以得出 (7) 在實(shí)際情況下,對(duì)每一簇可以同時(shí)使用算法2進(jìn)行聚類,那么對(duì)于不同簇的協(xié)議序列ni(i=1,2,…,k),時(shí)間開銷更會(huì)大大縮短,實(shí)際時(shí)間復(fù)雜度為 (8) 綜上所述,由于進(jìn)制轉(zhuǎn)換縮短了協(xié)議序列長度,預(yù)分簇減少了聚類時(shí)的協(xié)議序列數(shù)量,因此UBPC與算法單獨(dú)執(zhí)行的時(shí)間復(fù)雜度O(NL2+N2L+N3L)和O(NlogN)相比,在時(shí)間效率上均有一定的提升. 為了驗(yàn)證上述兩次聚類方法能夠保證協(xié)議聚類高效的同時(shí)保持高準(zhǔn)確性,本文通過Wireshark對(duì)真實(shí)網(wǎng)絡(luò)環(huán)境下的流量進(jìn)行捕獲,選取其中5種已知應(yīng)用層協(xié)議和3種私有未知協(xié)議作為實(shí)驗(yàn)原始數(shù)據(jù).已知協(xié)議包括:DNS、HTTP、IGMPv3、LLMNR和MDNS.未知私有協(xié)議針對(duì)協(xié)議的捕獲場景分別命名為TCT、NTE和SNA.為了驗(yàn)證多次聚類處理后對(duì)協(xié)議識(shí)別方法的有效性,將UBPC分別在真實(shí)環(huán)境下的已知協(xié)議、未知協(xié)議和已知協(xié)議未知協(xié)議混合場景下應(yīng)用.實(shí)驗(yàn)沒有單獨(dú)分析應(yīng)用層協(xié)議,而是使用完整報(bào)文協(xié)議數(shù)據(jù)進(jìn)行驗(yàn)證,使得應(yīng)用過程更具有普適性. 原始協(xié)議序數(shù)據(jù)需要進(jìn)行如下預(yù)處理,首先分割出完整報(bào)文序列;再將報(bào)文序列轉(zhuǎn)義出的原始二進(jìn)制序列進(jìn)行兩種進(jìn)制轉(zhuǎn)換,即二進(jìn)制轉(zhuǎn)化為四進(jìn)制和二進(jìn)制轉(zhuǎn)化為十六進(jìn)制;最后將四進(jìn)制的序列類比成一條基因序列,同理將十六進(jìn)制的序列類比成一條蛋白質(zhì)序列,如圖4所示. 圖4 數(shù)據(jù)預(yù)處理示意圖 測試平臺(tái)選用MacOS+Python3.8,硬件使用MacBook Air計(jì)算機(jī),配以Apple M1 CPU和16 GB內(nèi)存. 已知協(xié)議通常有確定的協(xié)議規(guī)范,流量中的協(xié)議序列也會(huì)按照定義的字段結(jié)構(gòu)組成整條協(xié)議數(shù)據(jù).因此只包含已知應(yīng)用層協(xié)議的協(xié)議序列,通常是鏈路層、網(wǎng)絡(luò)層、傳輸層協(xié)議頭加應(yīng)用層的組成方式. 為了驗(yàn)證UBPC能夠順利解析協(xié)議序列,首先測試其能夠?qū)σ阎獏f(xié)議的種類做到較準(zhǔn)確的劃分.實(shí)驗(yàn)統(tǒng)計(jì)了UBPC作用于真實(shí)環(huán)境下共981個(gè)協(xié)議序列時(shí),測試數(shù)據(jù)中含有種類個(gè)數(shù)不同已知協(xié)議時(shí)的準(zhǔn)確率情況,并用其他生物信息學(xué)聚類方法的準(zhǔn)確率結(jié)果作為對(duì)比. 圖5 已知協(xié)議聚類準(zhǔn)確率實(shí)驗(yàn)結(jié)果Fig.5 Experimental results of known protocol clustering accuracy 由圖5可以看出,隨著協(xié)議種類的增加,UBPC的準(zhǔn)確率在各方法對(duì)比下一直維持在高水平狀態(tài),說明其能夠得出較為準(zhǔn)確的聚類結(jié)果,并且在其他方法中Clustal-Omega的準(zhǔn)確率保持在非常高的水平,也顯示出選用此算法作為高精度聚類算法的依據(jù).需要說明的是,由于UBPC的應(yīng)用對(duì)象是協(xié)議的序列數(shù)據(jù),對(duì)于協(xié)議本身是否未知沒有判定,因此在協(xié)議種類增多后會(huì)出現(xiàn)準(zhǔn)確率下降的情況,但是仍然可以得到97%左右的高精度聚類結(jié)果. 未知協(xié)議通常沒有統(tǒng)一的格式說明,對(duì)于其應(yīng)用層協(xié)議字段沒有確定的描述,同樣不對(duì)協(xié)議序列數(shù)據(jù)進(jìn)行處理,直接對(duì)原始二進(jìn)制報(bào)文開始解析工作. 為了評(píng)估UBPC對(duì)純未知協(xié)議序列數(shù)據(jù)的解析情況,實(shí)驗(yàn)選取了上述三種未知協(xié)議共915條序列數(shù)據(jù),針對(duì)包含兩種協(xié)議和三種協(xié)議的混合場景分別進(jìn)行實(shí)驗(yàn),圖6分別給出了5種方法解析的準(zhǔn)確率(%)和所耗時(shí)間(s).其中x軸代表時(shí)間,y軸代表解析準(zhǔn)確率. 圖6中較小的圖案和較大的圖案分別表示兩種協(xié)議混合場景和三種協(xié)議混合場景下的實(shí)驗(yàn)結(jié)果.由圖6可知,在準(zhǔn)確率方面,UBPC和Clustal-Omega解析準(zhǔn)確率整體來看明顯優(yōu)于其他方法.且文獻(xiàn)[28]指出Clustal-Omega在大量數(shù)據(jù)下的處理速度非常優(yōu)秀.我們通過進(jìn)制的轉(zhuǎn)化將二進(jìn)制轉(zhuǎn)化成四進(jìn)制和十六進(jìn)制,將協(xié)議序列長度分別縮減為之前的1/2和1/4,降低了序列長度過長所帶來的時(shí)間開銷.因此在時(shí)間已經(jīng)非常短的情況下又進(jìn)一步提升了解析效率.在時(shí)間方面,UBPC通過引入更精準(zhǔn)的漸進(jìn)比對(duì)算法,使得時(shí)間開銷逼近甚至趕超目前最快的方法MAFFT[28]. 圖6 未知協(xié)議聚類準(zhǔn)確率和效率實(shí)驗(yàn)結(jié)果 真實(shí)場景下的流量數(shù)據(jù)通常是已知和未知協(xié)議混合的情況.為了觀察UBPC在這種場景下的表現(xiàn),選取的數(shù)據(jù)包部分包括DNS、HTTP、IGMPv3、LLMNR和MDNS 5種已知協(xié)議及TCT、NTE和SNA 3種未知協(xié)議共8種1896條協(xié)議序列,在相同硬件條件環(huán)境下進(jìn)行實(shí)驗(yàn). 表1 真實(shí)環(huán)境聚類準(zhǔn)確率和效率實(shí)驗(yàn)結(jié)果 由表1可以看出,UBPC可以很好地對(duì)真實(shí)環(huán)境中的已知和未知協(xié)議序列進(jìn)行較為準(zhǔn)確的區(qū)分,在與單獨(dú)使用Cluster-Omega的準(zhǔn)確率基本持平的情況下,UBPC的時(shí)間開銷有了明顯的降低.另外,對(duì)比效率較高的MAFFT方法,在時(shí)間開銷基本持平的同時(shí),UBPC的準(zhǔn)確率得到了明顯的提升.因此與其他方法相比,UBPC方法在時(shí)間開銷和準(zhǔn)確率的表現(xiàn)上都有著不俗的表現(xiàn). 未知協(xié)議逆向工程的研究取得了一定的成果,而面向二進(jìn)制協(xié)議報(bào)文序列的未知協(xié)議聚類作為提高協(xié)議逆向準(zhǔn)確率和效率的重要步驟也逐漸成為了研究的熱點(diǎn)問題.本文擺脫了大量研究和開源工具對(duì)于文本類協(xié)議、協(xié)議特征和人工分析的依賴,從二進(jìn)制序列本身入手,將其進(jìn)行兩次進(jìn)制轉(zhuǎn)換,結(jié)合基因和蛋白質(zhì)的多序列比對(duì)方法,通過第一次的高效聚類方法降低時(shí)間開銷和第二次高精度聚類方法提升準(zhǔn)確率,對(duì)已知協(xié)議、未知協(xié)議和真實(shí)環(huán)境下的混合協(xié)議序列進(jìn)行聚類分析,并與其他序列聚類方法進(jìn)行對(duì)比,結(jié)果證明UBPC準(zhǔn)確率和效率都更加出色.3.4 效率分析
4 算法仿真與實(shí)驗(yàn)結(jié)果
4.1 實(shí)驗(yàn)場景
4.2 已知協(xié)議聚類準(zhǔn)確性實(shí)驗(yàn)
4.3 未知協(xié)議聚類準(zhǔn)確率實(shí)驗(yàn)
4.4 真實(shí)場景已知未知協(xié)議混合效率實(shí)驗(yàn)
5 結(jié) 論