• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于網(wǎng)絡(luò)協(xié)議的模糊測試工具設(shè)計*

      2019-12-04 03:27:34巫忠躍易冬陽
      通信技術(shù) 2019年11期
      關(guān)鍵詞:網(wǎng)絡(luò)協(xié)議狀態(tài)機(jī)測試數(shù)據(jù)

      趙 鑫,巫忠躍,易冬陽,付 梟

      (成都國信安信息產(chǎn)業(yè)基地有限公司,四川 成都 610000)

      0 引 言

      隨著互聯(lián)網(wǎng)的不斷發(fā)展,計算機(jī)網(wǎng)絡(luò)已經(jīng)成為人們工作和生活不可或缺的部分。網(wǎng)絡(luò)協(xié)議起到了重要作用,是計算機(jī)網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換建立的規(guī)則、標(biāo)準(zhǔn)或約定的集合[1]。網(wǎng)絡(luò)協(xié)議是計算機(jī)網(wǎng)絡(luò)的基礎(chǔ),也是計算機(jī)網(wǎng)絡(luò)中各信息系統(tǒng)、信息設(shè)備、各通信實體信息交換正常運作的前提。然而,由于協(xié)議定義和協(xié)議實現(xiàn)的復(fù)雜化,程序開發(fā)人員在編寫協(xié)議處理程序時,時常會出現(xiàn)不當(dāng)?shù)募僭O(shè)和不正確的邏輯處理,造成不斷有基于網(wǎng)絡(luò)程序的漏洞被發(fā)現(xiàn)。例如,2018年思科高危漏洞CVE-2018-0171被黑客利用,國內(nèi)多家機(jī)構(gòu)配置文件被清空,即通過此漏洞,攻擊者無需身份驗證即可遠(yuǎn)程執(zhí)行任意代碼,實現(xiàn)對該設(shè)備的完全控制;360公司Vulcan團(tuán)隊發(fā)現(xiàn)區(qū)塊鏈平臺EOS的一系列高危安全漏洞。經(jīng)證實,可利用部分漏洞在EOS某一節(jié)點上遠(yuǎn)程攻擊,最終控制和接管EOS上運行的所有節(jié)點。由于區(qū)塊鏈網(wǎng)絡(luò)去中心化的計算特點,一個節(jié)點出現(xiàn)漏洞很可能引發(fā)成千上萬的節(jié)點遭到攻擊,對整個數(shù)字貨幣系統(tǒng)造成巨大的安全風(fēng)險。

      網(wǎng)絡(luò)安全事件表明,具有安全漏洞的網(wǎng)絡(luò)設(shè)備、生產(chǎn)系統(tǒng)和應(yīng)用系統(tǒng)一旦開始投入運行,當(dāng)安全漏洞被利用后,會給個人、企業(yè)帶來不可估計的損失。另外,安全漏洞的分析和修補(bǔ)會影響甚至中斷業(yè)務(wù)的正常運轉(zhuǎn),致使修復(fù)代價較高。因此,良好狀態(tài)是產(chǎn)品部署之前就發(fā)現(xiàn)其中的潛在漏洞。

      協(xié)議測試是保證一個標(biāo)準(zhǔn)化協(xié)議的不同實現(xiàn)之間能夠成功進(jìn)行通信的關(guān)鍵技術(shù),也是基于協(xié)議的設(shè)備、軟件和系統(tǒng)正常運轉(zhuǎn)的關(guān)鍵技術(shù)。協(xié)議測試有4個內(nèi)容,分別是:一致性測試,檢查協(xié)議實現(xiàn)與協(xié)議規(guī)范是否一致;性能測試,檢查協(xié)議實現(xiàn)的性能指標(biāo),如連接時間、執(zhí)行速度、吞吐量等;互操作性測試,檢查協(xié)議實現(xiàn)在各個版本之間的互連操作性和互通能力;安全性測試,檢測協(xié)議實現(xiàn)在遭受攻擊時行為是否正確。國際標(biāo)準(zhǔn)化組織ISO制訂的國際標(biāo)準(zhǔn)ISO/IEC 9646,描述了基于OSI七層參考模型的協(xié)議測試過程、概念和方法,并在實際協(xié)議測試過程中起到了指導(dǎo)作用。但是,在實際網(wǎng)絡(luò)環(huán)境中,由于存在著各式各樣的數(shù)據(jù)報文,甚至人為構(gòu)造的攻擊報文,因此觸發(fā)安全漏洞的可能性更高。本文以協(xié)議測試4個內(nèi)容中的安全測試為重點,著重研究基于網(wǎng)絡(luò)協(xié)議的模糊測試方法,將數(shù)據(jù)變異方法和FSM模型引入模糊測試工具設(shè)計中,實現(xiàn)網(wǎng)絡(luò)協(xié)議的自動化測試。

      1 基于網(wǎng)絡(luò)協(xié)議的模糊測試研究

      1.1 概述

      模糊測試是一種發(fā)現(xiàn)程序漏洞的方法,正逐漸被安全研究者應(yīng)用和推廣。例如,微軟公司的產(chǎn)品在正式推向市場之前,有20%~25%的安全漏洞是通過模糊測試發(fā)現(xiàn)的[2]。基于網(wǎng)絡(luò)協(xié)議的模糊測試,主要原理是通過Socket與被測目標(biāo)之間進(jìn)行通信,向被測目標(biāo)發(fā)送變異或包含錯誤的數(shù)據(jù)包,監(jiān)視目標(biāo)以發(fā)現(xiàn)缺陷。測試過程中的關(guān)鍵是遵守各類協(xié)議的規(guī)范、標(biāo)準(zhǔn)和狀態(tài)機(jī)制,產(chǎn)生具備有效模糊測試數(shù)據(jù)的測試用例,同時監(jiān)視并記錄被測試目標(biāo)的響應(yīng)或是異常情況。

      基于網(wǎng)絡(luò)協(xié)議的模糊測試,用于發(fā)現(xiàn)和分析網(wǎng)絡(luò)協(xié)議在實現(xiàn)時存在的漏洞和缺陷時,相較于漏洞分析方法中的靜態(tài)和動態(tài)分析方法,模糊測試具備許多優(yōu)點。

      (1)誤報率低。靜態(tài)分析技術(shù)是一種白盒分析技術(shù),需對目標(biāo)的源代碼進(jìn)行全面分析檢測。靜態(tài)分析過程主要是找到不正確的函數(shù)調(diào)用及返回狀態(tài),特別是可能未進(jìn)行邊界檢查或邊界檢查不正確的函數(shù),以及可能造成緩沖區(qū)溢出的函數(shù)、共享內(nèi)存函數(shù)等。此方法的特點是注重代碼“特征”,不驗證應(yīng)用程序功能邏輯。因此,靜態(tài)分析結(jié)果數(shù)據(jù)量較大、誤報率高。模糊測試不關(guān)心被測目標(biāo)的內(nèi)部實現(xiàn)細(xì)節(jié)和復(fù)雜程度,與被測目標(biāo)是動態(tài)交互關(guān)系,程序的缺陷在測試過程中表現(xiàn)形式多樣,可被記錄與重現(xiàn),因此誤報率低。

      (2)可結(jié)合動態(tài)分析技術(shù)定位缺陷。動態(tài)分析技術(shù)需在調(diào)試器中運行目標(biāo)程序,通過觀察執(zhí)行過程中目標(biāo)程序的運行狀態(tài)、內(nèi)存使用狀況以及寄存器的值等發(fā)現(xiàn)目標(biāo)缺陷。目標(biāo)程序在執(zhí)行過程中異常出現(xiàn)時間的不確定性,使監(jiān)控和分析點的定位變得困難。模糊測試可結(jié)合動態(tài)分析技術(shù)定位缺陷位置。在模糊測試過程中,當(dāng)目標(biāo)程序出現(xiàn)異常時,可提取出現(xiàn)異常的用例重新執(zhí)行,完成動態(tài)分析的預(yù)判工作,確定目標(biāo)程序異常的出現(xiàn),從而定位缺陷所在位置。

      1.2 測試過程與測試環(huán)境搭建模型

      網(wǎng)絡(luò)協(xié)議的模糊測試過程根據(jù)被測目標(biāo)不同,測試的具體操作步驟存在差異。例如,通過與被測目標(biāo)的交互點的分析和選擇,Web網(wǎng)站可使用爬網(wǎng)工具分析其所有的URL地址入口,Windows應(yīng)用程序則可結(jié)合靜態(tài)分析方法查找入口點。但是,從總體上看,測試過程可分為5個步驟[3]。

      (1)確定輸入與輸出的目標(biāo):確定測試目標(biāo)是測試的第一步。當(dāng)被測目標(biāo)確定后,才可以根據(jù)被測目標(biāo)的特點選取正確的分析方法,確定與目標(biāo)程序的交互點。

      (2)產(chǎn)生模糊測試數(shù)據(jù):分析目標(biāo)在協(xié)議實現(xiàn)時的數(shù)據(jù)輸入和輸出,產(chǎn)生盡可能覆蓋代碼所有路徑的輸入數(shù)據(jù),是進(jìn)行有效模糊測試的關(guān)鍵一步,也是模糊測試向自動化、智能化發(fā)展與研究的重要方向。

      (3)執(zhí)行測試數(shù)據(jù):測試數(shù)據(jù)準(zhǔn)備完成后,將數(shù)據(jù)發(fā)送給被測試目標(biāo)。此過程的執(zhí)行也與被測目標(biāo)相關(guān),需選擇正確的自動化執(zhí)行工具。

      (4)監(jiān)測目標(biāo)異常:測試過程中,監(jiān)視異常是一個非常重要但經(jīng)常被忽視的步驟。由于模糊測試產(chǎn)生的數(shù)據(jù)包數(shù)據(jù)量非常大,目標(biāo)異常的定義具有多樣性。當(dāng)被測目標(biāo)出現(xiàn)不響應(yīng)、崩潰、CPU使用100%或是返回數(shù)據(jù)不正確時,若無法確定哪個數(shù)據(jù)包是真正引發(fā)服務(wù)器崩潰的原因,那么整個測試過程都沒有意義。實時監(jiān)測和記錄目標(biāo)程序的運行,能找到引發(fā)目標(biāo)程序異常的測試數(shù)據(jù),從而重現(xiàn)異常。

      (5)確定其利用性。當(dāng)目標(biāo)異常被準(zhǔn)確定位后,確定其利用性不是模糊測試的必要步驟。此步驟一般通過手工完成,需依賴測試人員安全領(lǐng)域豐富的相關(guān)經(jīng)驗。

      完成上述測試步驟的典型測試環(huán)境搭建模型,如圖1所示。

      圖1 典型測試環(huán)境搭建模型

      基于網(wǎng)絡(luò)協(xié)議的模糊測試環(huán)境搭建模型是典型的客戶端和服務(wù)端測試模式。在服務(wù)端,被測目標(biāo)一般有兩類:一類是應(yīng)用軟件程序,如在線視頻音樂軟件、聊天工具、在線辦公工具以及各類不同用途的網(wǎng)站等;另一類是網(wǎng)絡(luò)設(shè)備,如防火墻、交換機(jī)、路由器等。在客戶端,可部署測試數(shù)據(jù)產(chǎn)生、協(xié)議分析、異常監(jiān)控等測試工具。模糊測試工具通過Socket與被測目標(biāo)之間進(jìn)行通信,向被測目標(biāo)發(fā)送變異或包含錯誤的數(shù)據(jù)包,監(jiān)視目標(biāo)以發(fā)現(xiàn)缺陷。

      1.3 測試數(shù)據(jù)生成

      優(yōu)化模糊測試數(shù)據(jù)生成方法,提高模糊測試數(shù)據(jù)對被測目標(biāo)程序代碼的覆蓋寬度和深度,是模糊測試研究的重點和難點。目前,已有的模糊測試數(shù)據(jù)生成方法主要有3種。

      (1)隨機(jī)生成。隨機(jī)方法簡單地將產(chǎn)生的大量偽隨機(jī)數(shù)據(jù)輸入目標(biāo)軟件,能否觸發(fā)異常、發(fā)現(xiàn)漏洞有很大的運氣成分。此種方法產(chǎn)生的畸形數(shù)據(jù)包數(shù)量巨大,數(shù)據(jù)包的產(chǎn)生時間和被測目標(biāo)響應(yīng)的時間急劇增長,時間和設(shè)備資源被耗費,測試的時間不可評估,不能達(dá)到發(fā)現(xiàn)缺陷的目的。

      (2)基于樣本的變異。基于樣本變異的生成方法從一個有效的協(xié)議樣本開始,持續(xù)不斷地打亂或修改數(shù)據(jù)包的每一個字節(jié)、字、雙字。這是一個數(shù)據(jù)生成相當(dāng)早期的方法,幾乎不需要事先對被測目標(biāo)進(jìn)行任何研究,實現(xiàn)相對簡單直接,模糊測試工具只需要將篡改后數(shù)據(jù)傳送給目標(biāo),監(jiān)視和記錄測試結(jié)果。此種方法與隨機(jī)生成的方法相同,具備低效性,測試目標(biāo)對協(xié)議格式提供了各種類型的驗證,如完整性通常采用校驗和哈希值進(jìn)行驗證。這些驗證機(jī)制將會給模糊測試帶來障礙,大量的測試數(shù)據(jù)因為不能通過驗證機(jī)制而被直接丟棄,造成測試的無效性。

      (3)基于生成和變異的方式?;谏珊妥儺惖姆绞叫枰M(jìn)行前期的研究以理解協(xié)議規(guī)范。測試前先創(chuàng)建一個描述協(xié)議規(guī)范的語法模板,在識別數(shù)據(jù)包中的靜態(tài)字段和動態(tài)字段的前提下,識別可以被模糊的字段。用于分析和變異的協(xié)議樣本數(shù)據(jù),保持靜態(tài)數(shù)據(jù)值不變,被識別為可模糊的字段發(fā)生修改,動態(tài)字段根據(jù)協(xié)議模板的計算規(guī)則計算對應(yīng)的值,如字段長度、校驗和等。這種數(shù)據(jù)生成方式減少了無效數(shù)據(jù)包的產(chǎn)生,因而具有更高的效率,但也存在許多不足之處。根據(jù)網(wǎng)絡(luò)協(xié)議相鄰的數(shù)據(jù)包內(nèi)容是否相關(guān),可把協(xié)議分為無狀態(tài)協(xié)議和有狀態(tài)協(xié)議。有狀態(tài)的協(xié)議相鄰數(shù)據(jù)包之間具有上下文關(guān)聯(lián)性。例如,RTSP協(xié)議從會話初始到會話終止會有一系列相關(guān)狀態(tài)的變化,被測目標(biāo)可能在一個特定的狀態(tài)才會存在漏洞。因此,針對有狀態(tài)協(xié)議,基于生成和變異的方式產(chǎn)生的測試數(shù)據(jù)無法適應(yīng)測試目標(biāo)對相鄰數(shù)據(jù)包之間上下文關(guān)聯(lián)性的驗證。此外,此種方式還將耗費測試人員大量時間研究協(xié)議規(guī)范和制作協(xié)議模板。

      1.4 測試工具情況

      經(jīng)過長期的研究與發(fā)展,模糊測試的方法和工具都有了快速發(fā)展。其中,Peach是最具有代表性并受到測試工作人員廣泛關(guān)注的模糊測試框架。它提供了方便的數(shù)據(jù)構(gòu)造與變異功能,不僅可以對報文格式規(guī)范進(jìn)行測試,而且初步支持基于協(xié)議狀態(tài)機(jī)的測試,很大程度上可以提高模糊測試數(shù)據(jù)的有效性。它的測試對象包括文件系統(tǒng)、程序API以及協(xié)議等。測試者需根據(jù)Peach的格式規(guī)范,自行編寫測試腳本來驅(qū)動此框架進(jìn)行測試。

      與Peach類似的框架式工具還有SPIKE、Sulley等。它們都以模糊數(shù)據(jù)的生成工作為重點,并以多種方式對測試數(shù)據(jù)進(jìn)行變異及延伸。這些框架提供對軟件程序、網(wǎng)絡(luò)協(xié)議、操作系統(tǒng)等幾乎所有可測試對象的支持,同時規(guī)定了一系列驅(qū)動腳本的編寫規(guī)范。這些規(guī)范通常包含較多條目及嚴(yán)格的格式要求。測試者除了要學(xué)習(xí)測試目標(biāo)的技術(shù)規(guī)范外,還要熟練掌握每一種需要使用的測試工具腳本的編寫規(guī)范,導(dǎo)致協(xié)議測試的預(yù)備工作量增大,并拖延了實際的測試工作。

      本工具設(shè)計提供給用戶協(xié)議狀態(tài)機(jī)圖形建模界面,測試人員可以不再關(guān)注測試腳本繁瑣冗長的語法結(jié)構(gòu),通過拖拽圖形生成協(xié)議的狀態(tài)模型,提高測試的工作效率。同時,工具設(shè)計實現(xiàn)了可配置參數(shù)的數(shù)據(jù)生成策略,依據(jù)模糊數(shù)據(jù)產(chǎn)生的本質(zhì),對協(xié)議模型中數(shù)值類型的字段使用對數(shù)函數(shù)取值的變異方法,對字符串類型的字段使用字符替換和寬度變換的變異方法,并支持雙字段同時模糊的方法。工具使用時,所有的變異方法可根據(jù)協(xié)議特點配置參數(shù),從而使得生成的模糊數(shù)據(jù)具備一定的畸形度和覆蓋寬度,提高了協(xié)議模糊測試的有效性。

      2 系統(tǒng)框架設(shè)計

      2.1 總體構(gòu)架

      工具總體技術(shù)構(gòu)架,如圖2所示。工具的運行環(huán)境為Window 7,運行框架為.net FrameWork 3.5,采用C#語言開發(fā)。Microsoft .NET Framework是適用于Windows的新托管代碼編程模型。它將強(qiáng)大的功能與新技術(shù)結(jié)合起來,用于構(gòu)建具有視覺上引人注目的應(yīng)用程序,實現(xiàn)跨技術(shù)邊界的無縫通信,并且支持各種業(yè)務(wù)流程[4]。此外,.NET Framework3.5具備與Windows 7的無縫集成,無需額外安裝其他組件的特點,因此是工具技術(shù)框架的首選。

      圖2 工具總體技術(shù)構(gòu)架

      工具的測試構(gòu)架組件包含人機(jī)交互界面、協(xié)議分析器、協(xié)議狀態(tài)機(jī)、執(zhí)行器、變異器、監(jiān)視器以及日志記錄器7個部分。工具各組件間的工作關(guān)系如圖3所示。

      如圖3所示,工具的使用以人機(jī)交互界面為起點,主要包括協(xié)議模型管理、模糊策略管理、協(xié)議狀態(tài)機(jī)管理、測試執(zhí)行管理、監(jiān)視與分析以及日志管理6個主要的可視化界面。用戶可以以直觀、簡潔的方式構(gòu)造出待測目標(biāo)的協(xié)議模型、狀態(tài)機(jī)模型和策略模型,并分別為后端協(xié)議分析器、變異器、協(xié)議狀態(tài)機(jī)運行提供驅(qū)動腳本。協(xié)議模型包含待測目標(biāo)數(shù)據(jù)格式的信息;狀態(tài)機(jī)模型包含待測目標(biāo)狀態(tài)轉(zhuǎn)換信息;策略模型包含測試數(shù)據(jù)生成的方法和參數(shù)。3種模型均使用Json格式文件存儲,實現(xiàn)圖形界面向協(xié)議分析器、變異器以及協(xié)議狀態(tài)機(jī)的相互轉(zhuǎn)換。Json是一種基于對象表示法的數(shù)據(jù)交換格式,用于不同平臺、系統(tǒng)或?qū)ο笾g的交換數(shù)據(jù)。它獨立于編程語言,使用一種在許多編程語言中都能找到共同元素的表示法,并具備可移植性[5]。所以,Json格式文件非常適用于存儲協(xié)議模型、狀態(tài)機(jī)模型和策略模型,并作為組件間數(shù)據(jù)交換的格式。

      圖3 工具各組件間的工作關(guān)系

      協(xié)議分析器用于解析和校驗協(xié)議格式規(guī)范,包含協(xié)議字段類型、字段長度、字段間相互關(guān)系等信息,并具有計算字段長度、校驗值等協(xié)議相關(guān)計算值的計算能力。協(xié)議分析器同時具備正向和逆向協(xié)議格式解析能力,可將變異后的模糊測試數(shù)據(jù)的計算值字段重新計算,也可將從執(zhí)行器收到的協(xié)議數(shù)據(jù)包解釋成類似PCAP文件的格式,方便用戶閱讀和分析。

      變異器根據(jù)策略模型生成基于字段變體的模糊測試數(shù)據(jù)。變異器的策略模型具備可替換的參數(shù)腳本和樣本文件。參數(shù)腳本包含可變異的字段總數(shù)以及變異字段的長度、范圍、類型、初始值和變異范圍。樣本文件包含的內(nèi)容是由用戶定義或是工具本身已經(jīng)定義的一組數(shù)據(jù)。例如:變異字段類型是字符串,值為“A11B11C11”,變異樣本提供的數(shù)組為 {“%”,“&”,“@#”,“@*&”,“0”,“232”},跳變長度為3,跳變位置修改次數(shù)為2,那么變異器會從變異樣本中先后隨機(jī)抽取3次值如“@#”“%”“0”將初始值替換為“@#11%11011”,然后根據(jù)跳變位置修改次數(shù)為2,重復(fù)第1次變異的步驟。本工具變異器的設(shè)計是一種折中方式,變異細(xì)節(jié)和復(fù)雜程度由用戶提供的策略控制,以此改進(jìn)完全隨機(jī)的變異和模糊測試數(shù)據(jù)過多的問題。

      協(xié)議狀態(tài)機(jī)是各個組件聯(lián)合工作的核心,控制整個測試流程如何進(jìn)行數(shù)據(jù)發(fā)送和數(shù)據(jù)接收等行為。通常情況下,網(wǎng)絡(luò)協(xié)議規(guī)范定義兩方面內(nèi)容——數(shù)據(jù)包內(nèi)部的格式規(guī)范和數(shù)據(jù)包之間的時序規(guī)范。因此,協(xié)議的測試也是基于這兩個方面展開的。協(xié)議分析器解決了協(xié)議測試數(shù)據(jù)包內(nèi)部的格式規(guī)范問題,協(xié)議狀態(tài)機(jī)解決了數(shù)據(jù)包之間的時序規(guī)范問題。由協(xié)議分析器、協(xié)議狀態(tài)機(jī)、變異器協(xié)同工作產(chǎn)生的測試用例,能有效提高協(xié)議測試所能達(dá)到的深度和廣度。

      執(zhí)行器是測試工具發(fā)送和接收數(shù)據(jù)的I/O接口。執(zhí)行器設(shè)計支持5種類型的I/O接口,分別是發(fā)送和接收帶有IP頭的raw IPv4數(shù)據(jù)包、發(fā)送和接收帶有IP頭的raw IPv6數(shù)據(jù)包、發(fā)送和接收TCP數(shù)據(jù)包、發(fā)送和接收UDP數(shù)據(jù)包、發(fā)送和接收HTTP數(shù)據(jù)包。協(xié)議分析器、協(xié)議狀態(tài)機(jī)、變異器以及執(zhí)行器4個模塊協(xié)同運行,在有效的規(guī)則下產(chǎn)生隨機(jī)測試數(shù)據(jù),并將這些數(shù)據(jù)作為輸入發(fā)送給待測目標(biāo),因此也可以一起合并稱為“產(chǎn)生引擎”。

      工具的監(jiān)視器可分為兩種。一種與測試工具同時運行,在本框架設(shè)計過程中作為工具組件的一部分,采用偵察包確認(rèn)法,即當(dāng)執(zhí)行器向被測目標(biāo)發(fā)送一組畸形測試數(shù)據(jù)后,再引入一個正常的“偵察包”,通過觀察分析被測目標(biāo)對偵察包數(shù)據(jù)的響應(yīng)情況來監(jiān)控被測目標(biāo)的運行狀態(tài)。例如,被測對象是Web服務(wù)器時,使用HTTP協(xié)議交互,執(zhí)行器可以在發(fā)送完一組畸形測試數(shù)據(jù)后向被測目標(biāo)發(fā)送一個“Http Get”請求偵察包,并確認(rèn)在發(fā)送下一組畸形數(shù)據(jù)包之前收到一個回應(yīng),以判斷被測目標(biāo)系統(tǒng)是否已經(jīng)在畸形報文作用下出現(xiàn)異常。默認(rèn)情況下,Web服務(wù)器應(yīng)針對請求返回Http狀態(tài)碼。如果被測對象對偵察包的響應(yīng)不符合RFC的標(biāo)準(zhǔn)[6],則可進(jìn)行重點分析。另一種情況,當(dāng)無法利用測試目標(biāo)響應(yīng)的方法監(jiān)測目標(biāo)對象時,本框架設(shè)計采用調(diào)試跟蹤法監(jiān)測被測目標(biāo)異常,借助WinDbg工具查看進(jìn)程運行狀態(tài)和內(nèi)存地址等內(nèi)容。

      日志記錄器、監(jiān)視器可合并叫做“監(jiān)控引擎”。后臺監(jiān)控引擎可以通過日志的方式記錄待測目標(biāo)的異常信息,以協(xié)助用戶定位產(chǎn)生異常位置,從而修復(fù)該錯誤。

      從工具各組件間的工作關(guān)系可以看出,各組件在設(shè)計上采用了面向?qū)ο蟮脑O(shè)計方式,人機(jī)交互界面、協(xié)議分析器、協(xié)議狀態(tài)機(jī)、執(zhí)行器、變異器、監(jiān)視器以及日志記錄器等組件,各自完成組件內(nèi)的功能,之間的協(xié)作依靠Json格式的參數(shù)文件進(jìn)行交互。因此,各組件的可重用性、移植性較強(qiáng)。

      2.2 關(guān)鍵技術(shù)實現(xiàn)

      2.2.1 協(xié)議模型的設(shè)計與實現(xiàn)

      協(xié)議模型可以使用手工輸入和PCAP文件導(dǎo)入兩種方式定義。PCAP文件的導(dǎo)入可實現(xiàn)協(xié)議模型的輔助輸入、字段長度以及校驗和等動態(tài)字段,用戶仍需分析協(xié)議特點,定義其計算規(guī)則。

      協(xié)議模型模板包括字段類型(數(shù)值類型、字符串類型、引用類型、計算值類型)、字段長度、字段的值類型(十六進(jìn)制、十進(jìn)制、二進(jìn)制)以及字段計算值規(guī)則(數(shù)據(jù)包長度、指定目標(biāo)長度和CRC校驗碼,工具包含CRC8、CRC16、CRC32、CRCCCITT共4個常用的CRC校驗方法)??勺远x規(guī)則函數(shù),編寫動態(tài)鏈接庫,利用Windows內(nèi)核文件“kernel32.dll”加載非托管動態(tài)鏈接庫實現(xiàn)函數(shù)的調(diào)用。定義完成的協(xié)議模型,系統(tǒng)使用Json格式文件存儲,并使用Json.Net[7]類庫中JsonConvert.SerializeObject和JsonConvert.DeserializeObject方法,實現(xiàn)對象的序列化和反序列化。

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

      變異器的實質(zhì)是對協(xié)議模型中數(shù)值類型和字符串類型的協(xié)議字段進(jìn)行變異和模糊處理,測試工具支持雙字段同時模糊處理,在具體設(shè)計中重點考慮模糊次數(shù)的有限性,確保模糊測試的有效性。

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

      數(shù)值模糊根據(jù)協(xié)議中的數(shù)值字段的初始值確定變異范圍。例如,數(shù)值字段的初始是100,那么變異范圍在初始值-50和+50的范圍內(nèi),即在閉區(qū)間[50,150]內(nèi)取值。為保證區(qū)間內(nèi)取值的非線性變化,取值函數(shù)使用對數(shù)函數(shù)y=logax+b(a≠1),變異范圍對應(yīng)函數(shù)曲線上的點的Y軸坐標(biāo)值,如圖4所示。

      圖4 數(shù)值變異取值函數(shù)圖形

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

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

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

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

      ④根據(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}。

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

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

      (2)字符串模糊的方法

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

      字符替換需結(jié)合樣本文件實現(xiàn)。用戶可選擇使用測試工具本身具備的樣本文件,也可以自定義輸入。例如:當(dāng)初始字符串值為“A11B11C11”,用戶提供變異樣本數(shù)組為{“%”“&”“@#”“@*&”“0”“232”},跳變長度為3,跳變位置修改次數(shù)為2。那么變異器會從變異樣本中先后隨機(jī)抽取3次值如“@#”“%”“0”將初始值替換為“@#11%11011”,然后根據(jù)跳變位置修改次數(shù)為2,重復(fù)第一次變異的步驟。

      寬度變換指對已知的初始字符串做長度的倍數(shù)增加。例如:當(dāng)初始字符串值為“A11B11C11”,長度倍數(shù)是3,那么變異后的字符串共有2個,分 別 為“A11B11C11A11B11C11A11B11C11” 和“A11B11C11A11B11C11”。當(dāng)字符替換和寬度變換方法結(jié)合起來進(jìn)行字符串變異時,變異器先執(zhí)行寬度變換,后對執(zhí)行寬度變換后的字符串進(jìn)行字符替換,因此字符替換和寬度變換結(jié)合的方式進(jìn)行字符串變異。單字段變異需執(zhí)行的次數(shù)是(m-1)*m,其中m是寬度變換設(shè)定的字符串長度倍數(shù),取值范圍(1≤m≤50,m是整數(shù));n是字符替換跳變位置修改次數(shù),取值范圍(1≤n≤50,n是整數(shù))。

      (3)雙字段模糊的方法

      單字段變異產(chǎn)生的測試數(shù)據(jù)對多點觸發(fā)型漏洞無能為力。測試工具支持雙字段模糊測試,以增加測試數(shù)據(jù)的覆蓋范圍。當(dāng)定義變異器策略模板時,可定義多個可模糊的字段。例如:定義策略模板時,定義5個可模糊測試的字段。變異器在執(zhí)行字段變異時,任意取2個字段進(jìn)行模糊測試。這時字段選取的次數(shù)等于組合數(shù)C=C25。根據(jù)字符串模糊方法和數(shù)值模糊方法可以得到,單字段模糊的最大執(zhí)行次數(shù)是(m-1)*n=2 450,其中m=50,n=50。因此,雙字段模糊的最大執(zhí)行次數(shù)MAXC=Cj2*2 4502,其中j的取值范圍為(j≥2),表示協(xié)議的可變異字段數(shù)量。從網(wǎng)絡(luò)協(xié)議的定義來分析,協(xié)議的字段數(shù)量是有限的,因此雙字段模糊的最大執(zhí)行次數(shù)MAXC也是有限的。在本工具中設(shè)計實現(xiàn)雙字段模糊是可行的。

      學(xué)生從題干出發(fā),多從運輸距離和運輸重量來分析運費成本進(jìn)行分析,而圖中沒有具體運輸重量,難以計算。最終根據(jù)運輸距離推斷,O點到原料M1、M2產(chǎn)地和市場距離距離相等,這說明M1、M2這兩種原料對工廠的影響相等,即原料指數(shù)相等。當(dāng)M1、M2和產(chǎn)品的重量都為1個單位時,將工廠建在這三者的中間,使之到三地的距離相等,這時的運輸費用會最低,據(jù)此可推斷選項D正確。這樣講解學(xué)生對原料和產(chǎn)品重量沒有直觀的認(rèn)識,理解存在一定困難。

      2.2.3 協(xié)議狀態(tài)機(jī)的設(shè)計與實現(xiàn)

      協(xié)議狀態(tài)機(jī)決定了測試工具應(yīng)該如何進(jìn)行工作。當(dāng)測試一個協(xié)議時,狀態(tài)機(jī)需要重建一個基本的狀態(tài)邏輯。使用拖拽的方式在可視化界面編輯多個狀態(tài)節(jié)點之間的相互轉(zhuǎn)換,建模使用的工具欄包括4個圖形,分別是開始、結(jié)束、狀態(tài)和狀態(tài)轉(zhuǎn)移,如圖5所示。協(xié)議狀態(tài)機(jī)每個狀態(tài)節(jié)點可包含若干個操作、狀態(tài)轉(zhuǎn)移條件和跳轉(zhuǎn)動作。這個設(shè)計與有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)設(shè)計包含的3個要素——狀態(tài)操作(狀態(tài)對應(yīng)的操作)、跳轉(zhuǎn)判斷(狀態(tài)跳轉(zhuǎn)的判斷條件)和狀態(tài)跳轉(zhuǎn)(現(xiàn)態(tài)跳轉(zhuǎn)到次態(tài))相一致。

      圖5 狀態(tài)機(jī)定義界面

      協(xié)議狀態(tài)機(jī)定義的5種操作類型分別是start(開始)、startListen(開始偵聽)、startListen(結(jié)束偵聽)、sendData(發(fā)送數(shù)據(jù))、receData(接收數(shù)據(jù))、changeState(改變狀態(tài))和end(結(jié)束)。其中,開始和結(jié)束操作是系統(tǒng)默認(rèn)的操作,不需要顯示的定義;開始偵聽和結(jié)束偵聽需成對定義,可出現(xiàn)在不同的狀態(tài)節(jié)點中。針對發(fā)送數(shù)據(jù)操作和接收數(shù)據(jù)操作,需包含對應(yīng)的協(xié)議模型和模糊策略模型,指導(dǎo)狀態(tài)機(jī)、變異器和協(xié)議分析器共同協(xié)同工作。

      3 試驗分析

      本次試驗測試目標(biāo)為Uplus FTP Server 1.7.0.13。Uplus FTP Server是一款輕量級的FTP文件服務(wù)端軟件,支持標(biāo)準(zhǔn)的FTP協(xié)議,提供FTP文件傳輸服務(wù),運行平臺為Windows系列操作系統(tǒng)。此次試驗按照模糊測試流程對Uplus FTP Server軟件進(jìn)行模糊測試,并分析該軟件對FTP協(xié)議實現(xiàn)時存在的漏洞。

      3.1 試驗步驟

      3.1.1 安裝測試目標(biāo),分析目標(biāo)協(xié)議,確定測試入口點

      在Windows 7操作系統(tǒng)下正常安裝并配置啟動Uplus FTP Server 1.7.0.13,開放端口21。使用客戶端工具連接訪問,登錄成功后查看Uplus FTP Server軟件支持的命令。如圖6所示,F(xiàn)TP服務(wù)端訪問正常。

      圖6 查看FTP服務(wù)端工具指令

      訪問Uplus FTP Server的客戶端包含42個有效指令,完成整體測試應(yīng)針對42個入口點。本次試驗選擇user、mkdir、delete以及cd做為測試入口點。在客戶端運行Wireshark抓包軟件,監(jiān)控目標(biāo)軟件的登錄、創(chuàng)建目錄、更改目錄、刪除目錄以及退出5個步驟,查看發(fā)送和收到的數(shù)據(jù)包,截取部分圖片如圖7所示。

      分析得出FTP的數(shù)據(jù)報文格式,如圖8所示。

      圖7 USER指令的數(shù)據(jù)包內(nèi)容和格式

      圖8 FTP的數(shù)據(jù)報文格式

      根據(jù)FTP的數(shù)據(jù)報文格式,在控制字保持不變的情況下,內(nèi)容字段做模糊處理。變異的初始數(shù)據(jù)使用第一個分析步驟中WireShark軟件所抓數(shù)據(jù)包,變異方法分別使用字符替換和寬度變換,針對user、mkdir、delete以及cd合計8個用例流程。

      3.1.3 執(zhí)行用例

      選擇測試工具執(zhí)行器的發(fā)送和接收TCP數(shù)據(jù)包IO接口,配置被測目標(biāo)的IP和端口,執(zhí)行測試用例。

      3.1.4 過程監(jiān)控

      user、mkdir、delete以及cd命令執(zhí)行成功后,均有返回信息到客戶端。因此,在用例流程設(shè)計時不用引入額外的偵查包監(jiān)控服務(wù)端運行情況,使用測試工具已設(shè)計的日志工具模塊完成過程監(jiān)控與記錄。

      3.2 試驗結(jié)果

      本次試驗共運行了8個用例,選擇被測目標(biāo)支持的user、mkdir、delete以及cd共4個指令進(jìn)行模糊測試,其中7個用例執(zhí)行完成、1個失敗。失敗的用例日志記錄如圖9所示。

      圖9 運行失敗日志

      有日志可以看出,失敗的用例測試使用的指令是mkdir,初始變異樣本值是200個“Z”。當(dāng)發(fā)送指令內(nèi)容部分長度超過400個字節(jié)時,被測目標(biāo)正常返回響應(yīng)代碼550,拒絕訪問;當(dāng)發(fā)送指令內(nèi)容部分長度超過4 000個字節(jié)時,被測目標(biāo)停止返回響應(yīng)代碼,此時觀察被測目標(biāo)發(fā)現(xiàn),被測目標(biāo)已終止服務(wù)。最后,重新手工啟動Uplus FTP Server服務(wù)端,再次運行此用例,結(jié)果和第一次運行結(jié)果保持一致。因此可得出結(jié)論:被測目標(biāo)Uplus FTP Server軟件在FTP協(xié)議實現(xiàn)時存在潛在漏洞,可導(dǎo)致FTP服務(wù)崩潰,漏洞嚴(yán)重程度較高。如需要進(jìn)一步分析確定漏洞的利用性,可在FTP服務(wù)器部署WinDbg工具,使用動態(tài)分析法確認(rèn)漏洞類型和位置。

      4 結(jié) 語

      本文對“網(wǎng)絡(luò)協(xié)議模糊測試工具”的總體構(gòu)架和關(guān)鍵技術(shù)方法做了詳細(xì)設(shè)計與分析,但是面對網(wǎng)絡(luò)協(xié)議的快速發(fā)展和安全漏洞層出不窮的形勢,仍然存在兩方面內(nèi)容需要進(jìn)一步優(yōu)化和研究。

      (1)知識智能獲取。工具使用協(xié)議和狀態(tài)機(jī)圖形建模界面替代手工編寫測試腳本,為測試人員測試工作提供了便利。但是,建模前首先需要對目標(biāo)協(xié)議的內(nèi)部格式規(guī)范和時序規(guī)范進(jìn)行深入學(xué)習(xí)與研究,在知識獲取的基礎(chǔ)上創(chuàng)建協(xié)議模型和狀態(tài)機(jī)模型,并識別協(xié)議中的可變字段。這種協(xié)議測試方式測試結(jié)果的有效性很大程度依賴于測試人員的經(jīng)驗,因此工具需繼續(xù)研究對于一個網(wǎng)絡(luò)協(xié)議如何自動生成對應(yīng)的協(xié)議模型和狀態(tài)機(jī)模型,即知識的智能獲取。

      (2)模糊數(shù)據(jù)生成策略優(yōu)化。工具從本質(zhì)上使用了基于生成和變異的方法產(chǎn)生模糊測試數(shù)據(jù)。具體實現(xiàn)上,對協(xié)議模型中數(shù)值類型的字段使用對數(shù)函數(shù)取值的變異方法,對字符串類型的字段使用字符替換和寬度變換的變異方法,并在一定范圍內(nèi)引入了多維模糊測試技術(shù),但仍需在初始變異樣本選取時進(jìn)行優(yōu)化改進(jìn),在測試過程中智能篩選出有效初始樣本,使得最小測試用例集合能夠覆蓋最大的執(zhí)行路徑,以發(fā)掘隱藏較深的協(xié)議漏洞,進(jìn)一步提高協(xié)議測試的有效性。

      猜你喜歡
      網(wǎng)絡(luò)協(xié)議狀態(tài)機(jī)測試數(shù)據(jù)
      計算機(jī)網(wǎng)絡(luò)理論下的傳播研究結(jié)構(gòu)模型:Communication一詞的兩種翻譯
      基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
      測試數(shù)據(jù)管理系統(tǒng)設(shè)計與實現(xiàn)
      一種藍(lán)牙多跳網(wǎng)絡(luò)協(xié)議的設(shè)計與研究
      電子制作(2018年17期)2018-09-28 01:56:52
      基于DPI技術(shù)的語音視頻流量監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)
      基于自適應(yīng)粒子群優(yōu)化算法的測試數(shù)據(jù)擴(kuò)增方法
      空間co-location挖掘模式在學(xué)生體能測試數(shù)據(jù)中的應(yīng)用
      體育科技(2016年2期)2016-02-28 17:06:21
      芻議局域網(wǎng)中網(wǎng)絡(luò)協(xié)議的添加與配置
      科技資訊(2015年10期)2015-06-29 18:17:23
      影響《標(biāo)準(zhǔn)》測試數(shù)據(jù)真實性的因素及破解策略
      體育師友(2011年5期)2011-03-20 15:29:51
      FPGA設(shè)計中狀態(tài)機(jī)安全性研究
      洪雅县| 台湾省| 黔南| 锦屏县| 开鲁县| 三河市| 高雄市| 上思县| 汽车| 凌云县| 大厂| 敦煌市| 平山县| 大厂| 宁化县| 大渡口区| 建瓯市| 伊通| 灵台县| 天柱县| 吐鲁番市| 桃江县| 牟定县| 福海县| 勃利县| 庆城县| 鄯善县| 古田县| 祥云县| 嘉峪关市| 阳高县| 广东省| 文昌市| 张掖市| 西昌市| 嘉禾县| 克拉玛依市| 成都市| 拉萨市| 云浮市| 东明县|