正在播放国产第九十二_日韩精品在线官网_欧洲人免费视频网站在线_精品二区自拍偷拍_午夜成本人动漫在线观看_欧美亚洲人成在线观看_欧美激情亚洲一区中文字幕_自拍影视无码少妇_韩日av无码中文字幕_国产成人毛片不卡在线视频

解決方案需求
數(shù)字化轉(zhuǎn)型正在成為社會(huì)發(fā)展的新常態(tài),智能AI技術(shù)、大數(shù)據(jù)和5G網(wǎng)絡(luò)新技術(shù)將推動(dòng)社會(huì)各行各業(yè)邁入數(shù)字新基建的新時(shí)代,構(gòu)建一套完美的解決方案方能揚(yáng)帆領(lǐng)航。
了解更多了解更多

模糊測(cè)試介紹

作者:容域科技 發(fā)布時(shí)間:2023-02-06
1.簡(jiǎn)介
模糊測(cè)試(Fuzz Testing)的理論和應(yīng)用目前都已成熟,已有各種Fuzz安全測(cè)試的框架、工具和書籍問(wèn)世。在信息安全領(lǐng)域,很多安全測(cè)試都引入了Fuzz Testing思想進(jìn)行安全漏洞挖掘。
模糊測(cè)試是一種介于完全的手工滲透測(cè)試與完全的自動(dòng)化測(cè)試之間的安全性黑盒測(cè)試類型。它充分利用了機(jī)器的能力:隨機(jī)生成和發(fā)送數(shù)據(jù),同時(shí)嘗試將安全專家在安全性方面的經(jīng)驗(yàn)引入。從執(zhí)行過(guò)程的角度來(lái)說(shuō),模糊測(cè)試的執(zhí)行過(guò)程非常簡(jiǎn)單,大致可以分為如下5個(gè)階段。
 
2.測(cè)試步驟
 (1)確定輸入向量
幾乎所有可以被攻擊者利用的安全漏洞都是因?yàn)閼?yīng)用程序沒(méi)有對(duì)用戶輸入進(jìn)行安全的邊界校驗(yàn),或者對(duì)非法輸入有過(guò)濾但并不完全造成的。能否實(shí)施有效的模糊測(cè)試,關(guān)鍵在于能否準(zhǔn)確地找到輸入向量。我們將確定輸入向量的原則定義為:一切向測(cè)試目標(biāo)程序輸入的數(shù)據(jù)都應(yīng)該被認(rèn)為是危險(xiǎn)的,所有輸入向量都可能是存在潛在安全風(fēng)險(xiǎn)的模糊測(cè)試變量。
 
(2)生成模糊測(cè)試數(shù)據(jù)
識(shí)別所有的輸入向量之后,就可以依據(jù)輸入向量產(chǎn)生模糊測(cè)試數(shù)據(jù)。產(chǎn)生模糊測(cè)試數(shù)據(jù)的方式主要有兩種:一種是通過(guò)預(yù)先確定的值,使用基于已存在的數(shù)據(jù)通過(guò)算法將其變異,生成新的測(cè)試數(shù)據(jù);另一種是通過(guò)分析被測(cè)試應(yīng)用程序及其使用的數(shù)據(jù)格式,動(dòng)態(tài)生成測(cè)試數(shù)據(jù)。無(wú)論選擇哪一種方式,都應(yīng)該使模糊測(cè)試數(shù)據(jù)的生成自動(dòng)化,否則將大大降低測(cè)試效率。 
 
(3)執(zhí)行模糊測(cè)試
在完成前面兩個(gè)步驟以后,就可以執(zhí)行模糊測(cè)試了。在這一步中,需要依據(jù)測(cè)試目標(biāo)的不同選擇不同的測(cè)試方法,一般會(huì)向被測(cè)試目標(biāo)發(fā)送數(shù)據(jù)包、利用被測(cè)試程序打開(kāi)包含測(cè)試數(shù)據(jù)的文件等。與生成模糊測(cè)試數(shù)據(jù)一樣,執(zhí)行模糊測(cè)試同樣需要實(shí)現(xiàn)自動(dòng)化。
 
 (4)監(jiān)視異常
