国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Fuzzing的網(wǎng)絡(luò)協(xié)議漏洞挖掘技術(shù)研究

2021-09-29 07:10尹譽衡
微型電腦應(yīng)用 2021年9期
關(guān)鍵詞:網(wǎng)絡(luò)協(xié)議測試用例數(shù)據(jù)包

尹譽衡

(華北計算技術(shù)研究所, 北京 100089)

0 引言

互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,不僅使得計算機網(wǎng)絡(luò)成為人們工作和生活不可或缺的部分,也使得針對互聯(lián)網(wǎng)的網(wǎng)絡(luò)攻擊不斷增多[1]。但由于各種原因,如網(wǎng)絡(luò)協(xié)議本身在設(shè)計和實現(xiàn)時比較復(fù)雜,程序的開發(fā)人員使用網(wǎng)絡(luò)協(xié)議進行程序處理時可能會設(shè)立不合適的假設(shè)前提及進行不適當?shù)倪壿嬏幚韀2],安全工作者時常會發(fā)現(xiàn)與網(wǎng)絡(luò)程序相關(guān)的漏洞。

網(wǎng)絡(luò)程序漏洞種類豐富,難以防御,再加上這類病毒具備依托于網(wǎng)絡(luò)進行傳播的特性,所造成的損失也是十分巨大的。2003年,在Windows系統(tǒng)之間散播的沖擊波蠕蟲病毒至少攻擊了全球80%的Windows用戶[3],2007年,被具有強大破壞能力的熊貓燒香病毒感染的個人用戶高達幾百萬,惡意攻擊者利用網(wǎng)絡(luò)對互聯(lián)網(wǎng)上的設(shè)備發(fā)動遠程攻擊,規(guī)模巨大,直接影響到了整個互聯(lián)網(wǎng)的安危[4]。

為了降低網(wǎng)絡(luò)攻擊對互聯(lián)網(wǎng)的影響,安全從業(yè)者應(yīng)當及時挖出漏洞,并發(fā)布補丁,保障網(wǎng)絡(luò)世界的安全,這對互聯(lián)網(wǎng)的良好發(fā)展有著十分深遠的意義。

本文重點研究了基于Fuzzing的網(wǎng)絡(luò)協(xié)議漏洞挖掘技術(shù),采用對智能工具Sulley進行改進的方法,設(shè)計了變異規(guī)則和系統(tǒng)構(gòu)成,對FTP協(xié)議進行Fuzzing測試,通過搭建模擬環(huán)境進行實驗證明了該方法的有效性。

1 網(wǎng)絡(luò)協(xié)議分析技術(shù)研究

對網(wǎng)絡(luò)協(xié)議進行分析是網(wǎng)絡(luò)協(xié)議漏洞挖掘中的重要一環(huán)[5],通常采用截獲網(wǎng)絡(luò)通信流量,分析網(wǎng)絡(luò)數(shù)據(jù)包,進而分析網(wǎng)絡(luò)協(xié)議,挖掘網(wǎng)絡(luò)協(xié)議漏洞的方法,對網(wǎng)絡(luò)協(xié)議進行漏洞挖掘。其步驟如下。

(1) 獲取測試目標的通信流量。在截獲流量后,可以通過改變輸入過程中的一項或幾項重要參數(shù),發(fā)送給測試目標,觀察測試結(jié)果。這種改變流量的方式對網(wǎng)絡(luò)協(xié)議結(jié)構(gòu)的分析會起到很重要的作用,尤其是對未公開的協(xié)議[6],比如可以通過改變用戶名和密碼等輸入?yún)?shù)來改變流量,從而分析協(xié)議。

(2) 流量分類。在對流量進行分類時,通常會按照流量的功能不同來對流量分類。一般來說,基本功能大致相同的函數(shù)所生成的網(wǎng)絡(luò)流量通常會是比較相似的,所以在進行網(wǎng)絡(luò)協(xié)議分析時,是可以按照流量的功能來對流量進行分類的。

(3) 分層分析。TCP/IP協(xié)議中的傳輸層記錄的是端口信息,通常是固定的,可以作為流量識別的特征,但是P2P類型的軟件,使用端到端的流量傳輸方式,就不能將端口作為識別特征。不同的軟件在進行傳輸?shù)倪^程中通常會在應(yīng)用層才體現(xiàn)出差別,通過分析應(yīng)用層協(xié)議報文,獲取流量指紋特征并加以分類,就可以更好地區(qū)別軟件,所以實際上分析網(wǎng)絡(luò)協(xié)議相當于分析應(yīng)用層協(xié)議。

