Defensics健壮性测试工具测试方案_第1页
Defensics健壮性测试工具测试方案_第2页
Defensics健壮性测试工具测试方案_第3页
Defensics健壮性测试工具测试方案_第4页
Defensics健壮性测试工具测试方案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、保证原创精品已受版权保护Defensics健壮性测试工具测试方案1 .前言本文档就CodenomiconDefensics的工控安全测试方案提供说明,就测试原理,测试组网,支 持的协议以及测试流程提供帮助,指导测试的进行。2 .测试日程安排 N/A3 .产品功能介绍CodenomiconDefensics是基于协议级别的专门进行 fuzzing测试的健壮性测试工具,专门用于 发掘产品当中的未知漏洞。当前随着APTs高级持续攻击的日益猖獗,网络及工控安全面临前所未有的挑战,大部分的攻击利用的都是设备或系统当中的零日漏洞,这类漏洞由于缺少相应的防护 措施以及补丁,往往成为黑客攻击的首选。而黑客在寻

2、找零日漏洞时往往采用的就是fuzzing技术,Defensics能够先敌而动,在黑客攻击之前发现产品当中隐含的零日漏洞,帮助客户弥补潜在 的安全隐患。CodenomiconDefensics通过构造有序的异常用例集合,来查看系统是否会出现中断或服务失败等 现象。通过采用基于协议建模的构建方法,可以保证对协议所有状态机和字段的覆盖。而通过智 能高效的用例生成策略,可以使测试人员从无限的数据源中摘取出容易诱发系统服务失败的数 据。作为黑盒测试,Fuzzing测试不需要访问源代码,因此可在第三方软件上使用。通过自动化的 用例生成、管理和执行,最大限度地提升测试效率,保证产品的安全质量。 4.测试原理