在進(jìn)行模糊測(cè)試的過(guò)程中,一個(gè)非常重要的步驟就是對(duì)測(cè)試過(guò)程中的異常和錯(cuò)誤進(jìn)行監(jiān)控。模糊測(cè)試的目的不僅是希望確定被測(cè)試程序是否有安全漏洞,更重要的是確定程序?yàn)楹螘?huì)產(chǎn)生異常,以及產(chǎn)生異常后對(duì)漏洞進(jìn)行重現(xiàn),從而使安全專家可以針對(duì)漏洞編寫測(cè)試代碼,以確定漏洞的存在,同時(shí),廠商可以對(duì)漏洞進(jìn)行及時(shí)的修補(bǔ)。
 
 (5)根據(jù)被測(cè)系統(tǒng)的狀態(tài)判斷是否存在潛在的安全漏洞
如果在模糊測(cè)試中發(fā)現(xiàn)了一個(gè)程序錯(cuò)誤,依據(jù)我們的審計(jì)目的,需要判斷這個(gè)程序錯(cuò)誤是一個(gè)可利用的安全漏洞還是程序Bug。
 
3.舉例和方法
顯然,模糊測(cè)試的整個(gè)執(zhí)行過(guò)程是需要依靠工具進(jìn)行的自動(dòng)化測(cè)試——如此大規(guī)模的數(shù)據(jù)和分析完全依靠手工是不現(xiàn)實(shí)的。那么,為什么模糊測(cè)試需要和安全專家的經(jīng)驗(yàn)結(jié)合起來(lái)呢?我們用一個(gè)例子演示一下。
 
為了簡(jiǎn)單起見(jiàn),假定我們要測(cè)試的應(yīng)用是一個(gè)C/S應(yīng)用的服務(wù)端程序。這個(gè)程序運(yùn)行在Linux平臺(tái)上,叫做WPServer。我們唯一知道的信息就是客戶端和WPServer之間使用基于TCP/IP的自定義協(xié)議進(jìn)行通信。在這種情況下,我們?cè)撊绾螄L試找到應(yīng)用系統(tǒng)中可能存在的漏洞呢?有如下兩種方法:
(1)方法1
第一種方法是:如果我們手頭上有WPServer的源碼,通過(guò)代碼審計(jì)顯然可以找到可能的漏洞。如果沒(méi)有源碼,我們依然可以通過(guò)逆向工程的方式用代碼審計(jì)找到漏洞。當(dāng)然,這必然要求審查者具有足夠好的技能,而且,被測(cè)應(yīng)用規(guī)模越大,需要付出的成本越高。
(2)方法2
第二種方法是:嘗試抓取客戶端和服務(wù)器之間的通信數(shù)據(jù),根據(jù)這些數(shù)據(jù)分析客戶端與服務(wù)器之間的通信協(xié)議,然后根據(jù)協(xié)議的定義手工構(gòu)造協(xié)議數(shù)據(jù),對(duì)WPServer發(fā)起攻擊,嘗試找到可能的漏洞。
在以上兩種方法中,第二種方法在成本上顯然要比第一種低,而且由于第二種方法關(guān)注的是協(xié)議層面的攻擊,所以效率會(huì)更高。但是,仔細(xì)思考一下,第二種方法還是存在一些問(wèn)題:完整的協(xié)議分析難度大,很難遍歷所有的輸入路徑;人工編造、變異協(xié)議數(shù)據(jù)的成本很高。
在第二種方法的基礎(chǔ)上,我們嘗試引入模糊測(cè)試的概念。由于機(jī)器生成和發(fā)送數(shù)據(jù)的能力足夠強(qiáng),因此我們完全可以把生成數(shù)據(jù)的任務(wù)交給機(jī)器去完成。當(dāng)然,協(xié)議的分析主要還是依賴人工完成。雖然模糊測(cè)試領(lǐng)域內(nèi)有一些自動(dòng)化的協(xié)議分析手段,但從效率和效果上來(lái)說(shuō),在面對(duì)復(fù)雜協(xié)議的時(shí)候,人工分析的方式更為有效、穩(wěn)妥。

