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