2 Fuzzing技術(shù)研究

2.1 Fuzzing技術(shù)原理

Fuzzing技術(shù)是一種快速有效發(fā)現(xiàn)程序漏洞的方法,通過在程序外部輸入非常規(guī)數(shù)據(jù)引起程序崩潰,并跟蹤程序執(zhí)行輸入的過程,挖掘引發(fā)程序崩潰的漏洞[7]。但是在網(wǎng)絡(luò)協(xié)議漏洞挖掘過程中,如果采用變異的用例生成方法,通常會面臨測試用例無法通過校驗的情況,從而導(dǎo)致大量的用例無法使用,造成時間和資源上的浪費[8]。目前Fuzzing在漏洞挖掘領(lǐng)域中被廣泛應(yīng)用,比如通過構(gòu)造畸形數(shù)據(jù)的文件對文件操作軟件進行Fuzzing,從而發(fā)現(xiàn)文件操作軟件的漏洞。

與其他的漏洞挖掘方法如代碼審計、靜態(tài)分析、動態(tài)分析等相比,F(xiàn)uzzing有許多其他方法不具備的優(yōu)點[9]:(1)Fuzzing可以是一種黑盒測試方法,不需要源代碼即可對軟件進行分析;(2)Fuzzing的使用可以不用關(guān)心被測對象的實現(xiàn)語言、運行平臺等細節(jié)。(3)Fuzzing的可重用性較好 , 一個測試用例可用于多個同類型對象。

2.2 Fuzzing技術(shù)步驟

Fuzzing技術(shù)步驟如圖1所示。

圖1 Fuzzing步驟

(1) 確定測試對象。確定了測試對象后才能選擇測試方法和工具,對于測試對象,需要明確是否開源、是否掌握測試對象的輸入輸出格式、是否有已知漏洞、已知漏洞的觸發(fā)方式和觸發(fā)點等信息。

(2) 確定測試對象的輸入。通常要觸發(fā)目標軟件的漏洞,就需要構(gòu)造非預(yù)期的輸入數(shù)據(jù),當目標沒有對輸入進行有效的檢驗或是沒有相應(yīng)的適當錯誤處理時,就會引起目標軟件出錯。Fuzzing是一個構(gòu)造非預(yù)期輸入來測試目標軟件的過程,要想高效地進行Fuzzing,就需要構(gòu)造有針對性的數(shù)據(jù)輸入,減少無效測試的次數(shù),提高Fuzzing的效率。

(3) 生成測試數(shù)據(jù)[10]。根據(jù)用例生成采用的不同算法可分為兩類生成方法:基于變異的方法和基于生成的方法。基于變異的算法是指通過特定的算法按照一定的規(guī)則修改樣本中的某些數(shù)據(jù),生成一批非常規(guī)的樣本,而基于生成的算法則是不需要合法樣本就自動生成一些非常規(guī)的數(shù)據(jù)樣本,這個生成過程通常采用自動化的方式生成。

(4) 執(zhí)行測試數(shù)據(jù)。通常情況下,執(zhí)行完Fuzzing用例生成的過程就會立即執(zhí)行Fuzzing執(zhí)行的過程,所以通常會以自動化方法實現(xiàn)用例執(zhí)行的過程。如果采用手動執(zhí)行的方式,不僅工作量巨大費時費力,還容易出現(xiàn)誤差。

(5) 監(jiān)視異常。異常檢測是在Fuzzing過程中,軟件執(zhí)行輸入數(shù)據(jù)后,檢測目標軟件的執(zhí)行情況,跟蹤軟件是否崩潰,是否拋出異常,記錄所有異常信息的過程。

(6) 分析測試結(jié)果。根據(jù)異常信息進行人工分析。

3 系統(tǒng)設(shè)計

3.1 總體設(shè)計

系統(tǒng)設(shè)計是基于智能測試工具Sulley進行的,通過對Sulley對網(wǎng)絡(luò)協(xié)議進行Fuzzing的改進和擴展,開發(fā)了一種針對FTP[11]協(xié)議的模糊器。首先通過變異器生成輸入數(shù)據(jù),通過流量截獲模塊截獲流量數(shù)據(jù)包,再通過數(shù)據(jù)包分析模塊分析網(wǎng)絡(luò)協(xié)議,確定數(shù)據(jù)入口,最后通過會話管理模塊連接目標,開始Fuzzing測試。系統(tǒng)架構(gòu)如圖2所示。

圖2 系統(tǒng)架構(gòu)

3.2 功能模塊設(shè)計