3、模糊测试(Fuzzing ),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞 的方法。目前国际上公认找寻未知漏洞的最佳途径就是通过Fuzzing 。Codenomicon公司主推的Defensics产品就是一款基于黑盒的专门针对网络协议进行Fuzzing的安全性/健壮性测试平台。我们会选取出一系列的有组织的异常数据(畸形报文)发送给被测设备,并通过正 常报文的探测来观察被测设备是否还处于正常工作状态。这里所谓的“有组织的异常数据”是通过一下两个方向来形成的: ? 缓冲区溢出/溢进,边界值,等等(后续会有具体分类); ? 根据某种特定网络协议的规约(比如RF。来对该协议的每一个

4、具体字段,以及整个状态机的所有报文顺序进行遍历,确保代码的高覆盖率。以下是Defensics进彳T Fuzzing的原理,如图所示,一个完整的测试场景一般可以分为三个步骤: ? 互通性测试,互通性测试的目的是检测工具和被测物之间的配置一致性和连通性是否正常。工具会发送一组正常的协议报文用例到被测物,每个用例都是一个完成的报文交互过程,通 过这样一组正常用例,可以覆盖协议所有的状态机和字段,在发送异常用例之前确保被测物 状态正常,同时检查其支持的协议状态机。?发送异常报文,工具会基于正常的互通性用例生成异常用例,每一个用例同样是一个完整的 协议交互,工具会修改其中的某个报文的某个字段或某几个字段

5、,或者重新构造整个报文, 用例的数量从几万到几百万不等,工具会自动化的执行测试。?发送探测报文,每发送一个异常测试用例之后,工具会发送一个正常的探测报文,去检查被 测物是否能正常响应探测报文,其目的一是检查一下被测物在接收到异常报文后是否能够正常提供服务,二是在进行下一条用例前确保被测物的状态正常。如果被测物能够正常响应检 测报文,工具会自动跳转到下一条用例。如果不能正常响应,工具会一直检测下去直到被测 物响应为止。失败失败检查配置/ 一致性根据上图我们可以看到判定探测报文通过与否是我们检验某一条测试用例是否对SUT造成影响的唯一标准;而判定标准是由Timeout值决定的,该值由测试人员根据S

6、UT的正常响应时间决定。所以,所有我们判定探测失败的测试用例,都是因为超过了Timeout值还没有得到正常的相应,通过这种机制,我们可以100%的确保没有误判,因为所有失败的用例都使得SUT在正常响应时间内无法提供服务。这里我们以IPv6协议为例,结合 Defensics的界面进行具体说明。1.在Interoperability中套件已经根据规约定义好正常的协议交互测试用例,这些用例覆盖了该协议所 有可能的状态机。点击test即开始执行互通性测试,通过互通性测试可以检查测试仪和被测设备之间的配置一致性是否正常,有些被测设备可能并不支持协议的全部实现,会显示为部分pass,部分fail (绿色表

7、示pass,红色表示fail)。Fie Wixs G*oujM IMiin Hrip* l I H ZK« 勿 mi |。o。. »nv ,QJjtfe*ilfrT inihi154口司?胃小 M呼第 5BiM:Vgi物餐a3 一0的Is71AesJBEndhRHTime frijm 如t0u/Ipte 为2界4 4E 地 f*SlMriwda2WLmr M-iWrll iw-ni-f.?*?S*Mt3.3*BMb Eifiad购IMTT H QiiM«£ « Cifl «0ZWlUT-r: l« 叫 MSI TM.IMLK

8、Wv。nlMZflJMT-FT If gf :lest sullt 式的鼠 IM iMim fMQi&iQE”/ d.rfTirE3ci Icffl aiiMT-r;i:j Ec» 31Hli廿 5-Lxii 企m 3小1 上4加%小蚤山整/ejN'H-$7"®"其1巾1。«4 hi rut L.f u £*; *5图;J;® 一133,M3;f 料】缶;"4k&$pL”2j3 U-fll7-0" .b5川4二其.已附 rarard qrj,° laj4r li Liib

9、ar SaLacitwt i-stj JI I'j-lctIa i W7-H 碣二口公弟.工 «lh«ra>t g二网:da :兔;;IC- 国:.耻±&=1幅,14 i>rt 谷川 M3fl|ET-rr1*«* Lmr*P VtLr Ad»tRLMim R £wiZdlMT-ffT H q“sa, I码 eihemer M1Q1 黎 IclIci® «。门与 耳”相皿 ZCIM 旧写西白 EJI:-F J1坤力河 I就 Eec4Et E - Iff it»*5 削叫已 *1-

10、 1M ai;TT i4e44eM. Ii3i XHnwt 4口*a*:hiBri也 归:小g FhH K 331iHI7-#T 1二口4:迅 EM r-Ed Lvr Cm .p IC KF l-chs bvljr t-J? IzmJ MlUi-% 1配口4;其JM E«rt cm fD fid KlMT-JT和 Mst rw* M ezMHf*) Trihfl RtrffllE hh;E,*mHV T-tfl: dgA <4HMan 师* dh H-¥ ChfM叫oci sturUM E tuof m mat mt nduda hduiMfitaitain Inw,

11、 B<han rntininwtaDM 缶 «fu£*nd. Ala flw2.在进彳T完Interoperability (互通性测试)之后,工具会基于刚才跑通的正常用例生成变异的测试用例,由于之前进行了互通性检测,可以保证被测设备对这部分功能是支持的。在5) test cases中可以选择异常用例的范围。3 .在选择完测试用例后,在 4) Instrumentation中选择探测报文类型,这些探测报文都是正常的协议 报文,默认情况下该功能是打开的。通过配置探测报文,测试工具会在每条测试用例中先发送异常报 文,然后发送探测报文检查被测设备状态,如果被测设备正常响应,

12、就跳转到下一条用例,如果不能,就重发该检测报文,直到被测设备响应为止。4 .在完成4) instrumentation和5) test cases之后,即可进入到6) test run部分开始执行测试用例。 Mil 巴 UG# I*。:0« ->»<K> X>,的若> H忖771fl 0CHri葡I2Q41 cooHWicoii defenstcsTe$t SuiteD>t*e«HK511 TE S(1*e testa m roCJustrnws FM( imiemesTtalwni * TltefTp&tpbug5 口

13、Us4ht GyideMM1 muhtrnsmitoflK * HHd国 ingMTK- 4lMI mtfiwinKl 驷 41M M gflUTH The M: ±u1a d 小通-11 史 口nE 修 zmumaud biJdc-Eua. *guhr« 咐皿ig * an 扇附 mwnanLJFMIR。EuCftTuaE Wiw < DMnw 11 U0 fuDMLhe口y SssEad 用由 取名 Tg 5 Fm ue»- bhwd tamkr Ih Wmsbzk ii Iax suitnsH Geuo Eirn喇jgn 5 的 KM MtTTREMK

