论文研究-基于范式语法的工控协议Fuzzing测试技术.pdf

所需积分/C币:10 2019-07-22 19:29:53 1.68MB .PDF

针对工控协议Fuzzing测试存在测试脚本编写工作量大、测试用例的覆盖面小、测试效率低等问题,提出了一种基于范式语法的工控协议Fuzzing测试方法。首先以改进的扩展巴科斯范式(modified augmented Backus-Naur form,MABNF)来描述工控协议;然后根据范式语法模型,将报文样本解析为范式语法变异树,进而生成范式语法变异树的描述脚本;提出了基于MABNF变异树的测试用例生成算法(MABNF-mutation-tree based test-cases generating method,MTGM),先对MABNF变异树进行深度优先遍历,再采用语义变异策略对节点实施
第8期 张亚丰,等:基于范式语法的工控协议 fuzzing测试技术 2435 系也更加直观。 文的长度,利用ABNF表达将会含有大量冗长的BNF表示,而 1.2协议的 MABNE表示 且 Length字段表小的长度值难以描述,更重要的是描述的语义 工控协议本身作为工控系统网络通信中数据流和控制流信息不易理解,反之利用 MABNF的功能函数 By le Counl可以很 交换的规范,也是一种网络通信话言,因而协议报文本身就是直观地表明Leng就是计算Um+D、 FCode和D三个字段的 系列符号的有序结合。利用 MABNF语法,可以对工控协议字节数之和。在 Modbus,/TCP协议的 MABNF描述中,有很多话 进行描述。若描述对象为私有工控协议,本文以文献[25]为义依赖关系的表达。如非终结符PDU依赖于同样也是非终结 基仙进行协议格式的逆向分析提取协议报文的BNF表示,再符的FCoe和Da字段,而F(ode和Da字段依赖于终结符 利用 MABNF进行描述。山定义1,对于协议P,可以表示为 BT/BYE,并且Dala宇段还依赖于由功能函数 Byle Counl表示 连串的元表达式序列,即:P=1*(e1e2…e,)。其中: 的终结符K。根据MABN上描述的 Modbus/lCP协议的语义依 P: =k*T/KsN/Ks(eo F/Ro(T/ N)), iE [I, n] 賴关系构造出棵 MABNF语法树,如图2所示。 K=〈k)e),0≤i≤k≤j Modbus/TCP=MBAP-Hcadcr PDU 依赖 T= ALPHA/DICIT/CHAR/DELIMETER/ BIT/BYTE/SYMBOLS MRAP-Header MBAP-Header=Transaction-ID Protocol-ID Length Unit-ID Fcode=BIT/BYTE F= Byte Count/ String/Random/CheckSu/ Bits Transaction- Length=Byte Count(Unit-ID, FCode, Data) IDEBLTBYTE aLPha = %0x41-5A/ %0x61-7A: A-Z/ a-z Protocol-ID=BIT DIGm=%x30-39;0-9 BYTE Unit-D=BIT/BYTE BYTE=Sox00-FF CHAR=%×00-7F;ASCI字符 DatanK(BIT/BYTE DELIMITER=CR/LF/CRLF/CTL/ DQUOTE/HTAB/SP BYTE=cx00-FF K=Byte Count (Data) / COLON/SYMBOLS 图2 Modbus/TCP协议的 MABNE语法树 通过 MABNF树可以很清楚地看到,长度字段的值依赖于 BYTE %0 x00-FF 其他的字段,而且传输层TCP报文数据的校验和字段的值依 SYMBOLS=%01F/%x212F/%x3A40%x5B60%x7B7F;非赖于 Modbus/TCP报文数据,因此,在测试用例生成中,先不考 数字和字母表ASC字符 虑对长度和检验和字段进行变异,而是对其他宇段进行变异之 如上所示,协议P的规范可以通过 MABNF语法措述出后,再由报文修正模块计算相应的长度和校验和字段的值。 来。接着,利用协议P的ⅥABNF摧述,可以根据相应的依赖 关系构造出以非终结符和终结符为中间节点和叶∫节点的协2基于范式语法的测试用例生成 议P的 MABNF语法树,从而根据 MABNF语法树来指导有效 测试用例的生成。下面以工控协议Mobu/TCP为例,详细 为进行 fuzzing测试需夏将协议的抽象 MABNE描述进行 说明如何利用 MABNF语法描述协议。 实例化。实例化方法如图3所示,以抽象描述和报文样本为输 Modbus/TCP协议报文如图1所示。由图可知, Modbus 入,根据 MABNF描述表达式对样夲数据进行解析,生成协议 TCP协议报文分为头部(MBAP报头)和协议数据单元(PDU) 的 MABNF变异树,然后生成描述协议 MABNE语法变异树的 Mobu/CP是基于传输层为TP协议的应用层协议,在 TCP XMI脚本, Fuz.ing测试工具根据XM脚本解析报文样本生成 数据包中已经存在校验,因而 Modbus/TCP不再作CRC校验。测试用例。 MABNE 其中,头部包括事务标志( Transaction ID)、协议标志( Protocol MARNE描述 模型解析变 异树 本生成i文件测试用例 ID)、长度( Length)、单元标志(Urit-D);协议数据单元包括功 生成 样本报文 能码(上Code)和数据段(Data) 测试逻辑 - MBAP-Header PDU 图3基于 MABNF语法的测试用例生成流程 从可阅读性的角度来说,协议分为文本协议和二进制协 Transaction-Im Protocol-ID Length Unit-ID FCode D 议。文木协议主要是由ASCI字符集根据协议规范排列组合 Modbus/TCP 图1 Mobus/TCP协议报文格式 而成,一般是可以直接理解的;二进制协议是由一连串的字节 利用 MARNF语法来表示Ⅵ odbus/TCP协议如下所示: 流根据协议规范而构成的。 Modbus/tcP= map- Header PDu 下面根据文本协议和二进制协议的不同特点,分别说明了 MBAP-Header Transaction-ID Protocol-ID Length Unit-ID 将协议 MABNF描述实例化为 MABNF语法变异树的方法。 PDU FCode Data 2.1文本协议 MABNF变异树的构造 Transaction-ID= BIT/BYTE; 通过对大量文本协议报文的分析,除了各个字段之间会 Protocol-ID= BIT/BYTE BT="0"/"1 有分隔符将字段隔开,在字段内部也会有像空格、斜杠(“/ BYTE =90 XOO-FR 冒号(“:”)以及句点(“,”)等这样的分隔符存在。而攻击者 Length Byte Count( Unit-ID, FCode, Data) 往往能够利用协议实体对分隔符处哩不正确的漏泂来精心构 Unit-ID= BIT/BYTE 造协议报文攻击月标系统。如P服务软件 itan fip server K(BIT/BYTE Sottware10.32 Build1816存在的目录遍历漏润CVE-2014 K= Byte Count( Data 1841,允许攻击者远程通过目录遍历字符(“./”)访问到 在上面的描述中, Length宇段表示 Length字段之后所有报含有敏感信息的任意文件。上述漏洞出现的原因正是由于软 2436· 计算机应用研究 第33卷 件未能对“..”这样的分隔符正确解析。基于此.为了提高测 16 Craete_ MABNFtree( Mm, node leftchild 试的命中率,对文木协议进行 MABNF变异树构造时,在字段 7 Create MABNFtree( Mm, Enode, rightchild): 内部以分隔符为界限对字段进行更绀粒度的划分,如此对文本 18 end if 协议的字段描述粒度更加细化,使得变异树构造过程中选择的 19 end for 变异字段更小,从而能变异产生更多有效测试用例,提高代码 to return T; 覆盖率和发现潜在漏洞的概率。部分分隔符如表28所示。 其中:第1-3行创建根节点,第4行将当前样本数据域作为 表2分隔符表及其相应的 ASCII(十六进制)值 个节点。针对节点屮存在的字段域,首先搜索分隔符(第6 DELIMITER ASCII DELIMITER ASCIIDELIMITER ASCI DELIMITERASCIl 行),若不存在,该节点即为叶子节点,并赋予属性标签(第8~ 11行);若存在分隔符,则以该分隔符为界限作为该节点的中 NUL 间孩子节点,将宇段域分割为左子域、中间孩子域和右子域三 个部分,分隔符作为中间孩子节点也是叶子节点,然后递归地 3A 0A D 利用该方法分别对左子或和右子域进行树的构造(第13~18 行 MABNE变异树构造算法思想:由单个数据样本报文Me ssge和协议的 MABNF描述,递归遍历它的每个字段,以其中2.2二进制协议 MABNF变异树的构造 的分隔符为界限,将分隔符作为一个中间叶子节点,分隔符左 由于二进制协议字段内的值没有分隔符,无法根据分隔符 右两边的域看成两个新的∫字段,递归处理新的f字段,直到再对协议字段内部进行更细粒度的划分。经过分析,工控协议 样本数据无法再分割为止。 报文一般具有简短的特点,所以可以用宇节(或半字节)为变 树节点在构造过程屮同时赋予其属性标签,其规则如下:异单位。二进制协议 MABNF变异树构造息想:单个数据样 a)中间节点字段类型复杂,赋予其bck属性值;b)叶子节点本报文 Message递归遍历它的每个字段,计算每个字段的总字 根据字段本身是字符串、数值、字节、分隔符等类型分别赋予相节(或半字节)数K,取中间(K2)字节(或半字节)为界限,将 应的属性为 String、 Number、Byte、 Delimiter等。节点赋予属性其作为一个中间叶子节点,中间字节(或半字节)左右两边的 方便了在后续基于 MABNF变异树的测试用例生成过程中,可域看成两个新的∫字段递归处理新的字段,直到样本数据 直接根据节点属性,缩小异常数据的搜索范围,使用相应的功无法再分割为止。树节点在构造过程中同样赋于相应的属性 能函数对节点进行变异,提高测试用例的有效性。 值、规则同文本协议的属性赋予规则一致。 下面以 Modbus ascii协议为例,根据相应的 MABNE描述 进制协议 Modbus/CP根据MABF语法构造得到的变 构造得到的变异树如图4所示。 异树如图5所示。限于篇囁,图中虚线框表示未被表示出的字 Modbus ASCIl=Start Address Function Data LRC End 节(或半宇节)节点。 Modbus/TCP=Transaction-ID Protocol-ID Length Unit-JIDIFcode DataD StartECOLON AddresseBYTE DELIMITER auSactiou-DD=2"B Unit-D=BYT Date=K*BY] nction=BYTE Protocol-D=2“BYTE Fcodesbyte field DELIMITER String/Char COLON= BYTes, BYTE K2)BYTE(K/2, K BYTE=exCC-FF YTE=%x00-FF DELIMITER String/Char 画E时少1的、1气BTE2四产 图4单个 Modbus/TCP协议报文的 MABNE变异树 图5单个二进制协议 Modbus/TCP报文的 MAINE变异树 具体算法如算法1所示。 具体算法如算法2所示。 算法1文本协议 MABNF变异树构造算法 算法2二进制协议 MABNF变异树构造算法 输入: MABNF协议描述模型Mm,单个样木效据 Message 输人: MABNF协议描述模型Mm,单个样本数据 Message 输出:样本数据 Message的MAF变异树T 输出:样本数据 Message的 MABNF变异树T。 Create MABNFtree( Mm, Message Create_MABNFtree(M, Message)3 I if T==NULI. then 1 IfT== NULL 2T.root← Message 21.root← Message; 3 end it 3 end if 4 inode Message e e 5 for each field in Message do 5 for each field 6d< Search(fcld);//搜索分隔符 6k← Count Byte( field);//计算feld宇段的宇节(或半宇节)数 7 if d= NULL then 7 ifk==1 the 8 inode← field 9 inode.atr← field.ar;//节点属性 9 node.atr← field.altr;//节点属性 10 Enode. midchild,;//叶子节点以子节点为空来标志 10fmde. midchild←;//叶子节点以其中间子节点为空来标志 continu 12 else 12 else ifk==2 then 13 node leftchild +inode split(d) left; 13 node leftchild +field[0 14 inode. midchild←d 14node. midchild←; 15 node. rightchild +-fnode split(d).right; node. n getchild← field1] 第8期 张亚丰,等:基于范式语法的工控协议 fuzzing测试技术 2437 16 15 for each node in nodes 17 Enode leftchild +fileld split(k/2). left ecord then 18 node. midchild +field [k/2] 17 continue 19 node nightchild +-field split(k/2). right . 8 else 20 end if 19 Record 21 Craete_ MABNFtree(Mm, inode leftchild y 20 cases mutator node, node. attr, Nodes 22 Create_ MABNFtree( Mm, node. rightchild 21Tess← Tests cases; 23 end for 22 end it 24 return t 23 return Tests; 其中:第1~3行是创建根节点,第4行是将当前样本数据域作基于MANF变异树的遍历,并对已测兀素进行记录,有效避 为一个节点。针对该节点对应的字段域,首先计算该字段的字免了节点的漏测和重复测试,深度优先遍历之后对其逆疗,使 竹(或半字节)数(第56行),若字节(或半字节)数K为1,该得中间节点的变异总在其构成子字段变异完成之后,有助于利 节点即为叶子节点(第8~11行);若字节(或半字节)数K为用其子节点的变异结果进行组合变异。 2,则亥节点的两个字节(或半字节)分别为左子节点和右子节 算法3中 mutator为语义变异算子,利用语义变异策略综 点(第13~15行);若字节(或半字节)数大于2,则以中间字节合考虑被测宇段的属性标签和谙义信息来缩小异常数据的搜 (或半字节)为界限作为该节点的中间孩子节点,将字段域分索范围,从而提高测试用例的有效性。变异算子分为类型变 割为左子域、中间子域和右子域一个部分,中间字节(或半字异操作变异、组合宁段变异三大类。 节)作为中间孩子节点也是叶子节点(第17-19行),然后递 a)类型变异。根据字段属性,结合常见漏洞构造异常报 归地利用该方法分别对左子域和右子域进行树的构造(第21、文数据 22行) (a)针对数值类型宇段,可根据其数值域取临界值,如 2.3基于 MABNE变异树的测试用例生成算法 1,0,1,0xf,0xf,0x,或者由功能函数Bits生成随 通过算法1和2对工控协议报文的解析,将协议的MAB 机数值中。 NF抽象描述转换为了具休的 MABNE变异树模型,进而生成 (b)若为字符串型,可生成超长字符串或包含特殊字符的 描述协议报文变异树的脚本文件,并修改 Peach相应模块使其字符串,如“ AAAAAAAAAAAAAAAAAAA…”,“~%a%n 能正确解析脚本文件,由此根据协议报文的 MABNF变异树模%#…”等,或者由功能函数ing随机生成字符串或格 型来指导测试用例的牛成 式化宇符串。 本文设计了基于 MABNE变异树的测试用例生成算法 (c)针对二进制类型,采用位变换方法,即随机选择数据 ( MANF- mutation-tree based test-cases generating method,Mr.中的某出位(以半字节或字节为单位)进行翻转(将0变为 GM),如算法3所示。首先对变异树进行深度优先遍历(第或将1变为0) 2~12行),得到变异树节点及其属性组成的集合( Nodes),然 (d)对于作为补充数据的填充宇段变异,还可以采用删除 后将 Nodes结合逆序(第l4行),接着根据该集合依次寻找未 该宇段、增加填充宇段长度以炇采用其他宇符集填充的方法进 被测试的节点作为变异对象,进而根据节点的属性选择相应的行变异 变异算子进行变异(第15~17行),同时将节点字段放入已测 e)针对路径类型,可生成包含文件遍历字符的异常数 元素集合 Record(第18行),避免在后续样本测试中相同字段据,如“/”“,,”等。 重复测试,最终得到测试用例集 Tests(第21行)。 (f)若为分隔符,可以采用替换、增加、减少分隔符的变异 算法3基于 MABNF变异树的测试用例生成算法(Mr.方 GM) b)操作变异。根据变异树生成的节点集合,兄弟叶子节 输入: MABNF变异树7,样本数据 Message,已测变异树元点之间,可以任意复制、删除以及互换节点 素集合 Record=。 c)组合宁段变异。实际应用中,软件的漏洞往往不是由 输出:样本测试用例集 Tests。 单一的异常字段触发的,多维输入同时变异的 fuzzing技术能 let t. root Nodes Tests 挖掘单维Fuig技术不能发现的漏洞2。传统的组合字段 2 Search t 变异就是将不同的变异宇段随机组合,但这样会产生组合爆炸 3 if visited[ node]==falsethen 问题。本文采用对变异字段赋权值的方法来指导组合字段变 4 visited node←true 异。在前期工作中,首先对触发异常的单个字段的频率(频率 5 Nodes +Nodes node: Nodes[ inode]. attr +inode attr 就是变异字段的权值)进行统计,频率越高说明触发漏洞的可 6endi∫ 能性越大,得到频率由大到小组成的优先队列,然后根据哈夫 7 if inode. midchild == then 曼编妈的思想,每次从队列中选取频率最大的两个宇段进行两 8 Nodes +Nodes node; Nodes[ inode].attr-fnodeattr 两组合变异,组合变异过的字段不再对其进行变异,而是队列 o else 巾选取权值最大字段继续进行组合字段变异。 10 Search_Tree( node leftchild 11 Search_ 'Tree( node. midchild) 3实验与结果分析 12 Search_Tree( node. rightchild) 13 end it 3.1实验设计 14 Reverse( Nodes 为了验证方法的有效性,本文实现了基于 Peach的工控协 2438· 计算机应用研究 第33卷 议 Fuzzing测试原型系统 M-Peach。首先采用范式语言对协议设备为测试目标,分别利用 M-Peach和 Peach模拟供水 SCADA 的 MBANF语法模型进行描述,然后实现了 MABNF语法解析系统的HMI应用程序,以 Modbus请求报文为样本,向PLC、 模玦 MABNF_ Parser.py,枃造岀协议的 MABNF变异树,进而生rTU等设备发送模糊测试报文进行测试,配置远程监控代理 成描述 MABNF变异树的pit文件,接着实现了基于 MABNF变 RemoteAgent,对PLC、RTU等设备的回复报文进行监测,从而 异树的测试用例生成变异模块MABN_ TreeMulale.py,最后再判断是否出现异常。 对 Peach相应模块进行修改,使得主程序能执行基于MANF3.2实验结果分析 语法变异树的自动化模湖测试。 对供水 SCADA系统的HMI客户端测试时, M-Peach共发 M- Peach测试框榘如图6所示。协议语法脚本和样本数 现76次异常,表3给出了每种报文的测试结果。 据作为输人。引擎首先完成对报文样本的协议语法解析,生成 表3 Modbus/TCP协议报文测试结果 MABNF语法交异树对应的pit文件,然后根据pit文件牛成测 报文类型 测试用例数异常数 试用例,接着对测试报文进行重组,最后由 Publisher将半有效 Modbus请求 49936 的测试报文发送给测试目标。代理负责监控处理协议的目标 Modbus响应 51893 组件的运行情况,记录并分析产生的异常。在一次测试完成 Mullus异常应答 后,平台将输出导致异常的测试用例、错误现场和异常信息、。 通过对异常的进一步归纳分析共得到五类异常信息。这 引擎 代理 agent 五类异常信息验证了已公布的 GE Proficy HMI/SCADA-iFIX5.0 给人数据 法模型解析!通信程序监控模块 输出数据 的四个已知漏洞,并发现了用户自己编写程序中的个未知漏 有述脚 日志模块 洞。四个已知漏洞屮,CNVD2012-3420和CNVD-2012-3421是 样本数据 测试用例生成 析模块 测试用例 出于iFix产品中的 KeyHelp.ox控件没有正确处理和限制执 报文重组 [异值息行提交的输入,导致基于栈的缓冲区溢出,使得攻击者能以应 用程序上下文执行任意代码;CNVD2013-14826是由于监控系 发送半有效报文 测试标 统中TCPP任务进程无法正确处理异常信息导致的远程缓 图6M- Peach测试框架 冲区溢出漏洞,该漏洞若被成功利用可造成拒绝服务;CNVD 实验测试环境为某工业智能化实验室的“海港供水SCA-20131423是由于监控条统中CPyP任务进程无法确处理 DA系统”,系统架构如图7所示。该系统的HM客户端(h异常信息导致的远程缓冲区溢出漏润该漏洞成功被利用可导 man machine interface)采用的组态软件是 GE Proficy HM致在相关应用上下文执行任意代码。个未知漏洞是由于自 SCADA-iFX5.029。 卞开发的软件动杰库未能正确处理 Modbus异常应答报文导致 的堆溢出。对未知漏洞手工利用 Olly dbg进行了调试分析,堆 CADA/HN客户端 栈中的SEH链被超长报文数据所覆盖,导致了程序执行的异 常。如果精心构造覆盖数据,攻击者能够以系统权限执行任意 现场路由器 代码,如图8所小 RTU/ZK6821 RTU/ZK6069 目M,w制 PLC PLC 排空网电动水阀 =图= 流量计显示仪表水表 图7供水 SCADA系统架构 2号 泪找滋出肌 HⅦ客户端运行环境为: Intel@ Core M i3-3220CPU@ mH引 7:m 3. 30 GHz: 2.7I GB RAM: Windows XP Profession al SP3 进瓶王气执门s)一建4+/上来二箱程序 实验以与 SCADA系统交互的 Modbus/TCP协议和 Modbus 图8未知漏洞调试图 ASC协议为实验对象,其中 Modbus ascii的PDU使用 AScII 对LC、RIU等设备测试时,PLC、HIU等设备会因为接收 字符数据, Modbus/lg"的PU使用一进制数据。实验使用网异常的 Modbus请求报文,导致拒绝服务而不能正常响应,并且 络抓包工具 Wireshark捕获共50个 Modbus请求、 Modbus响设备会向客户端发送标志位RST置为1的TCP报文请求重新 应以及Mods异常应答三类PU报文,然后对报文类型归类建立通信连接。由实验结果得到的统计数据,表4分别从产生 之后,选取其中最具代表性的20个报文作为实验测试用例样测试用例的数量、 Fuzzing测试所耗时间、监测到的异常数量 本集。针对 Modbus/1CP和 Modbus ase!这两个 Modbus协议发现供水 SCADA系统存在的安全漏洞数量等方面对基于 的变种,分别编写MANF谙法模型描述肽本。 MABNF变异树的 M-Peach测试工具和 Peach平台的 Fuzzing 测试过程分为两个部分:a)以供水 SCADA系统的HM应测试效率和结果进行了对比。 用程序为測试目标,分别利用M- Peach和 Peach测试半台模拟 表5给出了 M-Peach和 Peach在最终的测试结果中得到 PIC、RTU等设备,以 Modbus应答和异常应答报文为样本,向的异常信息类及对应的漏洞类型的对比情况,利用“有”或 iⅸx组态软件发送模糊测试报文进行测试,配置本地监控代理“无”来表示是否出现了该类异常,由于异常信息类名称较长 LocalAgent,监测HM应用程序出现的异常;b)以PC、RTU等这里只截取其中关键字部分。 第8期 张亚丰,等:基于范式语法的工控协议 fuzzing测试技术 2439 表4 M-Peach和 Peach测试结果对比 cations: ABNFIS. 1997 测试工具用例数耗时/h异常数漏洞数 [7. Crocker D, Overell P. RFC 5234, Augmented BN F for syntax specifi M-Pcach 102 842 103 tions: ABNF[S.2008 [8 Cerf V G. RFC 20, ASCII format for network interchange S. 1969 146312 146 [9 Clayton M. Stuxnet malware is weapon onl lo destroy Iran's Bushehr 表5M-Pec和 Peach得到的异常类型及对应漏洞结果对比 nuelearplant[eb/olj.2010-09-21.http://www.csmonitor.com/ 异常信息类 漏洞类型 Peach M-Peach USA/2010/0921/Stuxnet-malware-is-weapon-out-to-destroy-lian-S- ReadAvonIp 丰法读取结构指针 越界内存访问CNVD-20123420有有 Bushehr-nuelear-plant [10 Bencsath B, Pek G, Buttyan L, et aL. Duqu: a Stuxnet-like malware WriteA v 非法写入 越界内存访问CNVD213-3421 有 有 found in the wild, Cry SyS I ab, Ter hnical Report[ R.2011 tack cOrruption棱缓冲区溢出CND201314823 「 11 Flame「EB/OL1.「2015-06-211.ht://en, wikipedia.org/wiki Flame_( malware) Heap Corruption 堆溢出 堆缓区溢出 未知漏洞 有 12 Tankard C. Advaneed persistent threats and how to monitor and deter hem[ J]. Network Security, 2011, 2011(8): 16-19. ReadY 非法读取 越界内存访问C、VD2013-14826 有 13] Shapiro R, Bratus S, Rogers E, et al. Identifying vulnerabilities in PLC回复RST=1扛绝服务 未知洞 SCADA systems via fuzz-testing[ M//Critical Infrastructure Protec- 2011:57-7 从表4的实验对比结果可以看出,基于 MABNF变异树的 M-Peach与 Peach相比,以更少的测试用例数量和更短的测试 [14 Devarajan G. Unraveling SCADa protocols: using Sulley Fuzzer [C//Pruc of De fon Conferente. 2007 吋间发现的安全漏泂数量与 Peach发现的漏洞数量基本一致 15 Devarajan G. Unraveling SCADA protocols: using Sulley Fuzzer 进步,由表5可以看出,使用 Peach的测试发现了 M-Peach presented at the DefCon 15 Hacking Conference[ EB/OL. L 所发现的四个已知漏洞所对应的异常信息类,而术能发现M 06-21].http://www.defeon.org/htmi/defcon-15/dE15-speakers.ht- Peah所发现的一个未知漏泂所对应的异常信息类。经过进 步分析,出于M-Peach把分隔符作为字段变异,并同时对16]Kochr.Profuzzeb/OL].[2015-06-21].hps://gthb.com/ Code和Data字段利用变异树模型进行组合变异得到的测试 HSASec/ proF 用例触发了堆溢出的异常,说明利用本文所提方法生成的测试7 J Byres E J, Kube n,Danl. On shaky ground: a study of security vul 用例相对于 Peach f言能够更全面地对系统实施测试。而且, nerabilities in control protocols[C]//Proc of the 5th American Nuclear 由于M- Peach利用已测试字段集合 Record来对已测字段进行 Socie-ty International Topical Meeting on Nuclear Plant Instrumenta 记录,避免了大量重复测试用例的生成,从而也缩短了测试时 tion, Controls, and Human Machine Interface Technology. [S1.] American Nuclear Society, 2006 间。实验结果表明.基于 MABNF的测试方法不仅提高了Fuzz [18 DigitalBond. ICCPSic assessment tool set released, sunrise[ EB/ ing测试效率,而且还发现了潜在的安全漏洞 OL].[2015-06-21].htp://ww.digitalbond.com/2007/08/28/ 4结束语 iccpsic-assessment-toolset-released L19」 Dynamics N. Mu test suite EB./OL」.L2015-06-21」.htp:// 本文针对工控协议的特点提出了基于 MABNF范式语法 www.mudynamics.com/produets/mu-test-suite.html 的工控协议 Fuzzing测试方法,通过协议的 MABNF语法描述,120wteh, Achilles test platform L EB/OL.12015-06-21,m 对报文样本解析构造相应的 MABNE变异树,进而生成描述 tp://www.wurldt ech. com MABN变异树的脚本,利用MIGM算法得到了去冗余、更有[21 odenomicor. Defen sics test platform[EB/Ou].[20150621 效的测试用例集,在 Peach基砷上头现了原型系统M- Peach,对 tp://www.eodenomicon.com/products/protocols.shtml 22 BeSTORM software testing framework[ EB/OL]. [2015-06-21].ht- 供水 SCADA系统进行了测试。实验结果表明,与 Peach相比, tp://www.beyondsecurity.com/black-box-testing.html 其减少了冗余的测试用例,提高了测试效率,并发现了该系统 L 23 Bratus S, Ilansen A, Shubina A. LZFuzz: a fast compression-based 存在的安全漏洞。下一步工作将考虑利用中间人方式,在线截 fuzzer for poorly documented protocols, Dartmouth Computer Science 获协议报文样本,对 SCADA和PIC进行双向测试。 Technical Report TR 2008-634[R]. 2008 参考文献: [24generalpurposefuzzer[Eb/Ol].[2015-06-21].http://www [1Ⅰ]李鸿培,于旸,忽朝俭,等.2013τ业控制系统及其安全性硏究报 abs. com/tools/efs_gpf. html 告「EB/OL.(2013-06-24「2015-06-211.http://www.nsfocus [25]潘璠,洪征,杜有翔,等.基于递归聚类的报文结构提取方法[J com. cn/content/details 62 881. html 四川大学学报:工程科学版,2012,44(6):137-142. [2]李鸿培,王晓鹏,王洋.,2014绿盟科技工业控制系统安全态势报26]CVE-2014-1841[EBOL].[2015-0-21].mp:/eve.mire.og 告[EBOL].(2014-0)-15)[2015-06-21].htp://www.nsfocus i-bin/cvename cgi? name=CVE-2014-1841 com. en1/content/delails (2 887. hIm 27 Modbus application protocol specification V1. lb[ EB/OL].[ 2015 [3」王清.0day安全:软件漏洞分析技术M].北京:电子工业出版社, 06-21.http://www.modbusorg/docs/modbus_applicatioN_proto- col_V1_1b. pdf. [4] Takane a, DemottE, Miller c. Fuzzing for software security tes-[28]夏建军,孙乐昌,刘京菊,等.基于多维 fuzzing的缓冲区溢出漏洞 ting and quality assurance[M. [S 1.]: Artech House, 2008 挖掘抆术研究[J].计算机应用研究,2011,28(9):3539-3541 Leb/Oli.[2015-07-21.http://www.peachfuzzer.com [2yProficyhmI/scaDa-ifIxleb/ol].[2015-06-21.http://www [6] Crocker D, Overell P. RFC 2234, Augmented BNF for syntax specifi geautomation. com/products/ proficy-hmiscada-ifix

...展开详情
img

关注 私信 TA的资源

上传资源赚积分,得勋章
相关内容推荐