劉順
摘要:隨著網(wǎng)絡(luò)攻擊的多元化、復(fù)雜化、智能化,網(wǎng)絡(luò)安全面臨的挑戰(zhàn)日益嚴峻。本文使用LCS(最長公共子序列)算法對網(wǎng)絡(luò)通信協(xié)議數(shù)據(jù)格式進行識別,針對網(wǎng)絡(luò)上應(yīng)用較為廣泛的SSL/TLS通信協(xié)議,在模式測試平臺PEACH框架的基礎(chǔ)上進行了改進。
關(guān)鍵詞:模糊測試;LCS算法;PEACH
中圖分類號:TP393.04 文獻標識碼:A 文章編號:1007-9416(2018)12-0180-01
1 軟件安全性測試
對軟件進行安全性測試,分為白盒測試和黑盒測試。白盒測試是指通過程序的源代碼進行測試,從代碼句法發(fā)現(xiàn)內(nèi)部代碼在算法、溢出、路徑、條件等等中的缺陷或錯誤。黑盒測試也稱為功能測試、行為測試或數(shù)據(jù)驅(qū)動測試,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合功能說明[1]。目前應(yīng)用更為普遍和廣泛的是動態(tài)模糊測試。模糊測試本質(zhì)是一種黑盒測試,其主要方法是構(gòu)造一定量的畸形數(shù)據(jù),使得目標系統(tǒng)崩潰,常用于網(wǎng)絡(luò)服務(wù)、文檔程序類的漏洞挖掘和測試。
2 基于網(wǎng)絡(luò)協(xié)議的模糊測試框架
目前廣泛使用的兩款網(wǎng)絡(luò)協(xié)議模糊測試框架有SPIKE和Peach。
SPIKE使用C語言編寫,提供了一系列允許快速和高效的開發(fā)網(wǎng)絡(luò)協(xié)議模糊測試器的API,在SPIKE中數(shù)據(jù)結(jié)構(gòu)被分解表示成塊,這個塊同時包含二進制數(shù)據(jù)和塊大小,這樣產(chǎn)生的數(shù)據(jù)就可以被SPIKE以不同的格式嵌入到自身測試數(shù)據(jù)中去,當需要在特定位置嵌入精確數(shù)據(jù)的時候,塊就能大大節(jié)省了我們自行計算的時間,SPIKE是一個GPL的API和一套工具,它使你可以快速創(chuàng)建任何網(wǎng)絡(luò)協(xié)議壓力測試的測試器。
Peach使用python語言編寫,是一個開源的框架,使用標準接口,可以支持使用任何格式、網(wǎng)絡(luò)協(xié)議、應(yīng)用協(xié)議,Android設(shè)備,裝置驅(qū)動程序或嵌入式硬件的安全測試,Peach體系結(jié)構(gòu)允許研究者聚焦于一個個的特定的協(xié)議的子組件,然后組合起來創(chuàng)建完整的模糊測試器,這種方法可能不如基于塊的開發(fā)速度,但是對代碼的復(fù)用的支持比其他模糊測試工具好。
3 網(wǎng)絡(luò)通信數(shù)據(jù)格式識別
網(wǎng)絡(luò)通信協(xié)議的格式特征往往體現(xiàn)于那些在多個網(wǎng)絡(luò)會話中出現(xiàn)的子串,這些不變量在一定程度上確定了網(wǎng)絡(luò)通信協(xié)議的格式[2]?;谶@點選擇使用LCS算法進行報文協(xié)議的分析,這個算法對于同一類流量可以取得比較好的效果。
LCS算法步驟介紹[3]:
(1)定義dp[i][j]:表示字符串序列A的前i個字符組成的序列Ax和字符串序列B的前j個字符組成的序列By之間的最長公共子序列L(i,j)的長度(m,n分別為Ax和By的長度,i<=m,j<=n)。
(2)如果Ax[i]=By[j],那么Ax與By之間的最長公共子序列L(i,j)的最后一項一定是這個元素,所以dp[i][j]=dp[i-1][j-1]+1。
(3)如果Ax[i]!=By[j],設(shè)LCS(i-1,j-1)是L(i-1,j-1)的最后一個元素,或者L(i-1,j-1)是空序列,則LCS(i-1,j-1)!=Ax[i]和LCS(i-1,j-1)!=By[j]至少有一個不成立。
當LCS(i-1,j-1)!=Ax[i]時,dp[i][j]=dp[i-1][j];
當LCS(i-1,j-1)!=By[j]時,dp[i][j]=dp[i][j-1];
所以dp[i][j]=max(dp[i-1][j],dp[i][j-1])。
(4)要求出任意一個最長公共子序列,考慮上面的遞推式,L(i,j)的最后一個元素LCS(i,j)的來源有三種情況:
dp[i][j]=dp[i-1][j-1]+1,LCS(i-1,j-1)接上LCS(i,j),表示從斜向上左方來;
dp[i][j]=dp[i-1][j],LCS(i-1,j)接上LCS(i,j),表示從上方過來;
dp[i][j]=dp[i][j-1],LCS(i,j-1)接上LCS(i,j),表示從左方過來。
4 Peach框架改進
4.1 網(wǎng)絡(luò)數(shù)據(jù)通信部分改進
我們在Peach平臺的基礎(chǔ)上,對其核心部分進行了改造,使用了中間人攻擊模式,平臺作為服務(wù)端和客戶端的橋梁,對服務(wù)器和客戶端之間的數(shù)據(jù)進行連接和轉(zhuǎn)發(fā)。這樣設(shè)計平臺可以直接獲取到測試數(shù)據(jù),而無須再使用wireshark等數(shù)據(jù)嗅探工具,既省去了后期還需要對分片數(shù)據(jù)進行再組包的麻煩,也避免了因數(shù)據(jù)組包而可能導(dǎo)致的錯誤,而且可以同時對服務(wù)端和客戶端進行測試,提高了測試效率。改進后的平臺如圖1所示。
4.2 數(shù)據(jù)編譯器部分改進
Peach模糊測試框架內(nèi)預(yù)先制定了一些處理輸入文件的規(guī)則,它會根據(jù)樣本文件給定的數(shù)據(jù)結(jié)構(gòu)格式生成隨機數(shù)據(jù)填充,或者對文件中的數(shù)據(jù)進行變異,從而產(chǎn)生粒度更小針對性更強的畸形樣本文件。
但Peach對于數(shù)據(jù)的變異處理僅針對數(shù)據(jù)中的可變化部分進行處理,對于格式部分即數(shù)據(jù)中不變部分未做處理,這樣在一定程度上丟棄了一些可能造成程序內(nèi)存溢出的情況。針對這個情況,我們在對數(shù)據(jù)的變異處理部分,加入了對可能是數(shù)據(jù)長度指示的數(shù)據(jù)的變異處理。
數(shù)據(jù)長度指示在實際數(shù)據(jù)中分為兩種,第一種是指示服務(wù)端或客戶端自身后續(xù)將要跟隨的數(shù)據(jù)塊大小,第二種是指示期望對方返回的數(shù)據(jù)塊大小。針對ssl協(xié)議,第一種情況,采取的策略是在數(shù)據(jù)不變部分的尾部取2字節(jié),或是在可變部分的頭部取2字節(jié),來判斷是否為可變部分的長度指示;第二種情況,采取的策略是在不可變部分中查找可能是長度指示的連續(xù)2字節(jié)。
5 實驗結(jié)果
改進后的Peach平臺可以完整的記錄雙方通訊數(shù)據(jù),準確的識別出TLS/SSL數(shù)據(jù)格式。使用改進后的數(shù)據(jù)編譯器,成功發(fā)現(xiàn)了原PEACH平臺無法發(fā)現(xiàn)的心臟出血漏洞。
6 結(jié)語
網(wǎng)絡(luò)安全正受到人們越來越多的重視,漏洞的發(fā)現(xiàn)與補救也成為網(wǎng)絡(luò)安全防護的重中之重。模糊測試作為漏洞發(fā)現(xiàn)的一種方法,其普遍適用性和簡便性,使得其在漏洞挖掘中扮演著越來越重要的角色。在今后的研究中,要重點在變異數(shù)據(jù)生成方面和自動化方便做更深入的研究和探索。
參考文獻
[1]梁紅碩,馮曉東,賈永勝.論黑盒測試與白盒測試在軟件測試中的不同作用[J].商場現(xiàn)代化,2010(16):5-6.
[2]潘道欣,王軼駿,薛質(zhì).基于網(wǎng)絡(luò)協(xié)議逆向分析的遠程控制木馬漏洞挖掘[J].計算機工程,2016,42(02):146-150+156.
[3]于海英.字符串相似度度量中LCS和GST算法比較[J].電子科技,2011,24(03):101-103+124.
Fuzzy Test Framework for SSL/TLS Protocol
LIU Shun
(School of Information Science @ Engineering Lanzhou University,Lanzhou? Gansu 730000)
Abstract:With the diversification, complexity and intelligence of cyber attacks, the challenges facing network security are increasingly severe. In this paper, LCS (longest common subsequence) algorithm is used to identify the data format of network communication protocol. Aiming at the widely used SSL/TLS communication protocol on the network, an improvement is made on the basis of PEACH framework, a pattern testing platform.
Key words:fuzzy test; LCS algorithm; PEACH