劉孝華 思博倫通信
思博倫技術(shù)專欄
模糊測試與AvalancheFuzzing方案介紹
劉孝華思博倫通信
編者按:模糊測試(Fuzzing)源于軟件測試中黑盒測試方法,主要闡述通過向目標系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法,此類測試已經(jīng)有20多年歷史。思博倫通信劉孝華所撰《模糊測試與Avalanche Fuzzing方案介紹》一文首先對模糊測試涵蓋的幾個方面進行了介紹,并對模糊測試方法及不同階段進行了分析,最后重點對思博倫研發(fā)的整體解決方案進行了闡述和研究。Avalanche Next是思博倫研發(fā)生產(chǎn)的進行安全及應(yīng)用領(lǐng)域通信網(wǎng)絡(luò)測試的整體解決方案。通過Avalanche構(gòu)建一個Fuzzing測試框架進行測試,思博倫整體解決方案Avalanche Next通過B/S架構(gòu)可以幫助大家靈活、快速地部署測試任務(wù)。
模糊測試(Fuzzing)源于軟件測試中黑盒測試方法,主要闡述通過向目標系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法,此類測試已經(jīng)有20多年歷史。
模糊測試最早的引用可以追溯到1989年。Barton Miller教授(被很多人認為是模糊測試之“父”)和他的高級操作系統(tǒng)課開發(fā)和使用了一個原始的模糊器,用來測試UNIX應(yīng)用程序的健壯性,測試之初關(guān)注點并不是評價系統(tǒng)的安全性,而是驗證全部代碼的質(zhì)量和可靠性。盡管在該項研究過程中提及到了安全性的問題,但在實際的實施中并沒有專門強調(diào)這一點。
1999年,Oulu大學(xué)開始了PROTOS測試集的開發(fā)工作。通過分析協(xié)議規(guī)約,產(chǎn)生違背規(guī)約或者很有可能讓協(xié)議實現(xiàn)體無法正確處理的報文,然后各種各樣的測試集先后被開發(fā)出來。首先,產(chǎn)生這樣的測試集需要耗費相當大的努力,但是一旦產(chǎn)生之后,這些測試集就可以用來測試多個供應(yīng)商的產(chǎn)品。這個例子屬于白盒和黑盒混合的測試方法,標志著模糊測試發(fā)展歷程中的一個重要里程碑,后來證明大量的故障是用這樣的方法發(fā)現(xiàn)。
2002年,Microsoft為PROTOS3提供了資金支持;2003年,PROTOS組的成員發(fā)起了16 Codenomicon,這是一個專門致力于設(shè)計和產(chǎn)生商業(yè)用模糊測試集的公司。該公司今天的產(chǎn)品仍然基于最初的Oulu測試集,不過還包括了一些圖形用戶界面、用戶支持以及通過健康特征檢測而實現(xiàn)的故障檢測能力,此外還增加了其它一些特征。Dave Aitel也在2003年發(fā)布了SPIKE5一個開放源代碼的模糊器,SPIKE5采用了GNU的許可(GPL),SPIKE5實現(xiàn)了一種基于塊的方法,目的是為了測試基于網(wǎng)絡(luò)的應(yīng)用程序。SPIKE采用了一種比Miller的模糊器更高級的方法,最顯著的特征是包括了描述可變長數(shù)據(jù)塊的能力。SPIKE包括一組預(yù)定義的函數(shù),這些函數(shù)能夠產(chǎn)生常見的協(xié)議和數(shù)據(jù)格式,其中包括SunRPC和MicrosoftRPC,這是兩個常見的通信協(xié)議,過去發(fā)現(xiàn)的許多安全漏洞都起源于它們。作為第一個允許用戶無痛創(chuàng)建自定制模糊器的公開框架,SPIKE的發(fā)布標志著一個重要的里程碑。
(1)白盒測試
基于代碼及軟件架構(gòu)級別的測試分析,在此階段進行模糊測試對被測系統(tǒng)的代碼安全分析。
(2)黑盒測試
黑盒測試基本思路是通過測試來檢測每個功能是否都能正常使用。黑盒測試中,把被測試系統(tǒng)看作是一個與外界隔離的黑盒子(區(qū)域),在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,在程序接口進行測試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息。黑盒測試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),重點關(guān)注系統(tǒng)基礎(chǔ)行為的正確性進行測試,通過黑盒手段進行模糊測試,代表著對被測試系統(tǒng)沒有詳細了解的情況下,通過識別輸入的方法確認系統(tǒng)的安全性、健壯性等。
黑盒測試是以用戶的角度,從輸入與輸出數(shù)據(jù)的對應(yīng)關(guān)系出發(fā)進行測試。
(3)灰盒測試
灰盒測試的定義是在白盒測試和黑盒分析之間浮動,給它下的定義是首先包括了黑盒測試審核,此外還包括通過逆向工程(RE)獲得的結(jié)果,逆向工程也被稱為逆向代碼工程(RCE)。
(1)模糊測試方法分析
構(gòu)建模糊測試序列和測試流,對于驗證被測系統(tǒng)的協(xié)議層面及邏輯層面的缺陷。一般流程如圖1所示。
模糊測試階段:
●發(fā)現(xiàn)識別目標(被測試單元)
如果要進行一次有效的測試驗證,那么首先需要明確需要驗證哪些單元,如何選取最有價值的目標單元成為有效測試所必須具備的前提。
●識別輸入
進行測試數(shù)據(jù)構(gòu)建,數(shù)據(jù)輸入通常按照協(xié)議正常行為進行序列交互,根據(jù)驗證系統(tǒng)特性定義出合規(guī)的測試數(shù)據(jù)流。
●執(zhí)行測試(輸入模糊測試數(shù)據(jù))
通過模糊測試框架進行測試數(shù)據(jù)輸入,通過測試框架對被測試單元進行狀態(tài)跟蹤,以判斷測試的有效性及測試的反饋。
圖1 模糊測試一般流程
●監(jiān)控異?,F(xiàn)象
通過測試框架監(jiān)控被測試的單元健康信息,如通信單元心跳信息。
●確定可用性
模糊測試發(fā)起前必須通過合規(guī)手段確認測試數(shù)據(jù)源為可用有效數(shù)據(jù)。
完成對特定通信協(xié)議的模糊測試,首先遵循模糊測試基礎(chǔ)理論,構(gòu)建合適的模糊測試框架是必須的,而且框架需要根據(jù)不同的協(xié)議類型或通信模式而不同。思博倫為您提供了一套完整的測試框架及實施的解決方案。
測試框架包含:測試描述、測試方法、測試用例、現(xiàn)象跟蹤;有相應(yīng)的測試管理軟件可以幫你構(gòu)建合適的測試框架,以滿足生產(chǎn)的需求。
(1)SIP協(xié)議
●DIAMETER:LocationInfoCommands流程
Avalanche Next通 過 仿 真 SIP終 端 進 行DIAMETER位置信息流程,SIP協(xié)議報文交互對被測系統(tǒng)(設(shè)備)的協(xié)議交互流程是否正確,并可定義異常交互序列并對被測是系統(tǒng)是否會出現(xiàn)異常狀態(tài)。
●DIAMETER:UserAuthorizationCommands交互流程(見圖2)
●DIAMETER交互報文圖(見圖3)
(2)TCPFuzzing測試序列分析測試的實施需要實現(xiàn)幾個方面進行評估(見圖4):
2:系統(tǒng)通過14個連續(xù)的報文交互序列對被測系統(tǒng)進行基于HTTP協(xié)議的Fuzzing測試
圖2 DIAMETER:LocationInfoCommands交互流程
如圖5所示,通過Avalanche構(gòu)建一個Fuzzing測試框架進行測試,AvalancheNext通過B/S架構(gòu)幫助大家靈活快速地部署測試任務(wù)。
圖3 DIAMETER交互報文圖
圖4 測試的實施需要實現(xiàn)幾個方面進行評估
(1)創(chuàng)建測試組件(見圖6)
●Fuzzing測試協(xié)議(見圖7)
●測試主機
創(chuàng)建測試主機,仿真協(xié)議交互。
●測試相關(guān)子網(wǎng)
(2)創(chuàng)建并占用儀表資源構(gòu)建測試隊列(見圖8)
AvalancheNext是思博倫研發(fā)生產(chǎn)的進行安全及應(yīng)用領(lǐng)域通信網(wǎng)絡(luò)測試的整體解決方案。Avalanche Next支持:
●Avalanche應(yīng)用仿真提供
——兩周更新一次的應(yīng)用場景庫。
——內(nèi)置的場景模型和可定制的場景模型。
——可視化場景交互流程顯示和開放的場景編輯工具MSL。
——基于場景的統(tǒng)計:PASS/Fail、L2和L7層統(tǒng)計。
圖5 通過Avalanche構(gòu)建一個Fuzzing測試框架進行測試
圖6 創(chuàng)建測試組件
●Avalanche網(wǎng)絡(luò)安全測試提供
——安全隧道測試IPSEC/SSL。
——持續(xù)更新的Attack/Malware庫。
——可視化的攻擊過程顯示和靈活簡便的配置。
——開放的Attack/Malware編輯變種工具MSL。
——攻擊背景流量靈活選擇。
——DDoS/Attack/Malware/Fuzzing/Scenario統(tǒng)一方案。
圖7 Fuzzing測試協(xié)議
圖8 創(chuàng)建并占用儀表資源構(gòu)建測試隊列