流量截獲模塊:針對網(wǎng)絡(luò)協(xié)議的漏洞挖掘,需要有原始的數(shù)據(jù)包作為樣本進行分析。設(shè)計流量截獲模塊,通過tcpdump和wireshark等工具獲取FTP客戶端與服務(wù)器之間的通信流量。

數(shù)據(jù)包分析模塊:流量獲取之后內(nèi)容繁多,需要對流量進行清洗,分析有效字段,確定協(xié)議數(shù)據(jù)輸入入口。

數(shù)據(jù)生成模塊:相較于基于生成的測試用例生成方法生成的測試用例,基于網(wǎng)絡(luò)協(xié)議通信數(shù)據(jù)進行變異的測試用例可以更有效地發(fā)現(xiàn)漏洞。因此在分析網(wǎng)絡(luò)數(shù)據(jù)包的基礎(chǔ)上,對輸入樣例進行字符變異和寬度變異操作,從而獲得所需的測試用例。

會話管理模塊:該模塊從數(shù)據(jù)生成模塊處獲取測試用例,將其作為輸入發(fā)送給服務(wù)端,從而引起服務(wù)端的錯誤。

3.3 變異器的設(shè)計與實現(xiàn)

變異器的作用是分別對網(wǎng)絡(luò)協(xié)議中數(shù)值類型和字符串類型的協(xié)議字段進行變異和模糊處理,在具體設(shè)計中為了確保Fuzzing的有效性,需要重點考慮模糊次數(shù)的有限性。

(1) 數(shù)值模糊的方法

數(shù)值模糊是指根據(jù)協(xié)議中的數(shù)值字段的初始值來確定變異范圍。比如,數(shù)值字段的初始是200,那么變異范圍在初始值-100和+100的范圍內(nèi),即在閉區(qū)間[100,300]內(nèi)取值。

實現(xiàn)的方法步驟如下。

1) 根據(jù)數(shù)值字段初始值V,確定變異范圍 [V-100,V+100];

2) 確定變異函數(shù)y=logax+b;其中,a和b使用偽隨機算法獲得,以確保變異策略多次運行可產(chǎn)生不同的變異值。

3) 通過已確定的變異函數(shù),使用變異范圍[V-100,V+100]的邊界值V-100、V+100和式x=ay-b計算x的取值范圍[X1,Xn]。

4) 根據(jù)設(shè)定的變異次數(shù)C={5,10,50,100},計算x在[X1,Xn]范圍內(nèi)的取值。例如,C=5,計算步徑L=[Xn-X1]/5,那么x的取值分別是{X1,X1+L,X1+2L,X1+4L,Xn}。

5) 最后根據(jù)確定的變異函數(shù),計算y值,即為最后的變異值。

使用對數(shù)函數(shù)的取值方法可保證模糊數(shù)據(jù)具有一定的變化速度和覆蓋寬度。

(2) 字符串變異方法

字符串變異方法主要采取字符替換和寬度變換,或?qū)煞N方式結(jié)合使用的方式模糊已知的初始字符串。

字符替換需要基于樣本文件來實現(xiàn),通常測試工具自帶樣本文件,測試人員也可以自備樣本文件。字符替換變異測試用例生成操作過程,如圖3所示。

圖3 字符替換變異流程

