8.1 概述
自動化的協議逆向方法提高了獲得未知協議規範的準確率和效率。
在實際工作中獲得協議規範不是逆向分析的最終目的,而是進行下一步工作的基礎。
協議逆向技術廣泛應用於無線網絡對抗、惡意軟件分析、軟件安全漏洞挖掘、協議重用、網絡管理等領域。
大多數情況下,這些應用利用協議逆向分析得到的協議規範(協議格式和協議狀態機)作爲系統設計、實現的基本依據,而沒有與逆向分析系統進行有機結合。理想情況下,協議逆向得到的協議規範應直接作爲這些應用的輸入。
將逆向分析系統與fuzzing測試相結合。首先利用逆向分析系統對目標軟件的通信協議進行逆向分析,得到包含協議格式和狀態機信息的協議規範描述模型,進而作爲fuzzing測試系統的輸入對目標軟件進行fuzzing測試。
8.2 fuzzing測試技術
fuzzing測試技術又稱爲模糊測試技術,它通過向被測系統注入大量非預期的輸入來發現潛在的漏洞,是目前應用最廣泛的漏洞挖掘技術。
fuzzing步驟:
1)輸入識別與分析:分析輸入數據的格式特徵,爲後續生成測試用例奠定基礎;
2)構造測試用例
3)執行測試用例
4)異常監控
5)異常分析
測試用例的構造方法:
基於生成的技術:已知輸入數據的具體構成規則,根據該規則生成測試數據
基於變異的技術:在對輸入數據規範有所瞭解的前提下,針對樣本數據中某些域進行變化,從而產生新的變化。、
fuzzing技術分爲三類:白盒fuzzing技術、基於反饋的fuzzing技術、基於模型的fuzzing技術、基於模型的fuzzing技術是指依據被測程序輸入數據的先驗知識(如文件、協議的RFC文檔、軟件開發文檔)建立測試用例的生成模型,進而指導測試用例產生和執行的測試方法。
Protos、SPIKE、Peach、Sulley
8.3 基於模型的fuzzing技術面臨的問題
fuzzing技術的目標是構造半有效的測試用例,所謂的“半有效”是指測試用例既能通過被測軟件的有效性驗證,又能觸發軟件處理異常。
主要表現在兩個方面:數據格式的描述和測試用例的生成。
基於塊的描述模型
樹結構描述模型
基於上下文無關文法的描述模型
8.3.2 測試用例的生成
1)模型冗餘導致測試用例冗餘
2)測試對象與測試邏輯混合定義,人工編寫腳本工作複雜
3)單純的基於類型的變異策略導致測試用例針對性不強,測試效率偏低