4. 模糊測(cè)試技術(shù)
模糊測(cè)試技術(shù)的基本流程分為:預(yù)處理(preprocessing)、輸入數(shù)據(jù)構(gòu)造(input building)、輸入選擇(input selection)、評(píng)估(evalution)、結(jié)果分析(post-fuzzing)。
1)預(yù)處理
工作:搜集目標(biāo)相關(guān)信息并制定模糊測(cè)試的策略, 為監(jiān)控目標(biāo)在測(cè)試中的運(yùn)行狀態(tài)做必要的準(zhǔn)備。通常依賴于插樁、符號(hào)執(zhí)行以及污點(diǎn)分析這類程序分析技術(shù)
搜集目標(biāo)相關(guān)信息,比如目標(biāo)的輸入數(shù)據(jù)格式、目標(biāo)的內(nèi)部結(jié)構(gòu),并為監(jiān)控測(cè)試中目標(biāo)的狀態(tài)變化做必要的準(zhǔn)備。該環(huán)節(jié)面臨的挑戰(zhàn)是:使用什么程序分析技術(shù),以及模糊測(cè)試究竟需要對(duì)目標(biāo)內(nèi)部信息有多詳細(xì)的了解
根據(jù)模糊測(cè)試對(duì)程序內(nèi)部信息分析的程度,現(xiàn)代的模糊測(cè)試方法可以劃分為3類:黑盒模糊測(cè)試 (Black boxfuzzing)、灰盒模糊測(cè)試(Grey boxfuzzing) 和白盒模糊測(cè)試(White boxfuzzing)。
1. 插樁:
插樁技術(shù)通過(guò)向目標(biāo)的代碼中合適的位置添加預(yù)設(shè)好的代碼,獲得程序的靜態(tài)或動(dòng)態(tài)執(zhí)行信息。比如程序的抽象語(yǔ)法樹(shù),覆蓋率以及函數(shù)內(nèi)變量取值等。插樁技術(shù)的缺點(diǎn)是會(huì)帶來(lái)資源的開(kāi)銷。插樁分兩種:
動(dòng)態(tài)插樁
動(dòng)態(tài)插樁則是在運(yùn)行的過(guò)程中對(duì)運(yùn)行過(guò)的代碼進(jìn)行插樁。比如利用QEMU等模擬技術(shù),進(jìn)行動(dòng)態(tài)插樁,可以獲得程序運(yùn)行時(shí)的信息,缺點(diǎn)是資源的開(kāi)銷大。
靜態(tài)插樁
通過(guò)GCC編譯器在匯編語(yǔ)言上插樁,LLVM在生成的中間語(yǔ)言LLVMIR(low level virtual machine intermediate representation)上插樁。優(yōu)點(diǎn)是節(jié)省時(shí)間、速度快,缺點(diǎn)是依賴于程序源碼。
2. 符號(hào)執(zhí)行
將程序行為的推理歸結(jié)為邏輯領(lǐng)域的推理,通過(guò)構(gòu)建一個(gè)表示程序執(zhí)行的邏輯公式,可以同時(shí)推斷一個(gè)程序在不同輸入上的行為。該方法可以使模糊測(cè)試獲得較好的覆蓋率,并可以深入到程序深處,探尋可能存在漏洞的區(qū)域。符號(hào)執(zhí)行也有兩種:
靜態(tài)符號(hào)執(zhí)行:
靜態(tài)符號(hào)執(zhí)行通常會(huì)因?yàn)槌绦蛑醒h(huán)和遞歸的存在,陷入到路徑爆炸中,還會(huì)因?yàn)槁窂郊s束中包含諸如取Hash值等操作,導(dǎo)致約束求解失敗。由于存在這2種問(wèn)題,使用較多的是動(dòng)態(tài)符號(hào)執(zhí)行。
動(dòng)態(tài)符號(hào)執(zhí)行:
動(dòng)態(tài)符號(hào)執(zhí)行通過(guò)對(duì)程序進(jìn)行實(shí)際執(zhí)行與符號(hào)化執(zhí)行,維護(hù)程序的實(shí)際狀態(tài)和符號(hào)化狀態(tài),通過(guò)將難以求解的約束替換為實(shí)際值,緩解了靜態(tài)符號(hào)執(zhí)行的問(wèn)題,并按照深度優(yōu)先的搜索策略對(duì)目標(biāo)程序進(jìn)行了探索。
存在的問(wèn)題:
①由于程序分支的存在,路徑爆炸的問(wèn)題仍然存在,程序越復(fù)雜, 路徑爆炸的問(wèn)題就越嚴(yán)重。解決的一種辦法是通過(guò)啟發(fā)式的方法,選擇比較重要的路徑進(jìn)行探索。
②雖然動(dòng)態(tài)符號(hào)執(zhí)行使用實(shí)際值替換的方法,解決了一部分靜態(tài)符號(hào)執(zhí)行無(wú)法繞過(guò)的約束,但是也會(huì)丟失一些路徑,造成探索結(jié)果的不完整。
③所有的符號(hào)執(zhí)行技術(shù)都受限于約束求解方法的能力,比如如何處理類似取余操作這樣的非線性約束,仍然是符號(hào)執(zhí)行面臨的挑戰(zhàn)
為了能夠?qū)⒎?hào)執(zhí)行更好地應(yīng)用到模糊測(cè)試中,近年來(lái)誕生了一些工作:比如Pangolin 通過(guò)允許符號(hào)執(zhí)行重用之前的計(jì)算結(jié)果;Intriguer通過(guò)利用字段級(jí)的信息,都實(shí)現(xiàn)了對(duì)符號(hào)執(zhí)行過(guò)程的加速。ILF通過(guò)使用神經(jīng)網(wǎng)絡(luò),對(duì)由符號(hào)執(zhí)行專家生成的大量高質(zhì)量輸入數(shù)據(jù)進(jìn)行學(xué)習(xí),得到了合適的模糊測(cè)試策略。
3. 污點(diǎn)分析
該技術(shù)會(huì)觀測(cè)程序中,哪些程序數(shù)據(jù)受到了預(yù)先準(zhǔn)備好的污染源(比如輸入)的污染,目的是跟蹤污染源和匯聚點(diǎn)(比如有敏感信息的程序數(shù)據(jù))之間的信息流。
靜態(tài)污點(diǎn)分析
靜態(tài)污點(diǎn)分析不需要程序?qū)嶋H運(yùn)行,通過(guò)對(duì)程序靜態(tài)分析,獲得程序控制流圖、抽象語(yǔ)法樹(shù)等信息, 依據(jù)數(shù)據(jù)流以及依賴關(guān)系進(jìn)行污點(diǎn)分析;
動(dòng)態(tài)污點(diǎn)分析
動(dòng)態(tài)污點(diǎn)分析則是在程序?qū)嶋H執(zhí)行的過(guò)程中,利用程序的動(dòng)態(tài)執(zhí)行信息進(jìn)行污點(diǎn)分析
動(dòng)態(tài)污點(diǎn)分析檢測(cè)的可信度更高,但是檢測(cè)結(jié)果是否全面, 取決于動(dòng)態(tài)污點(diǎn)分析對(duì)程序的覆蓋情況,而且動(dòng)態(tài)污點(diǎn)分析會(huì)消耗更多的資源; 靜態(tài)污點(diǎn)分析又會(huì)和符號(hào)執(zhí)行一樣,可能會(huì)陷入到路徑爆炸中,而簡(jiǎn)化后的靜態(tài)污點(diǎn)分析又存在著嚴(yán)重的過(guò)度污染問(wèn)題。
將污點(diǎn)分析技術(shù)應(yīng)用到模糊測(cè)試中,并降低其資源消耗是近年來(lái)的重要研究方向。比如GREYONE嘗試通過(guò)減少污點(diǎn)分析跟蹤的對(duì)象、降低污點(diǎn)分析的開(kāi)銷、提升模糊測(cè)試的檢測(cè)效率。
2)輸入構(gòu)造
種子獲取、種子篩選、種子突變。
具體的挑戰(zhàn)是如何在盡量滿足語(yǔ)法語(yǔ)義檢查的情況下,短時(shí)間內(nèi)生成 大量的輸入,用以對(duì)目標(biāo)做全面而深入分析。
首先得到一個(gè)數(shù)據(jù) S SS ,然后數(shù)據(jù) S SS 按照一定的策略進(jìn)行一定次數(shù)的變異,獲得大量新數(shù)據(jù) I、II , 最后將I 、II輸入到被測(cè)試對(duì)象中進(jìn)行測(cè)試。其中數(shù)據(jù) S SS 被稱為種子(seed), I 和II 是測(cè)試實(shí)際使用的輸入數(shù)據(jù)
3)評(píng)估
現(xiàn)階段的研究都會(huì)聚焦于模糊測(cè)試器在2個(gè)指標(biāo)上的表現(xiàn):覆蓋率和暴露漏洞平均時(shí)間
覆蓋率是軟件測(cè)試中的一個(gè)衡量指標(biāo),指的是在測(cè)試過(guò)程中,對(duì)象被覆蓋到的數(shù)目占總數(shù)的比例。 通常而言,高覆蓋率更可能發(fā)現(xiàn)更多的隱藏漏洞,眾多研究因此集中在覆蓋率提升上
AFL 使用上下文無(wú)關(guān)的邊覆蓋率作為評(píng)估指標(biāo)。
Angora 使用上下文敏感的分支覆蓋率。
VUzzer 使用了塊覆蓋率替代邊覆蓋率作為覆蓋率評(píng)估的對(duì)象。
暴露漏洞平均時(shí)間:
暴露漏洞平均時(shí)間被Böhme AFLGo選做評(píng)估指標(biāo)在 與 基 準(zhǔn) 模 糊 工 具 AFL 的對(duì)比實(shí)驗(yàn)中,AFLGo 復(fù)現(xiàn)單個(gè)漏洞的時(shí)間遠(yuǎn)比AFL少,這證明了該評(píng)估指標(biāo)的有效性。此后Hawakeye同樣使用了這一指標(biāo)來(lái)證明其性能。Parmesan 在通過(guò)sanitizer來(lái)發(fā)現(xiàn)潛在漏洞的研究工作中,也是用暴露漏洞平均時(shí)間作為評(píng)估指 標(biāo)同Angora等定向灰盒模糊工具進(jìn)行比較。
4)結(jié)果分析
結(jié)果分析發(fā)生在模糊測(cè)試結(jié)束以后,主要目的是對(duì)于模糊測(cè)試的輸出信息進(jìn)行分析和處理。物聯(lián)網(wǎng)中的模糊測(cè)試主要面臨兩個(gè)問(wèn)題:
將模糊測(cè)試應(yīng)用到物聯(lián)網(wǎng)領(lǐng)域問(wèn)題就是特定物聯(lián)網(wǎng)設(shè)備上運(yùn)行的程序通常對(duì)于其實(shí)際硬件的配置有著高度的依賴性。簡(jiǎn)單的從固件中提取一個(gè)用戶級(jí)別的程序,然后使用模糊測(cè)試進(jìn)行檢測(cè),通常是行不通的。
Iot-Fuzzer認(rèn)為大多數(shù)物聯(lián)網(wǎng)設(shè)備通過(guò)其官方移動(dòng)應(yīng)用程序進(jìn)行控制,并且此類應(yīng)用程序通常包含有與設(shè)備進(jìn)行通信所使用協(xié)議的豐富信息,因此通過(guò)識(shí)別和重用特定于程序的邏輯(比如加密)來(lái)改變測(cè)試用例(尤其是消息字段),就能夠有效地對(duì)物聯(lián)網(wǎng)目標(biāo)進(jìn)行模糊測(cè)試,而無(wú)需依賴于有關(guān)其協(xié)議規(guī)范的任何知識(shí)。
物聯(lián)網(wǎng)設(shè)備遠(yuǎn)遠(yuǎn)無(wú)法滿足模糊測(cè)試需要的吞吐率
多項(xiàng)研究成果表明物聯(lián)網(wǎng)設(shè)備采用全仿真的系統(tǒng),可以獲得最高的吞吐量,這是因?yàn)檎鎸?shí)的物聯(lián)網(wǎng)設(shè)備相比于桌面工作站或者服務(wù)器要慢得多
內(nèi)核模糊測(cè)試通常利用暴露出來(lái)的系統(tǒng)調(diào)用接口和外圍接口,從用戶空間進(jìn)入到內(nèi)核組件中進(jìn)行模糊測(cè)試,以檢測(cè)內(nèi)核中可能存在的漏洞
主要面臨的問(wèn)題:
Windows內(nèi)核程序以及很多相關(guān)組件的源代碼并 不開(kāi)源,將導(dǎo)致傳統(tǒng)的反饋機(jī)制不再適用。
內(nèi)核中的代碼由于存在中斷、多線程操作等機(jī)制,使得模糊測(cè)試變的很復(fù)雜。
內(nèi)核模糊測(cè)試一旦檢測(cè)到程序的崩潰,將會(huì)導(dǎo)致整個(gè)操作系統(tǒng)重新啟動(dòng),極大地影響了模糊測(cè)試的效率。
為了克服這些問(wèn)題,產(chǎn)生了一些專門針對(duì)內(nèi)核安全進(jìn)行模糊測(cè)試的研究:
比如syzkaller是由Google開(kāi)發(fā)的一種以獲得高覆蓋率為導(dǎo)向的內(nèi)核 模糊測(cè)試工具,目前實(shí)際使用比較多,并經(jīng)常被用于對(duì)比實(shí)驗(yàn)中。
Razzer是基于syzkaller通過(guò)使用LLVM和修改后的SVF技術(shù)針對(duì)內(nèi)核中存在的數(shù)據(jù)爭(zhēng)用問(wèn)題進(jìn)行的模糊測(cè)試
TriforceAFLAFL的QEMU模式,在系統(tǒng)模擬器的幫助下,通過(guò)跟蹤分支信息,對(duì)Linux的內(nèi)核進(jìn)行模糊測(cè)試。
kAFL通過(guò)利用Intel提供的進(jìn)程追蹤技術(shù),獲取代碼運(yùn)行時(shí)的控制流信息,并通過(guò)使用Intel的硬件 虛擬特征(VTGx)提升效率并使得kAFL獨(dú)立于特定的操作系統(tǒng)。
傳統(tǒng)的模糊測(cè)試應(yīng)用到內(nèi)核模糊測(cè)試上將面臨著眾多的問(wèn)題,包括內(nèi)核態(tài)代碼的復(fù)雜執(zhí)行環(huán)境,以及內(nèi)核崩潰的處理問(wèn)題。另外內(nèi)核安全面臨的威脅來(lái)源是不確定的,可以是外部固件,也可以是第三方開(kāi)發(fā)的驅(qū)動(dòng)程序,還可以是內(nèi)核程序自身設(shè)計(jì)的問(wèn)題。模糊測(cè)試在內(nèi) 核安全領(lǐng)域的應(yīng)用還有待進(jìn)一步的研究。靜態(tài)分析或模糊檢測(cè)技術(shù)通常對(duì)內(nèi)存溢出等漏洞有效,而無(wú)法挖掘協(xié)議實(shí)現(xiàn)庫(kù)的邏輯漏洞。

5.總結(jié)
簡(jiǎn)單地說(shuō),模糊測(cè)試嘗試降低安全性測(cè)試的門檻,通過(guò)半隨機(jī)方式的數(shù)據(jù)發(fā)送找出被測(cè)系統(tǒng)的漏洞。顯然,測(cè)試者對(duì)被測(cè)應(yīng)用越了解,測(cè)試者的技能越嫻熟,模糊測(cè)試數(shù)據(jù)的生成就越準(zhǔn)確。但與代碼審計(jì)相比,模糊測(cè)試顯然更容易進(jìn)行。而且通過(guò)自動(dòng)化工具,模糊測(cè)試可以把安全方面的經(jīng)驗(yàn)積累到工具中,為組織持續(xù)的安全性測(cè)試提供幫助。