14、-MM HrtflfirAkldinai取 2ai3 餐Ikzhse »_ bttrfiliinh 的HteteL<jadiHMwcan l4L 题皑MUi Al rvdw rA&Aiwl5 .功能特点(1) 基于协议建模,全状态机全字段覆盖Defensics是基于协议级别的fuzzing测试工具,每个协议有相应独立的套件,套件采用协议建模的方式进行构建,因此可以保证对协议状态机和字段100%的覆盖。在测试过程中,每一个用例都是一个完整的报文交互,因此不仅仅是可以对第一步交互进行fuzzing,而且可以对所有的协议交互流程进行深度的覆盖。(2) 用例自动生成,基于黑盒测

15、试原理Defensics是基于黑盒测试的fuzzing工具,使用时无需访问源代码。测试脚本按照协议规约的定义 已经内嵌其中,从用例的生成、管理、执行,到结果的导出,生成报告,完全实现自动化的运 行。(3) 用例公开,便于问题定位和复现Defensics的用例库涵盖了协议的所有字段,数量从几万到几百万不等,并且可以根据需要手动调 节用例库的规模。Defensics的每一个用例都是对用户公开的,用户可以查看用例报文的交互流 程,报文的具体内容以及如何生成的异常用例。(4) 广泛的协议覆盖,支持大多数主流通讯和工控协议Defensics能够支持超过260种协议,涵盖了二层到七层的通讯协议、工控协议、

16、文件格式、私有 协议、空口协议等,目前大部分的通讯协议和主流的工控协议均可测试。(5) 支持私有协议测试,提供二次开发Java SDK针对私有协议特别是工控领域中大量用到的私有协议,可以使用Defensics专门针对私有协议的套件Traffic Capture Fuzzer进行测试。Traffic Capture Fuzzer采用抓包变异的原理,将正常的交互报 文导入测试套,基于正常的报文进行fuzzing变异。并且用户可以根据需要修改、定制相关的测试脚本。针对一些复杂的协议交互,例如 checksum校验、协议字段交互等,Codenomicon还提供一套Java SDhffl于高级二次开发。

17、(6) 支持服务器端和客户端,提供双向测试Defensics基于某个具体协议,可以提供针对服务器端和客户端的双向测试,从而确保对协议报文 的完整覆盖。6 .测试协议覆盖目前Defensics可以针对260多种协议进行fuzzing测试,覆盖了从2层到7层的大部分通讯协 议,工业控制协议以及私有协议。并且对一个特定协议可以支持服务器端和客户端两个方向。支持的工控协议:Modbus TCP PLC/Master; DNP3 Client/Server, Profinet DCP server, Profinet PTCP Client/Server, IEC61850 MMS Client/Ser

18、ver, GOOSE/SV IEC60870-5-104 Client/Server, CIP/EtherNet与工控相关的通讯协议:Ethernet, IPv4, TCPv4 UDPv4, ICMPv4, IGMP, XML SOAP Client/Server XML SOAP Client/Server, 1588 PTP Client/Server, BootP/DHCP Client/Server, NTP Client/Server, FTP Client/Server, HTTP/HTTPS Client/Server SNMPv1/v2, SNMPv3, Telnet, SSL

19、 TLS 1.1/1.2 Client/Server, IPv6, SSHv1/v2, SMTP私有协议和文件:Traffic Capture Fuzzer(M包变异),Universal Fuzzer 仗件格式)7 .测试场景测试采用直连的方式连接 Defensics测试仪和被测设备,二者通过网线直连,需要为 DUT和Defensics配置相应的IP地址,一般配置在同一网段。由测试工具发送有组织的异常数据,观察被 测设备在异常报文作用下的健壮性。为了能直观的观察被测DUT的异常,最好在DUT下再连接一次设备。一个典型的测试场景包含了三部分,首先测试工具会向DUT发送一组正常的一致性检测报文,

20、用以检测双方的一致性是否正常。在一致性报文通过后再发送有组织的异常报文测试用例。第三步再发送正常的检测性报文,用以检测刚才的异常报文是否造成影响。DUT(PLC)Test devicecableValid case一致性Anonnzly。兜测试用例Valid犍检测8 .测试过程这里以一个典型的 Modbus测试流程为例,阐述了如何使用Defensics测试工具进行fuzzing测试。(1) Basic configuration加载套件后首先会进入到Basic configuration ,在Basic configuration中需要对一些基本的被测设备变量进行设置,例如在 Modbus套件

