多维Fuzzing技术综述
Fuzzing测试中样本优化算法的分析与改进
f I U ue o O#SI d Olt / P , n es y o c ne & T cnl y ~ 砌 罐 J / . O 0 J? # tt f C IT I s 7 I L t l / 2 L4 / ri f¥ z c /A fd O U v t e elo g a /7 5 2/ 0 Z C?a lo 2 J" O i f 2 ES LOl E d)ei ,l t ue o P A № f{ h i2 0 37 C i ) /Oii h i r, # z t / L 'l C T i st e g e. u Y 0 , h a An n
e fc n y f et g ae a d、 c ne u nl eh ne h tsi efcec o F zig. fii c o tsi c ss n e n o sq ety na c te e t g f i ny f u z n i n
Key w o ds: F z ig P a h r u zn e c
ad un rbly n r i ait mii fed P ah s cOs 口 f r tsig r m wok ae o F zig eh o g a d t s rpeet tv P z ig ol e i nn g i e c i l a rs 【 Om etn fa e r b sd n u z tcn l y n i a ersna ie u z t o n o i n fr t fe ii y rue u ly. I re t i rv e f iny i e d t o t z F z i t si c ss T i a e a ayss h fn t n o i s lxbi ai e s qai l t r d t n d r o mpo e f iec t es o p i e u z g etn n c n mi n g a e . hs p r n l e t e uc i p o
遗传算法在多维Fuzzing技术中的应用
遗传算法在多维Fuzzing技术中的应用随着软件技术的不断发展,越来越多的软件应用程序被设计出来并投入使用。
然而在应用程序的开发过程中,伴随而来的就是各种各样的错误和漏洞,这些漏洞可能会导致软件应用程序的崩溃或数据泄露。
因此,安全测试成为了软件开发过程中不可或缺的一部分。
多维Fuzzing技术是一种常用的软件安全测试方法,它的主要目的是检测软件应用程序中存在的错误和漏洞。
在多维Fuzzing技术中,遗传算法被广泛应用。
遗传算法是一种模拟生物进化过程的一种优化算法。
它通过模拟生物进化过程,从而实现对优化问题的求解。
在多维Fuzzing技术中,遗传算法主要用于生成测试用例。
传统的Fuzzing技术的生成测试用例的方法是随机生成,这种方法虽然能够在短时间内生成大量的测试用例,但是这些测试用例并不能真正的覆盖程序中的所有代码。
相反,遗传算法可以根据先前的测试结果,优化生成测试用例的过程,让测试用例更加有效的覆盖程序中的所有代码。
这样可以使测试覆盖率提高,并且能够发现更多的漏洞。
多维Fuzzing技术中的遗传算法主要分为两个阶段:初始化阶段和进化阶段。
在初始化阶段中,遗传算法首先生成一批随机测试用例,并将其输入到软件应用程序中进行测试。
在进化阶段中,遗传算法根据先前测试的结果和目标函数的设定,通过模拟生物进化过程来生成更高效的测试用例。
具体来说,遗传算法会对测试用例进行变异和交叉操作,从而生成新的测试用例。
同时,遗传算法还可以通过选择和淘汰操作来筛选出最优的测试用例。
总之,遗传算法在多维Fuzzing技术中的应用,可以极大的提高测试覆盖率,并且能够发现更多的漏洞。
遗传算法作为一种基于进化优化的算法,具有很强的适应性和鲁棒性,在软件测试中具有广泛的应用前景。
工控网络协议Fuzzing测试技术研究综述_熊琦
小型微型计算机系统Journal of Chinese Computer Systems 2015年3月第3期Vol.36No.32015收稿日期:2013-11-25收修改稿日期:2014-06-01基金项目:国家自然科学基金项目(90818021,61472448)资助.熊琦,男,1983年生,博士,副研究员,研究方向为工控信息安全;彭勇,男,1974年生,博士研究生,副研究员,研究方向为隐患分析;伊胜伟,男,1977年生,博士,助理研究员,研究方向为工控风险评估;戴忠华,男,1979年生,博士研究生,助理研究员,研究方向为网络与信息安全;王婷,女,1986年生,硕士,实习研究员,研究方向为信息安全.工控网络协议Fuzzing 测试技术研究综述熊琦,彭勇,伊胜伟,戴忠华,王婷(中国信息安全测评中心,北京100085)E-mail :xiongq@itsec.gov.cn摘要:随着信息化和工业化的深度融合,控制系统在工业生产过程中得到了越来越广泛的应用,很多研究者开始针对工控系统,特别是具有控制功能的工控网络协议的安全性展开研究,漏洞分析则是其中较为活跃的领域之一.由于工控网络协议具有专用性和面向控制的特点,通常在封闭环境下运行,无法直接应用传统Fuzzing 测试技术进行网络协议的漏洞挖掘.本文阐述了工控网络协议的特点以及Fuzzing 测试的困难,讨论并比较了现有各种Fuzzing 测试技术应用于工控网络协议的优缺点,提出工控网络协议的专用Fuzzing 测试工具的设计准则,最后展望了工控网络协议Fuzzing 测试技术的未来研究方向.关键词:工业控制系统;工控网络协议;漏洞挖掘;模糊测试中图分类号:TP393文献标识码:A文章编号:1000-1220(2015)03-0497-06Survey on the Fuzzing Technology in Industrial Network ProtocolsXIONG Qi ,PENG Yong ,YI Sheng-wei ,DAI Zhong-hua ,WANG Ting(China Information Technology Security Evaluation Center ,Beijing 100085,China )Abstract :with the deep integration of informatization and industrialization ,the Industrial Control system (ICS )becomes more and more popular in the industrial production ,a great amount of researchers start to focus their research interest on the security of industrial network protocols and vulnerability detecting becomes one of the hot points in this field.Due to the specific features of ICS ,like process control o-riented and proprietary ,traditional Fuzzing technology cannot be directly applied to vulnerability detecting for industrial network proto-cols ,which runs in the closed envirnment.This paper described the features of industrial network protocols first ,then investigated the fea-tures of industrial control protocols and the difficulties of Fuzzing test on them ,discussed the current research achievements presented in this field ,introduced the design guidelines of general Fuzzing tools for industrial control protocols.Finally ,the further research direction of this field is discussed in detail.Key words :industrial control system ;industrial network protocol ;vulnerability detecting ;fuzzing test1引言自从2010年伊朗核电站“震网”病毒事件[1,2]爆发以来,作为国家关键基础设施的重要组成部分,工业控制系统(In-dustrial Control System ,ICS )安全逐渐成为网络安全领域的研究热点.ICS 主要包括数据采集与监控(Supervisory Control and Data Acquisition ,SCADA )系统、分布式控制系统(Distribu-ted Control System ,DCS )、可编程逻辑控制器(Programmable Logical Controller ,PLC )、远程终端单元(Remote Terminal Unit ,RTU )等,其通信方式主要包括工程师站、操作员站等上位机与PLC 等工控设备之间的通信、工控设备与生产装置之间的通信以及上位机与OPC 、数据库等服务器之间的通信,所采用的协议包括以太网和总线通信方式,总线协议主要使用RS232和RS485接口,采用硬接线作为通信介质,基于串行协议,适合于低速率、间歇性数据通信;工业以太网采用RJ45接口,使用双绞线作为传输介质,基于TCP /IP 协议栈,适合于进行生产过程数据传输,具有速率快、兼容性好的特点.ICS 目前已广泛应用于石油石化、交通控制、电力设施、制造业以及核工业等各工业领域,用于数据采集、远程控制、生产过程控制,对提升企业的生产和管理水平,实现工业生产自动化、绿色化,实现节能降耗、减排、增产增效和可持续发展发挥了重要的作用.传统ICS 由于相对封闭和专用,在设计上较少考虑安全问题,防护能力薄弱.随着工业化和信息化的深度融合,越来越多的工控设备集成以太网通信功能与ERP 甚至互联网连接,在提高数据共享效率,改进企业管理水平的同时也引入了黑客、病毒、木马等安全风险,一旦受攻击容易导致产品质量下降、生产过程破坏、环境污染等严重后果,对社会稳定造成重大威胁.与传统面向数据传输的网络协议相比,工控网络协议具有更强的控制功能[3],通过发送特殊功能码的指令,能够控制PLC 等物理设备的启停,甚至上传恶意程序,或者影响控制中心的生产过程监测视图.因此,研究工控网络特别是工业以太网协议的脆弱性成为工控系统信息安全的首要内容.工业以太网与总线协议的部署方式、应用场合和传输速率具有较大的差异,为了明确研究范围,根据美国仪器仪表协会提出的ISA99参考模型[4,5],可将ICS整理为如图1所示的5个层次:1)第4层—企业系统层.企业系统层包括组织机构管理工业生产所需业务相关活动的功能,使用的都是传统的IT技术.2)第3层—运行管理层.运行管理层负责管理生产所需的工作流,它包括运行/系统管理、具体生产调度管理、可靠性保障等.3)第2层—监测控制层.监测控制层包括监测和控制物理过程的功能,它包括操作员人机接口、监测控制功能、过程历史数据收集和存储等功能.4)第1层—本地或基本控制层.本地或基本控制层主要包括传感和操作物理过程的功能,典型设备包括DCS、PLC、RTU等.5)第0层—过程层.过程层是实际的物理过程.在这一层中包括各种不同类型的生产设施,典型设备包括直接连接到过程和过程设备的传感器和执行器等.在工业控制系统参考模型中,过程层属于物理空间,它同各工业控制行业直接相关.图1工业控制系统分层参考模型Fig.1Hieratical model of industrial control system本文所讨论的工控网络协议,限定于图1第1层中的PLC、DCS等控制设备与2、3、4层次组件之间通信所使用的通信协议,通常基于TCP/IP协议封装,与交换机、路由器等通用网络设备兼容,其中最具代表性的包括:用于电力行业配电网主-从站通信的IEC60870-101/104协议、IEC61850[6]、主-从设备通信协议DNP3和主站间通信协议ICCP;用于石油石化行业参数采集的Modbus TCP、Profinet协议族;用于管道数据传输的Ethernet/IP;用于轨道交通的MMS协议;用于协议转换和数据共享的OPC协议等.工控系统的协议种类繁多,不同厂商对协议有不同的扩展和实现方式,而很多设备由组态软件进行控制,组态软件都是由厂商定制,自成体系,比如:西门子全系列工业控制产品就使用Profinet协议族,罗克韦尔专注于EIP,三菱则使用私有协议,相互之间不兼容.鉴于工控以太网协议的特殊性,传统基于Fuzzing的设备测试方法无法直接应用,需要进行针对性的修改.本文在介绍工控网络协议特点的基础上,综述了基于Fuzzing的工控网络协议的测试方法.论文其余部分组织安排如下:第2部分介绍了工控网络协议特点,引出了第3部将传统Fuzzing技术应用到工控网络协议存在的困难;第4部分介绍了工控网络协议Fuzzing在测试框架、协议解析方式、测试用例生成、异常检测和定位、测试性能评估等方面研究的国内外相关工作;第5部分总结现有的研究工作,提出了工控网络协议专用测试框架设计方面应该遵循的一些准则,对工控网络协议Fuzzing测试的研究方向进行了展望.2传统Fuzzing测试技术介绍Fuzzing是一种通过构造能够使得软件崩溃的畸形输入来发现系统中存在缺陷的安全测试方法,通常被用来检测网络协议、文件、Active控件中存在于输入验证和应用逻辑中的缺陷,其自动化程度高、适应性广的特点使其成为漏洞挖掘领域较为有效的方法之一.1989年,美国威斯康辛大学的Barton Miller教授正式提出Fuzzing技术[7],通过随机地生成非结构化的输入来挖掘UNIX程序中的漏洞.此后,Fuzzing成为了信息安全中较为活跃的研究领域之一,研究者们通过构造更具结构性的输入来改进Fuzzing测试的效率.1999年,芬兰Oulu大学的研究团队开发了PROTOS测试套件[8],通过对网络协议的解析,创建模型并生成相应的Fuzzing测试;此后,出现了第一个基于块的Fuzzing测试器SPIKE[9],协议的描述被表示为一列数据块,使用SPIKE的Fuzz[10]函数库生成随机数据对块进行填充,生成测试数据.此外,中科大的张美超等人对测试用例生成方式进行优化,提出了基于漏洞库的Fuzzing测试框架[38];中科院的张玉清教授等人对FTP等协议客户端[39]进行了模糊测试.一般来说,除测试用例执行外,Fuzzing测试包括协议解析、测试用例生成、异常捕获和定位三个步骤;协议解析是通过公开资料或者对网络数据流量的分析,理解待测协议的层次、包字段结构、会话过程等信息,为后续测试用例的生成打下基础;测试用例生成依据上阶段整理出来的字段结构,采用变异的方式生成畸形测试用例,发送给待测对象;异常捕获和定位的目的是通过多种探测手段发现由测试用例触发的异常,保存异常相关数据信息,为后续异常的定位和重现提供依据,其流程如图2所示.图2Fuzzing通用测试流程Fig.2General workflow of fuzzing test按照测试用例的生成方式,Fuzzing可以分为两类:1)基于生成的Fuzzing.这种方法基于与有效输入结构和协议状态相关的生成规则进行建模,构造模糊输入.最简单的基于生成的模糊测试器使用随机的方式构造长度字符串(包含随机字节)的模糊输入[7].有些基于生成的模糊测试工具,例如Sulley[11]和Peach[12]也集成了基于块的特性.最新的基于生成的模糊测试器,例如EXE[13],通过编码的方式来产生成功概率高的测试用例.基于生成的Fuzzing需要用户对协议格式有非常深的了解,并需要大量的人工参与.2)基于突变的Fuzzing.这种方法通过在已有数据样本中插入畸形字节以及(或者)变换字节来修改正常输入,制造模糊输入.一些现代的突变Fuzzing测试器基于输入层的描述构894小型微型计算机系统2015年造其模糊决策(例如:Peach的突变[12]).其他突变测试器,例如通用目标模糊测试器(GPF)[14]不需要任何先验知识,仅仅使用简单的启发式来猜测域边界,并进行对输入进行突变.CFG模糊测试器[15]对其进行了折衷,通过使用推论算法从足够规模的网络流量中推导协议的近似生成模型,然后使用变异算法来生成突变的输入.该方法对变异的初始值有着很强的依赖性,不同的初始值会造成代码覆盖率差异很大,从而会产生截然不同的测试效果.此外,根据Fuzzing测试器的部署方式,可以分为内联和普通方式.目前绝大多数现有的Fuzzing测试器均属于普通范畴,将自身作为客户端,测试作为服务器端的对象;内联,如QueMod[16],则采用中间人的方式,将自身部署在服务器和客户端之间,对截获的包进行分析,估计协议帧的有效区域,并分别进行变异,实时生成畸形报文,发送给测试对象,同时接受返回结果,判断对象的状态,决定下一步变异策略.两者之间的区别在于,内联Fuzzing测试器能够实现对Server和Cli-ent端的双向测试,普通Fuzzing测试器只能对Server端进行测试.3使用传统Fuzzing测试工控协议的困难由于工控网络协议的特殊性,直接使用传统Fuzzing测试器在协议解析、异常捕获以及部署方式上存在以下几方面困难:3.1工控协议解析根据信息公开的程度,工控网络协议大致可以分为两种:(1)私有协议,例如Harris-5000以及Conitel-2020设备的协议,这些协议资料不公开或者只在有限范围内半公开,数据包和字段的含义未知,协议会话过程功能不清晰;(2)公有协议,例如:Modbus TCP、DNP3[17]等,协议资料公开,标准化程度较高.对于公有的控制协议,虽然可以使用现有Fuzzing技术进行测试,但由于工控协议面向控制,高度结构化,控制字段数量较多,使得需要构造大量的变异器,测试效率不高.对于私有的控制协议,需要先弄清楚协议的结构才能进行模糊测试.一般来说,有两种思路:(1)对协议栈的代码进行逆向分析,整理出重要的数据结构和工作流程;(2)抓取协议会话数据包,根据历史流量来推测协议语义.对于运行环境较为封闭的工控设备来说,内嵌协议栈组件无法导出,很难对其进行逆向分析.相比之下,采用基于数据流量的协议解析方法更实际.然而,工控设备具有时间敏感、面向会话的特点,使得部署需要大规模网络流量输入的Fuzzing测试工具不现实.3.2工控协议异常捕获和定位目前在网络协议Fuzzing测试中常用的异常检测手段主要有返回信息分析、调试器及日志跟踪3种方法:1)对于返回信息分析,主要通过分析请求发送后得到的返回信息判断目标是否出错,其优点是处理简单,但由于某些工控协议栈进程具有自修复和守护能力,在发生异常后网络进程会自动重启,如果请求收发频率不够高,将无法捕获发生的异常;2)对于调试器跟踪,主要通过监视服务器进程,在进程出错时抓取进程异常信息,但由于工控设备难以安装第三方监测软件,因而该方法只适用于上位机协议测试,无法应用在工控设备上;3)对于日志跟踪,主要通过解析日志记录,判断测试对象是否发生异常,但由于工控设备属嵌入式系统,计算、存储和网络访问均受到严格的制约,在工控设备上难以实现对异常事件的日志记录和审计,因而该方法也只适用于上位机程序协议栈.3.3Fuzzing测试工具的部署方式目前,对于传统IT系统,C/S模式中Client端漏洞利用较困难[18],价值不高,因而传统网络协议Fuzzing测试技术主要针对Server端软件,较少涉及Client端.但对于工控系统来说,上位机通常作为Client端,对作为Server端的物理设备进行数据采集同时对操作员提供监视控制功能,其网络协议栈存在的漏洞可能导致重要数据传输实时性和可用性丧失,产生上位机视图显示错误等故障,导致丧失视图(LoV,Lost of View),影响操作员的正常决策,甚至破坏生产控制过程运行,根据国际著名工控漏洞库Delphi的统计结果[41],主要位于上位机协议栈的LOV型工控漏洞占比高达68%,因此只能测试Server端的协议Fuzzing测试工具不能满足工控协议安全性测试的需求.4现有工控网络协议Fuzzing测试的相关工作虽然专门针对工控协议设计的Fuzzing工具尚未出现,随着网络攻防的阵地逐渐从网络空间朝着网络物理空间扩展,包括工控系统在内的国家关键基础设施信息安全受到越来越多的关注,一些Fuzzing工具也开始支持工控网络协议,最具代表性的有以下两类:4.1开源Fuzzing项目2007年黑帽大会上,专门为Sulley设计的ICCP(包括TP-KT和COTP)、Modbus和DNP3模糊测试模块(例程)被美国TippingPoint公司的信息安全研究员Devarajan发布出来[19],可用来检测上述工控网络协议在非授权命令执行、非授权数据传输、可能的拒绝服务等方面存在的安全漏洞.美国Digitalbond公司[20]的研究员McCorkle和BillyRios 以Modbus TCP为例,使用工具Scapy截获完整通信会话(包括所有请求和有效的返回信息),开启上位机软件的日志记录功能,并对请求的返回信息进行随机变异,使用伪造CRC 校验码和计数值的方式保持协议状态,通过日志分析发现上位机在处理畸形返回数据时发生的错误.德国奥格斯堡应用技术大学的Roland Koch等人推出了ProFuzz[21],一种在Python版本Scapy fuzzer[22]基础上开发的Fuzzing工具,兼容Sulley的fuzz模块,专门针对Profinet协议族进行模糊测试,目前支持包括告警帧随机afr(Alarm Frame Random)、告警帧排序afo(Alarm Frames Ordered)在内的五种协议类型.同时,该成果的部分内容也被集成到开源入侵检测软件Snort[23]中,用于对Profinet系列协议进行预处理.Wurldtech公司的Eric J.Byres研究员提出了BlackPeer 测试框架[24],该框架由代码生成器、测试用例生成器和执行9943期熊琦等:工控网络协议Fuzzing测试技术研究综述器三部分组成,输入由扩展BNF 逻辑定义的测试用例期望,能够更好地描述测试用例的上下文依赖关系,在给定变量初始化文件的前提下,会生成递归定义的测试用例语法描述,根据交互语义对协议PDU 进行变异,生成有序的测试用例序列PTS ,然后在配置文件约束下执行测试用例序列,捕获异常并记录结果,流程如图3所示,Wurldtech 公司利用该框架对两款PLC 设备的Modbus TCP 协议栈进行了5000次测试,发现了六十多类错误.图3BlackPeer 测试用例的生成和执行Fig.3BlackPeer test cases generation and execution 4.2商业Fuzzing 项目SecuriTeam 在其beSTORM 模糊测试工具中整合了DNP3协议[15],成功发现了Wireshark[25]DNP3模块的拒绝服务攻击漏洞,验证了工具的有效性;2007年,美国能源部下属的Digital Bond 公司则开发了ICCPSic [26],一种商业的ICCP 协议测试套件;Mu Dynamic 公司提供了Mu 测试套件[27],使用结构化语法分析的方法来生成畸形测试数据,目前支持包括IEC61850、Modbus TCP 和DNP3在内的工控网络协议,并可通过其附带的Studio Fuzz 功能分析PCAP 包,重构会话流程,实现对未知协议的扩展;Wurldtech 公司推出了Achilles 模糊测试平台[28],基于专家经验生成最可能造成对象协议栈崩溃的畸形测试数据,已经实现对包括MODBUS 、DNP3、ICCP 、MMS 和Ethernet /IP 在内的多种工控协议的支持;Codenomicon 公司在PROTOS 项目[8]的基础上推出了Defensics 模糊测试套件[29],兼容ModbusTCP 协议.这些研究成果大都基于原有Fuzzing 框架进行扩展,缺乏针对性的功能设计,仅仅覆盖结构公开的工控网络协议,或者仅仅支持以手工标注的方式支持私有协议,对测试人员的要求较高.在同等情况下,对ICCP 、Ethernet /IP 等结构及会话较为复杂协议进行Fuzzing 测试比Modbus TCP 、DNP3等简单协议耗时高一个数量级以上[30].此外,工控协议种类多的特点,现有Fuzzing 测试工具支持的数量极为有限,且在框架上基本沿用原有的方式,几乎不对Client 端进行测试,适用范围受到制约,因此急需面向工控协议特点设计专用Fuzzing 测试框架.5工控专用Fuzzing 测试框架的设计准则基于工控网络协议的特点,结合已有工控协议Fuzzing 测试的研究成果,从模糊测试的步骤和部署方式来看,工控网络协议专用Fuzzing 测试框架应该遵循以下几点准则:5.1支持对私有工控协议的测试由于大量工控协议结构不公开,对私有工控协议[31]的支持成为工控协议Fuzzing 测试框架的首要需求,由于PLC 等核心工控设备的可执行代码难以导出,基于二进制逆向分析的“Tainted Data ”方法难以部署,主要采用基于网络流量的“Network Trace ”方法.根据分析技术的差异,基于“Network Trace ”的私有工控协议的模糊测试思路可以分为以下两种[32]方式:5.1.1离线分析首先梳理协议的结构和内容,生成协议模型,即先将私有协议变成公有协议,这种方法主要适用于使用容易理解的ASCII 语言,对协议数据包头进行区域描述的工控网络协议,如Modbus 等.首先采用类型匹配,将不同的网络流量数据文件(PCAP )中同类型的报文序列提取出来,作为一个报文组,然后对该报文组合进行多序列比对,将不变域和可变域分离出来,生成初步的报文域划分,再对报文区域进行识别,进一步得到的ANSI 字符串域,生成较为准确的报文格式,再使用基于生成的方法产生测试数据,具体过程如图4所示.图4基于离线分析的模糊测试Fig.4Fuzzing test based on offline analysis5.1.2在线分析不进行离线分析,只是通过智能算法[33]对工控网络协议的结构进行在线学习[34-36],具体流程如图5所示.其中具有代表性的有Marshall A.Beddoe 等人设计的PI 协议解析器,通过引入生物信息学的思想,在线提取包结构中的常量,生成协议结构描述;此外,Dartmouth 学院的Sergey Bratus 设计了Lz-fuz 协议分析器,使用Lempel-Ziv 算法维护令牌表,对于每个数据包,提取并记录其中的最长不变子串,周期性地更新表记录,实时标注包的数据区域,生成并逐步完善协议的语义结构.图5基于在线分析的模糊测试Fig.5Fuzzing test based on online analysis方法(1)虽然生成的测试用例质量较高,但需要积累相当数量的历史网络数据流量作为原始样本,且初始阶段需要耗费大量的人力,对协议分析经验要求较高且实时性差.相比之下,方法(2)虽然在测试初期生成的模型较为粗糙,需要耗005小型微型计算机系统2015年费大量计算资源,但随着学习过程的不断深入,模型也会逐步成熟,测试用例的质量也会不断提升.5.2不依赖本地调试进行异常捕获和定位作为工控系统的核心组件,PLC 等物理设备运行环境封闭且存储计算资源受限,无法通过附加调试组件的方式记录异常事件并保存日志,只能依赖其他方式进行检测,较为可行的方法包括:(1)基于网络流量的异常检测.使用心跳机制,以间歇性“发包—响应”的形式探测目标是否出错,同时结合异常隔离机制,在每传输一组测试用例后通过发送心跳包的方式检测对象是否发生异常,如果超过一定的时间阈值未收到回复包,则认为测试对象发生了异常,需采取逐步隔离[27]的方式,如图6所示,从该组用例中找出触发异常的单个测试用例,并保存异常产生的流量数据,以便进一步分析.此外,对于构建于TCP 之上的工控网络协议,捕获用于重建连接的TCP RST 和非正常重复出现的SYN 请求也可以用来发现测试对象的网络异常.图6基于心跳检测的故障隔离技术Fig.6Fault isolating technology basedon heart-beat detecting(2)使用基于I /O 的异常检测.PLC 设备在正常运行时会不断与下层生产过程进行数据I /O 交互,如果工艺处理机制受到协议栈影响发生异常,会波及到下层I /O 信号.该方法需要使用具有D /A 或者A /D 转换功能的接口卡,将工控设备的I /O 输出线外接到工控机上,同时在平台上运行流程仿真程序,部署监测程序不断轮询I /O 口的信号交互情况,当发生异常时一方面发送消息给Fuzzing 测试端以便保存场景信息,另一方面本地保存I /O 异常情况和流程断点以便进一步分析,如图7所示.图7基于I /O 的异常检测技术Fig.7Anomaly detecting technologybased on I /O of PLC5.3具有对网络协议进行双向测试的能力由于工控系统要支持双向网络协议测试,且对工控私有网络协议客户端而言,由于其会话时间较短、时间敏感性强,对要求大量历史数据流量的传统Fuzzing 测试工具基本免疫,可行的方法之一是采取内联的部署方式,通过ARP 欺骗[40],将Fuzzing 测试工具插入到服务器和客户端之间,使用重放的方式对截获的网络数据包进行突变,产生畸形数据,如图8所示.图8工控网络协议的双向模糊测试Fig.8Fuzzing test for industrial network protocol in bidirectional5.4具备实时异常重启能力对于OPC 等[37]多层次、结构复杂的工控网络协议来说,执行一次Fuzzing 测试往往耗时较长,一旦发现异常导致测试对象崩溃,无法继续测试过程,需要重启测试对象,重新开始,如果测试用例的选择机制不支持断点续传,则容易陷入死循环,导致测试覆盖率差.为了避免这一问题,通常有两种方法.1)对于上位机软件,可采用监测环境启动,一旦发生故障则自动保存断点,重新启动测试对象进程,同时通知Fuzz-ing 测试端恢复断点,继续原来的测试过程,如使用Xen 等带监测功能的虚拟化环境;2)对于物理设备,由于运行环境封闭,无法在监测环境中直接部署,则可采用电源控制的方式,在设备发生崩溃的时,保存测试进度,通过硬件控制将测试对象断电并再加电,重启对象,完成剩余的测试用例,而不需要重新开始,提高测试效率.6总结及展望Fuzzing 测试技术经过多年的发展,为网络协议安全性分析提供了有效的工具.随着网络技术在工控领域得到了广泛的应用,传统Fuzzing 测试技术由于在设计上面向传统网络协议,在异常捕获、定位和分析上存在一定的局限性,无法满足具有典型行业和专用特点的工控网络设备的测试要求.本文深入分析了工控网络协议的特点,分析使用现有fuzzing 测试器进行工控网络协议测试存在的困难,对现有工控网络协议Fuzzing 测试领域的成果进行了综述,总结其优缺点,基于分析结果提出了工控协议专用Fuzzing 测试器应该遵循的设计准则.在未来的研究中,将结合本文提出的观点,对现有的开源Fuzzing 测试器进行扩展,实现专用的工控系统模糊测试框架.References :[1]The repository of security incidents [EB /OL ].June 2012.http ://www.securityincidents.net /index.php /products /indepth /risi annu-alreport /,Accessed ,2013:31.[2]Farwell J P ,Rohozinski R.Stuxnet and the future of cyber war [J ].Survival ,2011,53(1):23-40.[3]Edmonds J.Security analysis of multilayer protocols in SCADA net-works [D ].Department of Computer Science ,University of Tulsa ,Tulsa ,Oklahoma ,2006.[4]Peng Yong ,Jiang Chang-qing ,Xie Feng.Research progress of the se-1053期熊琦等:工控网络协议Fuzzing 测试技术研究综述。
多维Fuzzing技术综述_吴志勇
Fuzzing 作为一项动态的软件漏洞挖掘技术具备如下优 点: a) 其测试目标是二进制可执行代码,比基于源代码的白盒 测试方法适用范围更广泛; b) Fuzzing 是动态实际执行的,不存 在静态分析技术[1 ~ 4]中存在的大量的误报问题; c) Fuzzing 原 理简单,没有大量的理论推导和公式计算,不存在符号执行技 术[1,3,4]中的路径状态爆炸问题; d) Fuzzing 自动化程度高,不 需要逆向工程过程中大量的人工参与。因此,Fuzzing 技术是 一种有效且代价低的方法,在许多领域受到欢迎,许多公司和 组织用其来提高软件质量[7,8],漏洞分析者使用它发现和报告 漏洞[9],黑客使用它发现并秘密利用漏洞。国内对 Fuzzing 技 术已有了初步的研究[10 ~ 12]和简单的应用[13 ~ 16]。
(read)针对复合文档的Fuzzing测试技术_高峻
第 36 卷 ( 2008) 第 12 期
计算机与数字工程
117
2
Fuzzing 测试模型
在 Fuzzing 测试中 , 首先利用正确文件随机修
效率。
3
面临的问题
针对文件格式的 Fuzzing 测试, 是一种比较简
改得到的畸形数据用以攻击一个目标程序 , 其次监 测系统的状态参数, 记录哪里遭到了破坏 , 最后对 破坏的情况进行分析 1 所示:
1
引言
Fuzzing 测试 是一种自 动化软 件漏洞 测试技
测试的工具 mang leme 。2005 年 Mu Securit y 公司 发布了商业的 F uzzing 测试工具。 Fuzzing 测试的应用目标很广泛 , 包括文件格 式、 网 络协议、 WEB 应 用程序、 环境变量 和 COM 对象等。目前 F uzzing 测试软件分为 F uzzing 工具 和 Fuzzing 框架两类, F uzzing 工具 一般用于特定 目标软件的测试 , F uzzing 框架可用于多种协议的 测试, 一般支持脚本语 言进行配置。 SPIKE 就是 一款 F uzzing 框 架 , 包 含 多 项测 试 工 具, 其 中的 SPIKE P rox y 可以用于 发现 WEB 站点的安全缺 陷, 支持 SQL 插入检测、 WEB 站点检测、 登录表单 暴力检测和字典穷举攻击检测等。
4
复合文档结构
复合文档是微软引入的一种在文件内部存放
结构化信息的方法。在一个文档中可以包含文本、 图片、 表格等内容, 通过一个单 向指针进 行管理。 微软没有公开关于 复合文档二进制结构 的有关 内容 , 不少机构和个人对此进行了研究并部分公布
118
高
软件缺陷检测与修复技术综述
软件缺陷检测与修复技术综述1. 概述现代软件通常非常复杂,由数百万甚至数十亿行代码编写而成。
在这种情况下,软件缺陷检测和修复对于保证软件质量和可靠性至关重要。
本文将讨论不同种类的软件缺陷检测和修复技术。
2. 静态分析工具静态分析工具在不运行程序的情况下检查其源代码。
这种方法可以提供全面的代码覆盖率,但也容易产生误报和漏报。
经验表明,静态分析工具通常适合用于发现空指针引用、未定义的变量、类型错误、内存泄漏、并发问题等缺陷。
常见的静态分析工具包括 Coverity、CodeSonar、Fortify、PVS-Studio 等。
3. 动态分析工具动态分析工具在程序运行时检测缺陷。
与静态分析工具不同,它们无法提供代码的全面覆盖。
然而,它们可以轻松检测到问题,例如内存泄漏、访问无效的内存块、死锁等严重漏洞。
常见的动态分析工具包括 Valgrind、AddressSanitizer、UBSan 等。
4. Fuzz TestingFuzz 测试通过采用随机输入和观察程序的行为来检测缺陷。
这种测试方法对于发现输入格式错误或者处理异常情况的代码段非常有用。
Fuzzing 可以通过代码覆盖率来评估测试的效果。
常见的Fuzz 测试工具包括 AFL、Peach、American Fuzzy Lop 等。
5. 运行时错误检测运行时错误检测是一种检测和修复程序中逻辑和语义错误的方法。
它基于代码中的断言或错误检测机制,并在程序执行期间发生问题时向开发人员发出警告、记录日志或中断程序。
常见的运行时错误检测工具包括断言、Log4J、Java 断点调试等。
6. 自动修复自动化缺陷修复是指在不人工参与的情况下,通过机器学习、规则引擎或其他技术自动检测和修复代码中的缺陷。
自动修复可以提高代码的可靠性和可维护性,并降低缺陷修复的时间和成本。
常见的自动修复工具包括模式匹配、程序合成、程序切片等技术。
7. 结论本文介绍了多种软件缺陷检测和修复技术。
4G电信网络协议Fuzzing测试技术研究综述
4G电信网络协议Fuzzing测试技术研究综述熊琦;许源;张宝峰;刘晖;郭颖;张骁;王峰【期刊名称】《通信技术》【年(卷),期】2016(049)002【摘要】随着4G-LTE网络和移动互联网技术的兴起,网络IP化已经成为未来电信网络的演进趋势.全IP化的电信网络一旦与互联网连接,不可避免会遭受来自外界的网络攻击.很多研究者开始对4G-LTE网络,特别是协议的安全性展开研究,脆弱性分析是其中较为活跃的领域之一.由于电信网络,特别是信令协议具有面向控制的特点,且上层协议与传统IT网络存在较大的差异,直接使用现有的Fuzzing测试技术存在一定的困难.讨论了现有的各种Fuzzing测试技术用于4G-LTE 电信网络协议测试的优缺点,提出了4G-LTE 电信网Fuzzing测试技术的设计准则,最后展望了未来的发展方向.【总页数】7页(P123-129)【作者】熊琦;许源;张宝峰;刘晖;郭颖;张骁;王峰【作者单位】中国信息安全测评中心,北京 100085;移动互联网安全技术国家工程实验室,北京 100876;中国信息安全测评中心,北京 100085;移动互联网安全技术国家工程实验室,北京 100876;中国信息安全测评中心,北京 100085;移动互联网安全技术国家工程实验室,北京 100876;中国信息安全测评中心,北京 100085;移动互联网安全技术国家工程实验室,北京 100876;中国信息安全测评中心,北京 100085;移动互联网安全技术国家工程实验室,北京 100876;中国信息安全测评中心,北京100085;移动互联网安全技术国家工程实验室,北京 100876;中国信息安全测评中心,北京 100085;移动互联网安全技术国家工程实验室,北京 100876【正文语种】中文【中图分类】TP393【相关文献】1.基于fuzzing测试的网络协议安全评估方法研究 [J], 齐健;陈小明;游伟青2.基于状态的工控协议Fuzzing测试技术 [J], 张亚丰;洪征;吴礼发;周振吉;孙贺3.基于范式语法的工控协议 Fuzzing 测试技术 [J], 张亚丰;洪征;吴礼发;康红凯;孙贺4.基于Fuzzing测试的工控网络协议漏洞挖掘技术 [J], 黄影;邹颀伟;范科峰5.基于Fuzzing的网络协议漏洞挖掘技术研究 [J], 尹誉衡因版权原因,仅展示原文概要,查看原文内容请购买。
研究生科技文献检索(理工类)考察作业任务
科技文献检索(理工类)期末综合大作业作业要求:1)作业请独立完成,抄袭与被抄袭(截图雷同)均判不及格。
2)用A4纸打印,作业字体大小为五号字,请注意填写页眉信息。
3)作业上交时间与地点:2018年6月20日1:30—3:00交到上课教室。
(一)基础知识与概念1.《中图法》的全称是什么?它将图书分为几个基本部类,多少基本大类?TP393是哪类书?答:《中图法》的全称是《中国图书馆分类法》。
它将图书分为五个基本部类,二十二个大类。
TP393是计算机网络。
2.一次文献和二次文献有什么区别?图书馆文献数据库中哪些是一次文献库,哪些是二次文献库,各举2个例子。
答:一次文献是指作者创作的原始文献。
作者以自己的研究成果为基本素材而创作(或撰写)的文献,并向社会公开。
如:图书、报纸、期刊论文、科技报告、会议论文、学位论文、专利、标准等。
二次文献是指按一定的方法对一次文献进行整理加工,以使之有序化而形成的文献。
二次文献在内容上并不具有原创性,它只提供有关一次文献的内容线索,由情报人员对一次文献进行加工、整理、提炼、标引及编序后形成的工具性文献。
如:各种目录、题录、索引、文摘等。
二次文献是用来查找一次文献的工具。
3.在CNKI中文核心期刊要目中查找你所在专业的核心期刊一种,写出刊名、主办单位、ISSN号和CN号。
答:刊名:《软件学报》;主办单位:中国科学院软件研究所ISSN号:1000-9825;CN号:11-2560/TP4.文献检索时往往会出现检索结果过多、过少、或者根本不相关的情况,请问检索策略调整有哪些方法?答:检索结果过多—--缩小检索范围;检索结果过少----扩大检索范围;检索结果相关度小----修改检索词、检索式、更换检索工具。
5. 判断以下文献各属于期刊、图书、会议、学位论文、标准、科技报告或专利中的哪种类型。
①B.Brewington.Mobile agents for distributed information retrieval.M.klusch(ED.Intelligent Information Agent) [M],Berlin:Springer,1999 ②F.M.Donini,M.lenzerini,D.Nardi,W.Nutt.The complexity of concept languages.Information and Computation .134(1),314-316,1997③T.Finin,R.Fritzson,D.McKay,R.McEntire.KQML as an agent communication language .Proceedings of Third International Conference on Information and Knowledge Management(CIKM-94),ACM press ,New York,1994④Sycara,J.Lu,M.Klusch.Interoperability among heterogeneous software agents on the internet.Technical report CMU-RI-TR-98-22,CMU,Pittsburgh,USA ,1998⑤Papadopoulos,Gregory M.Implementation of a General Purpose Dataflow Multiprocessor.MIT Electrical Engineering and Computer Science ,PH.D.Thesis,Aug.1988,1-155⑥Harris,Daniel J.Gauging Device including a Probe Having a Plurality of Concentric and Coextensive Electrodes.U.S.patent No.2400331.3 sept.1968 ⑦American Society for testing and Materials Standard.Standard Test for Rubber Property-effect of liquids,ASTM-D 471,1995答:①专著(含教材等) ②期刊③会议④科技报告⑤学位论文⑥专利文献⑦标准(二) 检索练习题1.利用CNKI中国优秀硕士学位论文全文数据库,检索我校2011年计算机应用技术专业下载量最高的一篇论文(要求给出论文题目、作者、导师姓名、下载次数)。
基于变异树的Fuzzing技术研究
中 图法分类 号: P 9 T31
文献标识 码 : A
文章编号 :0 072 2 1) 13 1-4 10 .04(0 1 1-6 80
Re e r h o u zn c n l g a e n T e — u ao s a c nF z ig t h o o yb s d o r eM tt r e
础 上 ,实现 了基 于 变异树 的 F zig平 台设计 ,最后 通过 当前 的 F zig平 台和 基 于变异树 的 F zi uz n uz n u z g平 结果 的比较 , 明 了该方 法的可 行性 MPa r y z n u i 表 关键 词 : uz g 漏洞检 测; 测试 用例; 测试 效率; 树模 型 F zi ; n
( 解放 军 电子 工程 学 院 网络 系 6 6 0 教研 室 ,安 徽 合 肥 2 0 3 ) 3 0 7
摘 要 : 针对 目前 F zi uz g技术 中变异 因子彼 此之 间是独 立 的, 在着 测试效率 不 高以及 由于前期静 态分析 不正 确 而产 生漏 n 存 报 的缺 点, 出了变异树 的概念 。将 变异 因子 以树模 型 的方 式组织起 来 , 计 了有效 的变异 策略 。在 当前 F zi 提 设 u z g平 台的基 n
0 引 言
F zig 试 一 种 通 过 外 部 输 入 数 据 影 响 内部 程 序 执 uz 测 n 是 行 的 测 试 技 术 。它 的基 本 原 理 是 将 尽 可 能 多 的 可 能 导 致 程
生成 半有效性(e .a d 艮 的测 试用例 , smi l )l 差 vi j 可能错过 目标程
3 1 01 V 1 2 N . 计 算 机 工 程 与设 计 C m u r ni en d e g 68 2 1, o 3, o . 1 1 o pt g er g n s n eE n i a D i
基于fuzzing测试的网络协议安全评估方法研究
基于fuzzing测试的网络协议安全评估方法研究齐健;陈小明;游伟青【期刊名称】《信息网络安全》【年(卷),期】2017(0)3【摘要】安全漏洞是网络和信息安全的核心问题.安全漏洞导致的信息泄露等问题越来越严重,如何发现漏洞、修复漏洞、加强防御等成为安全研究的热点话题.文章利用fuzzing测试技术对网络设备支持的协议进行漏洞扫描,然后对扫描到的异常case进行逆向分析从而发现漏洞,并针对漏洞扫描和逆向分析的结果提出一种安全评估机制,对网络协议进行安全性评估,最终得到协议安全性评分.通过文章的研究,可以将存在安全隐患的安全要素通过总安全系数体现出来,实现了对网络设备的真实安全性能的准确评估.使用者根据网络设备的总安全系数将设备安全分为高、中、低3个等级.通过设备安全性的等级将设备使用在不同的网络环境当中,从而在很大程度上降低了网络安全事件发生的概率,对保障网络安全具有重大的意义.【总页数】7页(P59-65)【作者】齐健;陈小明;游伟青【作者单位】北京电子科技学院,北京 100070;北京电子科技学院,北京 100070;北京电子科技学院,北京 100070【正文语种】中文【中图分类】TP309【相关文献】1.4G电信网络协议Fuzzing测试技术研究综述 [J], 熊琦;许源;张宝峰;刘晖;郭颖;张骁;王峰2.基于启发式搜索和分类树的网络协议模糊测试用例生成方法研究 [J], 刘静静;袁耀东3.基于Fuzzing测试的工控网络协议漏洞挖掘技术 [J], 黄影;邹颀伟;范科峰4.基于Q-学习算法的有状态网络协议模糊测试方法研究 [J], 荆琛; 傅晓彤; 董伟; 赵云飞5.基于Fuzzing的网络协议漏洞挖掘技术研究 [J], 尹誉衡因版权原因,仅展示原文概要,查看原文内容请购买。
基于多维Fuzzing的缓冲区溢出漏洞挖掘技术研究
关键 词 :多维 F zig技 术 ;缓 冲 区溢 出 ;漏 洞挖掘 uzn 中图分类 号 :T 3 1 P9 文献 标志码 :A 文 章编 号 :10 —6 5 2 1 ) 9 3 3 — 3 0 1 3 9 ( 0 1 0 — 5 9 0
A s at ufr vro B F i a aso eo emot ag r svleait st cm ue eu t.T ip pr r— bt c:B f ef w( O ) s l y n fh s dneo unrbli o ptr c ry hs ae o r eo l w t u ie o s i p psdm l—ie tnl uz go u e vro MF O ) w i a ae nm l—i et nl uz gt h o g ,o - oe u i m ni a F zi f f r e l td o n b f o f w( B F ,hc w s sdo u i m n oa Fzi c nl y em h b td i n e o
第2 8卷 第 9期 2 1 年 9月 01
计 算 机 应 用 研 究
Ap l a in Re e r h o o u e s p i t s a c f C mp tr c o
V0_ 8 No 9 l2 .
S p.2 1 e 0 1
基 于 多 维 F z ig的 缓 冲 区 溢 出 u zn 漏 洞挖 掘 技 术 研 究 米
夏建军h,孙乐 昌h, 刘京菊 h ,张
( . 放 军 电子 工程 学 院 1解
fuzzing过程中的若干优化方法研究
Fuzzing 优化方法研究摘要:Fuzzing 是一种软件测试技术,它主要用于发现软件中的漏洞。
本文探讨了几种Fuzzing 优化方法,以提高 Fuzzing 测试的效率。
首先,介绍了 Fuzzing 的工作原理。
然后,讨论了几种 Fuzzing 优化方法,包括基于输入数据生成的 Fuzzing、基于程序状态的 Fuzzing、基于负载的 Fuzzing 和基于行为的 Fuzzing。
最后,给出了一个实际的Fuzzing 优化策略,并介绍了一些 Fuzzing 测试工具。
关键词:Fuzzing;优化;软件测试1. 介绍Fuzzing 是一种软件测试技术,它主要用于发现软件中的漏洞。
它通过自动生成大量输入数据,来测试软件的可靠性和安全性。
Fuzzing 可以发现软件中的 bug,提高软件的可靠性和安全性。
Fuzzing 测试的效率取决于输入数据的质量,而输入数据的质量又取决于 Fuzzing 策略的合理性。
为了提高 Fuzzing 测试的效率,必须采取 Fuzzing 优化策略。
2. Fuzzing 优化方法(1)基于输入数据生成的 Fuzzing。
这种 Fuzzing 方法的核心是生成有效的测试数据,以便更有效地测试软件。
典型的输入数据生成方法包括基于统计学的方法、基于规则的方法、基于约束的方法和基于搜索的方法。
(2)基于程序状态的 Fuzzing。
这种 Fuzzing 方法的核心是通过模拟程序的运行状态,来构造有效的测试数据。
典型的程序状态 Fuzzing 方法包括基于程序分析的方法、基于模拟的方法和基于深度学习的方法。
(3)基于负载的 Fuzzing。
这种 Fuzzing 方法的核心是根据负载情况,来构造有效的测试数据。
典型的负载 Fuzzing 方法包括基于负载模拟的方法、基于负载模型的方法和基于负载分析的方法。
(4)基于行为的 Fuzzing。
这种 Fuzzing 方法的核心是根据软件的行为,来构造有效的测试数据。
一种fuzzing策略评价方法
Ab s t r a c t :C o n s i d e r i n g t h e l a c k o f e v a l u a t i o n me t h o d s a i mi n g t o e v a l u a t e t h e p e r f o r ma n c e o f ma n y k i n d s o f f u z z i n g s t r a t e g i e s i n
Co mp a r e d wi t h t he r e s ul t s o n t h e c u r r e n t f u z z i n g pl a t f o r m. i t p r o v e s t he v a l i d i t y a n d e f f e c t i v e n e s s o f me t h o d. Th e a p p l i c a t i o n o f o p t i ma 1 s t r a t e g y o n t he SUT wi l 1 i mpr o v e t h e c a p a b i l i t y o f c o d e c o v e r a g e a n d v u l ne r a bi l i t y d e t e c t i o n.
关键 词 :f u z z i n g ;污 点数 据 图 ;映射 ;语 义树 ;回溯 ;策略 评价
中图分 类号 :T P 3 1 1
多维特征融合的技术难题和解决
多维特征融合的技术难题和解决摘要:I.引言- 介绍多维特征融合的概念- 指出多维特征融合在实际应用中的重要性II.多维特征融合的技术难题- 解释多维特征融合中涉及的主要技术难题- 详述每个技术难题的影响和挑战III.解决多维特征融合的技术难题的方法- 介绍解决多维特征融合技术难题的现有方法- 分析每种方法的优缺点和适用场景IV.实例分析- 提供一个或多个实际应用案例,说明多维特征融合技术在实践中是如何应用的- 分析案例中的成功和不足之处V.结论- 总结多维特征融合技术的发展现状和前景- 提出未来可能的研究方向和挑战正文:I.引言多维特征融合是一种将多个不同类型或来源的特征信息整合到一起,以提高模型的性能和泛化能力的技术。
在许多实际应用中,如图像识别、语音识别、自然语言处理等领域,多维特征融合被广泛采用。
然而,多维特征融合也面临着一些技术难题,如何有效地解决这些问题,是当前研究的热点和挑战。
II.多维特征融合的技术难题多维特征融合中涉及的主要技术难题包括:如何处理高维数据、如何选择合适的特征、如何平衡特征之间的权重、如何处理特征之间的相关性等。
这些难题的影响主要体现在:模型性能受限于特征的质量、模型复杂度高、计算代价大、容易过拟合等方面。
III.解决多维特征融合的技术难题的方法为了解决多维特征融合的技术难题,研究者们提出了许多方法。
例如,可以通过主成分分析(PCA)等降维技术来处理高维数据;可以通过特征选择方法来筛选出对目标变量有较强影响力的特征;可以通过正则化方法来平衡特征之间的权重;可以通过特征融合技术来处理特征之间的相关性等。
这些方法在实际应用中各有优缺点,需要根据具体场景选择合适的方法。
IV.实例分析以图像识别为例,多维特征融合技术在实践中是如何应用的。
在图像识别任务中,特征提取是非常关键的一步。
通常情况下,我们会使用多种不同的特征提取方法(如HOG、LBP 等)来提取图像的特征。
然后,将这些特征整合到一起,作为模型输入。
Fuzzing技术综述
Fuzzing技术综述doi:10.3969/j.issn.1001-3695.2010.03.006Survey on FuzzingWU Zhi-yong, WANG Hong-chuan, SUN Le-chang, PAN Zu-lie, LIU Jing-ju(Dept. of Network Engineering, Electronic Engineering Institute of PLA, Hefei 230037, China) Abstract:By analyzing and comparing several definitions of Fuzzing, this paper gave a new definition accroding to the know-ledge and methods using currently, summerized its new ideas, new methods and corresponding defeats from these aspects like differences from black-box testing, framework and test data generation mechanism. Based on these defeats and the requiments from practical application, proposed concrete research directions and methods.Key words:Fuzzing; black-box testing; construction; test data; generation; mutation; dynamic test; knowledgeFuzzing技术源于软件测试中的黑盒测试技术,它的基本思想是把一组随机数据作为程序的输入,并监视程序运行过程中的任何异常,通过记录导致异常的输入数据进一步定位软件中缺陷的位置。
周景平讲非主流fuzing
[应演讲嘉宾要求,PPT不公开]周景平:大家好,今天我给大家分享的主题是非主流的Fuzzing。
这个主要是在我以往的一些漏洞挖掘领域的积累,有好多可能是好几年前做的一些实践,有一些是最近做过的一些实践,主要是跟大家分享一下。
首先自我介绍一下,我的本名是周景平,目前在知道创宇当CSO,首席安全官。
后面列举了一些黑客组织,下面有我的电子邮箱,我比较喜欢分享一些观点到微博上面,到Twitter,有知乎上面的一些分享,大家有兴趣的话可以关注一下。
首先我要介绍一下什么叫Fuzzing,Fuzzing的中文就是模糊测试。
在这里列举了一本书,有两版,但是我不是说这个书有多牛,我觉得这个书一般。
但是为什么会贴出来?我觉得它的标题写得好,表达了Fuzzing的一些比较深刻的认识,是《模糊测试强制发掘安全漏洞的利器》,我觉得这个标题取得好。
里面有一些介绍模糊测试的历史、分类,我觉得可以参考,至于里面的一些内容,大家仁者见仁。
里面什么叫Fuzzing,在这本书的序言里面,就是MSF的创始人举了一个例子,他有一个朋友,有一个小孩拿到一个苹果电脑被锁屏了,小孩一顿乱敲,结果把那个锁屏解了,这个就是模糊测试。
在里面有一个定义,在我们安全界里面我常说的一句话就是,安全圈都是语文没学好的,很多问题就纠结在中文的博大精深,你可以这样解释,也可以那样解释。
比如我们安全界经常争论的,这个是漏洞吗?什么是漏洞,什么是Bug,一提到这个问题大家就吵个不停。
这个东西有时候很难下一个定义,我觉得这本书里面也可以借鉴一下。
它就给这个模糊测试下了一个定义,他是说通过向应用程序提供非预期的输入,并监控输出过程中发生的异常,发现这么一个软件缺陷的方法。
另外也提到了一句话,在里面代表了一些主流的思想,就是模糊测试数是利用自动化和半自动化的一个方法重复的向程序输入。
就像开始我举例子这个小孩一样,他不停的在键盘上输入,恰好有某一个命令就解锁了。
在这里我也类比了一下漏洞挖掘的过程和测试的结构和流程。
模糊测试 (Fuzzing) 技术的昨天、今天和明天
模糊测试(Fuzzing) 技术的昨天、今天和明天早期的Fuzzing技术主要以黑盒(Black-box)模糊测试技术为主。
它具备简单、直接、粗暴的特点,但效率十分低下。
一、Fuzzing的起源Fuzzing最早用于对UNIX应用的健壮性测试。
早期的Fuzzing技术主要以黑盒(Black-box)模糊测试技术为主。
它具备简单、直接、粗暴的特点,但效率十分低下。
由此,产生了基于变异(Mutation-based)和基于生成(G eneration-based)的两种模糊测试技术。
早期Fuzzing技术发展特点为:• 以Blackbox Fuzzing为主,强调工具的实用性• 由于Fuzzing技术此时还比较简单,学术发展比较缓慢•测试效率比较低二、Greybox Fuzzing的崛起传统的Blackbox Fuzzing无法捕捉程序运行时信息,测试效率低下。
基于此,覆盖率引导的灰盒模糊测试技术(Coverage-based Greybox Fuzzing)开始得到重视与发展。
CGF通过插桩等技术捕捉程序控制流信息,通过控制流信息变化来引导Fuzzer选取优异种子进行变异。
代表工具为AFL。
其中,CGF效率的主要影响因素有初始种子、调度算法、变异策略、测试速度和测试精度,为此,提升CGF效率的主要途径为:●优化初始种子:Skyfire、Learn&Fuzz●聚焦优质种子:AFLFast、AFLGo、EcoFuzz●优化变异操作:FairFuzz、MOPT、VUzzer、Angora、Greyone、Drille r、PANGOLIN●提高测试速率:INSTRIM、UnTracer、Zeror●提高测试精度:CollAFL、PTFuzz从2014年开始,Fuzzing技术进入了高速发展时代:1.Greybox Fuzzing特别是CGF成为学术领域发展主流2.研究人员对Fuzzing技术的理解愈发深刻,Fuzzing发展更加学术化,大量在现有工作基础上的Fuzzer不断诞生3.传统CGF以实际漏洞挖掘为导向的实用性侧重有所降低,部分方向陷入了覆盖率指标“内卷化”发展4.在工业界,以Google为代表的大型公司更注重Fuzzing实用性,纷纷开发大规模集群测试平台(ClusterFuzz)在其中,有几个重要的里程碑节点,使得Fuzzing开始进入了细粒度发展时代:三、Fuzzing的未来发展趋势目前,Fuzzing发展的主要流派有:1.聚焦于传统的CGF,致力于提高CGF覆盖率2.聚焦于针对特定漏洞类型的信息流辅助导向Fuzzing技术,致力于提高某种漏洞的检测效率3.聚焦于Fuzzing技术的应用,将Fuzzing运用到各个场景中,如智能软件测试、IoT设备Fuzz、内核Fuzz乃至硬件设备Fuzz4.聚焦于Fuzzing相关工作的研究,如Benchmark制作、Crash成因分析、S anitizer工具优化、Fuzzing对抗技术当前,Fuzzing发展面临的困境主要有:1.缺少新技术的引入,传统技术支撑下的CGF的效率增长已经遭遇瓶颈2.在面对复杂系统、设备及协议等目标时,Fuzzing总体的测试效率还比较低下,很多Fuzzer无法满足漏洞挖掘的实际需求从2019年开始,不少工作通过静态分析和污点分析手段获取程序信息流,用于辅助变异,引导测试向指定方向进化(UAFL、MemLock)。
基于Fuzzing的软件漏洞发掘技术
基于Fuzzing的软件漏洞发掘技术李彤;黄轩;刘海燕;黄睿【期刊名称】《价值工程》【年(卷),期】2014(33)3【摘要】With the continuous development of society informatization, the security problems of software are more and more highlighted. At present, the vast majority of software has security vulnerabilities more or less.Once these vulnerabilitiesare exploited by malicioushackers, huge losses will be caused for software companies and people who usingthesoftware.Therefore, theexcavations ofsecurity vulnerabilitiesare very necessary. This paper improves the aspects of testdatageneration,abnormal positioning and automated analysis after summarized somedefects of Fuzzing techniques,designsa vulnerabilityexcavation model based on Fuzzing and realizes some core modules to achieve thedesired purpose.%随着社会信息化的不断发展,软件的安全问题也越来越突出了。
目前,绝大多数的软件都或多或少的存在着一些安全漏洞,而这些漏洞一旦被那些不怀好意的黑客利用,将会给软件公司和使用这些软件的人造成巨大的损失。
基于范式语法的工控协议 Fuzzing 测试技术
基于范式语法的工控协议 Fuzzing 测试技术张亚丰;洪征;吴礼发;康红凯;孙贺【期刊名称】《计算机应用研究》【年(卷),期】2016(33)8【摘要】针对工控协议 Fuzzing 测试存在测试脚本编写工作量大、测试用例的覆盖面小、测试效率低等问题,提出了一种基于范式语法的工控协议 Fuzzing 测试方法。
首先以改进的扩展巴科斯范式(modified augmented Back-us-Naur form,MABNF)来描述工控协议;然后根据范式语法模型,将报文样本解析为范式语法变异树,进而生成范式语法变异树的描述脚本;提出了基于 MABNF 变异树的测试用例生成算法(MABNF-mutation-tree based test-cases generating method,MTGM),先对 MABNF 变异树进行深度优先遍历,再采用语义变异策略对节点实施变异;最后利用 MTGM得到冗余少、有效性高的测试用例集。
使用该方法,实现了基于 Peach 的工控协议 Fuzzing 测试原型系统 M-Peach,对供水 SCADA 系统进行了测试。
与 Peach 的对比实验表明,所提出的方法能有效减少测试冗余,提高测试用例集的覆盖面和测试效率。
%Traditional fuzzing methods for the industrial control system have the shortcomings of heavy workload in writing scripts,small coverage of test cases and low efficiency in fuzz-testing.This paper proposed a new fuzzing method based on the form-syntax for the industrial control protocols.Firstly,it used MABNF to describe the industrial control protocols.Secondly, according to the description,it parsed the message samples into the form-syntax mutation tree structures,and generated the scripts of form-syntax mutation treestly,it used the MTGMalgorithm,which performed depth first traversal on MABNF-mutation-tree and then applied the semantic mutation strategy to the tree nodes,so as to reduce redundancy and generate more effective test ing this method,it implemented the fuzzing tool M-Peach for the industrial control proto-col based on Peach platform,and performed experiments on a water supply SCADA system.Experimental results show that, comparing with Peach,M-Peach can effectively reduce redundancy,increase the coverage of test cases and improve testing ef-ficiency.【总页数】7页(P2433-2439)【作者】张亚丰;洪征;吴礼发;康红凯;孙贺【作者单位】解放军理工大学指挥信息系统学院,南京 210007;解放军理工大学指挥信息系统学院,南京 210007;解放军理工大学指挥信息系统学院,南京210007;解放军理工大学指挥信息系统学院,南京 210007;解放军理工大学指挥信息系统学院,南京 210007【正文语种】中文【中图分类】TP309.2【相关文献】1.4G电信网络协议Fuzzing测试技术研究综述 [J], 熊琦;许源;张宝峰;刘晖;郭颖;张骁;王峰2.基于状态的工控协议Fuzzing测试技术 [J], 张亚丰;洪征;吴礼发;周振吉;孙贺3.基于混合符号执行的Fuzzing测试技术 [J], 陆萍萍;李慧;穆文思;韩青4.基于Fuzzing测试的工控网络协议漏洞挖掘技术 [J], 黄影;邹颀伟;范科峰5.基于智能Fuzzing技术的工控漏洞挖掘平台 [J], 黄敏; 王方立; 李之云因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2010-02-02;修回日期:2010-03-12基金项目:国家自然科学基金资助项目(60972161);解放军电子工程学院博士生创新基金资助项目(CX2007016)作者简介:吴志勇(1982-),男,江苏大丰人,博士,主要研究方向为网络安全、软件测试(wuzhiyong0127@gmail.com );夏建军(1985-),男,硕士研究生,主要研究方向为网络安全;孙乐昌(1951-),男,教授,博导,主要研究方向为网络安全、操作系统;张旻(1966-),男,教授,主要研究方向为通信信号处理、模式识别、智能计算.多维Fuzzing 技术综述*吴志勇a ,夏建军a ,孙乐昌a,张旻b(解放军电子工程学院a.604研究室;b.309研究室,合肥230037)摘要:Fuzzing 技术是一项有效的动态漏洞挖掘技术,但是当前对多维Fuzzing 技术的研究还不多见。
把多维Fuzzing 技术面临的问题归纳为组合爆炸、覆盖脆弱语句和触发潜在漏洞三个问题,对存在的多种多维Fuzzing 技术进行了研究和比较,并总结出多维Fuzzing 技术的三个基本步骤:定位脆弱语句、查找影响脆弱语句的输入元素和多维Fuzzing 测试挖掘脆弱语句中的漏洞。
最后,给出了多维Fuzzing 技术的进一步发展方向。
关键词:多维Fuzzing 技术;组合爆炸;演化测试;遗传算法中图分类号:TP391文献标志码:A文章编号:1001-3695(2010)08-2810-04doi :10.3969/j.issn.1001-3695.2010.08.002Survey of multi-dimensional Fuzzing technologyWU Zhi-yong a ,XIA Jian-jun a ,SUN Le-chang a ,ZHANG Min b(a.Division 604,b.Division 309,Electronic Engineering Institute of PLA ,Hefei 230037,China )Abstract :Fuzzing is an effective dynamic vulnerability mining technology ,however ,there is not too much research on multi-dimensional Fuzzing.This paper concluded that the problems of multi-dimensional Fuzzing included combinational explosion ,covering vulnerable statements and triggering suspend vulnerabilities.Gave a research and a comparison on existing multi-di-mensional Fuzzing technologies and got that they could be divided into three basic steps :locating vulnerable statements ,find-ing input elements which influenced corresponding vulnerable statements and finding the vulnerabilities with multi-dimensionalFuzzing technology.At last ,gave its further improvement directions.Key words :multi-dimensional Fuzzing ;combination explosion ;evolutionary testing ;genetic algorithm1Fuzzing 技术介绍漏洞挖掘技术可以分为静态漏洞挖掘技术[1 5]和动态漏洞挖掘技术,动态漏洞挖掘技术又可以分为早期的软件测试技术和后来的融入了多种技术的Fuzzing 技术[6]。
早期的漏洞挖掘技术包括传统的白盒测试技术、黑盒测试技术和灰盒测试技术,但是早期的动态软件测试技术更多的是测试软件的功能而并非挖掘软件存在的漏洞;后来出现的Fuzzing 技术则逐渐发展成为区别于传统软件测试技术的专门挖掘软件漏洞的一种动态测试技术。
Fuzzing 作为一项动态的软件漏洞挖掘技术具备如下优点:a )其测试目标是二进制可执行代码,比基于源代码的白盒测试方法适用范围更广泛;b )Fuzzing 是动态实际执行的,不存在静态分析技术[1 4]中存在的大量的误报问题;c )Fuzzing 原理简单,没有大量的理论推导和公式计算,不存在符号执行技术[1,3,4]中的路径状态爆炸问题;d )Fuzzing 自动化程度高,不需要逆向工程过程中大量的人工参与。
因此,Fuzzing 技术是一种有效且代价低的方法,在许多领域受到欢迎,许多公司和组织用其来提高软件质量[7,8],漏洞分析者使用它发现和报告漏洞[9],黑客使用它发现并秘密利用漏洞。
国内对Fuzzing 技术已有了初步的研究[10 12]和简单的应用[13 16]。
1989—2002年间的Fuzzing 技术本质上是随机测试技术,测试数据多数是随机产生的畸形数据[17 19]。
随机测试技术难以深入测试软件,也没有较高的代码覆盖率,所以会遗漏很多漏洞。
后来,Fuzzing 测试呈现出两个不同的发展方向,即基于知识的Fuzzing 技术[20]和基于软件测试技术的Fuzzing 技术[21]。
2002年,文献[22]首次提出把文件格式知识和协议知识融入到了Fuzzing 技术测试用例的构造当中,大大地提高了Fuzzing 测试用例的有效性,其开发的工具SPIKE [23]发现了许多未知漏洞。
2007年,文献[21,24 26]则通过把静态分析技术、符号执行技术、具体执行技术等多种技术与Fuzzing 技术相结合,从而在达到一个较高的代码覆盖率的测试基础上进行Fuzzing 测试。
基于软件测试技术的Fuzzing 技术通过借助软件测试中的技术使Fuzzing 技术得到一个不错的代码覆盖率。
该方法的缺点是仍然无法克服符号执行中的状态爆炸问题,也无法突破应用程序中的验证或检查(像固定字段、校验和、长度计算、个数计算、hash 值计算、加密解密算法等)进行更为深入的Fuzzing 测试;另外,该方法采用了类似于穷搜索的思路,而且每次执行都需要复杂的符号运算,效率低。
基于知识的Fuzzing 技术除了应用文件格式知识、网络协议知识,还在构造测试用例的过程中应用到了漏洞知识,在知识获取和知识应用上也存在不同的方法。
知识的获取上可以第27卷第8期2010年8月计算机应用研究Application Research of Computers Vol.27No.8Aug.2010分为半自动方法和全自动方法。
半自动方法是指人工参与了知识的获取过程,甚至主要依赖于人工分析,典型的工具有SPIKE [23]、Peach [27]、Sulley [28];全自动方法是指应用协议或者知识的自动分析技术自动获取知识,典型的工具有Auto-def [29]。
由于当前协议的自动分析技术的效果还很不理想,全自动的知识获取方法的漏洞挖掘效果还远远落后于参与了人工分析的半自动知识获取方式。
知识应用是指如何把获得的格式或者协议知识应用于测试用例的构造,2004年前后,测试用例的构造方式分为基于生成技术(generation-based )的测试用例构造技术和基于变异技术(mutation-based )的测试用例构造技术[30]。
基于生成技术的测试用例构造技术通常基于网络协议知识或者文件格式知识构造测试用例,该技术构造的测试用例的半有效性高,代码覆盖率高,但是前期需要大量的人工分析来获取知识,使得难以实现高度自动化,效率偏低;该技术代表工具有SPIKE 。
基于变异技术的测试用例构造技术通常基于正常的样本数据(如样本文件、网络数据包),根据一定的漏洞知识(如构造易触发漏洞的畸形数据方法等)变异其中的部分数据来生成测试用例,该技术实现起来简单,自动化程度高,但是由于未考虑到各个数据元素的类型、语义和各个数据元素之间的约束关系,各数值的待测空间大以及生成测试用例的半有效性低,该技术效率低,挖掘效果不稳定,该技术代表工具有FileFuzz[31]。
2007年左右,Peach 工具则把两种构造技术融合起来,其测试用例生成策略是利用协议或者结构知识对样本数据进行分析,基于分析的结果和漏洞知识再对样本数据进行有效的变异。
该策略通过知识和样本文件互相弥补来提高测试用例的半有效性,因此测试用例生成技术的漏洞挖掘效果好;另外,该方法基于少量的知识就可以实现粗粒度的Fuzzing 测试,基于丰富的知识则可以实现细粒度的Fuzzing 测试,因此,该测试用例构造技术灵活、高效、自动化程度高。
工具SPIKE 、Peach 、Sulley 、FileFuzz 在变异样本数据生成新的测试用例的时候,每次只变异其中的单个输入元素,本文称之为单维Fuzzing 技术。
通过上面的比较分析可以知道,知识的应用对于单维Fuzzing 技术生成的测试用例的半有效性有较大的影响。
多维Fuzzing 技术是指对多维输入同时变异的Fuzzing 技术,多维Fuzzing 技术会挖掘到单维Fuzzing 技术无法挖掘到的漏洞[20],但是多维Fuzzing 技术会带来组合爆炸的问题,而当前对多维Fuzzing 技术的研究还不多。
2多维Fuzzing 技术面临的问题1)组合爆炸问题文献[20,32 34]分别对简称为多维Fuzzing 技术进行了初步的研究,均通过对脆弱语句(文献[35,36]称为脆弱语句,文献[20,33]中称为不安全函数,文献[34]称为潜在脆弱点,文献[32]称为攻击点,文献[33]称为潜在被攻击位置)进行有方向的多维Fuzzing 测试而触发目标程序中潜在的漏洞,这种方法产生的测试用例数目与潜在脆弱点的个数呈线性关系,从而避免了组合爆炸的问题,笔者在文献[20]给予了相关的证明。
有方向的Fuzzing 测试技术(directed fuzzing )通常必须解决两个问题:覆盖脆弱语句问题,即生成的测试用例首先必须能够覆盖指定的脆弱语句,只有这样才有可能触发脆弱语句当中包含的漏洞[33];触发潜在漏洞问题,覆盖了脆弱语句并不一定能够触发潜在的漏洞,通常还要在覆盖该脆弱语句的基础之上作进一步的Fuzzing 测试。