Defensics健壯性測試工具測試方案_第1頁
Defensics健壯性測試工具測試方案_第2頁
Defensics健壯性測試工具測試方案_第3頁
Defensics健壯性測試工具測試方案_第4頁
Defensics健壯性測試工具測試方案_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

保證原創(chuàng)精品已受版權保護Defensics健壯性測試工具測試方案前言本文檔就CodenomiconDefensics的工控安全測試方案提供說明,就測試原理,測試組網,支持的協(xié)議以及測試流程提供幫助,指導測試的進行。測試日程安排N/A產品功能介紹CodenomiconDefensics是基于協(xié)議級別的專門進行fuzzing測試的健壯性測試工具,專門用于發(fā)掘產品當中的未知漏洞。當前隨著APTs高級持續(xù)攻擊的日益猖獗,網絡及工控安全面臨前所未有的挑戰(zhàn),大部分的攻擊利用的都是設備或系統(tǒng)當中的零日漏洞,這類漏洞由于缺少相應的防護措施以及補丁,往往成為黑客攻擊的首選。而黑客在尋找零日漏洞時往往采用的就是fuzzing技術,Defensics能夠先敵而動,在黑客攻擊之前發(fā)現(xiàn)產品當中隱含的零日漏洞,幫助客戶彌補潛在的安全隱患。CodenomiconDefensics通過構造有序的異常用例集合,來查看系統(tǒng)是否會出現(xiàn)中斷或服務失敗等現(xiàn)象。通過采用基于協(xié)議建模的構建方法,可以保證對協(xié)議所有狀態(tài)機和字段的覆蓋。而通過智能高效的用例生成策略,可以使測試人員從無限的數(shù)據源中摘取出容易誘發(fā)系統(tǒng)服務失敗的數(shù)據。作為黑盒測試,F(xiàn)uzzing測試不需要訪問源代碼,因此可在第三方軟件上使用。通過自動化的用例生成、管理和執(zhí)行,最大限度地提升測試效率,保證產品的安全質量。測試原理模糊測試(Fuzzing),是一種通過向目標系統(tǒng)提供非預期的輸入并監(jiān)視異常結果來發(fā)現(xiàn)軟件漏洞的方法。目前國際上公認找尋未知漏洞的最佳途徑就是通過Fuzzing。Codenomicon公司主推的Defensics產品就是一款基于黑盒的專門針對網絡協(xié)議進行Fuzzing的安全性/健壯性測試平臺。我們會選取出一系列的有組織的異常數(shù)據(畸形報文)發(fā)送給被測設備,并通過正常報文的探測來觀察被測設備是否還處于正常工作狀態(tài)。這里所謂的“有組織的異常數(shù)據”是通過一下兩個方向來形成的:緩沖區(qū)溢出/溢進,邊界值,等等(后續(xù)會有具體分類);根據某種特定網絡協(xié)議的規(guī)約(比如RFC)來對該協(xié)議的每一個具體字段,以及整個狀態(tài)機的所有報文順序進行遍歷,確保代碼的高覆蓋率。以下是Defensics進行Fuzzing的原理,如圖所示,一個完整的測試場景一般可以分為三個步驟:互通性測試,互通性測試的目的是檢測工具和被測物之間的配置一致性和連通性是否正常。工具會發(fā)送一組正常的協(xié)議報文用例到被測物,每個用例都是一個完成的報文交互過程,通過這樣一組正常用例,可以覆蓋協(xié)議所有的狀態(tài)機和字段,在發(fā)送異常用例之前確保被測物狀態(tài)正常,同時檢查其支持的協(xié)議狀態(tài)機。發(fā)送異常報文,工具會基于正常的互通性用例生成異常用例,每一個用例同樣是一個完整的協(xié)議交互,工具會修改其中的某個報文的某個字段或某幾個字段,或者重新構造整個報文,用例的數(shù)量從幾萬到幾百萬不等,工具會自動化的執(zhí)行測試。發(fā)送探測報文,每發(fā)送一個異常測試用例之后,工具會發(fā)送一個正常的探測報文,去檢查被測物是否能正常響應探測報文,其目的一是檢查一下被測物在接收到異常報文后是否能夠正常提供服務,二是在進行下一條用例前確保被測物的狀態(tài)正常。如果被測物能夠正常響應檢測報文,工具會自動跳轉到下一條用例。如果不能正常響應,工具會一直檢測下去直到被測物響應為止。檢查配置/一致性檢查配置/一致性失敗互通性測試通過通過下一個測試例下一個測試例發(fā)送異常報文發(fā)送異常報文輪數(shù)+1輪數(shù)+1發(fā)送探測報文 發(fā)送探測報文通過失敗通過失敗根據上圖我們可以看到判定探測報文通過與否是我們檢驗某一條測試用例是否對SUT造成影響的唯一標準;而判定標準是由Timeout值決定的,該值由測試人員根據SUT的正常響應時間決定。所以,所有我們判定探測失敗的測試用例,都是因為超過了Timeout值還沒有得到正常的相應,通過這種機制,我們可以100%的確保沒有誤判,因為所有失敗的用例都使得SUT在正常響應時間內無法提供服務。這里我們以IPv6協(xié)議為例,結合Defensics的界面進行具體說明。在Interoperability中套件已經根據規(guī)約定義好正常的協(xié)議交互測試用例,這些用例覆蓋了該協(xié)議所有可能的狀態(tài)機。點擊test即開始執(zhí)行互通性測試,通過互通性測試可以檢查測試儀和被測設備之間的配置一致性是否正常,有些被測設備可能并不支持協(xié)議的全部實現(xiàn),會顯示為部分pass,部分fail(綠色表示pass,紅色表示fail)。2.在進行完Interoperability(互通性測試)之后,工具會基于剛才跑通的正常用例生成變異的測試用例,由于之前進行了互通性檢測,可以保證被測設備對這部分功能是支持的。在5)testcases中可以選擇異常用例的范圍。3.在選擇完測試用例后,在4)Instrumentation中選擇探測報文類型,這些探測報文都是正常的協(xié)議報文,默認情況下該功能是打開的。通過配置探測報文,測試工具會在每條測試用例中先發(fā)送異常報文,然后發(fā)送探測報文檢查被測設備狀態(tài),如果被測設備正常響應,就跳轉到下一條用例,如果不能,就重發(fā)該檢測報文,直到被測設備響應為止。4.在完成4)instrumentation和5)testcases之后,即可進入到6)testrun部分開始執(zhí)行測試用例。功能特點基于協(xié)議建模,全狀態(tài)機全字段覆蓋Defensics是基于協(xié)議級別的fuzzing測試工具,每個協(xié)議有相應獨立的套件,套件采用協(xié)議建模的方式進行構建,因此可以保證對協(xié)議狀態(tài)機和字段100%的覆蓋。在測試過程中,每一個用例都是一個完整的報文交互,因此不僅僅是可以對第一步交互進行fuzzing,而且可以對所有的協(xié)議交互流程進行深度的覆蓋。用例自動生成,基于黑盒測試原理Defensics是基于黑盒測試的fuzzing工具,使用時無需訪問源代碼。測試腳本按照協(xié)議規(guī)約的定義已經內嵌其中,從用例的生成、管理、執(zhí)行,到結果的導出,生成報告,完全實現(xiàn)自動化的運行。用例公開,便于問題定位和復現(xiàn)Defensics的用例庫涵蓋了協(xié)議的所有字段,數(shù)量從幾萬到幾百萬不等,并且可以根據需要手動調節(jié)用例庫的規(guī)模。Defensics的每一個用例都是對用戶公開的,用戶可以查看用例報文的交互流程,報文的具體內容以及如何生成的異常用例。廣泛的協(xié)議覆蓋,支持大多數(shù)主流通訊和工控協(xié)議Defensics能夠支持超過260種協(xié)議,涵蓋了二層到七層的通訊協(xié)議、工控協(xié)議、文件格式、私有協(xié)議、空口協(xié)議等,目前大部分的通訊協(xié)議和主流的工控協(xié)議均可測試。支持私有協(xié)議測試,提供二次開發(fā)JavaSDK針對私有協(xié)議特別是工控領域中大量用到的私有協(xié)議,可以使用Defensics專門針對私有協(xié)議的套件TrafficCaptureFuzzer進行測試。TrafficCaptureFuzzer采用抓包變異的原理,將正常的交互報文導入測試套,基于正常的報文進行fuzzing變異。并且用戶可以根據需要修改、定制相關的測試腳本。針對一些復雜的協(xié)議交互,例如checksum校驗、協(xié)議字段交互等,Codenomicon還提供一套JavaSDK用于高級二次開發(fā)。支持服務器端和客戶端,提供雙向測試Defensics基于某個具體協(xié)議,可以提供針對服務器端和客戶端的雙向測試,從而確保對協(xié)議報文的完整覆蓋。測試協(xié)議覆蓋目前Defensics可以針對260多種協(xié)議進行fuzzing測試,覆蓋了從2層到7層的大部分通訊協(xié)議,工業(yè)控制協(xié)議以及私有協(xié)議。并且對一個特定協(xié)議可以支持服務器端和客戶端兩個方向。支持的工控協(xié)議:ModbusTCPPLC/Master,DNP3Client/Server,ProfinetDCPserver,ProfinetPTCPClient/Server,IEC61850MMSClient/Server,GOOSE/SV,IEC60870-5-104Client/Server,CIP/EtherNet與工控相關的通訊協(xié)議:Ethernet,IPv4,TCPv4,UDPv4,ICMPv4,IGMP,XMLSOAPClient/Server,XMLSOAPClient/Server,1588PTPClient/Server,BootP/DHCPClient/Server,NTPClient/Server,F(xiàn)TPClient/Server,HTTP/HTTPSClient/Server,SNMPv1/v2,SNMPv3,Telnet,SSLTLS1.1/1.2Client/Server,IPv6,SSHv1/v2,SMTP私有協(xié)議和文件:TrafficCaptureFuzzer(抓包變異),UniversalFuzzer(文件格式)測試場景測試采用直連的方式連接Defensics測試儀和被測設備,二者通過網線直連,需要為DUT和Defensics配置相應的IP地址,一般配置在同一網段。由測試工具發(fā)送有組織的異常數(shù)據,觀察被測設備在異常報文作用下的健壯性。為了能直觀的觀察被測DUT的異常,最好在DUT下再連接一次設備。一個典型的測試場景包含了三部分,首先測試工具會向DUT發(fā)送一組正常的一致性檢測報文,用以檢測雙方的一致性是否正常。在一致性報文通過后再發(fā)送有組織的異常報文測試用例。第三步再發(fā)送正常的檢測性報文,用以檢測剛才的異常報文是否造成影響。測試過程這里以一個典型的Modbus測試流程為例,闡述了如何使用Defensics測試工具進行fuzzing測試。Basicconfiguration加載套件后首先會進入到Basicconfiguration,在Basicconfiguration中需要對一些基本的被測設備變量進行設置,例如在Modbus套件中需要輸入被測設備的IP地址,端口號等變量。這些變量是測試的必要配置,對于一些在應用層實現(xiàn)上可能各個廠家有所區(qū)別的協(xié)議,還需要提供一下交互報文。InteroperabilityInteroperability主要進行一致性檢測,測試欄中包含的是該協(xié)議典型的測試流程,每一個測試流程都是一組或幾組報文的交互,可以點擊用例從右邊說明欄查看。測試時點擊test,工具會自動運行每一個用例,綠色表示通過,紅色表示異常,對于紅色的用例,可能是被測設備不支持協(xié)議的某些部分,也可能是雙方的配置有問題,需要結合具體問題具體分析。對于綠色的用例,工具會基于這些用例自動生成相應的異常用例庫。Testcases第三步在Testcases中選擇想要測試的用例,正常條件下一個套件的用例從幾萬到幾十萬不等,某些較大的套件會有幾百萬的用例,但是由于工具采用了自動化的運行方式,運行速度是很快的,通常幾個小時就可以將整個用例運行一遍。此外,每個用例的具體內容是對用戶公開的,可以點擊具體的用例從右邊說明欄查看具體的報文內容。并且為了配合不同的測試需求,Testcases提供了幾種不同數(shù)量規(guī)模的用例庫,default模式,full模式,unlimited模式等,每種模式都對應了不同數(shù)量級別的用例,對協(xié)議的覆蓋度也相應的逐級提高。Testrun在Testrun中點擊Test按鈕就可以開始測試,工具會實時顯示當前運行的用例編號,測試狀態(tài),運行速度,測試進度等信息。當測試中出現(xiàn)bug,工具會提示紅色的SUTfail,點擊旁邊的Showlogs按鈕可以查看具體的日志。Results在每次測試開始時,工具會自動在Results里生成一個以時間戳為名稱的測試結果文件夾,里面包含了測試的結果列表,測試用例的交互日志,每一條用例報文的內容等信息。用戶還可以通過Results中的Re-run功能重跑那些失敗的用例。以上給出的是一個測試的基本流程,用戶在使用中結合具體環(huán)境可能還需要修改一些配置變量,具體可以參考defensics-instructions.pdf。測試常見結果及處置預案(1)測試常見結果對于Fuzzing測試,它本身是沒有預設立場的,所有的測試可能出現(xiàn)的問題都是等價對待的,可以進行區(qū)分的只有發(fā)送的異常數(shù)據包的種類,而不是測試結果的分類。從外部表現(xiàn)上來看,常見的現(xiàn)象有以下幾種:系統(tǒng)級掛死或異常協(xié)議模塊掛死或異常系統(tǒng)級別重啟協(xié)議模塊重啟DoS攻擊從導致漏洞的生成原因來看,常見的漏洞類型可以分為以下幾種:BufferOverflow(緩沖區(qū)溢出):一個緩沖區(qū)溢出漏洞可能會出現(xiàn)一個固定大小的緩沖區(qū)數(shù)據保留在?;蚨选H绻斎霐?shù)據的大小未經過驗證,與緩沖區(qū)的大小無法適配則緩沖器溢出。一個緩沖區(qū)溢出漏洞,可能導致各種問題,包括崩潰,超負荷和其他古怪的行為。在許多情況下,可能被黑客利用緩沖區(qū)溢出在易受攻擊的系統(tǒng)才能運行外部代碼。這是通過精心構造的數(shù)據片,導致溢出。在這種情況下,通過網絡徹底攻陷一臺主機是非常有可能的。內存溢出條件本身可以產生其他嚴重的故障,因為臨界狀態(tài)變量或其他變量可能會被攻擊者控制。Formatstringvulnerability(格式字符串漏洞):在格式字符串漏洞中,通常會通過類似C/C++語言的printf()等功能來輸入一小串格式字符串;一個黑客能夠在指定的輸入數(shù)據(格式字符串)中添加類似(%s%s%s)的內容來利用這個漏洞。這種漏洞能帶來的影響跟緩沖區(qū)溢出比較相似,通常能夠造成拒絕服務攻擊。Memoryallocationbomb(內存分配炸彈):內存分配炸彈利用內存分配例程中的弱點。根據入侵者偽造的長度字段,可用于對存在漏洞的主機上請求分配所有可用的內存資源。一個程序分配大量的內存是基于一個小項內輸入數(shù)據的基礎上;如果反復多次重復該項,內存分配就很容易受到攻擊。如果分配例程失敗,就會出現(xiàn)空指針的情況。調用函數(shù)并沒有認識到這一點,簡單地假設分配是成功的。內存分配炸彈導致拒絕服務的情況。保護程序的內存分配炸彈可能是有問題的,因為它是難以指定一個單一的外部請求應該被允許接收多少內存資源。Resourceallocationproblems(資源分配問題):一些異常的輸入可能會導致被測系統(tǒng)分配類如文件描述符的資源。然而,這些資源可能會被視為異常而無法釋放,并最終到這服務降級或者拒絕服務的現(xiàn)象。Missingvaliditychecks(合法性未驗證):對于協(xié)議字段內的輸入字符通常會有一個范圍的限制,而且并不是所有合法的輸入都合理。如果輸入字符的合法性沒有被檢查就導致了一系列的問題。一個典型的情況就是C/C++軟件中對于singedintegers和unsignedintegers的處理;如果一個程序默認處理unsigned,他可能無法正常處理singed的數(shù)據。另一個例子就是不正確的數(shù)據取值,比如對月份取13。異常的輸入元素可能會導致被測軟件出現(xiàn)空指針現(xiàn)象,不合法指針行為,不合法的索引以及引用。Busyloops

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論