21、中需要输入被测设备的IP地址,端口号等变量。这些变量是测试的必要配置,对于一些在应用层实现上可能各个厂家有所区别的协议,还需要 提供一下交互报文。(2) InteroperabilityInteroperability主要进行一致性检测,测试栏中包含的是该协议典型的测试流程,每一个 测试流程都是一组或几组报文的交互,可以点击用例从右边说明栏查看。测试时点击 test,工 具会自动运行每一个用例,绿色表示通过,红色表示异常,对于红色的用例,可能是被测设 备不支持协议的某些部分,也可能是双方的配置有问题,需要结合具体问题具体分析。对于 绿色的用例,工具会基于这些用例自动生成相应的异常用例库。由“

22、itflM Suk 3KHM II 才 H* k a 4 - #M MCIXLS-FICE X4 dvritd 畋Etfl 叫口 曰 p 附 丁日于即KBfffeOh £UT jTUS-Fe-MSWtMl4F 收mw* 也 即 mKt 皿 uMw N w $r«44 nfliMG - Itow i皿rftd - ±. DrurapdrjIWi田rgj&y皿r例 coo eiom icon defensics-Defensics Flow user inter luceTFw rtecer-ab e nisi*。R eraure that the 5&

23、;sc scnhgur-itKn setiiig vnt prsperh Ml, aid Eta £iF»nmn G» till tfglBd 理Th«, ugn UrU b 事通IM Tfriumnipc and iha hizHum 坨 <"unqz aw at tnurt dfAfan口£f th: mA. nnm m m Itfcd Wse 巾 rm ntBTjptrfllt ,U 0弋Ice&H' r4dr4c±Ad to badL in BasilPMie lestsum marry i j

24、 ShCMHn be4pr 9V Trff hitler* Ttap rewits .1? WlMknij wth Iqltnm Ml峪d 情皿M cur 如«ra HLsInMi乂iisMwnbMfl.(3) Test cases 第三步在Test cases中选择想要测试的用例,正常条件下一个套件的用例从几万到几十万不 等,某些较大的套件会有几百万的用例,但是由于工具采用了自动化的运行方式,运行速度是很快的,通常几个小时就可以将整个用例运行一遍。止匕外,每个用例的具体内容是对用户公开的,可以点击具体的用例从右边说明栏查看具体的报文内容。并且为了配合不同的测试需求,Test cas

25、es提供了几种不同数量规模的用例库,default模式,full模式,unlimited模式等,每种模式都对应了不同数量级别的用例,对协议的覆盖度也相应的逐级提高。E曲 %,Gmpi 朝4型4 Zp411 » W 0 / | « 图口 y * 尸。 . 十% SJFg G 知忸曲】n*i= 3!二af *t arisrlfr-Elf匈匚-n如 -: -:jF- i rl 口氐 jjJ ,F-JD JeEi;,同日UiHE ChflHWSgDMOnZW血*. Mnffliar - *J« MS.itS m U I,EDEziiarKTlM teS aw 畤亡guEE

26、ab* 刁 GUI tw 由,叫fg th?皿触 5« toiEeMBUE n mGUIMAfttAgtl© iBWOWS-mM-tE5 g Ewhj:az :. fmObuXMtFHgga,力 EftmHFBfJt 国如魁凶峰 &疆皿 8 AAnann.o 空皿效俎妞效皿丝致独魂髓皿凶处_ _. _ 皿皿 皿 OBL 皿 oo nn do an 皿 oa 0 oo nm pa on鼻ruf|. pgh再 pM%4f4.rwvi%H k - ,ranm-I*rlvaa-iiarl(4) Test run在Test run中点击Test按钮就可以开始测试,工具会实时显

27、示当前运行的用例编号,测试状态,运行速度,测试进度等信息。当测试中出现bug,工具会提示红色的 SUT fail,点击旁边州 H 0 .,OO询印事IMiII54IwhinWSisnDsefefisics Flow user interfaceF*l i*i*i hM晦/Nsl-S.B|号用.事*的Show logs按钮可以查看具体的日志。6. TsfltruhThe test nm srepi tfhw? vv 1口 stwt <erum md nMnitar p 收 g虚 the It st nm. Artus dIha Hd iwn k- hdiLVlGd iMth a pnogr

