本發(fā)明屬于序列號(hào)識(shí)別技術(shù)領(lǐng)域,涉及基于網(wǎng)絡(luò)報(bào)文的序列號(hào)識(shí)別方法,尤其適用于協(xié)議逆向的序列號(hào)識(shí)別。
背景技術(shù):
隨著近幾年網(wǎng)絡(luò)和應(yīng)用技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)攻擊事件急劇增加,網(wǎng)絡(luò)安全問題日益突出。為抵御網(wǎng)絡(luò)攻擊,保障網(wǎng)絡(luò)、設(shè)備安全,眾多安全人員設(shè)計(jì)研發(fā)出眾多安全措施,如入侵檢測(cè)、協(xié)議重用、模糊測(cè)試等。這些安全措施均依靠協(xié)議的詳細(xì)描述規(guī)范,然而目前網(wǎng)絡(luò)上大部分協(xié)議都是私有協(xié)議,缺少相應(yīng)的規(guī)范文檔。因此高效、精確的逆向工程方法就成為了安全人員乃至黑客所迫切需求的。
序列號(hào)是協(xié)議報(bào)文格式中的常規(guī)內(nèi)容,因此,序列號(hào)識(shí)別是協(xié)議逆向工程中的一項(xiàng)基本功能,且其結(jié)果影響協(xié)議逆向的后續(xù)分析。序列號(hào)是用于標(biāo)識(shí)報(bào)文序號(hào)的數(shù)值,是一組在周期性單調(diào)等差變化的數(shù)值。
序列號(hào)識(shí)別主要通過相鄰報(bào)文之間的差值進(jìn)行判斷。首先截取所有報(bào)文對(duì)應(yīng)字節(jié)的數(shù)據(jù),然后按報(bào)文順序判斷相鄰報(bào)文之間的差值,若差值基本一致,僅在固定間隔處突變成某一特定值,則認(rèn)定該字節(jié)為序列號(hào)域。
但是由于用于分析的報(bào)文樣本不一定完備,會(huì)存在眾多問題,如:可能存在報(bào)文丟失;序號(hào)域數(shù)值發(fā)生漂移等等。這些問題直接導(dǎo)致序號(hào)域的識(shí)別、判斷失誤,進(jìn)而導(dǎo)致協(xié)議逆向分析結(jié)果的錯(cuò)誤,無(wú)法得到精確的協(xié)議信息,影響安全人員或黑客的后續(xù)研究。
技術(shù)實(shí)現(xiàn)要素:
由于現(xiàn)有的序列號(hào)識(shí)別技術(shù)未能在精準(zhǔn)性等方面達(dá)到良好效果,使序列號(hào)未能被識(shí)別,造成協(xié)議逆向結(jié)果產(chǎn)生嚴(yán)重的偏差。本發(fā)明的目的是提供一種基于網(wǎng)絡(luò)報(bào)文的序列號(hào)識(shí)別方法,能夠高精確性地實(shí)現(xiàn)序列號(hào)的快速識(shí)別,并針對(duì)識(shí)別出的序列號(hào)進(jìn)行驗(yàn)證,防止數(shù)值漂移、多序列號(hào)混合以及多報(bào)文格式共用序列號(hào)等情況對(duì)序列號(hào)識(shí)別的影響,為后續(xù)報(bào)文分類、狀態(tài)機(jī)推斷提供了保障。
本發(fā)明通過周期識(shí)別與序列號(hào)驗(yàn)證方法來解決序列號(hào)識(shí)別精確度低的問題。本發(fā)明提出的基于層次聚類的周期識(shí)別方法,根據(jù)序列號(hào)周期呈單調(diào)性的原則以及多報(bào)文格式共用序列號(hào)的現(xiàn)象,對(duì)多個(gè)集合合并后的數(shù)據(jù)進(jìn)行周期劃分與判斷,避免多報(bào)文格式共用序列號(hào)以及數(shù)值漂移、丟失的影響;本發(fā)明提出的驗(yàn)證方法通過在子類中對(duì)已識(shí)別的序列號(hào)進(jìn)行重新識(shí)別,并對(duì)有誤的識(shí)別信息進(jìn)行修正,提高了序列號(hào)識(shí)別的精確性。
具體地,本發(fā)明通過以下技術(shù)方案實(shí)現(xiàn):
一種基于網(wǎng)絡(luò)報(bào)文的序列號(hào)識(shí)別方法,包括以下步驟:
(1)將報(bào)文樣本集按會(huì)話劃分成不同的報(bào)文集合,并對(duì)每個(gè)報(bào)文集合中的報(bào)文內(nèi)容進(jìn)行劃分,將報(bào)文從報(bào)文負(fù)載開始劃分成多個(gè)域。
(2)對(duì)多個(gè)報(bào)文集合從報(bào)文負(fù)載開始,依次按域進(jìn)行序列號(hào)的初始識(shí)別。
(3)根據(jù)報(bào)文長(zhǎng)度的不同或已識(shí)別出的格式標(biāo)志位,對(duì)經(jīng)步驟(1)劃分后的每個(gè)報(bào)文集合進(jìn)行劃分,使各報(bào)文子集格式相同。
(4)在劃分的格式相同的報(bào)文子集中,對(duì)初始識(shí)別出的序列號(hào)進(jìn)行驗(yàn)證,并根據(jù)驗(yàn)證結(jié)果取消或修正誤判。
進(jìn)一步地,步驟(1)又包括以下步驟:
1-1)根據(jù)源IP地址(srcIP)、目的IP地址(dstIP)、源端口號(hào)(srcPORT)、目的端口號(hào)(dstPORT)、傳輸層協(xié)議號(hào)(IP_proto)對(duì)報(bào)文樣本集進(jìn)行劃分,確保每個(gè)報(bào)文集合{Pno}均是由同一個(gè)會(huì)話產(chǎn)生的,其中no表示集合編號(hào);
1-2)將{Pno}作為根節(jié)點(diǎn)為每個(gè)報(bào)文集合構(gòu)造相應(yīng)的樹形結(jié)構(gòu),并對(duì)形成的結(jié)構(gòu)樹中的報(bào)文內(nèi)容進(jìn)行劃分,設(shè)定一個(gè)字節(jié)為一個(gè)域,將報(bào)文從報(bào)文負(fù)載開始依次按字節(jié)進(jìn)行劃分,從而將每個(gè)報(bào)文轉(zhuǎn)換成由多個(gè)域組成的報(bào)文數(shù)組。
進(jìn)一步地,步驟(2)中,采用改進(jìn)的層次聚類方法合并報(bào)文集合,并從報(bào)文負(fù)載開始,依次按域進(jìn)行序列號(hào)識(shí)別,若多個(gè)報(bào)文集合的數(shù)據(jù)長(zhǎng)度不同,則以最短報(bào)文中包含的域?yàn)榻缫来芜M(jìn)行識(shí)別。
進(jìn)一步地,上述改進(jìn)的層次聚類方法需構(gòu)建一個(gè)相似度矩陣,用于表示每對(duì)報(bào)文集合合并后各域的序列號(hào)判斷結(jié)果,包括:
2-1)構(gòu)造序列號(hào)信息庫(kù),用于存放識(shí)別出的序列號(hào)信息;
2-2)判斷中同層的報(bào)文集合個(gè)數(shù)set_num,若set_num<2,則對(duì)單個(gè)報(bào)文集合內(nèi)的序列號(hào)進(jìn)行識(shí)別并跳轉(zhuǎn)到2-4);否則(即set_num≥2)執(zhí)行2-3);
2-3)計(jì)算用于表示每對(duì)報(bào)文集合合并后各域的序列號(hào)判斷結(jié)果的相似度矩陣,其中數(shù)值amn,q表示報(bào)文集合m和報(bào)文集合n合并后第q域的序列號(hào)判斷結(jié)果,若為非序列號(hào),則對(duì)應(yīng)取值為+∞;否則為序列號(hào)信息庫(kù)中對(duì)應(yīng)的編號(hào);
2-4)在對(duì)報(bào)文集合(單報(bào)文集合或合并后的報(bào)文集合)的各域進(jìn)行序列號(hào)識(shí)別后,若存在相似矩陣(合并后的報(bào)文集合情況),則在相似矩陣中查找所有不為+∞的取值,分別判斷為多報(bào)文集合共用序列號(hào),并將其相關(guān)信息在序列號(hào)信息庫(kù)進(jìn)行更新;更新相似度矩陣,將共用序列號(hào)的報(bào)文集合在矩陣對(duì)應(yīng)的行(列)進(jìn)行合并;若不存在相似矩陣(單報(bào)文集合情況),結(jié)束序列號(hào)的初始識(shí)別過程;
2-5)當(dāng)矩陣中全為+∞或全合并成一個(gè)報(bào)文集合時(shí),結(jié)束層次聚類。
進(jìn)一步地,按域進(jìn)行序列號(hào)的初始識(shí)別是通過識(shí)別報(bào)文集合中對(duì)應(yīng)域的周期,并根據(jù)單周期或多周期比例識(shí)別方法,識(shí)別出對(duì)應(yīng)的序列號(hào),最后依據(jù)迭代方法識(shí)別序列號(hào)高位。
進(jìn)一步地,識(shí)別報(bào)文集合中對(duì)應(yīng)域的周期的方法包括:首先,根據(jù)報(bào)文個(gè)數(shù)和域取值個(gè)數(shù)篩選出可識(shí)別的域;其次,依次判斷相鄰兩個(gè)報(bào)文對(duì)應(yīng)域的差值的正負(fù)狀態(tài)Δ,組成差值狀態(tài)數(shù)組{Δj},其中j為該報(bào)文集合中的報(bào)文序號(hào);再次,識(shí)別出|Δj+1-Δj|≠0的報(bào)文作為切分點(diǎn)報(bào)文,根據(jù)切分點(diǎn)將報(bào)文劃分成多個(gè)周期;若無(wú)切分點(diǎn)報(bào)文,則認(rèn)為是單周期,無(wú)需劃分;
單周期比例識(shí)別方法包括:首先,在周期中判斷各非零差值所占的比率其中i為相鄰兩個(gè)報(bào)文對(duì)應(yīng)域的差值,Δi_num為對(duì)應(yīng)周期中差值為i的個(gè)數(shù),dnum為該周期的報(bào)文個(gè)數(shù);其次,判斷該周期中是否存在滿足下列條件:max{ri}≥μ1的周期差值,max{ri}為差值比率的最大值,μ1為單周期內(nèi)差值比率閾值,若存在則判定該域?yàn)樾蛄刑?hào)域,否則判斷該域?yàn)榉切蛄刑?hào)域,結(jié)束對(duì)該域的識(shí)別;
多周期比例識(shí)別方法包括:首先,在各個(gè)周期中判斷各非零差值所占的比率其中Δi_num為對(duì)應(yīng)周期中差值為i的個(gè)數(shù),dnum為該周期的報(bào)文個(gè)數(shù);其次,判斷該周期中是否存在滿足下列條件:max{ri}≥μ2的周期差值,max{ri}為差值比率的最大值,μ2為周期內(nèi)差值比率閾值;若不存在則該周期無(wú)周期差值;再次,在所有周期差值中,判斷是否存在滿足下列條件:的周期差值,為周期差值比率的最大值,dcycle_num為該域存在的周期差個(gè)數(shù),di_num為該域周期差值為i的個(gè)數(shù),η為周期間差值比率閾值,若存在則判定該域?yàn)樾蛄刑?hào)域,否則判斷該域?yàn)榉切蛄刑?hào)域,結(jié)束對(duì)該域的識(shí)別;
識(shí)別序列號(hào)高位的方法包括:首先,判斷該序列號(hào)左右相鄰的域是否是序列號(hào)高位,若判斷該域(位)為序列號(hào)域,在該域左右相鄰的域中識(shí)別2字節(jié)序列號(hào)的高位;其次,若判斷該序列號(hào)為2字節(jié),則在該域左右相鄰的2個(gè)域中識(shí)別4字節(jié)序列號(hào)的高位。
進(jìn)一步地,2字節(jié)序列號(hào)的序列號(hào)高位識(shí)別方法包括:首先,在序列號(hào)的各個(gè)周期中,判斷其左右相鄰的域值是否一致,若不一致則判定該域不是序列號(hào)高位,結(jié)束對(duì)該域的識(shí)別;其次,判斷序列號(hào)域數(shù)據(jù)是否存在多個(gè)周期,若為單周期,則判定該域?yàn)樾蛄刑?hào)高位并結(jié)束對(duì)該域的識(shí)別;再次,判斷多周期間,該域周期差值是否符合序列號(hào)高位周期差值規(guī)律,若符合則判定該位為序列號(hào)高位,否則不是序列號(hào)高位,結(jié)束對(duì)該域的識(shí)別,序列號(hào)高位周期差值規(guī)律是兩周期的周期差值等于周期相差個(gè)數(shù)乘以相鄰周期差值;
4字節(jié)序列號(hào)的序列號(hào)高位識(shí)別方法包括:首先根據(jù)2字節(jié)序列號(hào)的高位按周期進(jìn)行劃分;其次,判斷各周期內(nèi)該序列號(hào)左右相鄰的2個(gè)域數(shù)據(jù)是否一致,若不一致則判定該域不是序列號(hào)高位且該序列號(hào)域僅由2字節(jié)組成,結(jié)束對(duì)該序列號(hào)域的識(shí)別;再次,根據(jù)已識(shí)別出的序列號(hào)域,推斷序列號(hào)高位的架構(gòu);將序列號(hào)高位中的低位1和序列號(hào)低位中的高位2組合起來看作1個(gè)2字節(jié)序列號(hào),調(diào)用2字節(jié)序列號(hào)的序列號(hào)高位識(shí)別方法,對(duì)序列號(hào)高位中的低位1進(jìn)行判斷,若判斷成功則該低位1存在,否則判定該域?yàn)榉切蛄刑?hào)高位并結(jié)束對(duì)該序列號(hào)域的識(shí)別;最后,將序列號(hào)高位看作1個(gè)2字節(jié)序列號(hào),調(diào)用2字節(jié)序列號(hào)的序列號(hào)高位識(shí)別方法,對(duì)序列號(hào)高位中的高位1進(jìn)行判斷,若判斷成功則該高位1存在,與低位1共同組成序列號(hào)高位;否則判定該域?yàn)榉切蛄刑?hào)高位,結(jié)束對(duì)序列號(hào)的識(shí)別。
進(jìn)一步地,步驟(3)又包括以下步驟:
3-1)判斷步驟(1)劃分后的報(bào)文集合是否是變長(zhǎng)數(shù)據(jù),若是變長(zhǎng)數(shù)據(jù)則按照數(shù)據(jù)長(zhǎng)度對(duì)該報(bào)文集合進(jìn)行劃分,使得各報(bào)文子集均是定長(zhǎng)報(bào)文集合,更新并記錄其劃分出的所有報(bào)文子集;
3-2)若步驟(1)劃分后的報(bào)文集合是定長(zhǎng)數(shù)據(jù),則判斷在上次報(bào)文劃分位置之后能否尋找到格式標(biāo)志位,若存在則跳轉(zhuǎn)到3-3);否則結(jié)束整個(gè)序列號(hào)的判定過程;
3-3)根據(jù)其它相關(guān)信息(包括格式標(biāo)志位等)對(duì)該報(bào)文集合進(jìn)行劃分,使得各報(bào)文子集格式相同,更新{Pi}結(jié)構(gòu)樹并記錄其劃分出的所有報(bào)文子集。
進(jìn)一步地,步驟(4)又包括:
4-1)針對(duì)已識(shí)別出的序列號(hào)域,采用步驟(2)進(jìn)行重新判斷,同時(shí)將該算法中的μ和η的取值增加j*ζ,即:max{ri}≥μ1+j*ζ;max{ri}≥μ2+j*ζ和且max{μ1+j*ζ,μ2+j*ζ,η+j*ζ}≤Ω,其中j為報(bào)文樣本集劃分的次數(shù),ζ為每次準(zhǔn)確率增加的程度,Ω為保證能避免突變等影響的準(zhǔn)確率閾值;
4-2)若該域被重新判斷為非序列號(hào),則消去該序列號(hào)域,跳轉(zhuǎn)到4-4);
4-3)若重新判斷仍為序列號(hào),但序列號(hào)差值不符,則更新該序列號(hào)域信息,跳轉(zhuǎn)到4-4);
4-4)根據(jù)結(jié)構(gòu)樹找到原序列號(hào)對(duì)應(yīng)的所有父輩及它們的所有報(bào)文子集,修改對(duì)應(yīng)域(相同位置的序列號(hào)域)的序列號(hào)層次,使其序列號(hào)層次與當(dāng)前報(bào)文子集的層次相同;更新序列號(hào)信息庫(kù),并修正原序列號(hào)對(duì)應(yīng)的集合范圍。
本發(fā)明的技術(shù)效果如下:
本發(fā)明提出了一種基于網(wǎng)絡(luò)報(bào)文的序列號(hào)識(shí)別方法,以便能在協(xié)議逆向中高效、精確地識(shí)別出序列號(hào)及其相應(yīng)的層次。
本發(fā)明為了解決傳統(tǒng)序列號(hào)識(shí)別技術(shù)的精確性的不足,采用了基于層次聚類的周期識(shí)別方法與子類驗(yàn)證修訂的驗(yàn)證方法,從而實(shí)現(xiàn)了在網(wǎng)絡(luò)報(bào)文中準(zhǔn)確地識(shí)別出序列號(hào)。
本發(fā)明提出的基于層次聚類的周期識(shí)別方法通過層次聚類方法以及周期內(nèi)、外部差值的變化識(shí)別方法,避免了數(shù)值丟失、漂移以及多報(bào)文格式共用序列號(hào)等所造成的序列號(hào)識(shí)別失誤情況;本發(fā)明提出的驗(yàn)證方法,通過重新識(shí)別的驗(yàn)證方法,快速修正識(shí)別問題,提高序列號(hào)識(shí)別的準(zhǔn)確性。
附圖說明
圖1是報(bào)文序列號(hào)的三種主要格式,a.4字節(jié)序列號(hào);b.2字節(jié)序列號(hào);c.1字節(jié)序列號(hào)。
圖2是本發(fā)明基于網(wǎng)絡(luò)報(bào)文的序列號(hào)識(shí)別方法整體流程圖。
圖3是本發(fā)明中序列號(hào)初始識(shí)別階段流程圖。
具體實(shí)施方式
本發(fā)明針對(duì)傳統(tǒng)序列號(hào)識(shí)別技術(shù)在準(zhǔn)確性上的不足,提出了結(jié)合周期識(shí)別方法與驗(yàn)證方法,針對(duì)報(bào)文的序列號(hào)識(shí)別技術(shù),利用基于層次聚類的周期差值變化識(shí)別方法與重識(shí)別的驗(yàn)證方法來提高序列號(hào)識(shí)別的精度。
如圖1所示,在正常報(bào)文中,序列號(hào)一共有3種情況,其長(zhǎng)度分別為1字節(jié)、2字節(jié)和4字節(jié)。本識(shí)別方案首先識(shí)別出1字節(jié)序列號(hào),再逐層判斷其高位的存在,進(jìn)而推斷出整個(gè)序列號(hào)域。
如圖2所示,本發(fā)明的整體流程分為四個(gè)階段:報(bào)文預(yù)處理;序列號(hào)的初步識(shí)別;樣本集劃分;對(duì)已有序列號(hào)的驗(yàn)證。
報(bào)文預(yù)處理階段,將報(bào)文樣本集進(jìn)行聚類,根據(jù)數(shù)據(jù)來源和方向?qū)?bào)文樣本集劃分成多個(gè)小集合。
該過程首先將報(bào)文樣本集按照會(huì)話進(jìn)行劃分,即根據(jù)五元組(srcIP、dstIP、srcPORT、dstPORT、IP_proto)對(duì)報(bào)文樣本集進(jìn)行劃分,確保每個(gè)報(bào)文集合{Pno}均是由同一個(gè)會(huì)話產(chǎn)生的,其中no表示報(bào)文集合編號(hào)。
然后將{Pno}作為根節(jié)點(diǎn)為每個(gè)報(bào)文集合構(gòu)造相應(yīng)的樹形結(jié)構(gòu),并對(duì)結(jié)構(gòu)樹中的報(bào)文內(nèi)容進(jìn)行劃分,設(shè)定一個(gè)字節(jié)為一個(gè)域,將報(bào)文從報(bào)文負(fù)載開始依次按域進(jìn)行劃分,即將每個(gè)報(bào)文轉(zhuǎn)換成由多個(gè)域組成的報(bào)文數(shù)組。
序列號(hào)初始識(shí)別階段,如圖3所示,其中,圖中涉及的各條件如表1所示。
表1序列號(hào)初始識(shí)別流程圖條件說明
為應(yīng)對(duì)多個(gè)報(bào)文集合共用一個(gè)序列號(hào)域的情況,采用多報(bào)文集合合并識(shí)別的方案,通過改進(jìn)的層次聚類方法合并報(bào)文集合,并從報(bào)文負(fù)載開始,依次按域進(jìn)行識(shí)別,若多個(gè)樣本集合的數(shù)據(jù)長(zhǎng)度不同,則以最短報(bào)文中包含的域?yàn)榻缫来芜M(jìn)行識(shí)別。每個(gè)域的序列號(hào)識(shí)別方法是通過識(shí)別{Pno}中對(duì)應(yīng)域的周期,根據(jù)計(jì)算出的周期差值在整個(gè)樣本對(duì)應(yīng)域的周期差值集合中所占的比值,識(shí)別出對(duì)應(yīng)的序列號(hào)。該過程可以敘述如下:
1)構(gòu)造序列號(hào)信息庫(kù),用于存放識(shí)別出的序列號(hào)信息;
2)判斷結(jié)構(gòu)樹中同層的報(bào)文集合個(gè)數(shù)set_num,若set_num<2,則跳轉(zhuǎn)到4)對(duì)單個(gè)報(bào)文集合內(nèi)的序列號(hào)進(jìn)行識(shí)別,否則執(zhí)行3);
3)計(jì)算用于表示每對(duì)報(bào)文集合合并后各域的序列號(hào)判斷結(jié)果(其中序列號(hào)的判斷過程如4)-9)所示)的相似度矩陣,其中數(shù)值amn,q表示報(bào)文集合m和報(bào)文集合n合并后第q域的序列號(hào)判斷結(jié)果,若為非序列號(hào),則對(duì)應(yīng)取值為+∞;否則為序列號(hào)信息庫(kù)中對(duì)應(yīng)的編號(hào);
序列號(hào)判斷過程:
4)判斷該域的取值個(gè)數(shù)ψ,若ψ<2,則認(rèn)為該域?yàn)槌A?,結(jié)束該域的序列號(hào)識(shí)別;
5)周期識(shí)別:通過判斷數(shù)值的單調(diào)性劃分成各個(gè)周期
a)由于在報(bào)文過少的情況下無(wú)法判斷序列號(hào),因此首先判斷該類報(bào)文個(gè)數(shù)p_num,若p_num<λ(λ為能判定序列號(hào)的最少報(bào)文個(gè)數(shù)),則認(rèn)為該域無(wú)法判斷,判定該域?yàn)榉切蛄刑?hào)域,結(jié)束該域的序列號(hào)識(shí)別;否則執(zhí)行b);
b)在該類報(bào)文中,依次判斷相鄰兩個(gè)報(bào)文對(duì)應(yīng)域的差值的正負(fù)狀態(tài)Δ,組成差值狀態(tài)數(shù)組{Δj};
c)依次比較{Δj}中的數(shù)據(jù),若滿足條件1:|Δj+1-Δj|≠0,即前后兩報(bào)文單調(diào)性不同,對(duì)應(yīng)報(bào)文為切分點(diǎn)報(bào)文,根據(jù)切分點(diǎn)將報(bào)文劃分成多個(gè)周期,若無(wú)切分點(diǎn)報(bào)文,則認(rèn)為是單周期,無(wú)需劃分;
6)判斷各周期中的所有差值Δ′
7)根據(jù)比率識(shí)別序列號(hào)
a)在每個(gè)周期中判斷各非零差值所占的比率其中Δi_num為對(duì)應(yīng)周期中差值為i(i不為零)的個(gè)數(shù),dnum為該周期的報(bào)文個(gè)數(shù);
b)判斷是否存在多個(gè)周期,若為單周期,則跳轉(zhuǎn)到c);否則跳轉(zhuǎn)到d);
c)在該周期中,選取周期差值(這里也被稱為序列號(hào)差值D)D=d=argmax{ri}滿足下列條件3:max{ri}≥μ1,μ1為單周期內(nèi)差值比率閾值;若D存在,則判定該域?yàn)樾蛄刑?hào)域,并標(biāo)示相應(yīng)的層次,跳轉(zhuǎn)到8);若不存在這樣的D,則判定該域?yàn)榉切蛄刑?hào)域,結(jié)束對(duì)該域的識(shí)別;
d)在每個(gè)周期中,選取周期差值d=argmax{ri}滿足下列條件2:max{ri}≥μ2,μ2為周期內(nèi)差值比率閾值;若不存在這樣的d則認(rèn)為該周期無(wú)周期差值;
e)選取對(duì)應(yīng)域序列號(hào)差值D=argmax{di_num}滿足下列條件4:其中dcycle_num為該域存在的周期差個(gè)數(shù),di_num為該域周期差值為i的個(gè)數(shù),η為周期間差值比率閾值。若D存在,則判定該域?yàn)樾蛄刑?hào)域,并標(biāo)示相應(yīng)的層次;若不存在這樣的D,則判定該域?yàn)榉切蛄刑?hào)域;
8)若判斷該位為序列號(hào)域,在該域左右相鄰的域V中識(shí)別2字節(jié)序列號(hào)的高位
a)判斷各周期中,其左(或右)相鄰的域值{Vi}是否一致;
i.根據(jù)該域劃分出的周期,在每個(gè)周期中截取其左(或右)相鄰域的取值{Vi},i為周期序號(hào);
ii.在每個(gè)周期中,判斷{Vi}的取值個(gè)數(shù)ψ,若ψ≥2,則認(rèn)為該域取值不一致,不是序列號(hào)高位,結(jié)束對(duì)該域的識(shí)別;
b)判斷是否存在多個(gè)周期,若為單周期,則判定該域?yàn)樾蛄刑?hào)高位,并標(biāo)示出相應(yīng)的層次(和序列號(hào)域的層次相同),結(jié)束對(duì)該域的識(shí)別;
c)選取T域中每個(gè)周期的唯一取值,組成周期取值集合{V′};
d)選取周期差值d滿足下列條件5:V′i+j-Vi′=j(luò)*d。若d存在,則判定該域?yàn)樾蛄刑?hào)高位,并標(biāo)示出相應(yīng)的層次(和序列號(hào)域的層次相同);若d不存在,則判定該域?yàn)榉切蛄刑?hào)高位;
9)若判斷該序列號(hào)為2字節(jié),則在該域左右相鄰的2個(gè)域中識(shí)別4字節(jié)序列號(hào)的高位
a)判斷是否為由4個(gè)域組成的序列號(hào)域
i.判斷識(shí)別出的序列號(hào)高位是否存在多個(gè)周期,若為多周期,則進(jìn)行劃分;
ii.判斷各周期中,該序列號(hào)左(或右)相鄰的兩個(gè)域的取值是否固定不變,若為變量,則該序列號(hào)僅有2字節(jié),結(jié)束對(duì)該序列號(hào)域的識(shí)別;否則該序列號(hào)可能是由4字節(jié)組成;
b)判斷4字節(jié)組成的序列號(hào)高位
i.根據(jù)已識(shí)別出的序列號(hào)域,推斷序列號(hào)高位的架構(gòu)(即序列號(hào)高位中的高位1、低位1的排列順序);
ii.將序列號(hào)高位中的低位1和序列號(hào)低位中的高位2組合起來看作1個(gè)2字節(jié)序列號(hào),調(diào)用8)對(duì)序列號(hào)高位中的低位1進(jìn)行判斷,若判斷成功則該低位1存在;否則判定該域?yàn)榉切蛄刑?hào)高位,結(jié)束對(duì)該序列號(hào)域的識(shí)別;
iii.將序列號(hào)高位看作1個(gè)2字節(jié)序列號(hào),調(diào)用8)對(duì)序列號(hào)高位中的高位1進(jìn)行判斷,若判斷成功則該高位1存在,與低位1共同組成序列號(hào)高位,并標(biāo)示出相應(yīng)的層次(和序列號(hào)低位相同);否則判定該域?yàn)榉切蛄刑?hào)高位,結(jié)束對(duì)序列號(hào)的識(shí)別;
序列號(hào)判斷過程結(jié)束
10)若存在相似矩陣,則在相似矩陣中查找所有不為+∞的取值,分別判斷為多報(bào)文集合共用序列號(hào),并將其相關(guān)信息在序列號(hào)信息庫(kù)進(jìn)行更新;更新相似度矩陣,將共用序列號(hào)的報(bào)文集合在矩陣對(duì)應(yīng)的行(列)進(jìn)行合并。若不存在相似矩陣,結(jié)束序列號(hào)的初始識(shí)別過程;
11)重復(fù)執(zhí)行步驟3)和步驟10),直至矩陣中全為+∞或全合并成一個(gè)報(bào)文集合時(shí),結(jié)束序列號(hào)的初始識(shí)別過程。
樣本集劃分階段,根據(jù)數(shù)據(jù)中已獲得的信息,對(duì)傳遞到序列號(hào)初始識(shí)別階段的(未合并前的)報(bào)文集合{Pno}按格式進(jìn)行劃分,使各報(bào)文子集格式相同。
在協(xié)議逆向中,獲取的樣本均是包含眾多格式,隨著逆向過程的進(jìn)行,可提取出多個(gè)格式標(biāo)志位(指明后續(xù)數(shù)據(jù)格式的域)等信息用于區(qū)分多個(gè)格式,且格式區(qū)分的精確度隨著逆向過程的執(zhí)行越發(fā)趨于精確。因此,隨著協(xié)議逆向的進(jìn)行,可將報(bào)文集合{Pno}從報(bào)文中上次劃分位置(報(bào)文起始位置)開始尋找格式標(biāo)志位,并依該格式標(biāo)志位信息將報(bào)文集合{Pno}進(jìn)行劃分,使得相應(yīng)報(bào)文集合中格式數(shù)量逐步降低,進(jìn)而有效地提升了序列號(hào)識(shí)別的精確性。該過程可以敘述如下:
1)判斷該報(bào)文集合是否是變長(zhǎng)數(shù)據(jù),若是變長(zhǎng)數(shù)據(jù)則按照數(shù)據(jù)長(zhǎng)度對(duì){Pno}進(jìn)行劃分,使得各報(bào)文子集均是定長(zhǎng)報(bào)文集合,并記錄其劃分出的所有報(bào)文子集
2)若是定長(zhǎng)數(shù)據(jù),則判斷在上次報(bào)文劃分位置之后能否尋找到格式標(biāo)志位。若存在則跳轉(zhuǎn)到3);否則結(jié)束整個(gè)序列號(hào)的判定過程
3)根據(jù)其它相關(guān)信息(如格式標(biāo)志位等)對(duì){Pno}進(jìn)行劃分,使得各報(bào)文子集格式相同,并記錄其劃分出的所有報(bào)文子集
序列號(hào)驗(yàn)證階段,對(duì)已識(shí)別的序列號(hào)進(jìn)行驗(yàn)證,修正或消除判斷失誤的序列號(hào)。
在初始識(shí)別過程中,所采用的報(bào)文集合包含了眾多格式,因此會(huì)出現(xiàn)對(duì)應(yīng)域?yàn)樾蛄刑?hào)和常量或序列號(hào)和序列號(hào)混雜,但該類整體特征符合序列號(hào)的判斷的情況,造成對(duì)該域的誤判。然而在經(jīng)歷過報(bào)文集合劃分階段后,報(bào)文集合中包含的格式趨于單一,導(dǎo)致對(duì)應(yīng)域的變化規(guī)律發(fā)生變化,消除上述混雜情況。因此需要對(duì)序號(hào)域進(jìn)行驗(yàn)證,以提高其識(shí)別準(zhǔn)確性。
驗(yàn)證的核心是對(duì)已識(shí)別的序列號(hào)進(jìn)行再判斷。在該階段,首先從報(bào)文負(fù)載開始依次對(duì)每個(gè)域進(jìn)行查看,發(fā)現(xiàn)已識(shí)別出的序列號(hào)域。然后重用初步識(shí)別方法對(duì)這些已識(shí)別的序列號(hào)域進(jìn)行再次識(shí)別,然后根據(jù)相應(yīng)結(jié)果,取消或修正誤判。該過程可以敘述如下:
1)針對(duì)已識(shí)別出的序列號(hào)域,重新采用序列號(hào)初始識(shí)別算法進(jìn)行驗(yàn)證,但為提升判斷精度,將該算法中的μ和η的取值增加j*ζ,即將序列號(hào)初始識(shí)別算法中7)的c)、d)和e)中的條件分別修正為:max{ri}≥μ1+j*ζ;max{ri}≥μ2+j*ζ和且max{μ1+j*ζ,μ2+j*ζ,η+j*ζ}≤Ω,其中j為報(bào)文樣本集劃分的次數(shù),ζ為每次準(zhǔn)確率增加的程度,Ω為保證能避免突變等影響的準(zhǔn)確率閾值
2)根據(jù)重新判斷的結(jié)果對(duì)該域進(jìn)行相應(yīng)的處理
a)若該域被重新判斷為常量(非序列號(hào)),則消去該序列號(hào)域,跳轉(zhuǎn)到c);
b)若重新判斷仍為序列號(hào),但變化幅度不符(即序列號(hào)差值不符),則更新該序列號(hào)域信息(修改對(duì)應(yīng)的序列號(hào)差值、序列號(hào)高位信息等),跳轉(zhuǎn)到c);
c)若出現(xiàn)a)或b)的情況,則根據(jù)標(biāo)號(hào)找到原序列號(hào)對(duì)應(yīng)的所有父輩及它們的所有報(bào)文子集,修改對(duì)應(yīng)域(相同位置的序列號(hào)域)的序列號(hào)層次,使其序列號(hào)層次與當(dāng)前報(bào)文子集的層次相同;更新序列號(hào)信息庫(kù),并修正原序列號(hào)對(duì)應(yīng)的報(bào)文集合范圍。
在執(zhí)行完序列號(hào)驗(yàn)證階段后,由于報(bào)文集合報(bào)文格式不統(tǒng)一,除上述情況外,還會(huì)出現(xiàn)序列號(hào)和變量、序列號(hào)和序列號(hào)混雜,導(dǎo)致序列號(hào)無(wú)法識(shí)別的情況。同時(shí)由于對(duì)報(bào)文集合進(jìn)行劃分,導(dǎo)致報(bào)文子集格式數(shù)量減少,某些域中混雜的數(shù)據(jù)被拆散,增加了該域被識(shí)別的可能性。因此需要重新跳轉(zhuǎn)到序列號(hào)初始識(shí)別階段,對(duì)報(bào)文子集中的其它域進(jìn)行重新識(shí)別。
本發(fā)明提出的基于網(wǎng)絡(luò)報(bào)文的序列號(hào)識(shí)別技術(shù)對(duì)報(bào)文中的各個(gè)域進(jìn)行判斷,保證高效地識(shí)別出序列號(hào)域。
本發(fā)明提出的基于層次聚類和周期劃分的識(shí)別方法,有效地避免了數(shù)值漂移、丟失以及多報(bào)文格式共用序列號(hào)等情況,提高了序列號(hào)域的識(shí)別準(zhǔn)確度。
本發(fā)明提出的基于子類驗(yàn)證修訂的驗(yàn)證方法,有效地排除了誤判,提高了序列號(hào)識(shí)別的精確性。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。