例如,初始字符串值S1為“AABBCC1234”,自定義變異樣本S2為{“%”,“&”,“#”,“@*”,“000”,“233”},跳變長度L為3,迭代次數(shù)N為4。變異器生成隨機值S2_N(假設(shè)為2),并從變異樣本S2中先后隨機抽取S2_N次值如“#”“%”將初始值替換為“#AB%CC#23%”,再將迭代次數(shù)減1,則再迭代3次,最終得到變異字符串。

寬度變異指將初始字符串的長度翻倍,倍數(shù)由測試人員確定,例如,初始字符串為“AABBCC”,設(shè)定長度倍數(shù)是3,則生成的變異字符串為“AABBCCAABBCC”。

當需要將字符變異和寬度變異兩種方式結(jié)合的時候,默認先進行寬度變異,再進行長度變異。

4 實驗分析

本文采用一種基于Fuzzing的網(wǎng)絡(luò)協(xié)議漏洞挖掘方法,通過對Sulley智能工具進行改進,以FTP服務(wù)器作為實驗對象,對FTP協(xié)議進行漏洞挖掘,實現(xiàn)了FTP的漏洞挖掘系統(tǒng)。

實驗測試對象為Uplus FTP Server。Uplus FTP Server是一款FTP文件服務(wù)端軟件,支持標準的FTP協(xié)議,提供FTP文件傳輸服務(wù),運行平臺為Windows系列操作系統(tǒng)。

測試環(huán)境安裝在虛擬機上,使用兩臺安裝了Windows7操作系統(tǒng)的虛擬機,一臺作為服務(wù)端,一臺作為客戶端。

4.1 安裝環(huán)境

在服務(wù)端正常安裝并配置啟動Uplus FTP Server,開放端口21。使用終端窗口連接服務(wù)端,如圖4、圖5所示。

圖4 FTP服務(wù)端開啟

圖5 FTP客戶端連接

4.2 測試用例生成

根據(jù)圖3所示的系統(tǒng)架構(gòu),在理解FTP規(guī)范的基礎(chǔ)上,首先截獲FTP協(xié)議通信流量,再通過數(shù)據(jù)包分析模塊提取FTP流量,根據(jù)協(xié)議格式拆分數(shù)據(jù)包,提取原始輸入集,確定數(shù)據(jù)輸入入口,最后根據(jù)設(shè)定的變異規(guī)則使用數(shù)據(jù)生成模塊來對輸入進行變異,生成測試數(shù)據(jù)集。FTP數(shù)據(jù)報文格式如圖6所示。

圖6 FTP數(shù)據(jù)包報文格式

4.3 執(zhí)行測試并記錄結(jié)果

啟動Uplus FTP Server,使用終端連接服務(wù)器,執(zhí)行測試用例。本次實驗使用mkdir和delete兩個命令分別進行3次實驗,執(zhí)行成功后結(jié)果將返回至客戶端,記錄到日志中。

4.4 測試結(jié)果觀察

日志結(jié)果記錄如圖7所示。

圖7 日志結(jié)果記錄

從日志中可以觀察到,mkdir命令有失敗記錄,輸入的測試用例是200個“A”。基于此,手動構(gòu)造寬度變異測試用例,進行多次實驗,得出以下結(jié)論:測試用例長度超過400個字節(jié)時,被測目標返回“拒絕訪問”;測試用例長度超過4 000個字節(jié)時,被測目標不再返回響應(yīng)碼,停止工作。

5 總結(jié)

本文首先介紹了網(wǎng)絡(luò)攻擊的危害性和進行網(wǎng)絡(luò)協(xié)議漏洞挖掘的重要性。然后對網(wǎng)絡(luò)協(xié)議分析技術(shù)和Fuzzing技術(shù)進行了研究。第三部分設(shè)計了一種基于Sulley進行改造的Fuzzing測試系統(tǒng),設(shè)計了各部分的功能模塊。最后通過對FTP服務(wù)器的測試,證明了該方法的有效性和正確性。今后將加強對未知和加密協(xié)議格式自動識別方法的研究,一方面通過基于數(shù)據(jù)流的協(xié)議格式分析技術(shù)來獲取未知協(xié)議的格式,以作為Fuzzing輸入來對未知格式的網(wǎng)絡(luò)協(xié)議進行漏洞挖掘,另一方面,利用中間人攻擊和CA證書偽造技術(shù)的共同作用,對加密協(xié)議的原報文進行讀取與解密,從而實現(xiàn)對加密協(xié)議的協(xié)議格式分析。通過分析未知格式協(xié)議和加密協(xié)議,提高系統(tǒng)的使用覆蓋面,從而加強系統(tǒng)的智能化和自動化程度。

猜你喜歡
網(wǎng)絡(luò)協(xié)議測試用例數(shù)據(jù)包
二維隱蔽時間信道構(gòu)建的研究*
回歸測試中測試用例優(yōu)化技術(shù)研究與探索
民用飛機飛行模擬機數(shù)據(jù)包試飛任務(wù)優(yōu)化結(jié)合方法研究
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
SmartSniff
一種藍牙多跳網(wǎng)絡(luò)協(xié)議的設(shè)計與研究
基于載波技術(shù)的多點溫度測量系統(tǒng)設(shè)計
基于DPI技術(shù)的語音視頻流量監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
軟件回歸測試用例選取方法研究
宜丰县| 桓台县| 株洲县| 浠水县| 寿阳县| 南丹县| 广平县| 兴国县| 河源市| 类乌齐县| 突泉县| 齐齐哈尔市| 科技| 呼和浩特市| 衡东县| 镇康县| 措美县| 龙州县| 许昌市| 佳木斯市| 社会| 资中县| 孙吴县| 仁布县| 焦作市| 温州市| 广汉市| 喀喇沁旗| 三亚市| 唐山市| 翁源县| 镇宁| 张家界市| 报价| 沁水县| 东台市| 名山县| 岳阳县| 分宜县| 桦南县| 阳高县|