28、tu bir. Th« kkiiIM IbE ran Icflillu- c dwijpKd In uhmAcjWeT&d Hihftb uri ba «jh3W i UH buClHifc m Qt« lq» bUbn Inr, a ib,11gHi in m iMt nift H限幽山ME二buHQfl& MIg 加! SUM炉巾味2由7国区% mraM Iw run dtoHfiMt mracuMhi 孙阕 cm nrI. msp (wlttm 'rtcps-W SinglB rmrZ X- WWCirlirjr f m 旧

29、$*h Zsub- n E rwino. the-1 njn bs 0flM and kkueuxi b pausrd 小汗 the3 ivd' mat f llw bifinn b 口白*wd 55 Dia mlB & 口aeuMd.团用 Iha nfiot cam tt amfojIxI thm tflEt fin & 呼七II Piwj t birt-nj55*5-the ehE力g of 六 te-rt n> tt-c |«t njr i? reusedtuttnn and Un装 £JBM> It .曲词id nffi '

30、;M«P bullDfLSop Whpn rtops-鹏 M: ririr F号Swjnirnl rin n|e JTifiMSfi4q 5« W呼土丁充口一十七 Results在每次测试开始时,工具会自动在Results里生成一个以时间戳为名称的测试结果文件夹,里面包含了测试的结果列表,测试用例的交互日志,每一条用例报文的内容等信息。用户还可 以通过Results中的Re-run功能重跑那些失败的用例。,11 W O 与 F色为 4 町 Iwr/wnta»1, SJTentMti.HXHL t-R.C* riiMh3 nll n 加,” 加渊FAIR"

31、-" M Mmt5-L*%-LL - *(翼 1 *3LSLLM3B -WI <frHa«3U ILJK-9 W * U «3U-LLZ-35 -VE 出MHO3tMHL 帽曲窈谢才即力K .1涧 mi>小7-K,111门小山小刘1|« IIH K*431维鹏随B.覆声hQ 91 j eur«i exths*Q 但1rHMMCOOOM ffUCbuS-CHl-VYUHai mpdtus-messBge 、丽 Ernamn*i*rBfi_._ _ jp rdiDn3"i da rfitkrWW9J-a. 44 fifidfi

32、rtaNph.8 Qdunt-Hrnner n»b«oiMhEW mDdtm»-rneaBg)e-quer¥ e ixl bur cmw |wr i 心 曲 a-tr an tpm 后 “MrT IWKDdfl-orfA Ebartrt力"Ite曲Htransinit- 2bcm 口 EM-pcma 卜 TiEnwMooooo 酒bki 耳mrtYttaUFMon-firnwl 9*W通诃CTrapen-hndKin-oMie cwop由 wdcFS-ofijert E/ Mg£BlafH-luda-ldf二&oddonppn

33、-雇FqEft H密>1, Q以上给出的是一个测试的基本流程,用户在使用中结合具体环境可能还需要修改一些配置变 量,具体可以参考 defensics-instructions.pdf。9.测试常见结果及处置预案(1)测试常见结果对于Fuzzing测试,它本身是没有预设立场的,所有的测试可能出现的问题都是等价对待的,可 以进行区分的只有发送的异常数据包的种类,而不是测试结果的分类。从外部表现上来看,常见的现象有以下几种:系统级挂死或异常协议模块挂死或异常系统级别重启协议模块重启DoS攻击从导致漏洞的生成原因来看,常见的漏洞类型可以分为以下几种:Buffer Overflow (缓冲区溢出)

34、:一个缓冲区溢出漏洞可能会出现一个固定大小的缓冲区数据 保留在栈或堆。如果输入数据的大小未经过验证,与缓冲区的大小无法适配则缓冲器溢出。一个缓冲区溢出漏洞,可能导致各种问题,包括崩溃,超负荷和其他古怪的行为。在许多 情况下,可能被黑客利用缓冲区溢出在易受攻击的系统才能运行外部代码。这是通过精心 构造的数据片,导致溢出。在这种情况下,通过网络彻底攻陷一台主机是非常有可能的。 内存溢出条件本身可以产生其他严重的故障,因为临界状态变量或其他变量可能会被攻击 者控制。Format string vulnerability (格式字符串漏洞):在格式字符串漏洞中,通常会通过类似 C/C+语言的printf ()等功能来输入一小串格式字符串;一个黑客能够在指定的输入数据(格式字符串)中添加类似( %s%s%S的内容来利用这个漏洞。这种漏洞能带来的影响跟 缓冲区溢出比较相似,通常能够造成拒绝服务攻击。Memory allocation bomb (内存分配炸弹):内存分配炸弹利用内存分配例程中的弱点。根 据入侵者伪造的长度字段,可用于对存在漏洞的主机上请求分配所有可用的内存资源。一 个程序分配大量的内存是基于一个小项内输入数据的基础上;如果反复多次重复该项,内 存分配就很容易受到攻击。如果分配例程失败,就会出现空指针的情况。调用函数并没有 认识到这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论