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