什麼是模糊測試?

什麼是模糊測試

簡介:什麼是模糊測試?

2014年,中國黑客 入侵社區衛生系統,美國一家營利性連鎖醫院,並竊取了 4.5 萬患者的數據。 黑客利用了一個名為 Heartbleed 的漏洞,該漏洞是在黑客入侵前幾個月在 OpenSSL 加密庫中發現的。

Heartbleed 是一類攻擊向量的示例,它允許攻擊者通過發送格式錯誤的請求來訪問目標,請求的有效性足以通過初步檢查。 雖然從事應用程序不同部分工作的專業人員盡最大努力確保其安全性,但不可能想到所有可能破壞應用程序或使其在開發過程中易受攻擊的極端情況。

這就是“模糊測試”的用武之地。

什麼是模糊攻擊?

模糊測試、模糊測試或模糊攻擊是一種自動化軟件測試技術,用於將隨機、意外或無效數據(稱為模糊測試)提供給程序。 監視程序是否存在異常或意外行為,例如緩衝區溢出、崩潰、內存洩漏、線程掛起和讀/寫訪問衝突。 然後使用模糊測試工具或模糊器來發現異常行為的原因。

模糊測試基於這樣的假設,即所有系統都包含等待被發現的錯誤,並且可以給予足夠的時間和資源來這樣做。 大多數係統都有很好的解析器或輸入驗證防止 網絡罪犯 從利用程序中的任何假設錯誤。 然而,正如我們上面提到的,在開發過程中覆蓋所有極端情況是很困難的。

模糊器用於接受結構化輸入或具有某種信任邊界的程序。 例如,接受 PDF 文件的程序將進行一些驗證以確保文件具有 .pdf 擴展名和解析器來處理 PDF 文件。

一個有效的模糊器可以生成足夠有效的輸入來越過這些邊界,但又足夠無效以在程序的更深處導致意外行為。 這很重要,因為如果不造成進一步的傷害,僅僅能夠通過驗證並不意味著什麼。

Fuzzer 發現的攻擊向量與 SQL 注入、跨站點腳本、緩衝區溢出和拒絕服務攻擊非常相似,包括此類攻擊。 所有這些攻擊都是將意外、無效或隨機數據輸入系統的結果。 

 

模糊器的類型

模糊器可以根據一些特徵進行分類:

  1. 攻擊目標
  2. 模糊創建方法
  3. 輸入結構的認識
  4. 程序結構意識

1.攻擊目標

此分類基於模糊器用於測試的平台類型。 模糊器通常與網絡協議和軟件應用程序一起使用。 每個平台都有其接收的特定類型的輸入,因此需要不同類型的模糊器。

例如,在處理應用程序時,所有模糊測試都發生在應用程序的各種輸入通道上,例如用戶界面、命令行終端、表單/文本輸入和文件上傳。 所以模糊器生成的所有輸入都必須匹配這些通道。

處理通信協議的模糊器必須處理數據包。 針對該平台的模糊器可以生成偽造的數據包,甚至可以充當代理來修改攔截的數據包並重放它們。

2. 模糊創建方法

模糊器也可以根據它們如何創建用於模糊測試的數據進行分類。 從歷史上看,模糊器通過從頭開始生成隨機數據來創建模糊。 這就是這項技術的發起人Barton Miller教授最初的做法。 這種類型的模糊器稱為 基於生成的模糊器.

然而,雖然理論上可以生成繞過信任邊界的數據,但這樣做需要花費大量時間和資源。 因此這種方法通常用於輸入結構簡單的系統。

這個問題的解決方案是改變已知有效的數據以生成足夠有效以通過信任邊界但又無效到足以引起問題的數據。 一個很好的例子是 DNS 模糊器 它獲取一個域名,然後生成一個大的域名列表,以檢測針對指定域所有者的潛在惡意域。

這種方法比以前的方法更聰明,並且顯著縮小了可能的排列。 使用這種方法的模糊器被稱為 基於突變的模糊器

還有第三種最近的方法,它利用遺傳算法來收斂於根除漏洞所需的最佳模糊數據。 它的工作原理是不斷完善其模糊測試數據,同時考慮將每個測試數據輸入程序時的性能。 

從數據池中刪除性能最差的數據集,而對最好的數據集進行變異和/或組合。 然後使用新一代數據再次進行模糊測試。 這些模糊器被稱為 基於進化突變的模糊器。

3.輸入結構的認識

這種分類基於模糊器是否知道並主動使用程序的輸入結構來生成模糊數據。 一個 愚蠢的模糊器 (不知道程序輸入結構的模糊器)以隨機方式生成模糊。 這可能包括基於生成和基於突變的模糊器。 


如果為模糊器提供了程序的輸入模型,則模糊器可以嘗試生成或改變數據,使其與提供的輸入模型相匹配。 這種方法進一步減少了生成無效數據所花費的資源量。 這樣的模糊器稱為 智能模糊器.

4. 程序結構意識

模糊器也可以根據他們是否知道他們正在模糊測試的程序的內部工作原理來分類,並使用這種意識來幫助模糊數據生成。 當模糊器用於在不了解其內部結構的情況下測試程序時,它被稱為黑盒測試。 

黑盒測試期間生成的模糊數據通常是隨機的,除非模糊器是基於進化突變的模糊器,它通過監視其模糊測試的效果並使用它來“學習” 信息 完善其模糊數據集。

另一方面,白盒測試使用程序內部結構的模型來生成模糊數據。 這種方法可以讓模糊器到達程序中的關鍵位置並對其進行測試。 

流行的模糊測試工具

有很多模糊 工具 在那裡被滲透測試人員使用。 一些最受歡迎的是:

模糊測試的局限性

雖然模糊測試是一種非常有用的筆測試技術,但它並非沒有缺點。 其中一些是:

  • 運行需要相當長的時間。
  • 在程序的黑盒測試期間發現的崩潰和其他意外行為可能很難分析或調試,即使不是不可能的。
  • 為基於突變的智能模糊器創建突變模板可能非常耗時。 有時,由於輸入模型是專有的或未知的,它甚至可能是不可能的。

 

儘管如此,對於任何想在壞人之前發現錯誤的人來說,它都是一個非常有用和必要的工具。

結論

模糊測試是一種強大的筆測試技術,可用於發現軟件中的漏洞。 有許多不同類型的模糊器,並且一直在開發新的模糊器。 雖然模糊測試是一種非常有用的工具,但它也有其局限性。 例如,fuzzer 只能找到這麼多的漏洞,而且它們可能非常耗費資源。 但是,如果您想親自嘗試這種神奇的技術,我們有 您可以在我們的平台上使用的免費 DNS Fuzzer API。 

你還在等什麼? 

今天開始模糊測試!

谷歌與隱身神話

谷歌與隱身神話

谷歌與隱身神話 1 年 2024 月 XNUMX 日,谷歌同意透過銷毀透過隱身模式收集的數十億資料記錄來和解訴訟。

閱讀更多»