模糊測試的方法分成以下幾類:
預生成測試用例:該方法要求首先研究特定的規約,理解該規約支持的數據結構和可接受的值的范圍;然后依據這些理解生成用于測試邊界條件或是違反規約的測試用例;接下來使用這些測試用例來測試該規約實現的完備性。創建所有這些測試用例需要花費很多精力,但這些用例一旦被創建,就很容易被復用,用于測試某種協議或文件格式的不同實現。預生成測試用例的缺點是,這種模糊測試方法存在固有的局限性。由于缺乏隨機生成,一旦測試用例列表中的用例被執行完,測試就只能結束。預生成測試用例的缺點是,這種模糊測試方法存在固有的局限性。由于缺乏隨機生成,一旦測試用例列表中的用例被執行完,測試就只能結束。
隨機生成輸入:隨機方法是最低效的方式,但是這種方式可以被用來快速地識別目標應用中是否有非常糟糕的代碼。隨機方法簡單地向目標應用發送偽隨機數據,希望得到最好或是最壞的結果(最好還是最壞取決于你看問題的角度)。
手工協議變異測試:按說,手工協議測試應該比隨機生成輸入的方法在技術方面更加初級。手工協議測試不需要自動化模糊測試器。實際上,在手工測試中,測試者就是模糊測試器。在加載了目標應用后,測試者僅僅通過輸入不正確的數據,試圖使服務器崩潰,或是誘發一些不正常的行為。這是“窮人”的模糊測試方法,但在過去一些年來這種方法已經被證明是有效的。這種方法的優點在于,分析者能夠在安全審計中充分發揮自己過去的經驗和“直覺”。這類模糊測試方法最經常用于Web應用的安全測試。
變異或強制性測試:是指模糊測試器從一個有效的協議樣本或是數據格式樣本開始,持續不斷的打亂數據包或是文件中的每一個字節(byte)、字(word)、雙字(dword)或是字符串(string)。這是一種有效的早期模糊測試方法,因為這種方式幾乎不要求對應用進行研究,而且,實現一個基礎的強制性模糊測試器也相對直接。基本上,強制性模糊測試器只需要修改數據并將其發送給被測應用。當然,除了發送數據外,也可以在強制性模糊測試器中加入更多的錯誤檢測手段、日志手段等。這樣一個工具通常能夠在短時間內被創建出來。
自動協議生成測試:自動協議生成測試是一種更高級的強制性方法。在這種方式中,首先要做的是對被測應用進行研究,理解和解釋協議規約或文件定義。然而,這種方法并不基于協議規約或文件定義創建硬編碼的測試用例,而是創建一個描述協議規約如何工作的文法(grammar)。采用這種方式,測試者可以識別出數據包或是文件中的靜態部分和動態部分,動態部分就是可以被模糊化變量替代的部分。隨后,模糊測試器動態分析包含了靜態和動態部分的模板,生成模糊測試數據,將結果數據包或是文件發送給被測應用。
回答所涉及的環境:聯想天逸510S、Windows 10。
模糊測試的方法分成以下幾類:
預生成測試用例:該方法要求首先研究特定的規約,理解該規約支持的數據結構和可接受的值的范圍;然后依據這些理解生成用于測試邊界條件或是違反規約的測試用例;接下來使用這些測試用例來測試該規約實現的完備性。創建所有這些測試用例需要花費很多精力,但這些用例一旦被創建,就很容易被復用,用于測試某種協議或文件格式的不同實現。預生成測試用例的缺點是,這種模糊測試方法存在固有的局限性。由于缺乏隨機生成,一旦測試用例列表中的用例被執行完,測試就只能結束。預生成測試用例的缺點是,這種模糊測試方法存在固有的局限性。由于缺乏隨機生成,一旦測試用例列表中的用例被執行完,測試就只能結束。
隨機生成輸入:隨機方法是最低效的方式,但是這種方式可以被用來快速地識別目標應用中是否有非常糟糕的代碼。隨機方法簡單地向目標應用發送偽隨機數據,希望得到最好或是最壞的結果(最好還是最壞取決于你看問題的角度)。
手工協議變異測試:按說,手工協議測試應該比隨機生成輸入的方法在技術方面更加初級。手工協議測試不需要自動化模糊測試器。實際上,在手工測試中,測試者就是模糊測試器。在加載了目標應用后,測試者僅僅通過輸入不正確的數據,試圖使服務器崩潰,或是誘發一些不正常的行為。這是“窮人”的模糊測試方法,但在過去一些年來這種方法已經被證明是有效的。這種方法的優點在于,分析者能夠在安全審計中充分發揮自己過去的經驗和“直覺”。這類模糊測試方法最經常用于Web應用的安全測試。
變異或強制性測試:是指模糊測試器從一個有效的協議樣本或是數據格式樣本開始,持續不斷的打亂數據包或是文件中的每一個字節(byte)、字(word)、雙字(dword)或是字符串(string)。這是一種有效的早期模糊測試方法,因為這種方式幾乎不要求對應用進行研究,而且,實現一個基礎的強制性模糊測試器也相對直接。基本上,強制性模糊測試器只需要修改數據并將其發送給被測應用。當然,除了發送數據外,也可以在強制性模糊測試器中加入更多的錯誤檢測手段、日志手段等。這樣一個工具通常能夠在短時間內被創建出來。
自動協議生成測試:自動協議生成測試是一種更高級的強制性方法。在這種方式中,首先要做的是對被測應用進行研究,理解和解釋協議規約或文件定義。然而,這種方法并不基于協議規約或文件定義創建硬編碼的測試用例,而是創建一個描述協議規約如何工作的文法(grammar)。采用這種方式,測試者可以識別出數據包或是文件中的靜態部分和動態部分,動態部分就是可以被模糊化變量替代的部分。隨后,模糊測試器動態分析包含了靜態和動態部分的模板,生成模糊測試數據,將結果數據包或是文件發送給被測應用。
回答所涉及的環境:聯想天逸510S、Windows 10。