路超1,王建章2,許德森2,李東垣2,趙鵬2,王國相1,褚騰飛1
(1.北京郵電大學, 北京 100876; 2.中華通信系統(tǒng)有限責任公司,北京 100070)
摘要:針對網(wǎng)絡協(xié)議漏洞挖掘系統(tǒng)在網(wǎng)絡協(xié)議格式分析過程中使用全局序列比對技術(shù)效率不高的問題,結(jié)合網(wǎng)絡漏洞挖掘背景,對序列比對技術(shù)進行深入分析,提出了一種更為有效的基于局部序列比對算法的Fuzzing漏洞挖掘新方法。在獲取網(wǎng)絡協(xié)議格式分析的過程中,提高漏洞挖掘效率。仿真結(jié)果表明,該方法較全局序列比對方法在執(zhí)行效率上具有較為明顯的優(yōu)勢。
關(guān)鍵詞:漏洞挖掘;Fuzzing;局部序列比對;算法
中圖分類號:TP309.2文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.03.001
引用格式:單路超,王建章,許德森,等.基于局部序列比對的漏洞挖掘技術(shù)研究[J].微型機與應用,2017,36(3):1-3,7.
0引言
隨著網(wǎng)絡協(xié)議的發(fā)展,在網(wǎng)絡應用中,網(wǎng)絡漏洞會出現(xiàn)在系統(tǒng)的軟件、硬件或協(xié)議中。這種漏洞的出現(xiàn)會給用戶帶來巨大的損失,因此漏洞挖掘被廣泛應用在網(wǎng)絡系統(tǒng)中。漏洞挖掘技術(shù)主要包括手動測試、Fuzzing算法分析[1]、靜態(tài)分析、比較分析和運行時分析技術(shù)。其中,F(xiàn)uzzing算法由于其優(yōu)良的性能而被廣泛應用在分布式網(wǎng)絡中。在對數(shù)據(jù)進行檢查時,運用的主要技術(shù)便是序列比對技術(shù)。序列比對,即按照實際需求,對某兩個序列的相似性進行考察,具有非常大的現(xiàn)實意義[2]。根據(jù)比對范圍,可以將序列比對劃分為全局比對和局部比對。現(xiàn)在的漏洞挖掘系統(tǒng)中大量運用全局序列比對技術(shù)來進行數(shù)據(jù)檢查。
Smith和Waterman利用動態(tài)規(guī)劃思想,將Needleman—Wunsch算法進行改進,提出了Smith—Wateman算法[3],兩條序列中,整體的相似性往往都不是很大,可能只在某些局部區(qū)域有相似性,因此局部序列比對要比全局序列比對效率更高。
本文在Fuzzing網(wǎng)絡漏洞挖掘技術(shù)的常用框架基礎(chǔ)上,基于已有技術(shù)和整體框架,將部分序列比對算法應用于漏洞挖掘中的報文協(xié)議格式分析過程,最后針對本文提出的新型網(wǎng)絡漏洞挖掘系統(tǒng),完成實驗環(huán)境的搭建和系統(tǒng)的配置,對改進后的網(wǎng)絡漏洞挖掘系統(tǒng)性能進行對比測試。
1網(wǎng)絡漏洞與Fuzzing技術(shù)
本文主要研究的漏洞挖掘中的模糊測試技術(shù)(Fuzzing)屬于灰盒測試技術(shù),通過向測試目標程序發(fā)送大量的半有效數(shù)據(jù)并觀測輸出結(jié)果,來發(fā)現(xiàn)目標系統(tǒng)中存在的漏洞[4]。
在利用Fuzzing技術(shù)進行漏洞挖掘[5]時,首先確定測試對象,產(chǎn)生非預期數(shù)據(jù)構(gòu)造測試用例,啟動模糊測試。然后對程序中出現(xiàn)的異常和錯誤進行檢測和分析。最后對于檢測出來的錯誤或異常,確定漏洞利用的可能性。Fuzzing的工作流程如圖1所示。
2網(wǎng)絡協(xié)議部分分式漏洞挖掘技術(shù)的原理
通過構(gòu)造網(wǎng)絡協(xié)議漏洞挖掘測試器,經(jīng)過搭建系統(tǒng)、配置環(huán)境、構(gòu)造測試用例、生成請求等過程,完成會話控制腳本。首先對網(wǎng)絡進行協(xié)議分析,構(gòu)造測試用例保存在requests中,編寫會話控制腳本,最后開始Fuzzing測試。
在實際網(wǎng)絡協(xié)議漏洞挖掘[6]過程中,對網(wǎng)絡協(xié)議格式進行解析是非常重要的一個環(huán)節(jié)?;谶@種思想,本文對傳統(tǒng)的模糊測試漏洞挖掘器進行改進,改進后的模糊測試漏洞挖掘器結(jié)構(gòu)如圖2所示。
目前應用的網(wǎng)絡協(xié)議格式分析方法主要有兩種:基于軌跡的分析方法和基于數(shù)據(jù)流的分析方法?;谲壽E的分析方法主要是通過動態(tài)污點分析技術(shù)對報文的解析過程進行跟蹤。
本文主要對基于數(shù)據(jù)流的分析方法進行研究和改進?;跀?shù)據(jù)流的網(wǎng)絡協(xié)議分析方法主要通過對測試對象發(fā)送和接收數(shù)據(jù)包的屬性進行測試,得到網(wǎng)絡協(xié)議信息并構(gòu)造測試用例。本文中的網(wǎng)絡協(xié)議格式分析過程包括4個子過程:采集數(shù)據(jù)流、初步處理、數(shù)據(jù)報文分類、協(xié)議格式分析。
在進行網(wǎng)絡協(xié)議格式解析之前,先獲取大量數(shù)據(jù)流,對數(shù)據(jù)流進行初步處理,獲得初始報文序列。然后利用匹配規(guī)則將得到的序列按照相似性進行分組,用于格式分析。最后,通過改進后的局部序列比對技術(shù),對報文格式進行分析。其中對網(wǎng)絡數(shù)據(jù)流進行初步處理是網(wǎng)絡協(xié)議分析的重要前提。數(shù)據(jù)報文分類過程是整個網(wǎng)絡協(xié)議分析過程的第二個關(guān)鍵步驟,它分為3個子過程:報文分析、報文聚類、分類報文小組。網(wǎng)絡協(xié)議格式分析的最后一個環(huán)節(jié)是網(wǎng)絡協(xié)議格式獲取,前面的幾個步驟已經(jīng)將輸入的網(wǎng)絡數(shù)據(jù)流分成不同的報文小組,通過對接收到的報文進行準確分類以及對比分析,最終可以得到報文的協(xié)議格式。在網(wǎng)絡協(xié)議獲取過程中,利用序列比對算法將數(shù)據(jù)報文對齊,對報文中含有的關(guān)鍵信息進行識別和分析,傳遞給Sulley框架,從而構(gòu)造出測試用例,完成報文協(xié)議格式解析。
在網(wǎng)絡協(xié)議漏洞挖掘系統(tǒng)中,局部序列比對算法可以十分精確地找到序列間的最大匹配子序列,這是全局比對算法無法做到的。因此,本文在已有的網(wǎng)絡協(xié)議分析基礎(chǔ)上,提出一種使用局部序列比對算法的網(wǎng)絡協(xié)議格式獲取過程,提高序列比對效率,從而加快網(wǎng)絡協(xié)議格式的獲取速度。
全局序列比對著眼于兩個序列全長的最優(yōu)比對,而局部序列比對則對序列之間的某個局部片段進行檢測和比對。本文提出的改進型網(wǎng)絡協(xié)議漏洞挖掘技術(shù)將SmithWaterman動態(tài)規(guī)劃算法[7] 引入到網(wǎng)絡協(xié)議格式分析過程中,并對改進后的漏洞挖掘系統(tǒng)性能進行研究和分析。
SmithWaterman算法的主要思想為:對于給定的兩個序列M=m1 m2 m3…mn和 N=n1 n2 n3 …nm,設(shè)序列M和序列N的相似度用之前設(shè)計好的計分函數(shù)σ(m, n)來表示,對插入、刪除等操作賦予不同的分值[8]。對打分矩陣進行初始化,使矩陣首行和首列元素為0,即:
G(i,0)=G(0,j)=0
對于任意一個輸入序列,都可以表示成k×1矩陣的形式。在進行插入或刪除空格時,不能出現(xiàn)全為空格的一列。如果將對比之后的序列中的空格刪去,則能恢復成原序列。
對于兩個序列中的字母x、y,設(shè)字母取值于集合Z,在漏洞挖掘系統(tǒng)中,Z可以設(shè)置為A~Z字母集合。設(shè)計一個計分函數(shù)σ(x, y),用來表示兩個序列對比過程的得分。
根據(jù)設(shè)計好的計分函數(shù),通過遞歸方法得到每次對比的分數(shù),存于得分矩陣G的相應位置上,初始化和計算得分矩陣的過程可以用如下等式表示:
在上述計算得分矩陣G的等式中,(1)表示初始化過程;(2)表示元素替換所帶入的計分函數(shù)數(shù)值,此時指針移動方向為指向右下方;(3)表示插入空格所對應的計分結(jié)果,此時指針移動方向為向下;(4)表示刪除空格所對應的計分結(jié)果,此時指針方向為向右。在進行序列比對時,將要比對的序列M和N寫在矩陣的兩側(cè),根據(jù)設(shè)計好的計分函數(shù),將序列M和N中的元素依次相互比較,將得分結(jié)果寫在打分矩陣G對應的位置上,某個位置的得分取元素替換、插入、刪除3種操作中的分值最大者,即按照左、上、左上3個來源方向結(jié)合計分函數(shù)σ(x, y)對同一個位置進行打分,分數(shù)最大值即為這個位置的得分。假設(shè)長度為i的序列,其插入損失為Wi,對變量1≤x≤|M|、1≤y≤|N|,打分矩陣的計分過程可以用如下公式表示:
Gi,j=max{Gi-1,j-1+σ(mi,nj),max{Gi-x,j-Wx},max{Gi,j-y-Wy },0}
因為局部序列比對只是對兩個完整序列的局部區(qū)域進行比較,因此在打分過程中,將負數(shù)記為0不會影響最后比對結(jié)果。
打分過程完成后,開始進行回溯過程,尋找相似子序列。同樣因為局部序列沒有對兩個序列中的全部內(nèi)容進行對比,因此回溯過程不需要從打分矩陣的最右下角處開始,只需要從得分最高的單元格開始即可。
回溯過程規(guī)則如下:
?。?)從打分矩陣中的最高分單元格開始回溯,此處即為兩個比對序列中的相似片段末端。
?。?)回溯方向有3個:上、左上、左?;厮莸竭@3個方向?qū)南乱粋€單元格中最大分數(shù)的位置。如果出現(xiàn)分數(shù)一樣的情況,左上的優(yōu)先級最高。
?。?)重復執(zhí)行(2),直至無法找到下一個不為0的向上路徑。此時,按照回溯路徑寫出的序列即為M、N的最大相似子序列。圖3SmithWaterman算法流程圖。
SmithWaterman算法在填充打分矩陣時,先將第一行和第一列元素置為0,并且用0代替負分。在進行回溯時,從右下角最大正分值處開始,尋找打分矩陣中每個正分值處的返回指針,直至無法找到下一個不為0的向上路徑為止,如圖4所示?;厮萃瓿珊螅鶕?jù)回溯路徑即可得到最優(yōu)解。比如輸入的兩個序列為:ABCDEDC、EBDAEDB時,按照上述算法得到的比對結(jié)果為:BCD_ED;B_DAED。
3算法的仿真和分析
為了驗證在網(wǎng)絡協(xié)議漏洞挖掘系統(tǒng)中采用局部序列對比技術(shù)比全局序列對比技術(shù)性能更好,本文在兩臺PC上搭建實驗環(huán)境,一臺提供服務器端和客戶端,另一臺與之進行通信交互。兩臺實驗PC連接如圖5所示。PC1又分為主機和虛擬機兩部分,分別負責構(gòu)造測試用例和系統(tǒng)服務器部分功能。PC2主要負責產(chǎn)生網(wǎng)絡協(xié)議解析模塊需要的網(wǎng)絡數(shù)據(jù)流。實驗環(huán)境搭建好后,將PC1與PC2進行正常交互,捕捉網(wǎng)絡數(shù)據(jù)包,然后進行網(wǎng)絡協(xié)議格式解析,構(gòu)造測試用例并完成會話腳本。接著啟動PC1中的虛擬機部分,進行相應的配置,開始模糊測試。本文設(shè)計的整個實驗系統(tǒng)應用在網(wǎng)絡協(xié)議FTP測試中,選用WarFTP服務器為測試對象,通過測量協(xié)議格式分析中進行序列對比的測試樣本長度及系統(tǒng)運行時間,可以得到改進后的網(wǎng)絡協(xié)議漏洞挖掘系統(tǒng)與傳統(tǒng)漏洞挖掘系統(tǒng)性能對比結(jié)果。
本文以輸入序列程序運行時間作為判斷網(wǎng)絡協(xié)議漏洞挖掘系統(tǒng)性能的標準,對于輸入的固定長度報文序列,分別使用本文對比方法和傳統(tǒng)對比方法分析報文信息并構(gòu)造測試用例,完成模糊測試。對于固定長度的相同報文序列,經(jīng)過不同序列比對方式會導致整個漏洞挖掘系統(tǒng)的程序運行時間不同,對比結(jié)果如圖6所示。
由圖6可以看出,本文提出的改進型網(wǎng)絡協(xié)議漏洞挖掘系統(tǒng)運行效率比傳統(tǒng)漏洞挖掘系統(tǒng)快,有效性和實用性更高。
4結(jié)束語
本文介紹了現(xiàn)有網(wǎng)絡協(xié)議漏洞挖掘技術(shù)的工作流程
及模塊結(jié)構(gòu),并對模糊測試的工作模式進行闡述。在此基礎(chǔ)上,對網(wǎng)絡協(xié)議漏洞挖掘過程中的網(wǎng)絡協(xié)議格式解析進行優(yōu)化,結(jié)合局部序列對比技術(shù),提高了整個網(wǎng)絡協(xié)議漏洞挖掘系統(tǒng)的工作效率,最后對改進的漏洞挖掘系統(tǒng)設(shè)計測試實驗,驗證了本文所提新型漏洞挖掘方法在執(zhí)行效率上與傳統(tǒng)漏洞挖掘方法相比有一定的提高。
參考文獻
[1] 史記, 曾昭龍, 楊從保,等. Fuzzing測試技術(shù)綜述[J].信息網(wǎng)絡安全, 2014(3):87-91.
?。?] 王櫻,李錫輝.多序列比對算法綜述[J].中國新通信, 2014(5):92-93.
?。?] LEE S T, LIN C Y, CHE L H. GPUbased cloud service for SmithWaterman algorithm using frequency distance filtration scheme[J]. BioMed Research International, 2013, 2013(1):721738.
?。?] 劉大光.基于模糊測試的網(wǎng)絡協(xié)議自動化漏洞挖掘工具設(shè)計與實現(xiàn)[D]. 北京:北京大學, 2014.
[5] 裘志慶, 宦飛. 基于網(wǎng)絡爬蟲和Fuzzing的漏洞挖掘檢測工具[J]. 微型電腦應用, 2016, 32(3):73-76.
?。?] 潘道欣, 王軼駿, 薛質(zhì).基于網(wǎng)絡協(xié)議逆向分析的遠程控制木馬漏洞挖掘[J]. 計算機工程, 2016, 42(2):146150.
[7] LIU Y, HUANG W, JOHNSON J, et al. GPU accelerated SmithWaterman[J]. Lecture Notes in Computer Science, 2006, 3994:188-195.
?。?] GAO Y, HENDERSON M . Speeding up pairwise sequence alignments: a scoring scheme reweighting based approach[C]. Proceedings of the 7th IEEE International Conference on Bioinformatics and Bioengineering. Washington DC: IEEE Computer Society, 2007:11941198.
?。?] IBRAHIM A, ELSIMARY H, ALJUMAH A. Novel reconfigurable hardware accelerator for protein sequence alignment using SmithWaterman algorithm[J]. Ieice Transactions on Fundamentals of Electronics Communications & Computer Sciences, 2016, 99(3):683-690.
[10] Zhang Saidan, Zhang Luyong. Vulnerability mining for network protocols based on fuzzing[C]. Systems and Informatics (ICSAI), 2014 2nd IEEE International Conference,2014:644-648.