李峻辰 程 光 楊剛芹
(東南大學網絡空間安全學院 南京 211189)
(計算機網絡和信息集成教育部重點實驗室(東南大學) 南京 211189)
(網絡空間國際治理研究基地(東南大學) 南京 211189)
(紫金山實驗室 南京 211102)(jcli@njnet.edu.cn)
網絡協(xié)議定義了2個或多個通信實體間交互報文的格式、順序、內容以及在接收或發(fā)送這些報文時應進行的狀態(tài)轉換,規(guī)定了通信實體間的行為規(guī)范,保證了在極其復雜的網絡環(huán)境下通信實體仍然可以進行預期準確的數據傳輸.隨著網絡應用逐步向各個領域滲透,在生產生活、工業(yè)控制、金融服務等行業(yè)的新型網絡中,大量滿足需求的APP應時而生.中國互聯網絡信息中心發(fā)布的《第48次中國互聯網發(fā)展狀況統(tǒng)計報告》[1]指出,截至2021年6月,我國市場上檢測到的APP數量已達到302萬款,其中游戲、日常工具、電子商務和社交通信類APP數量占比超過半數,同時物聯網終端應用也在不斷增長.這些APP交互所使用的通信協(xié)議,相較于RFC規(guī)定的HTTP,TLS,SMTP等公開協(xié)議來說即為私有協(xié)議,其并未公開協(xié)議格式、協(xié)議語法或協(xié)議交互實例,僅在應用內部通信、傳輸數據時使用,亦可稱之為未知協(xié)議.應用種類的層出不窮直接造成網絡私有協(xié)議的多樣性,且其特殊性質使得其在工業(yè)控制、軍事通信、虛擬網絡和惡意軟件中得到廣泛應用,同時私有協(xié)議規(guī)范的未知性也給當前網絡安全監(jiān)管帶來了極大的挑戰(zhàn).因此,針對私有協(xié)議的分析對保障整個網絡生態(tài)環(huán)境的穩(wěn)定具有重大意義.
目前對私有協(xié)議分析的主要手段是協(xié)議逆向技術,由于協(xié)議規(guī)范未知,只能結合逆向思維,基于協(xié)議交互產生的實例來逆向推斷協(xié)議的運作行為以及格式規(guī)范,協(xié)助分析人員理解私有協(xié)議的功能、性能以及安全性.協(xié)議逆向技術根據其分析對象的不同主要有2種實現方法[2-3]:一是基于實現協(xié)議規(guī)范的應用程序指令來完成協(xié)議逆向分析;二是基于協(xié)議通信所產生的網絡流量來完成協(xié)議逆向分析.
部分研究基于實現協(xié)議規(guī)范的應用程序指令對私有協(xié)議進行逆向分析[4-12],但該方法需要的條件較為嚴苛,其逆向分析的實體是應用程序.需要對采用該協(xié)議通信的應用程序進行監(jiān)控,訪問其運行環(huán)境,實時記錄下程序運行產生的各種指令,分析指令解析報文的過程與指令間包含的協(xié)議狀態(tài)轉換信息等以獲得協(xié)議格式的規(guī)范.一般情況下,實現私有協(xié)議的應用程序源碼不易獲取,也難以提供合適的環(huán)境來捕獲其運行產生的指令,因此基于實現協(xié)議規(guī)范的應用程序指令的協(xié)議逆向技術不是普遍適用的.相較而言,基于協(xié)議通信產生的網絡流量的私有協(xié)議逆向技術需要的條件較為簡單,其逆向分析的實體是網絡流量.網絡流量獲取手段眾多且可執(zhí)行性較強,如今的wireshark,tcpdump等工具均可在終端網卡或主干網路由器處截獲網絡流量,其大致可以分為2種:一種是已知某種應用產生的私有協(xié)議流量,可在終端主機運行應用以獲取充足的流量,用于分析該應用的私有協(xié)議規(guī)范,理解協(xié)議交互行為.另一種是未知應用產生的未知流量,即全未知流量,可在主干網路由器截獲,其復雜的混淆性導致無法簡單地分析,但很可能包含暗網、惡意軟件、惡意攻擊等私有協(xié)議流量,對這部分私有協(xié)議的分析具有極高的實用性,加強網絡監(jiān)管人員對這部分公害信息的監(jiān)管能力.
一方面,中國信息通信研究院發(fā)布的《2020年上半年工業(yè)互聯網安全態(tài)勢綜述》[13]指出,工業(yè)互聯網設備漏洞數量多、級別高,針對工業(yè)互聯網的攻擊方式以異常流量、僵尸網絡為主,同時車聯網成為網絡攻擊的新趨向.因此針對工業(yè)互聯網設備的私有協(xié)議逆向分析必不可少,可以降低協(xié)議設計的脆弱性,發(fā)現協(xié)議漏洞,提高設備安全性.同時針對攻擊的異常流量逆向分析亦具有意義,挖掘出異常流量的固有特征,更適用于對攻擊流量的防御.另一方面,雖然目前協(xié)議設計與發(fā)展越來越注重用戶隱私,協(xié)議加密化趨勢凸顯,但加密協(xié)議存在握手、密鑰交換、身份認證等明文傳輸階段,且協(xié)議報文中存在明文字段標識協(xié)議類型,不同協(xié)議的明文數據量并不相同[14],因此基于網絡流量的私有協(xié)議逆向技術亦可挖掘出加密協(xié)議明文字段的報文格式,且這部分明文字段格式可作為私有加密協(xié)議的固有特征,用于精準識別私有加密協(xié)議流量.近些年來基于網絡流量的私有協(xié)議逆向技術取得高速發(fā)展[15],從初期的人為分析到目前的自動化分析,從初期的協(xié)議規(guī)范推斷到目前的協(xié)議行為理解,均有突破性的研究成果并應用于眾多領域:僵尸網絡通信推斷與行為理解[16]、網絡蜜罐協(xié)議檢測和狀態(tài)機模型分析[17-18]、協(xié)議漏洞挖掘以及脆弱性檢測[19-20]、安卓應用協(xié)議行為分析[21]、無線自定協(xié)議理解與重構[22-23]、無人機等工控協(xié)議建模[24-26]、物聯網設備安全性分析[27-28]等等.因此本文旨在對基于網絡流量的私有協(xié)議逆向技術已有研究進行詳細分類論述,為進一步的研究奠定基礎.
網絡通信發(fā)送方遵守5層協(xié)議體系結構由上到下逐層封裝需要傳輸的數據,接收方則由下到上逐層解封,得到對方發(fā)送的數據報文.每一層均由協(xié)議來規(guī)定封裝與解封數據的相應規(guī)則,因此每層數據報文均為協(xié)議通信產生的實例.由于5層協(xié)議體系結構中物理層、數據鏈路層、網絡層、傳輸層屬于互聯網基礎設施建設,其遵循的協(xié)議由一套完整的RFC規(guī)定來保證全世界的互通,所以私有協(xié)議逆向技術主要面向應用層協(xié)議,基于網絡流量的私有協(xié)議逆向技術所使用的實例即為協(xié)議數據單元(protocol data unit, PDU).協(xié)議逆向技術的目標是根據某協(xié)議的PDU集合推斷得到協(xié)議規(guī)范,本文提出包含預推理、協(xié)議格式推斷、語義分析、協(xié)議狀態(tài)機推理4個步驟的基于網絡流量的私有協(xié)議逆向技術框架,如圖1所示.同時從研究方法的本質出發(fā)對上述4個步驟的相關工作進行梳理、分類,組織結構如圖2所示.
常規(guī)而言,由于網絡傳輸的復雜環(huán)境,使用采集工具獲取到的數據均是混雜的、不完全純凈的,這就使得基于網絡流量的分析均需要對直接獲取的流量進行預處理:分流、去重傳、會話重組等,從混雜的流量中獲取目標協(xié)議的網絡流量.因此,基于網絡流量的私有協(xié)議逆向技術輸入的是一批經過預處理的單一某協(xié)議流量.
近些年來隱私保護、安全需求受到大眾的關注,TLS/SSL,SSH,QUIC等加密協(xié)議相繼出現并廣泛應用于各種通信領域,導致互聯網上的加密流量激增[29].由于加密算法的特性,報文序列被加密為無規(guī)律的高熵序列,具有較高的離散程度,導致其無法直接分析.但加密協(xié)議報文中存在的未加密字段依然可以挖掘一些規(guī)律,因此基于網絡流量的私有協(xié)議逆向技術面向的是未加密或非全加密協(xié)議的網絡流量.
網絡協(xié)議保證通信雙方傳輸數據的準確性,因此一個協(xié)議的制定包含許多約束與規(guī)則,如連接的建立、傳輸參數的設置、數據交換等,不同約束與規(guī)則對應不同的報文格式與協(xié)議狀態(tài),即若要得到準確的協(xié)議格式與交互模型,就需要更加完整、更加全面的協(xié)議流量.因此,基于網絡流量的私有協(xié)議逆向技術要求網絡流量包含協(xié)議交互的各種報文格式,要有更加完整的交互.
綜上所述,基于網絡流量的私有協(xié)議逆向技術的分析對象具有3個特點:1)單一某協(xié)議的經過預處理的網絡流量;2)未加密或非全加密協(xié)議的網絡流量;3)包含全面協(xié)議交互的各種報文、行為的網絡流量.
預推理是私有協(xié)議逆向技術必不可少的前置步驟,其立足于協(xié)議流量分析協(xié)議的固有屬性,為協(xié)議逆向的后續(xù)分析提供基礎知識.預推理的主要任務是:1)協(xié)議類型判斷;2)協(xié)議報文聚類;3)協(xié)議報文分段.
協(xié)議類型由協(xié)議流量報文構成決定,5層協(xié)議體系結構的各層PDU構成有3種形式:1)二進制形式,即協(xié)議報文由連續(xù)比特構成,且固定長度比特組合的值即為該固定位置上的取值,具有一定語義,例如TCP,SMB協(xié)議等;2)文本形式,即協(xié)議報文由連續(xù)可讀的ASCII碼構成,特殊字符串具有特殊的語義,例如HTTP,SMTP協(xié)議等;3)混合形式,即協(xié)議報文使用可讀ASCII碼標識協(xié)議中的具有語義的字段,使用連續(xù)比特標識該協(xié)議關鍵詞的取值,例如直播應用常使用的應用層協(xié)議HTTP-FLV、微信文件傳輸協(xié)議等.因此,基于報文構成協(xié)議也可以分為3種類型:1)二進制類協(xié)議;2)文本類協(xié)議;3)混合型協(xié)議.
Fig.1 Architecture of private protocol reverse engineering based on network traffic圖1 基于網絡流量的私有協(xié)議逆向技術框架
Fig.2 Classification structure of private protocol reverse engineering based on network traffic圖2 現有基于網絡流量的私有協(xié)議逆向技術分類結構
由于報文構成的特殊性,協(xié)議逆向技術在初期就需要明確被分析協(xié)議的類型,針對性地使用不同的方法,因此協(xié)議類型的判斷為后續(xù)的分析方法奠定了基調.目前學術界僅通過報文的構成字節(jié)是否是可讀ASCII碼來自動化判斷或在協(xié)議類型已知的先驗知識下開展協(xié)議逆向技術的研究,因此本文僅對協(xié)議報文聚類與協(xié)議報文分段2方面的現有研究進行詳細介紹.
高吞吐量的互聯網主干流量具有極其復雜的混淆性,多種應用層協(xié)議報文混雜在一段流量中,且每種協(xié)議又包含多種協(xié)議格式.但一般情況下,所屬同一協(xié)議的報文具有相同的類型且格式上具有一定的相似性,因此可以衡量協(xié)議報文間的相似度,實現協(xié)議報文的相似性聚類.具體協(xié)議報文聚類方法可以分為2類:一類面向協(xié)議格式,另一類則面向協(xié)議種類.由此對應產生不同的聚類簇:1)不同協(xié)議格式的聚類簇,用來推斷協(xié)議格式,直接保證格式推斷的準確性;2)不同協(xié)議種類的聚類簇,用來對未知協(xié)議混雜流量進行初分類,使每個聚類簇內包含的報文盡量同屬一種協(xié)議,保證協(xié)議逆向技術輸入的協(xié)議種類單一性.
協(xié)議報文聚類不但需要采用合適的方法度量協(xié)議報文之間的相似度,還需要相應的聚類算法或直接推斷協(xié)議報文的標識性字段,將標記為同類的報文劃分為一個類簇.大多協(xié)議逆向技術均采用常規(guī)的聚類算法進行聚類,如最近鄰聚類算法[30]、非加權組平均法[31](unweighted pair-group method with arithmetic means, UPGMA)、圍繞中心劃分(partitioning around medoids, PAM)算法[32]、DBSCAN(density-based spatial clustering of applications with noise)算法[33]、近鄰傳播(affinity propagation, AP)算法[34]等.
結合常規(guī)聚類算法,研究人員重點關注采用不同方式度量協(xié)議報文間的相似度來實現面向協(xié)議格式的報文聚類.Shevertalov等人[35]在提出的協(xié)議狀態(tài)機推理方法PEXT中使用最長公共子序列(longest common sub-sequence, LCSS)長度標準化度量協(xié)議報文間的相似度并采用凝聚層次聚類算法進行聚類.之后,Ji等人[25]將文獻[35]所提方法應用到無人機無線控制協(xié)議逆向分析中.Bossert等人[36]提出基于語義信息的協(xié)議報文聚類算法.在收集到協(xié)議會話相關語義信息的基礎上,采用3層聚類方法:首先結合報文時間戳與流向,以語義信息作為先驗知識將協(xié)議會話劃分為不同動作的報文類簇;之后將具有相同上下文語義信息的協(xié)議報文再聚類,并為每個協(xié)議報文生成一個上下文簽名標記序列;最后采用擴展的序列比對算法計算報文間的語義相似度,生成相似度矩陣,并對UPGMA進行同樣的優(yōu)化使其考慮語義信息以完成對不同格式協(xié)議報文的最終聚類.Luo等人[37]對前人提出的協(xié)議關鍵詞提取方法進行改進,在此基礎上提出一種報文類型感知的協(xié)議報文聚類方法.該方法首先在N-gram分段的基礎上采用TFIDF(term frequency-inverse document frequency)算法過濾不重要的候選協(xié)議字段,接著采用候選協(xié)議字段的概率分布信息來描述協(xié)議報文的類型分布,最后基于上述分布計算協(xié)議報文間的相似度矩陣,并采用UPGMA對協(xié)議報文進行聚類.Li等人[38]把模糊理論引入協(xié)議報文聚類,提出一種基于粗糙集理論的協(xié)議報文聚類方法.該方法使用ProWord方法[39]產生的連續(xù)多個分段點位置作為粗糙集中的屬性集,之后基于粗糙集理論以及屬性集和協(xié)議格式間的映射關系對不同格式的協(xié)議報文進行聚類,即使用分段位置衡量協(xié)議報文間的相似度,直接對協(xié)議報文集合聚類劃分.
部分研究人員針對不同協(xié)議種類的報文進行研究,以合適的粒度度量未知協(xié)議報文間相似度,實現面向協(xié)議種類的報文聚類,應用于多種類協(xié)議混雜的 情 況.Sun等 人[40]引 入 ABNF(augmented Backus-Naur form)規(guī)則來計算候選協(xié)議字段間距離(token format distance, TFD),將協(xié)議報文以字節(jié)為單位劃分為候選協(xié)議字段,并根據ABNF為每個候選協(xié)議字段定義一組屬性,結合Jaccard指數來計算TFD.之后在TFD的基礎上結合編輯距離對序列比對算法進行改進:基于報文頭部前20個字節(jié)來計算協(xié)議報文間 距 離(message format distance, MFD ).最 后 基 于MFD相似度矩陣,采用DBSCAN算法對混雜協(xié)議流量進行聚類,使用輪廓系數與鄧恩指數協(xié)助聚類過程中的參數選擇,生成不同種類的協(xié)議報文聚類簇.
網絡中傳輸的報文是一組長度不定的連續(xù)比特,其經由各層協(xié)議逐層解析,理解比特組合含義,這就要求協(xié)議規(guī)范中必須明確規(guī)定字段分段點,將任意相鄰分段點間的比特組合理解為協(xié)議規(guī)定的值.由此協(xié)議報文分段就是確定報文序列分段點的過程,其與自然語言處理里的分詞(tokenization)具有相似的目標.因此自然語言處理的傳統(tǒng)分詞方法同樣被引入了協(xié)議報文分段中,主要包括:N-gram分詞算法與基于分隔符的分詞.
除此之外,研究人員也在積極探索協(xié)議報文結構,考究協(xié)議關鍵詞的特點,提出創(chuàng)新性協(xié)議報文分段方法,主要可以分為3類:基于信息論投票的報文分段、基于決策模型的報文分段與基于比特結構的報文分段.
由于協(xié)議報文的分段點是確定的,具有較低的隨機性,因此部分研究將信息熵理論引入協(xié)議報文分段算法,以實現報文分段點的提取.Zhang等人[39]在提出的協(xié)議關鍵詞提取方法ProWord中將無監(jiān)督專家投票算法應用于流量分析.該方法以字節(jié)為單位,引入詞內熵與詞邊界熵的概念作為專家值,結合專家投票算法對滑動窗口中報文序列的每個位置進行投票,最后選擇投票值序列的極大值點與超過設定閾值的位置點作為協(xié)議報文的分段點.基于同樣的思想,Sun等人[41]引入統(tǒng)計信息,亦從信息論的角度提出協(xié)議報文分段算法ProSeg.該算法以字節(jié)為單位計算單字節(jié)信息熵與相鄰2個字節(jié)間的互信息,結合協(xié)議關鍵詞的字節(jié)信息熵規(guī)律,采用專家投票算法以信息熵和互信息為專家值確定協(xié)議報文的分段點.Jiang等人[42]提出一種基于鄰域信息的協(xié)議報文分段點提取算法ABInfer,提出新穎的實體距離(entry distance)來度量相鄰2個字節(jié)間距離,其本質是計算單字節(jié)位字符集合的熵值,之后采用最近鄰聚類算法迭代將相鄰字節(jié)進行聚類合并,最終推斷得到協(xié)議字段邊界.
協(xié)議報文分段點的確定過程可以理解為在報文字節(jié)序列中字段邊界的決策問題,因此部分研究考慮到學術界方法的積累,將一些常用模型引入協(xié)議報文分段中,以實現報文分段點的提取.黎敏等人[43]將 隱 半 馬 爾 可 夫 模 型(hidden semi-Markov models,HsMM)[44]引入協(xié)議逆向分析,提出抗噪二進制協(xié)議報文最佳分段方法.該方法使用HsMM模型對協(xié)議報文進行建模,將候選協(xié)議字段作為與隱狀態(tài)相關的觀察狀態(tài),將字段長度作為隱狀態(tài)的持續(xù)時間,因此協(xié)議報文的分段問題就轉化為求解HsMM模型最大似然概率的隱狀態(tài)序列問題.之后采用Baum-Welch方法對參數進行迭代估計以完善HsMM模型,并采用Viterbi算法推斷得到有最大似然概率估計的隱狀態(tài)序列與具有最佳隱狀態(tài)持續(xù)時間的各候選協(xié)議字段長度,從而獲得最佳協(xié)議報文分段點.Tao等人[45]將貝葉斯決策模型引入協(xié)議逆向分析,提出針對二進制協(xié)議的報文分段方法PRE-Bin.在采用輪廓系數指導的K-means聚類基礎上結合UPGMA算法獲得最優(yōu)數量的協(xié)議報文聚類簇,在類簇內采用基于比特的優(yōu)化序列比對算法,重新設計匹配過程與回溯規(guī)則,得到包含表示字段邊界特征的空格的匹配序列.最后根據局部性原理與最大后驗概率提出2個準則,并基于貝葉斯決策完成空格是否是最合適協(xié)議報文分段點的估計.Luo等人[46-47]將報文分段問題考慮為時間序列的突變點檢測問題,突變點標識時間序列中一段時間的凸起與報文分段點標識字節(jié)序列的結束具有一定的相似性.該方法將協(xié)議報文序列假設為q階馬爾可夫過程以計算前綴條件概率與報文倒置后的后綴條件概率,結合協(xié)議報文分段點未知的特性,使用極大極小形式表示突變點檢測問題.之后提出多累積和算法(multi-CUSUM)實現協(xié)議報文分段點檢測.
協(xié)議報文由比特序列構成,比特間關系反映報文的結構信息,因此部分研究以比特為粒度,挖掘比特間的表征關系,以實現報文分段點的提取.Kleber等人[48]重點關注協(xié)議報文的內部結構,提出一種新穎的報文分段方法NEMESYS.該方法定義字節(jié)間的位一致性 (bit congruence, BC),即相鄰 2 個字節(jié)間同位取值相同的個數與字節(jié)長度的比值,因此遍歷報文序列任意相鄰字節(jié)均可計算BC并生成位一致性值序列.在此序列基礎上,任意2個連續(xù)值可得到位一致性差值,由此可將報文序列基于BC轉換為位一致性差值向量,該向量僅由報文字節(jié)組成決定,文中稱之為報文的內部結構特征.之后采用標準高斯濾波器對位一致性差值向量進行平滑操作消除噪聲,報文分段點則由平滑后差值向量的上升邊緣拐點來決定.如果平滑差值向量在某一區(qū)間內存在多個上升邊,則選擇對應未平滑差值向量區(qū)間內較為陡峭的上升邊緣作為報文分段點.同樣,Marchetti等人[49]針對汽車控制區(qū)域網絡(controller area network, CAN)中的汽車通信數據幀進行分析,提出一種基于位變化率的汽車通信數據幀分段方法READ.該方法在通過ID字段進行聚類的汽車通信數據幀聚類簇上,引入位翻轉速率的概念,通過時序上相鄰的2個報文計算任意位的累計翻轉(bit-Flip)次數序列,之后對上述序列按位除以數據負載長度并取對數得到幅度序列.最后通過以下階段篩選協(xié)議報文分段點:首先篩選幅度序列的極大值點作為初報文分段點;之后考慮計數器以及CRC字段的幅度序列與位翻轉頻率特征,擴充報文分段點.
綜上所述,預推理的協(xié)議報文聚類與協(xié)議報文分段2方面研究分別面向協(xié)議格式推斷與協(xié)議關鍵詞提取.協(xié)議報文聚類盡最大可能將相似格式報文或相似類型協(xié)議報文聚到同一類簇內,以提高協(xié)議格式推斷的準確度.協(xié)議報文分段盡最大可能選取最合適的報文分段點,將報文序列劃分為更小的子序列,以減少冗余字段對協(xié)議關鍵詞提取的影響.但協(xié)議報文分段中可以使用協(xié)議報文聚類簇計算熵值信息,協(xié)議報文聚類中亦可使用協(xié)議報文分段點來計算報文間的相似度,因此預處理這2方面研究內容相輔相成,共同為后期推斷提供精確的信息.表1和表2分類概述了預推理部分相關研究的主要內容,包括面向協(xié)議類型、方法內核與對比分析等.表1、表2中忽略了常用的協(xié)議報文聚類算法與協(xié)議報文分段算法,重點對比分析創(chuàng)新性研究.可以看出,協(xié)議報文聚類重點關注報文間相似度度量,采用不同的相似度計算方法就會產生不同的結果.協(xié)議報文分段重點關注二進制協(xié)議報文的分段,因為二進制協(xié)議目前廣泛使用,尤其是在惡意網絡、軍事網絡、物聯網絡協(xié)議中,且二進制協(xié)議報文分段具有一定的挑戰(zhàn)性,無法通過報文數據人為分段,因此二進制協(xié)議報文分段可以很大程度上提高協(xié)議逆向技術的自動化程度,具有較高的研究價值.
協(xié)議格式推斷是私有協(xié)議逆向技術的核心步驟,其在協(xié)議預推理的基礎上實現協(xié)議逆向技術的階段性目標:協(xié)議格式集合.
Table 1 Summary of Protocol Packets Clustering表1 協(xié)議報文聚類方法概述
Table 2 Summary of Protocol Packets Segmentation表2 協(xié)議報文分段方法概述
對協(xié)議報文集合進行報文分段,從各候選協(xié)議字段中篩選得到協(xié)議關鍵詞或直接采用序列比對方法將協(xié)議報文的公共對齊字段篩選為協(xié)議關鍵詞,并描述協(xié)議關鍵詞的屬性.因此協(xié)議格式推斷的第1個任務就是篩選協(xié)議關鍵詞并推斷其固有屬性.在協(xié)議逆向技術中,協(xié)議關鍵詞被定義為具有特殊語義且不可再分割的原子比特序列,每個協(xié)議關鍵詞遵循協(xié)議規(guī)范定義的屬性:位置、長度、數據類型等,數據類型可以用其值域來描述,可能是數值型、ASCII碼或枚舉列表(枚舉列表是由協(xié)議規(guī)范預設的,即該協(xié)議關鍵詞每次只能選擇預設值中的一個出現在報文中).但由于協(xié)議報文的復雜性與報文分段的不準確性,導致協(xié)議關鍵詞提取過程必然存在一定的冗余,尤其是文本類協(xié)議,存在大量無意義的字符串對協(xié)議關鍵詞提取造成影響,因此如何準確刪除這些冗余字段是本任務的研究重點.
協(xié)議報文由上述各個協(xié)議關鍵詞構成,協(xié)議功能的復雜性要求協(xié)議報文具有一定的多樣性,因此協(xié)議格式推斷的第2個任務是推斷協(xié)議關鍵詞之間的關系,之后第3個任務便是通過實例報文將協(xié)議關鍵詞間關系進行組合,得到復雜的協(xié)議格式.協(xié)議關鍵詞根據其位置不同存在次序、并列、互斥與層級等結構關系.次序關系即部分協(xié)議關鍵詞總是按順序位置且同時出現在報文中;并列關系即部分協(xié)議關鍵詞的位置不固定,其前后順序并不影響協(xié)議處理的結果,此種關系多出現在文本類協(xié)議中;互斥關系即部分協(xié)議關鍵詞在同一位置上不同時出現但總出現其中一個;層級關系即部分協(xié)議關鍵詞可構成復合字段,該復合字段可作為具有特殊語義的高層協(xié)議關鍵詞.多種復雜關系的組合構成了具有不同功能的協(xié)議報文,但協(xié)議關鍵詞間的關系亦存在回路、重復等冗余,因此如何準確描述協(xié)議關鍵詞間關系并將其合并為復雜關系組合,構成協(xié)議格式是本任務的研究重點.
為完成上述任務,研究人員開拓思路,實時跟進學術界最新理論,將序列比對、概率統(tǒng)計、頻繁項挖掘以及深度學習引入協(xié)議格式推斷中,因此協(xié)議格式推斷可以相應劃分為基于上述4種理論核心的推斷方法.
序列比對是生物信息領域一個古老的課題,最早用來計算核酸序列之間的相似性,通過對齊每一位核酸確定序列間的差異量.由于構成報文的字節(jié)序列與核酸序列之間具有一定的相似性,因此序列比對算法被引入私有協(xié)議逆向分析中,其中最常用的2種序列比對算法為全局序列比對Needleman-Wunsch(NW)算法[50]和局部序列比對Smith-Waterman(SW)算法[51],均通過在合適的位置插入空格來將2個序列對齊到同樣的長度,通過得分函數定義匹配、不匹配或插入空格的獎懲分數生成得分矩陣,并通過回溯得到2個序列的公共對齊序列,將序列相似度數字化以直觀表示.NW算法保證找到序列間的全局最優(yōu)對齊序列,而SW算法確定序列間的最長公共子序列,因此就要求采用NW算法的2個序列必須具有高度相似性,而SW算法允許將相似的一組序列聚在一起以供后續(xù)分析.NW算法更適合用來推斷協(xié)議格式,而SW算法更適合用來計算報文相似度度量.
Beddoe[52]提出 PI(protocol informatics)方法,利用序列比對算法實現私有協(xié)議逆向分析.該方法首先采用SW算法根據上下文信息計算協(xié)議報文間的相似性矩陣,之后結合非加權組平均法UPGMA與NW算法將矩陣中相似度最高的2個報文進行序列對齊,并將對齊后的序列添加至相似性矩陣中并更新計算相似度,最終得到完整的協(xié)議公共報文序列,即協(xié)議格式.Gorbunov等人[53]在提出的AutoFuzz可擴展協(xié)議模糊測試框架中,同樣采用NW算法將報文序列進行對齊,只不過其首先采用報文頭部4個字節(jié)對協(xié)議報文進行聚類,在各個類簇內使用了NW算法得到公共報文序列,生成協(xié)議格式.之后Razo等人[54]將PI方法應用于Android應用流量上,成功識別5個固定不變的協(xié)議關鍵詞與2個動態(tài)變化字段.而Ji等人[25]則將PI方法應用到無人機無線控制協(xié)議逆向分析中,推斷無人機控制協(xié)議的報文格式.更有Zhang等人[55]考慮協(xié)議分析的實時性,提出一種增量式協(xié)議格式逆向分析方法IPFRA,其主要也使用PI方法在初步得到的協(xié)議格式上近實時地增量推斷更加完善的協(xié)議格式.
基于序列比對的思想,部分研究制定新的匹配規(guī)則與得分函數,主要考慮基于字節(jié)的序列比對算法會造成誤對齊的現象以及不匹配字段間可能具有一定的相似度,從2個方面對NW算法進行改進、推斷協(xié)議格式.部分研究重點解決基于字節(jié)的序列比對造成的誤對齊問題,Cui等人[56]在RolePlayer方法中使用序列比對算法對報文序列進行對齊以查找協(xié)議中的動態(tài)可變字段,并在Discoverer方法[57]中對序列比對算法進行改進,提出了一種基于字段類型的序列比對算法.Discoverer將序列對齊粒度轉化為token,將協(xié)議報文轉化為由text,binary這2類token組成的序列并劃分為不同的報文簇.采用規(guī)則分析token的屬性與類型,并制定3條規(guī)則篩選FD(field distinguisher)字段,之后依據FD字段將報文類簇遞歸聚類為多個子報文簇,采用基于token類型的NW算法將同類序列進行對齊:若存在同一位置上token具有相似的屬性和類型且滿足固定約束,則判斷為token匹配,以推斷協(xié)議格式.同樣,Esoul等人[58]將基于段的序列比對算法引入協(xié)議格式推斷.在使用TF-IDF算法標準化候選協(xié)議字段分布的基礎上,對協(xié)議報文進行基于全鏈(complete-link)原則的凝聚層次聚類;之后在聚類簇內采用DIALIGN 2多序列比對算法[59]對協(xié)議報文序列對齊;最后引入位置權值矩陣,并設定閾值提取協(xié)議報文公共對齊序列,推斷協(xié)議格式.
協(xié)議報文固定位置的字段取值雖然不同,但存在一定的規(guī)律,因此部分研究重點關注字段在對齊時是否具有可推斷的關系,改進匹配得分函數,提高對不匹配字段的寬容度,推斷更加合理的協(xié)議格式.Bossert等人[36]提出基于語義信息的協(xié)議格式推斷與協(xié)議關鍵詞關系挖掘方法Netzob,此處的語義信息具體指的是與協(xié)議會話相關的環(huán)境信息,例如協(xié)議標識、IP地址、主機地址等.Netzob在語義信息與上下文數據對協(xié)議報文聚類的基礎上,對NW算法進行擴展:改進NW算法的得分函數使其對語義敏感,引入語義匹配與不匹配參數以生成NW算法的對齊矩陣,使協(xié)議報文基于語義信息完成對齊;在合并階段采用優(yōu)化的UPGMA,定義合并質量函數計算不同的得分以實現在固定閾值下的迭代合并過程,得到由語義信息標識的協(xié)議格式;最后Netzob還對協(xié)議關鍵詞間的關系進行挖掘,利用協(xié)議關鍵詞的長度、偏移與取值等,采用最大信息系數(maximal information coefficient, MIC)與 Pearson 系數計算其是否線性相關,以表示字段間的依賴關系.Meng等人[60]則針對二進制協(xié)議提出了一種層次聚類與概率對齊相結合的協(xié)議格式推斷方法.首先采用PRE-Bin方法[45]中的聚類方式對協(xié)議報文進行聚類,在此基礎上引入基于Pair-HMM的多序列比對算法.該算法采用期望精度來衡量序列間的相似性,對NW算法進行改進,對齊時空格的懲罰分數設置為0,匹配與不匹配的得分由后驗概率給出.之后根據各種數據的統(tǒng)計特點,如變化率、均值等,將相鄰的字段分開并重組以推斷協(xié)議格式.Kleber等人[61]創(chuàng)新性地考慮候選協(xié)議字段間的不相似性,對前期的語義分析工作[62]進行擴展,提出一種二進制協(xié)議逆向方法NEMETYL.該方法考慮到候選協(xié)議字段長度并不相同,便通過將高維向量嵌入低維空間中來實現將Canberra距離的概念推廣到不同長度的向量,從而計算得到候選協(xié)議字段間的Canberra不相似矩陣;之后對NW算法進行改進,即計算得分矩陣時考慮候選協(xié)議字段間的不相似性,結合Hirschberg對齊算法生成協(xié)議報文間的不相似性矩陣;最后在DBSCAN算法對協(xié)議報文聚類的基礎上,選擇聚類簇內與其余報文均具有最低不相似性的報文作為中心,迭代式將其余報文與中心報文對齊合并,推斷得到協(xié)議格式.
在協(xié)議逆向分析中,如果候選協(xié)議字段經常出現在協(xié)議報文中,那么其作為協(xié)議關鍵詞的概率就越高,因此概率統(tǒng)計經常被用來協(xié)助協(xié)議逆向分析的決策.同時結合協(xié)議報文的特性,部分概率統(tǒng)計模型也常被用來對協(xié)議格式進行建模,從中推斷協(xié)議格式.
由于協(xié)議頭部數據往往包含更多協(xié)議相關信息,對協(xié)議標識有很大作用,因此部分研究重點關注協(xié)議頭部報文格式.Wang等人[63]在提出的狀態(tài)機推理方法Veritas中,采用常規(guī)概率統(tǒng)計的方式推斷協(xié)議格式,為協(xié)議狀態(tài)機推理提供基礎.其采用K-S(Kolmogorov-Smirnov)統(tǒng)計檢驗方法從N-gram算法生成的候選協(xié)議字段集合中篩選協(xié)議關鍵詞,并采用最大化原則,盡可能長地將報文頭部使用協(xié)議關鍵詞進行重構,最終推斷協(xié)議頭部報文格式.同時,Wang等人[64]還提出二進制協(xié)議頭部報文格式推斷算法Biprominer,并創(chuàng)新地以狀態(tài)轉移概率圖進行描述.該算法從高頻出現的單字節(jié)出發(fā),逐步擴展到滿足閾值長度的字節(jié)序列cells,并將協(xié)議報文頭部數據標記為cells序列;之后將相對位置一致的cells作為一個類簇,提取類簇內相同的字節(jié)序列作為狀態(tài),計算狀態(tài)間的轉移概率,從而以狀態(tài)轉移概率圖的形式描述協(xié)議頭部報文格式.
協(xié)議報文使用協(xié)議關鍵詞標識報文類型與參數傳遞,協(xié)議關鍵詞亦為協(xié)議格式的組成部分,因此部分研究重點關注協(xié)議關鍵詞的提取.協(xié)議關鍵詞通常從候選協(xié)議字段中產生,那么協(xié)議關鍵詞的提取必然伴隨著協(xié)議報文分段算法的研究.Zhang等人[39]將信息熵理論引入協(xié)議報文分段,提出基于專家投票的無監(jiān)督協(xié)議報文分段算法,并在此基礎上提出協(xié)議關鍵詞提取方法ProWord.該方法在候選協(xié)議字段集合上提出了一種結合多維屬性的候選協(xié)議字段啟發(fā)式排序算法,考慮每個候選協(xié)議字段的頻率、位置以及長度,定義了一個得分函數以對多維屬性進行統(tǒng)一度量,建立一個有序結構.最后篩選得分top-K的候選協(xié)議字段作為協(xié)議關鍵詞,并考慮協(xié)議關鍵詞間的冗余性,結合公共子串算法與起始位置進行冗余過濾,得到最終的協(xié)議關鍵詞.Wang等人[65]在針對工業(yè)協(xié)議提出的逆向分析方法IPART中對ProWord中的協(xié)議報文分段算法進行改進,對候選報文分段點采用了一種重新定位方法,并篩選固定閾值長度的候選協(xié)議字段作為協(xié)議關鍵詞.Luo等人[46-47]在基于時間序列的突變點檢測算法對協(xié)議報文分段的基礎上,首先通過統(tǒng)計分析的方式對出現概率極低的字段進行過濾,之后結合協(xié)議關鍵詞的4種位置信息,提出基于最小描述長度的MDL-PTA(minimal description length-position test analysis)算法,實現基于協(xié)議關鍵詞位置的統(tǒng)計分析方法,提取協(xié)議關鍵詞.之后文獻[46?47]還對協(xié)議關鍵詞進行細化,推斷了部分語義,并將該方法應用于物聯網 (Internet of things,IoT)設備傳輸協(xié)議的脆弱性檢測中.同樣,Ye等人[66]認為協(xié)議關鍵詞可以很大程度上標識協(xié)議報文,基于正確的協(xié)議關鍵詞對協(xié)議報文進行聚類可以得到更加簡潔及準確的協(xié)議格式,并提出NETPLIER方法.提取序列比對算法產生的連續(xù)對齊字段,結合分隔符與長度閾值篩選候選協(xié)議字段;之后根據候選協(xié)議字段的不同取值對協(xié)議報文進行聚類,并定義4個可觀察約束以度量聚類的效果,將聚類結果轉化為直觀可評價的數值,構建候選協(xié)議字段與4個可觀察約束之間的聯合概率分布以實現候選協(xié)議字段與聚類效果的一一對應,即根據聚類的結果評價該候選協(xié)議字段成為協(xié)議關鍵詞的可能性.篩選后驗概率最大的候選協(xié)議字段作為協(xié)議關鍵詞,即選取產生聚類效果最好的候選協(xié)議字段.
除了常規(guī)概率統(tǒng)計方法之外,部分研究使用概率模型對協(xié)議報文進行建模,從而提取協(xié)議關鍵詞或推斷協(xié)議格式.目前被引入私有協(xié)議逆向分析的概率模型有潛在狄利克雷分配(latent Dirichlet allocation,LDA)模型[67]與隱馬爾可夫模型(hidden Markov models,HMM)[68]及其擴展.
LDA模型是自然語言處理中常用的概率模型,用來識別大規(guī)模語料庫中潛在的主題信息,簡單有效.LDA認為語料庫中的所有文檔都是由基本單詞組成,文檔可以包含多個主題,因此文檔可以使用主題的概率分布來形式化描述,主題可以使用基本單詞的概率分布來形式化描述.因此,只要選定類似的語料庫、文檔與基本單詞便可以通過2個概率分布來對實體進行建模,最終推斷得到所需的主題信息.基于網絡流量的私有協(xié)議逆向分析在形式上十分類似于自然語言處理,因此LDA模型的應用具有一定可行性.Wang等人[69]提出的ProDecoder方法基于LDA模型挖掘候選協(xié)議字段間的潛在關系,推斷協(xié)議關鍵詞,最終通過聚類得到協(xié)議格式.該方法使用協(xié)議報文集合作為語料庫,將協(xié)議關鍵詞作為需要推斷的主題,同時還是N-gram候選協(xié)議字段的概率分布.為此需要確定語料庫中每個報文的協(xié)議關鍵詞的概率分布與每個協(xié)議關鍵詞的N-gram候選協(xié)議字段的概率分布.為解決上述問題,ProDecoder結合了一種經典的馬爾可夫鏈蒙特卡羅算法即吉布斯采樣(Gibbs sampling)來有效地找到近似解,從而獲得協(xié)議關鍵詞;之后將協(xié)議報文使用相關的協(xié)議關鍵詞與其概率進行標記,并采用層次聚類方法將報文集聚類為子類,在類簇內采用漸進式NW算法得到協(xié)議格式.同樣,Li等人[70]使用上述基于LDA模型的算法提取協(xié)議關鍵詞,結合基于FP-Growth算法的關聯分析方法挖掘協(xié)議關鍵詞間的關系,但其并沒有進一步推斷協(xié)議格式.
HMM是一種統(tǒng)計分析模型,用來描述一個含有隱狀態(tài)未知參數的馬爾可夫模型,并從已知的觀測狀態(tài)中推斷未知的隱狀態(tài)參數.因此只要選定類似的已知狀態(tài)鏈,即可對實體進行HMM建模,結合算法最優(yōu)化HMM模型以推斷未知參數.協(xié)議會話報文序列與單一報文字節(jié)序列均可類似為HMM模型的觀測狀態(tài)鏈,報文類型與協(xié)議關鍵詞則為對應的觀測狀態(tài),因此將HMM應用至基于網絡流量的協(xié)議逆向技術是可行的.Whalen等人[71]將協(xié)議視為一個隨機過程,協(xié)議報文視為該隨機過程的輸入字符串,協(xié)議以不同概率發(fā)送不同的協(xié)議報文實現信息交互,將HMM引入協(xié)議逆向分析技術中,提出基于協(xié)議會話構建ε-machine來獲得滿足協(xié)議報文結構的HMM模型,并推斷相應的參數.首先采用最小熵聚類算法對協(xié)議報文進行聚類,并使用PI方法[52]發(fā)現報文頭部邊界.在過濾掉高熵數據后,結合協(xié)議報文的時間序列與狀態(tài)分類算法構建最小確定HMM模型εmachine.且該模型的狀態(tài)轉換以圖的形式表示協(xié)議頭部報文格式,并伴生出部分特有信息:信源熵率等.同樣基于隱馬爾可夫模型,Cai等人[72]對黎敏等人提出的基于HsMM的最佳報文分段算法[43]進行優(yōu)化擴展,使用2個矩陣分別代表候選協(xié)議字段和隱狀態(tài)之間的映射關系與候選協(xié)議字段間的位置關系,以完善的HsMM模型表示協(xié)議格式信息,從而得到協(xié)議關鍵詞;之后采用協(xié)議關鍵詞關系衡量協(xié)議報文間的相似度并基于AP聚類算法對協(xié)議報文進行聚類,為后續(xù)協(xié)議狀態(tài)機推斷做準備.同樣,Li等人[73]將HsMM應用到協(xié)議關鍵詞的挖掘中,根據協(xié)議關鍵詞的特性使用統(tǒng)計頻率度量字段成為協(xié)議關鍵詞的可能性,篩選top-K作為協(xié)議關鍵詞的候選集合,最后利用上述HsMM模型與Viterbi算法確定候選協(xié)議字段是否確實是協(xié)議關鍵詞.而He等人[74]將HMM應用于工業(yè)物聯網(industrial Internet of things,IIoT)協(xié)議逆向分析中,以發(fā)現IIoT網絡協(xié)議的漏洞.
頻繁項挖掘是大數據分析領域常用的分析推斷數據間關系的方法,用來挖掘數據集中經常一起出現的信息.頻繁項挖掘算法均需要設定支持度與置信度來衡量信息間關聯規(guī)則的強度.類比到協(xié)議逆向分析中,協(xié)議報文由協(xié)議關鍵詞構成,如果任意多個關鍵詞經常在協(xié)議報文中同時出現且覆蓋較高比例的協(xié)議報文,那么這一組協(xié)議關鍵詞即可構成協(xié)議格式.因此頻繁項挖掘經常用來提取協(xié)議關鍵詞與協(xié)議格式,主要采用的頻繁項挖掘方法有Apriori算法[75]、FP-Growth算法[76]與PrefixSpan算法[77]等.
Apriori算法是經典的數據挖掘算法,其認為頻繁項集的非空子集也一定是頻繁的,因此它的基本思路是采用層次搜索的迭代方式,由候選的(k?1)-項集來挖掘k-項集,并逐一判斷k-項集是否頻繁.部分研究重點對支持度進行創(chuàng)新,提出不同類型的支持度以提高Apriori算法的挖掘精準度.Luo等人[78]基于頻繁項挖掘的思想提出協(xié)議逆向分析方法AutoReEngine.首先定義2個支持度,即會話支持度和特定站點會話支持度,結合約束以迭代自增式生成頻繁項,并量化每個頻繁項的4種位置類型,以位置方差的形式反映其位置變化,由此推斷得到協(xié)議關鍵詞;之后設置面向協(xié)議關鍵詞組的會話支持度以及特定站點會話支持度,采用Apriori算法挖掘得到協(xié)議關鍵詞組集合,并基于此將協(xié)議報文進行聚類.在不同聚類簇中以協(xié)議關鍵詞組為骨架分析其余可變字段的屬性,得到協(xié)議格式.Lee等人[79]對分隔符進行詳細推斷分析,考慮頻率、偏移、熵值等特征對報文進行分段,并采用基于消息、流與服務3種支持度的Apriori算法補充候選協(xié)議字段.
部分研究重點關注對Apriori算法的改進,在改進的基礎上提出相應的算法,以實現協(xié)議逆向分析.Goo等人[80]在Apriori的基礎上提出基于樹形結構的 CSP(contiguous sequence pattern)算法,分層使用最小支持度的概念,以挖掘協(xié)議報文的靜態(tài)字段,并進行了擴展,提出相應的協(xié)議格式推斷方法[81].其根據協(xié)議關鍵詞長度是否固定以及是否可預測定義了4種協(xié)議關鍵詞類型,利用CSP算法挖掘固定長度的可預測靜態(tài)協(xié)議關鍵詞;之后根據設定閾值與統(tǒng)計數據將剩余字段劃分為其他3種類型,即推斷得到的協(xié)議格式均由上述4種類型協(xié)議字段填充,但該協(xié)議格式并不具有代表性,在此不進行贅述.秦中元等人[82]考慮二進制協(xié)議在使用頻繁項挖掘時的長度與篩選問題,對其進行改進來推斷二進制協(xié)議報文格式.首先以半字節(jié)為單位,應用長度為1,2,3,4的4種N-gram算法構造候選協(xié)議字段,并同時記錄候選協(xié)議字段的頻率及位置信息;之后結合支持度閾值與位置熵來挖掘滿足條件的頻繁項,將其作為協(xié)議關鍵詞;最后采用正向最大匹配算法與專家投票算法推斷得到二進制協(xié)議的報文分段點,并基于詞邊界熵信息對報文分段點進一步篩選以推斷正確的協(xié)議格式.
FP-Growth算法構建樹形結構,每個頻繁項均作為樹的結點,并擁有相應的計數與關聯信息;之后在樹上遞歸挖掘出所有頻繁項,并在頻繁項間產生關聯規(guī)則.Li等人[83]采用ProWord方法[39]生成候選協(xié)議字段,規(guī)定候選協(xié)議字段的長度范圍與位置信息熵以進行預篩選;之后在候選協(xié)議字段上采用FP-Growth算法挖掘頻繁項集合,并結合字段間關系過濾噪音,保留最大支持度的頻繁項作為有效的協(xié)議關鍵詞.Lin等人[84]在FP-Growth算法的基礎上,提出CFSM(closed frequent sequences mining)算法來挖掘協(xié)議關鍵詞以及位置信息,并基于這些信息提出CFGM(closed frequent groups mining)算法推斷協(xié)議關鍵詞間的關系.CFGM基于最長公共子序列長度與F-DBSCAN算法對協(xié)議報文進行聚類;之后在類簇內采用N-gram算法生成候選協(xié)議字段,以散列表(Hash table)形式存儲并挖掘協(xié)議關鍵詞;最后基于協(xié)議關鍵詞的位置信息構建樹形結構,反映協(xié)議關鍵詞間的并列、順序以及層次關系,從而推斷協(xié)議格式.
PrefixSpan算法的目標是挖掘滿足最小支持度的頻繁序列模式,與FP-Growth算法的目標稍有不同,但其與Apriori算法類似,從長度為1的前綴開始挖掘序列模式,并搜索數據集合得到長度為1的前綴對應的頻繁序列,之后遞歸挖掘長度為2的前綴對應的頻繁序列,直到滿足長度閾值為止.朱玉娜等人[85]提出一種面向加密協(xié)議的格式解析方法SPFPA,基于頻繁序列挖掘提取加密協(xié)議中具有時序關系的協(xié)議關鍵詞.SPFPA規(guī)定了2種頻繁項:以字節(jié)為單位的固定偏移頻繁單字節(jié)和滿足最小長度閾值的頻繁字節(jié)序列.設定支持度以實現上述頻繁項的提取,并構建包含頻繁項的頻率、偏移、相鄰與關聯等信息的樹形結構.最后采用PrefixSpan算法的思想構建投影庫,在樹上以層次順序挖掘協(xié)議關鍵詞序列,即可得到加密協(xié)議明文區(qū)域的報文格式.
深度學習重點應用于分類領域,因此基于深度學習的協(xié)議格式推斷也類似地將格式推斷轉化為協(xié)議關鍵詞類型的分類問題.先利用已知類型的協(xié)議關鍵詞訓練分類器,之后將協(xié)議報文分段的候選協(xié)議字段輸入,從而得到協(xié)議關鍵詞,并重構協(xié)議格式.
Zhao等人[90]結合工業(yè)控制協(xié)議的特征,將卷積神經網絡引入協(xié)議逆向分析中,考慮協(xié)議會話報文集的時序關系,提出一種基于長短期記憶全卷積神經 網絡 (long short-term memory fully convolutional neural, LSTM-FCN)模型[91]的私有工業(yè)控制協(xié)議的格式推斷算法.首先對大量已知公開工業(yè)控制協(xié)議數據按照規(guī)范進行字段劃分,將5種類型的字段結合數據時序關系生成時序集合,并輸入LSTM-FCN分類模型進行訓練;之后對于私有工業(yè)控制協(xié)議以字節(jié)為單位進行分段,劃分為時序集合,采用訓練好的模型確定上述候選協(xié)議字段的類型.以字節(jié)為單位的劃分必然存在過分段的情況,因此考慮對連續(xù)類型的字節(jié)進行融合得到完整的協(xié)議關鍵詞,最終推斷出私有工業(yè)控制協(xié)議格式.之后Yang等人[92]基于同樣的思想,使用已知6種類型的字段集合訓練LSTMFCN模型.將協(xié)議報文按照0.5B,1B,2B,4B這4種粒度進行劃分;并使用訓練好的模型對所有字節(jié)序列進行分類并記錄分類結果;最后使用區(qū)域劃分算法,考慮字節(jié)序列分類結果的分布集中程度,以標準差來衡量,得到最佳的字節(jié)序列分類結果,推斷未知協(xié)議格式.
綜上所述,協(xié)議格式推斷承接預推理的結果展開進一層次的私有協(xié)議逆向分析,其輸出結果為協(xié)議關鍵詞與協(xié)議報文格式集合,挖掘更多私有協(xié)議規(guī)范.表3分類概述了協(xié)議格式推斷部分相關研究的主要內容,包括面向協(xié)議類型、方法基礎、推斷算法與對比分析等.表3中將采用了相同方法但應用場景不同的研究歸為一類,與其他方法進行對比分析.由表3可知,序列比對算法打開了基于網絡流量的私有協(xié)議逆向技術的大門,之后由于序列比對算法的局限性與自然語言處理的興起,部分概率統(tǒng)計方法逐漸成為研究的熱潮,同時數據挖掘方法的應用亦使得基于網絡流量的私有協(xié)議逆向技術更加完善.
語義分析是私有協(xié)議逆向技術的進階步驟,其主要是為了推斷報文字段(包括協(xié)議關鍵詞與其余字段)或協(xié)議報文的語義信息,從而更好地理解協(xié)議.目前所有的方法均依賴于分析人員的最終解釋,即由分析人員定義語義字段的種類并提出對應的分析方法.因此語義分析的第1個任務是定義報文字段的語義種類,第2個任務是針對不同種類型語義字段提出相應的分析方法.
本文把報文字段的語義信息主要分為4種:1)環(huán)境參數相關語義,其主要指的是與環(huán)境系統(tǒng)相關的一些設置參數,例如端口、地址、結點名、文件名以及時間戳等,這類語義信息可以通過記錄傳輸環(huán)境相關信息,通過報文字段取值對比來進行分析;2)標識性語義,其主要指的是與類型標識相關的一些標識符,例如計數器、報文類型標識符以及會話ID、序列ID等,這類語義信息可以通過對協(xié)議不同格式報文進行對比來加以分析,判斷報文字段取值是否自增或自減、是否在同類報文中保持不變等;3)指示性語義,其主要指的是反映其他字段屬性或整體的報文字段,例如指示其他字段的長度、偏移量、偏移指針以及校驗碼(反映報文整體散列值)等,這類語義信息可以通過在報文字段的次序關系中,挖掘前字段的值是否表示后字段的某一屬性,校驗碼則可以通過嘗試各種散列算法來分析;4)特殊語義,其主要指的是部分協(xié)議特有的報文字段,例如工控協(xié)議的功能代碼字段以及加密協(xié)議的加密字段等,這類語義信息需要提出針對性的方法進行檢測.
Table 3 Summary of Protocol Format Inference表3 協(xié)議格式推斷方法概述
本文將現有語義分析研究方法分為2類:基于字段取值的語義分析以及基于先驗知識模板匹配的語義分析.
基于字段取值的語義分析需要將同一范圍的字段值生成數值集合,通過取值來判斷其所屬語義,同時對部分協(xié)議的特殊語義字段針對性的提出檢測方法.
Cui等人[56]在RolePlayer方法中提出了4種具有語義信息的動態(tài)字段:1)端口、地址;2)長度;3)參數;4)cookie,特定于雙方會話中的不透明數據,例如事務ID.該方法將端口、地址以及參數作為先驗知識利用NW算法,對報文分段對齊,從協(xié)議格式的角度推斷長度、參數2種語義字段.針對cookie,特殊制定了4條規(guī)則(包括前綴、后綴匹配等)進行判斷.之后在提出的Discoverer方法[57]中又增加了2種字段語義:1)偏移量;2)偏移指針;并對RolePlayer方法的語義分析方法從字段取值分析的角度進行擴展:分析字段取值集合與對應后續(xù)報文字段的長度、偏移量的差 異 性.Bermudez等 人[93-94]提 出 的 FieldHunter方法,對基于字段取值的語義分析方法進行完善,針對性地提出6種字段語義與對應檢測方法:1)針對報文類型,結合請求、響應報文字段具有高相關性的特點,采用信息論的方法度量報文字段間的因果關系,引入閾值進行篩選;2)針對報文長度,結合報文長度與字段取值呈線性相關的特點,使用Pearson系數與線性相關方程進行篩選;3)針對主機ID、會話ID,由于主機ID、會話ID均與IP地址強相關,因此計算字段取值與IP地址信息的聯合分布,同樣引入閾值進行篩選;4)針對傳輸ID,使用信息熵來評價字段取值的隨機性,并結合請求、響應報文分析字段一致性,引入最小支持度和最小字段長度進行篩選;5)針對計數器,計算連續(xù)2個協(xié)議報文的字段差值,篩選熵值較低的字段作為計數器語義字段.
之后的基于字段取值的語義分析相關研究也多是基于FieldHunter方法,但部分研究重點關注協(xié)議的特殊語義信息,提出針對性的分析方法.Carli等人[95]針對解密后的惡意軟件流量提出了一種協(xié)議逆向技術,定義了4種字段語義,并針對加密字段采用Shannon熵和N截斷熵檢測報文字段的隨機性.Ladi等人[96]提出一種面向二進制協(xié)議的語義分析方法,定義了7種字段語義,并針對長度前綴字符串、空結尾字符串等采用指針逐字節(jié)進行分析,檢測其是否滿足語義的屬性.Wang等人[65]在提出的IPART方法中定義了工控協(xié)議的4種字段語義.針對功能代碼,提出基于字段范圍內不同數值個數、字段偏移和字段條目,結合自定義公式計算得分,選擇得分最高的字段作為功能代碼語義.張蔚瑤等人[97]在其提出的協(xié)議模糊測試工具UPAFuzz中定義了5種字段語義,并將語義字段分為2類:一類為取值無限的字段,如序列號、文本字段等;另一類為取值有限的字段,如檢驗碼、長度等,針對性地提出循環(huán)對比法來進行推斷.
(2)濃鹽酸易揮發(fā),反應制取的氯氣中含有HCl,裝置B中飽和食鹽水的作用是除去Cl2中的HCl;若裝置C發(fā)生堵塞,裝置B中的壓強會增大,長頸漏斗中液面上升,形成水柱。
基于模板匹配的語義分析方法需要正確的先驗知識生成各類語義字段的統(tǒng)一模板,之后判斷未知語義的報文字段與模板之間的關系,從而確定報文字段的所屬語義.
Ji等人[25]在對無人機私有飛行控制協(xié)議分析時,提出一種分析CRC與奇偶校驗碼字段的方法.該方法采用PI方法[52]提取出協(xié)議的靜態(tài)字段、動態(tài)字段等,考慮到校驗碼字段通常在協(xié)議報文數據末位且沒有明顯趨勢特征進行過濾,并采用一系列邏輯異或公式生成模板,匹配報文字段以篩選出校驗碼語義字段.Kleber等人[62]在準確的已知字段語義信息作為先驗知識的基礎上采用聚類方法分析未知報文字段語義.該方法首先將已知語義信息的字段解釋為字節(jié)值向量,通過Canberra距離定義其不相似性,并使用DBSCAN算法對字段進行聚類;之后在類簇內生成描述該語義信息的數字模板,即已知字段語義信息與數據模板一一對應;最后采用NEMESYS方法[48]對協(xié)議報文進行分段,并計算報文字段與數據模板的馬氏距離(Mahalanobis distance)來確定其所屬語義信息.文獻[62]分析得到數據模板的語義字段類型包括:1)檢驗碼;2)浮點型數據;3)ID;4)IPv4地址;5)時間戳等.Wang等人[98]重點關注工業(yè)控制協(xié)議逆向分析,在提出的MSERA方法中定義了7種字段語義:1)協(xié)議標識符;2)長度;3)序列號;4)CRC校驗碼;5)時間戳;6)功能代碼;7)站點標識符,即客戶端和服務器的身份標識字段.之后根據上述7個語義字段的取值特征以及位置特征生成特征模板,利用啟發(fā)式方法進行字段語義的識別,并將識別的字段進行標記.然后采用基于報文長度的DBSCAN聚類算法進行聚類,并利用NW算法對齊以篩選出報文分段點,最后在動態(tài)字段上迭代挖掘上次未識別出的字段語義:協(xié)議標識符、長度等,同時對于字節(jié)取值為空的特殊情況進行了考慮.
綜上所述,語義分析重點承接協(xié)議格式推斷中的協(xié)議關鍵詞提取的結果,賦予報文字段更多屬性,并作為協(xié)議狀態(tài)機推理的基礎.同時方便分析人員構造更完整的協(xié)議報文,以實現對協(xié)議交互的測試.語義類型由人為定義,因此語義分析結果均由分析人員進行解釋.表4分類概述了語義分析部分相關研究的主要內容,包括各個研究工作中定義的4種字段語義與對比分析.由表4可知,語義分析采用的方法主要是基于字段取值分析,同時針對普通語義以及部分協(xié)議的特殊語義進行分析,或基于已知語義字段生成匹配規(guī)則,從而實現對未知字段語義類型的判斷.
Table 4 Summary of Semantic Analysis表4 語義分析方法概述
協(xié)議狀態(tài)機推理是私有協(xié)議逆向技術的升華步驟,其在協(xié)議逆向前3個步驟的基礎上,匯總所有已知信息、分析結果推理協(xié)議逆向技術的最終目標:協(xié)議狀態(tài)機.
協(xié)議狀態(tài)機是協(xié)議狀態(tài)之間轉換的數學模型,本文將協(xié)議狀態(tài)定義為在接受特定事件(收到特定類型報文)或執(zhí)行相應動作(發(fā)送特定類型報文)時的狀態(tài).狀態(tài)轉換就是協(xié)議在執(zhí)行上述操作后從一個狀態(tài)轉換為下一個狀態(tài)的過程,即不同類型的協(xié)議報文是影響協(xié)議狀態(tài)轉換的主要因素.可以使用一個三元組來表示:M=(S, P, δ),其中S表示協(xié)議的有限狀態(tài)集合,包括協(xié)議的初始狀態(tài)與結束狀態(tài),P表示不同類型的報文集合,δ表示狀態(tài)轉移函數,其接受不同類型的報文實現狀態(tài)的轉換.報文是引起協(xié)議狀態(tài)轉換的主要條件,而不是狀態(tài)本身.因此協(xié)議狀態(tài)機推理的第1個任務就是篩選出不同類型的協(xié)議報文,并基于此完成第2個任務,即上述協(xié)議狀態(tài)機的構建.如果使用圖來描述協(xié)議狀態(tài)機的話,那么結點即為協(xié)議的不同狀態(tài),相鄰結點之間的邊即為不同類型的報文引起的狀態(tài)轉換.
建立一個完備的協(xié)議狀態(tài)機,需要協(xié)議交互時各種情況存在的會話報文序列以詳盡地推斷完整的狀態(tài)轉換,構建的狀態(tài)機也十分龐大,必然存在狀態(tài)冗余的情況.因此協(xié)議狀態(tài)機推理的第3個任務就是協(xié)議狀態(tài)機的簡化.需要推理狀態(tài)間存在的潛在循環(huán),挖掘初始狀態(tài)的唯一性、狀態(tài)間轉換的次序性以及狀態(tài)接受報文類型的多樣性,將狀態(tài)間的轉換(邊)或狀態(tài)(結點)進行合并化簡,但需要遵循狀態(tài)機的每一條從初始狀態(tài)出發(fā)到結束狀態(tài)的路徑均為協(xié)議一次完整的會話.
由于方法的獨立性,現有研究中均會提出一套完整的協(xié)議狀態(tài)機推理方案,其中必然包括前3個步驟的推斷方法,具有一定的共通性,因此本節(jié)會對其進行簡要概述,并將重點放在狀態(tài)機構建與狀態(tài)機簡化上.
協(xié)議交互報文是協(xié)議狀態(tài)轉換的引發(fā)條件,因此常規(guī)協(xié)議交互式是協(xié)議狀態(tài)機推理的最基本方法,部分研究根據全部協(xié)議會話進行狀態(tài)機推理,之后制定規(guī)則對協(xié)議狀態(tài)機進行簡化.
Leita等人[17]為了自動化生成蜜罐腳本,提出了名為ScriptGen的方法,針對蜜罐專有協(xié)議的網絡流量進行分析,并生成蜜罐腳本部署在現網中以便分析人員測試未知的協(xié)議.ScriptGen是第一個基于報文交互流量生成協(xié)議狀態(tài)機的工具,設定協(xié)議狀態(tài)的最大出度閾值與最大狀態(tài)數閾值控制協(xié)議狀態(tài)機的上限結構,以迭代方式逐個添加所有協(xié)議會話來構建協(xié)議狀態(tài)機.之后采用PI方法[52]判斷2個報文是否語義上相似,并以不同字節(jié)的個數作為報文間距離進行聚類(宏聚類);在宏聚類的基礎上,提出區(qū)域分析算法以不同區(qū)域的異變性作為距離再一次進行聚類(微聚類).最后根據聚類后的結果將相似類簇內的狀態(tài)和轉換合并,簡化協(xié)議狀態(tài)機.Trifilo等人[99]針對二進制協(xié)議狀態(tài)機的推理進行了研究,并創(chuàng)新性提出狀態(tài)分裂算法.首先逐字節(jié)統(tǒng)計分析其方差分布的變化(variance of the distribution of variances, VDV),得到標識報文不同類型的相關字段,并基于上述字段提出狀態(tài)分裂算法定義協(xié)議狀態(tài)并挖掘狀態(tài)間的轉換;之后以滑動窗口的形式遍歷協(xié)議會話報文序列,得到每個窗口內的狀態(tài)序列,將連續(xù)3個窗口中的任意2個狀態(tài)序列進行對比以分離出不存在的狀態(tài),如此便創(chuàng)建了只有幾個正確狀態(tài)的狀態(tài)轉化;最后狀態(tài)分裂算法導致生成的協(xié)議狀態(tài)機具有多余的轉換邊,因此制定2個規(guī)則來對狀態(tài)機進行簡化.
部分研究將協(xié)議報文連續(xù)子序列作為狀態(tài),推理協(xié)議狀態(tài)機.Shevertalov等人[35]提出協(xié)議狀態(tài)機推理工具PEXT,首先將聚類后的報文使用簇ID進行標記,則一個會話的報文序列就生成一組編號序列,采用最長公共子串算法篩選出子序列并將其組合為狀態(tài);之后利用上述狀態(tài)集合對所有協(xié)議會話進行標記,基于標記后的多個狀態(tài)序列構建協(xié)議狀態(tài)轉換圖;最后采用基于報文流向的2個轉換對協(xié)議狀態(tài)機進行化簡,并保證每個轉換的離開狀態(tài)都是唯一確定的.但PEXT方法構建的僅僅是報文類型之間順序模型,有違協(xié)議狀態(tài)機原理,并不能作為常規(guī)的協(xié)議狀態(tài)機來使用,之后的AutoReEngine方法[78]推理的協(xié)議狀態(tài)機亦是如此.
在基于協(xié)議交互的基礎上,部分研究對交互的過程進行統(tǒng)計分析,通過概率分析方法確定狀態(tài)之間的轉移,并為協(xié)議狀態(tài)機添加更多的信息以對其進行完善;或是采用概率模型以構建協(xié)議狀態(tài)機,并基于此進行優(yōu)化.
Wang等人[63]提出一種基于概率分析的狀態(tài)機推理方法Veritas,并創(chuàng)新性地定義了一種概率協(xié)議狀態(tài)機,即協(xié)議狀態(tài)機的概率泛化模型.該方法以協(xié)議報文頭部字節(jié)序列為基礎,結合PAM算法與Jaccard指數對協(xié)議報文進行聚類,并選擇聚類中心作為協(xié)議狀態(tài)報文,使用協(xié)議狀態(tài)報文對協(xié)議會話進行標記,得到報文狀態(tài)序列.之后計算任意2個連續(xù)狀態(tài)之間的頻率,并構建有向圖來描述每對協(xié)議狀態(tài)之間的連接,最終得到自行定義的概率協(xié)議狀態(tài)機.但其并沒有進一步對概率協(xié)議狀態(tài)機進行簡化.Krueger等人[18]為分析蜜罐等惡意軟件協(xié)議提出協(xié)議狀態(tài)機推理方法PRISMA,其對ASAP方法[100]進行了擴展.PRISMA首先按照二進制類和文本類分別提出2種方法對協(xié)議報文進行聚類;之后采用馬爾可夫模型構建協(xié)議狀態(tài)機,根據聚類簇中的報文類型標簽,通過最大似然估計初始概率和轉換概率,直接學習生成馬爾可夫模型;最后將馬爾可夫模型轉化為協(xié)議狀態(tài)機,應用Moore狀態(tài)機最小化算法進行簡化.
樹形結構由上到下展開,符合協(xié)議間狀態(tài)轉換的規(guī)律,同時基于啟發(fā)式樹形構建的過程也就是協(xié)議狀態(tài)機構建的過程,當基于協(xié)議會話的樹構建完整時,即可得到樹形結構的協(xié)議狀態(tài)機.之后考慮層次結點間的報文類型是否相似、是否有相同的輸入輸出等以判斷結點間是否可以合并,從而簡化協(xié)議狀態(tài)機.
Gorbunov等人[53]提出了基于協(xié)議狀態(tài)機的可擴展協(xié)議模糊測試框架AutoFuzz.該框架重點為了測試協(xié)議的安全性與可靠性,發(fā)現協(xié)議漏洞,其構造協(xié)議狀態(tài)機的方法主要是Hsu等人[101]提出的.首先將協(xié)議會話中代表狀態(tài)循環(huán)的循環(huán)報文刪除并記下相應的位置;之后生成只有根結點(初始狀態(tài))的樹形協(xié)議狀態(tài)機,將所有會話序列逐步添加到樹中:如果該報文沒有在樹中出現,則在狀態(tài)結點上添加葉子結點.針對會話序列繁多導致的狀態(tài)機樹龐大問題,AutoFuzz提出狀態(tài)等價原則對協(xié)議狀態(tài)機進行剪枝化簡.Lee等人[102]基于樹形協(xié)議狀態(tài)機提出一種基于狀態(tài)兼容性原則的狀態(tài)機最小化方法PRETT,在消除冗余狀態(tài)的同時,推導出最小化狀態(tài)機.提出2個原則測試樹每層的候選狀態(tài)與其他狀態(tài)之間的兼容性來進行狀態(tài)合并,消除冗余狀態(tài),最終得到僅由有效狀態(tài)組成的最小化協(xié)議狀態(tài)機.
前綴樹是一種有序樹形結構,每個結點的取值由該結點在樹中的位置決定,一個結點的所有子孫均具有相同的前綴.部分協(xié)議會話前期交互由固定類型的報文序列完成,因此通過前綴樹可以更好地構建較為簡潔的協(xié)議狀態(tài)機,從而減輕簡化協(xié)議狀態(tài)機的壓力.前綴樹接受器(prefix tree acceptor, PTA)正是基于前綴樹而構建的接受協(xié)議會話的實例,從而實現滿足多協(xié)議會話的要求.
Antunes等人[103]提出了基于網絡流量的文本類協(xié)議逆向技術ReverX,主要構建2個PTA來完成協(xié)議狀態(tài)機的推理.首先構造一個PTA啟發(fā)式接受所有協(xié)議報文并記錄轉換的頻數;之后采用Moore狀態(tài)機最小化算法將具有類似轉換的等價狀態(tài)合并,以接受相同類型報文的不同實例,并區(qū)分不同的報文類型;然后將協(xié)議會話轉換為報文類型序列,再構建一個PTA用來接受多個協(xié)議會話的報文類型序列,每當出現不同類型的報文時,新的狀態(tài)和轉換就會添加到PTA中;最后結合不同報文類型間的因果關系,使用積極狀態(tài)合并算法對協(xié)議狀態(tài)機進行簡化.Lin等人[104]考慮協(xié)議交互傳輸過程中存在的數據流信息,結合控制流信息對傳統(tǒng)的協(xié)議狀態(tài)機進行擴展,提出了新型擴展協(xié)議狀態(tài)機推理方法ReFSM.該方法改進Apriori算法以挖掘高頻且具有穩(wěn)定位置方差的閉合字節(jié)序列作為協(xié)議關鍵詞,并使用協(xié)議關鍵詞將協(xié)議報文標記為不同的報文類型,結合Jaccard指數與K-means算法對協(xié)議報文進行聚類確定協(xié)議報文類型數;之后通過構建PTA接受所有協(xié)議會話,并采用K-tail狀態(tài)合并算法合并具有相同輸入與輸出的等價狀態(tài)以生成傳統(tǒng)的最小化協(xié)議狀態(tài)機;最后引入數據保護(data guards)概念,其由2部分構成:協(xié)議關鍵詞的詞間約束和協(xié)議報文間與報文內的依賴關系,并將其與協(xié)議狀態(tài)集合作為2部分擴展到PTA樹中以實現對傳統(tǒng)的最小化協(xié)議狀態(tài)機進行擴展,得到提出的擴展協(xié)議狀態(tài)機.
綜上所述,協(xié)議狀態(tài)機推理匯總協(xié)議格式、協(xié)議關鍵詞以及語義信息推斷協(xié)議狀態(tài),結合協(xié)議會話推理協(xié)議狀態(tài)機,幫助分析人員更好地理解協(xié)議的交互行為、報文的收發(fā)規(guī)范,同時也可以協(xié)助對協(xié)議進行安全性測試,針對性地使協(xié)議轉換到某一狀態(tài),測試各種輸入輸出,提高協(xié)議的可靠性.表5分類概述了協(xié)議狀態(tài)機推理部分相關研究的主要內容,包括各個研究工作中協(xié)議狀態(tài)標記方法、狀態(tài)機構建方法以及簡化方法.由表5可知,協(xié)議狀態(tài)機推理很大程度上依賴于不同報文類型的確定,協(xié)議狀態(tài)機推理越來越復雜,對協(xié)議狀態(tài)機附加的相關信息也越來越完善.
Table 5 Summary of Protocol State Machine Inference表5 協(xié)議狀態(tài)機推理方法概述
經過對現有研究方法的對比分析,本節(jié)重點進行總結與展望,闡述基于網絡流量的私有協(xié)議逆向技術目前存在的主要問題與影響因素,并指出未來研究方向與應用場景,最后對全文進行總結性概述.
基于網絡流量的私有協(xié)議逆向技術目前已成為國內外研究人員的重點研究內容,具有現實的應用價值與研究意義.盡管其通過各類方法取得不少研究成果,但仍然存在4個方面的問題:
1)數據樣本集匱乏.目前私有協(xié)議逆向技術尚且沒有公開可用的完整標記的數據集樣本,基于公開RFC協(xié)議的流量完成的協(xié)議逆向技術大多無法真正應用于對私有協(xié)議的逆向分析.公開協(xié)議大多較為簡單,而私有協(xié)議為了實現應用通信的復雜功能必然與之不同,存在一定的差異.數據樣本集的匱乏亦導致協(xié)議逆向技術結果的評價指標不具有統(tǒng)一性,缺乏可對比的標簽數據.
2)協(xié)議逆向技術存在冗余性.協(xié)議逆向技術基于海量協(xié)議流量推斷,推斷過程必然存在冗余性,尤其是核心采用概率統(tǒng)計的協(xié)議逆向技術,即使采用篩選過濾也無法完全避免.同時錯誤、冗余的中間結果對最終的協(xié)議關鍵詞、協(xié)議格式以及協(xié)議狀態(tài)機等均存在影響,如何正確降低中間過程的冗余,減少其造成的影響,是私有協(xié)議逆向技術急需解決的主要問題.
3)協(xié)議逆向技術自動化程度較低.目前私有協(xié)議逆向技術的自動化程度并不高,部分研究甚至需要大量的先驗知識才能得到較高的準確度,而基于零先驗知識的研究明顯沒有達到理想效果,這就導致協(xié)議逆向技術難以達到較高的自動化程度.同時,語義分析很大程度上依賴于先驗知識與人為解釋,亦嚴重影響協(xié)議逆向技術的自動化程度,或將語義分析作為附加研究內容剔除逆向流程以實現自動化.
4)協(xié)議逆向技術兼容性與穩(wěn)健性不足.私有協(xié)議逆向技術的目標是適用于多類型協(xié)議流量并具有較高的推斷準確度.然而現有研究多是針對單一類型協(xié)議流量進行分析,即使考慮方法的通用性,仍然無法同時保證較高的推斷準確度.且現有研究中提出的方法大多難以直接對私有協(xié)議進行推斷,也從側面反映現有技術兼容性與穩(wěn)健性并不高.
綜上所述,私有協(xié)議逆向技術存在上述問題的主要影響因素是私有協(xié)議自身的特殊性與復雜性,因此在私有協(xié)議與協(xié)議逆向技術間尋求一個平衡是解決問題的主要途徑.結合私有協(xié)議相關先驗知識必然會提高私有協(xié)議逆向技術的推斷準確度,但這就會影響私有協(xié)議逆向技術的自動化程度,因此如何利用最少的先驗知識實現最大推斷準確度的半自動化私有協(xié)議逆向技術是解決問題的關鍵;網絡應用協(xié)議、工業(yè)通信協(xié)議與無線控制協(xié)議等均具有自身的特性,結合協(xié)議特殊性同樣可以提高私有協(xié)議逆向技術的推斷準確度,但這就會影響私有協(xié)議逆向技術的兼容性,如何實現最大程度的協(xié)議種類劃分,在不同種類內提高私有協(xié)議逆向技術的普遍適用性亦是解決問題的關鍵.
基于網絡流量的私有協(xié)議逆向技術可以從4個方面開展未來的研究:
1)精細化私有協(xié)議逆向分析.隨著互聯網應用的高頻涌現,私有協(xié)議廣泛發(fā)展,同時惡意軟件等亦使用私有協(xié)議在主干網進行通信隱藏以規(guī)避監(jiān)管,因此精細化私有協(xié)議逆向技術是一個重點的研究方向.提高私有協(xié)議逆向技術的推斷準確度,同時提高自動化程度與方法兼容性.應重點關注二進制協(xié)議的逆向分析,二進制協(xié)議相較于文本類協(xié)議而言具有透明序列的特性,且目前私有協(xié)議設計呈現出二進制化趨勢,工業(yè)控制互聯網、物聯網等均采用二進制協(xié)議來通信.因此,二進制協(xié)議逆向技術使用范圍會更加廣泛,更符合實際應用需求,對其研究更具有意義.針對二進制協(xié)議的逆向技術,需要重點關注協(xié)議報文分段與語義分析,如何在合適的位置將報文序列分開,確定分段粒度為字節(jié)或半字節(jié),探究字段結構從而達到精確分段.之后取出任意分段間的比特序列分析其語義,結合取值分析或模板匹配得到該字段的最近似語義,以語義信息形式描述二進制格式則為針對二進制協(xié)議逆向分析的最優(yōu)結果.
2)協(xié)議報文聚類與協(xié)議狀態(tài)機推理.協(xié)議報文聚類是協(xié)議逆向技術的基礎,如何度量協(xié)議報文間相似度,采用合適或創(chuàng)新性的聚類算法得到更加緊密的聚類簇是一個重要的研究方向,可以最大化為私有協(xié)議逆向技術的推斷準確度提供保障.同時在協(xié)議報文聚類時,需要關注不同協(xié)議類型的報文聚類與不同協(xié)議格式的報文聚類2方面:基于流粒度挖掘同一類協(xié)議報文的共有屬性,制定合適度量與聚類算法,將相似的流聚類為協(xié)議流聚類簇;并基于報文粒度挖掘同一格式協(xié)議報文的共有屬性,將相似格式的協(xié)議報文聚類為協(xié)議格式聚類簇,共同為協(xié)議格式推斷做好基礎.協(xié)議狀態(tài)機推理的研究目前尚處于探索階段,對傳統(tǒng)協(xié)議狀態(tài)機的擴展,使其包含更復雜的信息,是目前協(xié)議狀態(tài)機推理的一個發(fā)展方向.但更應該專注于協(xié)議狀態(tài)機的簡化,構建協(xié)議狀態(tài)機以后,如何以更加合適的算法進行狀態(tài)合并,盡量降低協(xié)議狀態(tài)機的冗余,更加明顯地展示協(xié)議的行為交互,使分析人員更好地理解協(xié)議相關設計理念,因此也應積極探索協(xié)議狀態(tài)機推理的研究.
3)私有加密協(xié)議逆向分析.越來越多的私有協(xié)議流量采用加密技術來保證用戶隱私與安全,這就直接導致協(xié)議逆向技術的部分失效,但針對存在明文字段的加密協(xié)議,私有協(xié)議逆向技術依然可用.其可以推斷出加密協(xié)議的明文字段,即確定加密協(xié)議的明文字段與密文字段間的分段點,提取加密協(xié)議的明文區(qū)域,并推斷其字段格式.這正是目前加密協(xié)議研究的一個重點方向,即明文和密文區(qū)域的切分.因此,私有協(xié)議逆向技術對加密協(xié)議分析仍具有一定的輔助作用,同時也可以將明文字段格式作為加密協(xié)議的固有特征進行分類識別,從本質上提高加密協(xié)議流量識別準確率,而不需要訓練復雜的機器學習模型,降低時間復雜度,使加密協(xié)議流量識別更加具有實際意義.因此,私有加密協(xié)議的逆向分析也是未來的研究方向之一.
4)全未知流量的逆向分析.對全未知流量的逆向分析即對主干網路由器處采集到的多種私有協(xié)議、多種格式混雜的流量進行逆向分析,針對這種混雜流量,未知其私有協(xié)議種類、私有協(xié)議格式等,這就要求私有協(xié)議逆向技術具有智能化分析能力.如何區(qū)分不同種類私有協(xié)議流量,并針對單一私有協(xié)議流量進行逆向分析;如何在某種私有協(xié)議數據量較少的情況下,智能決策保留協(xié)議流量或擴充樣本,完成逆向推斷;如何智能化地發(fā)現主干網中的未知私有協(xié)議,推斷未知私有協(xié)議的協(xié)議格式,給予工程人員最大化的信息協(xié)助決策等.上述問題均為目前私有協(xié)議分析面臨的實際需求,因此,基于網絡流量的私有協(xié)議逆向技術智能化分析是一個重要的研究方向.
私有協(xié)議逆向技術面向實際問題需求,考慮落地應用實際性,尤其近些年來具有廣泛的應用場景:
1)私有協(xié)議流量識別[105].協(xié)議關鍵詞與協(xié)議格式均具有協(xié)議的標識性,屬于協(xié)議的固有特征,因此協(xié)議關鍵詞組或協(xié)議格式均可以用來精準識別私有協(xié)議流量,通過規(guī)則匹配以實現輕量化的識別,而不需要訓練復雜的機器學習模型,同時針對具有明文字段的加密協(xié)議流量亦具有一定的識別能力.
2)工控協(xié)議漏洞測試[97].工業(yè)控制協(xié)議需要極其準確的數據傳輸與通信控制,在信息化的大時代背景下,工業(yè)控制網絡的興起對工業(yè)發(fā)展帶來了極大的便利,工業(yè)控制協(xié)議也應運而生,但是工業(yè)控制協(xié)議在投入使用前必須經過嚴格的漏洞測試,確保不會造成機器接收指令執(zhí)行誤操作的現象發(fā)生,以保障工業(yè)安全.同時工業(yè)控制協(xié)議多采用二進制協(xié)議進行傳輸,人為對其流量進行分析難度較大,因此私有協(xié)議逆向技術可以得到廣泛應用.
3)物聯網分析[106].萬物互聯概念的出現造就了目前智能家居、車載互聯網以及城市交通信息網等各種物聯網均投入使用,使生活更加便捷、智能的同時帶來不可避免的信息泄露、黑客攻擊等一系列問題.因此對物聯網通信協(xié)議的逆向分析可以最大程度上保障物聯網安全,確保物聯網設備不被黑客劫持,實現真正的萬物互聯.
私有協(xié)議逆向技術是當前協(xié)議分析領域最具有挑戰(zhàn)的研究之一.本文首先介紹私有協(xié)議逆向技術的種類與研究背景,并重點闡述基于網絡流量的私有協(xié)議逆向技術的研究意義.其次提出基于網絡流量的私有協(xié)議逆向技術框架,從預推理、協(xié)議格式推斷、語義分析以及協(xié)議狀態(tài)機推理4個步驟細化技術框架并介紹每步驟的主要任務.之后綜述現有基于網絡流量的私有協(xié)議逆向技術并按照其所屬研究步驟進行分類,并剖析技術采用的核心研究方法,對比敘述.最后總結當前基于網絡流量的私有協(xié)議逆向技術存在的主要問題,提出問題與影響因素的實際矛盾,指出解決問題的關鍵,并展望基于網絡流量的私有協(xié)議逆向技術未來的研究方向,指出其未來主要的應用場景,為進一步的研究奠定基礎.
作者貢獻聲明:李峻辰為本文調研整理文獻,設計本文的研究框架與撰寫結構框架,把握全文思想,按照框架完成本文的撰寫、修改、校對與定稿;程光為本文的研究指導方向,提供研究思路,優(yōu)化本文的研究框架,對論文進行審閱與修訂,提出論文的修改意見,并對整篇論文的質量進行把關;楊剛芹為本文調研整理部分文獻,協(xié)助完成本文的修改,并協(xié)助對本文格式進行校正.