基于TCP协议fuzz testing模糊测试案例分享
1.模糊測(cè)試概念:
模糊測(cè)試 (fuzz testing, fuzzing)是一種軟件測(cè)試技術(shù)。其核心思想是自動(dòng)或半自動(dòng)的生成隨機(jī)數(shù)據(jù)輸入到一個(gè)程序中,并監(jiān)視程序異常,如崩潰,斷言(assertion)失敗,以發(fā)現(xiàn)可能的程序錯(cuò)誤,比如內(nèi)存泄漏。模糊測(cè)試常常用于檢測(cè)軟件或計(jì)算機(jī)系統(tǒng)的安全漏洞。
我們使用維基百科的這個(gè)定義,然后著重講一下“隨機(jī)數(shù)據(jù)”長(zhǎng)什么樣,又如何“輸入到另一個(gè)程序中”。
2.模糊測(cè)試方法:
模糊測(cè)試(fuzz testing)和滲透測(cè)試(penetration test)都是屬于安全測(cè)試的方法,它們有同也有異。
滲透測(cè)試:滲透測(cè)試一般是模擬黑客惡意入侵的方式對(duì)產(chǎn)品進(jìn)行測(cè)試,對(duì)測(cè)試者的執(zhí)行力要求很高,成本高,難以被大規(guī)模應(yīng)用。
模糊測(cè)試:模糊測(cè)試通過(guò)向應(yīng)用提供非預(yù)期的輸入并監(jiān)控輸出中的異常來(lái)發(fā)現(xiàn)軟件中缺陷,整個(gè)執(zhí)行過(guò)程依靠工具進(jìn)行自動(dòng)化或半自動(dòng)化測(cè)試。模糊測(cè)試技術(shù)具有自動(dòng)化程度高、可用性好、誤報(bào)率低, 對(duì)目標(biāo)程序源碼沒(méi)有依賴(lài)等優(yōu)點(diǎn)。它能夠充分利用機(jī)器本身,隨機(jī)生成和發(fā)送數(shù)據(jù);與此同時(shí),又能夠引進(jìn)業(yè)內(nèi)安全專(zhuān)家在安全性方面的建議。模糊測(cè)試其數(shù)據(jù)具有不確定性,也沒(méi)有明顯的針對(duì)性,簡(jiǎn)單來(lái)說(shuō)就是沒(méi)有邏輯,沒(méi)有常理。只要將準(zhǔn)備好的那些雜亂的程序插入其中,然后等待bug的出現(xiàn),而出現(xiàn)的漏洞是滲透人員先前無(wú)法預(yù)知的。
模糊測(cè)試執(zhí)行過(guò)程主要包含幾個(gè)基本階段:
(1)識(shí)別測(cè)試目標(biāo)
確定明確的測(cè)試目標(biāo),才能決定使用的模糊測(cè)試工具或方法。比如需要選擇應(yīng)用包含的特定文件或者庫(kù)作為測(cè)試目標(biāo),需要把注意力放在多個(gè)應(yīng)用程序之間共享的那些二進(jìn)制代碼上。因?yàn)槿绻@些共享的二進(jìn)制代碼中存在安全漏洞,將會(huì)有非常多的用戶受到影響,因而風(fēng)險(xiǎn)也更大。
(2)識(shí)別輸入
大部分可被利用的安全漏洞都是由于應(yīng)用沒(méi)有對(duì)用戶的輸入進(jìn)行校驗(yàn)或是進(jìn)行必要的非法輸入處理。是否能找到所有的輸入向量(Input vector)是模糊測(cè)試能否成功的關(guān)鍵。尋找輸入向量的原則是:從客戶端向目標(biāo)應(yīng)用發(fā)送的任何東西,包括頭(Headers)、文件名(File Name)、環(huán)境變量(Environment variables),注冊(cè)表鍵(Registry keys),以及其他信息,都可能是潛在的模糊測(cè)試變量。
(3)生成模糊測(cè)試數(shù)據(jù)
大多數(shù)模糊測(cè)試的方法是通過(guò)向目標(biāo)系統(tǒng)不斷輸入可以誘發(fā)軟件缺陷的測(cè)試數(shù)據(jù),因此測(cè)試數(shù)據(jù)的生成是模糊測(cè)試非常關(guān)鍵的環(huán)節(jié),主要依賴(lài)測(cè)試目標(biāo)系統(tǒng)的特點(diǎn)和數(shù)據(jù)格式進(jìn)行生成。
(4)執(zhí)行模糊測(cè)試數(shù)據(jù)
自動(dòng)化地向被測(cè)的系統(tǒng)發(fā)送數(shù)據(jù)包、打開(kāi)文件、或是執(zhí)行被測(cè)應(yīng)用的過(guò)程。這個(gè)階段一般與生成測(cè)試數(shù)據(jù)并行進(jìn)行。
(5)監(jiān)視異常
監(jiān)控異常和錯(cuò)誤是模糊測(cè)試中重要但經(jīng)常容易被忽略的步驟。模糊測(cè)試需要根據(jù)被測(cè)應(yīng)用和所決定采用的模糊測(cè)試類(lèi)型來(lái)設(shè)置各種形式的監(jiān)視。
(6)判定發(fā)現(xiàn)的漏洞是否可被利用
在模糊測(cè)試中發(fā)現(xiàn)了一個(gè)錯(cuò)誤,需要判定這個(gè)被發(fā)現(xiàn)的錯(cuò)誤是否是一個(gè)可被利用的安全漏洞。這種判定過(guò)程既可以由模糊測(cè)試的執(zhí)行者來(lái)進(jìn)行,也可以交給安全測(cè)試專(zhuān)家來(lái)進(jìn)行。
模糊測(cè)試技術(shù)的應(yīng)用十分廣泛, 可以測(cè)試的對(duì)象種類(lèi)繁多, 比如環(huán)境變量和參數(shù)、 Web 應(yīng)用程序、文件格式、網(wǎng)絡(luò)協(xié)議、Web 瀏覽器和物聯(lián)網(wǎng)系統(tǒng)等方面。
3.模糊測(cè)試工具:
半自動(dòng)模糊測(cè)試工具burpsuite
bed只能對(duì)協(xié)議的標(biāo)準(zhǔn)請(qǐng)求、標(biāo)準(zhǔn)頭部進(jìn)行模糊測(cè)試,對(duì)http的post等自定義的主體的各項(xiàng)是沒(méi)法進(jìn)行模糊測(cè)的,但其實(shí)這部份才是我們要測(cè)試的主要部分,所以單依靠bed是不行的。
burpsuite的intruder就是一個(gè)高度可配置的模糊測(cè)試功能,intruder只要設(shè)置好變量然后在payloads中設(shè)置好測(cè)試用例,即可進(jìn)行模糊測(cè)試。
全自動(dòng)模糊測(cè)試工具backfuzz
工具下載 https://github.com/localh0t/backfuzz
詳細(xì)運(yùn)行結(jié)果見(jiàn)案例分析
手動(dòng)編寫(xiě)模糊測(cè)試工具boofuzz
一個(gè)小姑娘照片,很可愛(ài)的boofuzz工具
工具下載 https://github.com/jtpereyda/boofuzz
WEB管理界面:http://192.168.56.113:26000
詳細(xì)運(yùn)行結(jié)果見(jiàn)案例分析
分析
1、模糊測(cè)試的優(yōu)點(diǎn)
與傳統(tǒng)漏洞挖掘方法相比, 模糊測(cè)試技術(shù)有其無(wú)法比擬的優(yōu)勢(shì)。模糊測(cè)試的測(cè)試目標(biāo)是二進(jìn)制可執(zhí)行代碼, 比基于源代碼的白盒測(cè)試適用范圍更廣;模糊測(cè)試是動(dòng)態(tài)實(shí)際執(zhí)行的,不存在靜態(tài)分析技術(shù)中存在的大量誤報(bào)問(wèn)題;模糊測(cè)試的原理簡(jiǎn)單,沒(méi)有大量的理論推導(dǎo)和公式計(jì)算,不存在符號(hào)執(zhí)行技術(shù)中的路徑狀態(tài)爆炸問(wèn)題;模糊測(cè)試自動(dòng)化程度高,不需要逆向工程中大量的人工參與。模糊測(cè)試技術(shù)的優(yōu)點(diǎn)使它成為一種應(yīng)用范圍廣泛的漏洞挖掘技術(shù)。
2、模糊測(cè)試的局限性
(1) 對(duì)訪問(wèn)控制漏洞無(wú)能為力,因?yàn)槟:郎y(cè)試系統(tǒng)無(wú)法理解程序的邏輯,所以如一些違反權(quán)限控制的安全漏洞難以發(fā)現(xiàn)。
(2) 受制于糟糕的設(shè)計(jì)邏輯。糟糕的設(shè)計(jì)邏輯并不會(huì)導(dǎo)致程序崩潰,而模糊測(cè)試發(fā)現(xiàn)漏洞一個(gè)主要依據(jù)是監(jiān)控目標(biāo)系統(tǒng)的異常和錯(cuò)誤信息,因此模糊測(cè)試難以發(fā)現(xiàn)這類(lèi)漏洞。
(3) 無(wú)法識(shí)別多點(diǎn)觸發(fā)漏洞,當(dāng)前的模糊測(cè)試技術(shù)往往只能挖掘出由單個(gè)因素引起的漏洞,而對(duì)于需要多條件才能觸發(fā)的漏洞卻無(wú)能為力。
建議
1、目前,Web應(yīng)用中存在大量拒絕服務(wù)(Dos)、跨站腳本(XSS)、SQL注入(SQL injection)等漏洞,Web應(yīng)用模糊測(cè)試不僅可以發(fā)現(xiàn)Web應(yīng)用本身的漏洞,還可以發(fā)現(xiàn)Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的漏洞。建議通過(guò)模糊測(cè)試的方法和工具,對(duì)Web應(yīng)用進(jìn)行漏洞挖掘。
2、Android在手機(jī)的市場(chǎng)上占有率很高,通過(guò)模糊測(cè)試不但可以發(fā)現(xiàn)釣魚(yú)欺詐、拒絕服務(wù)和權(quán)限提升等Android的常見(jiàn)漏洞,而且可以對(duì)App的穩(wěn)定性進(jìn)行分析驗(yàn)證。建議通過(guò)模糊測(cè)試的方法和工具,對(duì)App的Android版進(jìn)行漏洞挖掘。
3、隨著智能手機(jī)、可穿戴設(shè)備、活動(dòng)追蹤器、無(wú)線網(wǎng)絡(luò)、智能汽車(chē)、智能家居等終端設(shè)備和網(wǎng)絡(luò)設(shè)備的迅速發(fā)展和普及利用,針對(duì)物聯(lián)網(wǎng)設(shè)備的網(wǎng)絡(luò)攻擊事件比例呈上升趨勢(shì),攻擊者利用物聯(lián)網(wǎng)設(shè)備漏洞可入侵設(shè)備,獲取設(shè)備控制權(quán),通過(guò)控制大量物聯(lián)網(wǎng)設(shè)備,黑客可以發(fā)起分布式拒絕服務(wù)網(wǎng)絡(luò)攻擊(DDoS)。建議利用模糊測(cè)試,對(duì)物聯(lián)網(wǎng)的網(wǎng)絡(luò)協(xié)議和設(shè)備進(jìn)行漏洞挖掘。
4、隨著業(yè)務(wù)發(fā)展和技術(shù)升級(jí)需要,會(huì)引入一些開(kāi)源軟件或者免費(fèi)軟件,而據(jù)Google的報(bào)告,開(kāi)源軟件或者免費(fèi)軟件的安全漏洞還是非常多,建議通過(guò)模糊測(cè)試的方法和工具,在引入開(kāi)源軟件或者免費(fèi)軟件的過(guò)程,做安全風(fēng)險(xiǎn)評(píng)估。
5、針對(duì)業(yè)務(wù)特點(diǎn)和系統(tǒng)特征,構(gòu)造模糊測(cè)試數(shù)據(jù)知識(shí)庫(kù),提升模糊測(cè)試數(shù)據(jù)的針對(duì)性,通過(guò)人工智能優(yōu)化模糊測(cè)試數(shù)據(jù)生成和自動(dòng)化執(zhí)行過(guò)程,構(gòu)建模糊測(cè)試平臺(tái),提供安全測(cè)試的服務(wù)給分行或者行外客戶使用。
4.模糊測(cè)試案例:
案例1:
https://v.youku.com/v_show/id_XNDUxNDMzODU5Mg==.html?spm=a2hbt.13141534.0.13141534&f=51499298
更多信息請(qǐng)關(guān)注微信公眾號(hào):oldbird
總結(jié)
以上是生活随笔為你收集整理的基于TCP协议fuzz testing模糊测试案例分享的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 赛元微MCU——SC92F846xB新建
- 下一篇: 关于如何获取复选框选中行的数据