2022peach进行模糊测试_第1页
2022peach进行模糊测试_第2页
2022peach进行模糊测试_第3页
2022peach进行模糊测试_第4页
2022peach进行模糊测试_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

peach进行模糊测试概述模糊测试实现方法实现流程常用fuzzpeach介绍关于peach安装部署体系结构使用流程命令参数Pit文件文件格式Include配置DataModel配置StateModel配置Agent配置Monitor配置Test配置Loggers配置Strategy配置示例运行peach应用协议模糊测试测试目的分析协议定制执行测试测试结果他山之石测试结论peach应用——工控协议模糊测试搭建环境配置总结参考文章概述本文对模糊测试技术进行了综述分析,介绍了开源模糊测试框架的结构、原理及文件编写方法,旨在帮助对模糊测试感兴趣的小伙伴快速入门peach,最后以常见的http协议和工控协议为例进行了实验。文末搜集了本文所用到的工具和相关资料供大家下载。本文为Tide安全团队成员重剑无锋原创文章,转载请声明出处!模糊测试概念模糊测试(fuzztesting,fuzzing)技术是安全测试技术的一种,通过构造畸形输入数据使得软件发生异常如崩溃等情况,从而发现软件中存安全问题。由于模糊测试技术具有可以充分遍历所有输入数据、代码覆盖全面、测试自动化、能够有效地发现软件中存在的安全问题等特点,到信息安全中漏洞分析领域的研究人员的广泛欢迎。目前,Fuzzing技术已经是软件测试、漏洞挖掘领域的最有效的手段之一。Fuzzing技术特别适合用于发现漏洞,也是众多黑客或黑帽子软件漏洞的首选技术。Fuzzing虽然不能直接达到入侵的效果,但是Fuzzing非常容易找到软件或系统的漏洞,以此为突破口深入分析,就更容找到入侵路径,这就是黑客喜欢Fuzzing技术的原因。原理1、Fuzzing技术首先是一种自动化技术,即软件自动执行相对随机的测试用例。因为是依靠计算机软件自动执行,所以测试效率相对人来讲远高出几个数量级。比如,一个优秀的测试人员,一天能执行的测试用例数量最多也就是几十个,很难达到个。而Fuzzing工具可能几分钟以轻松执行上百个测试用例。2、Fuzzing技术本质是依赖随机函数生成随机测试用例,随机性意味着不重复、不可预测,可能有意想不到的输入和结果。3、根据概率论里面的“大数定律”,只要我们重复的次数够多、随机性够强,那些概率极低的偶然事件就必然会出现。Fuzzing技术就是大数的典范应用,足够多的测试用例和随机性,就可以让那些隐藏的很深很难出现的Bug成为必然现象。实现方法Fuzzing引擎算法中,测试用例的生成方式主要有2种:1)基于变异:根据已知数据样本通过变异的方法生成新的测试用例;2)基于生成:根据已知的协议或接口规范进行建模,生成测试用例;一般Fuzzing工具中,都会综合使用这两种生成方。基于变异的算法核心要求是学习已有的数据模型,基于已有数据及对数据的分析,再生成数据做为测试用例。实现流程一个基于网络协议的Fuzz测试的实现过程如下:获得待测协议的正常数据包用变异数据替换该数据包中的某些部分用发包器向目标应用发包观察目标应用的反应通常情况下,通过抓包器捕获客户端与被测设备正常交互的数据包作为测试的正常数据包样本。通过任意方式改变随机数据。例如,可以打乱个数据包,也可以把数据包中的某个部分替换。不管采用什么方法变异数据,关键是在数据包中放入大量随机数据,然后将该数据包发送到应用并观察目标应用的行为能力。常用fuzz框架在研究网络协议模糊测试时,sulley和peach两大框架是最常见的Fuzz框架,peach相对于sulley有以下几点优势:1、功能方面:sulley和peach完成的功能点都是一样,peach可对多种协议、文件进行模糊测试,而sulley只能对网络协议进行测试。2、开发角度:peach专注于文件的编写,比较容易理解,但其余部分几乎很少能改写;sulley用代码来写测试,可以开发一些插件视器等,适用于深度开发。3、维护方面:sulley目前已停止维护,peach相关资料和研究人员相对较多。4、安装部署:sulley配置环境相对繁琐,而peach配置环境相对简单。peach介绍关于peachPeach由DejavuSecurity公司的MichaelEddington创造并开发,是一个遵守MIT开源许可证的模糊测试框架,是第一款综合的开源fuzzing工包含进程监视和创建fuzzer,其中创建fuzzer由XML语言实现。Peach主要开发工作已经有7年了,主要有3个版本。最初采用Python语言编写发布于2004年,第二版于2007年发布,Peach3发布于2013年初,第三版使用C#重写了整个框架。Peach支持对文件格式、ActiveX、网络协议、API等进行Fuzz测试;PeachFuzz的关键是编写PeachPit配置文件。安装部署Windows下使用Peach3需要预先安装Microsoft.NET4和windbg;Linux、OSX下需要安装Mono包。Peach不是开源软件,而是遵循MIT许可证的免费软件。和BSD许可证一样,MIT许可证在Peach的使用和修改上没有限制。我使用的windows绿色版,在/TideSec/Peach_Fuzzing/中peach文件夹中包含了收集到的4个版本的peach最新版软件分别为windows版(x86)、windows版(x64)、oxs版、linux版、python版,大家可以下载使用。体系结构模糊测试工具是一个开源的模糊测试框架,包括数据模型(数据类型、变异器接口等)、状态模型(数据模型接口、状态、动作—输入输出等)、代理器(包括本地调试器如和网络监视器如等)、测试引擎(代理器接口、状态模型接口、发布器、日志记等)Peach有以下几个高级概念:数据模型:用来表示输入和输出所需要的数据结构。可以根据需要构造数据模型。数据模型中,用户可以设置数据变量,可以为该数据指定数据类型如字符串类型、整数类型等,还可以设置数据变量的数值,并根据变异器的接口指定该变量是否执行变异操作。数据模型中可以设置数据块,一个数据块可以包括多个数据变量。数据变量之间还可以设置关系,例如sizeof类型的关系等。变异器:包括变异策略,不同数据类型的变异策略不同。生成器:生成器能够生成字符串数据、整型数值数据等简单类型的数据,还可以生成复杂的分层的二进制数据,还可以将简单的数生成器串接起来生成更加复杂的数据类型的数据。状态模型:在每一个测试用例中,根据状态模型,Peach根据用户配置初始化状态机,并维护该有限状态机,每个状态包括一个或者多个作。每个状态中,Peach状态机会顺序地执行每个操作。用户可以为操作设置相应的执行条件。当一个状态中所有操作执行结束后还是维前状态,则该状态机执行结束。[.代理器:在Peach模糊测试过程中,Peach测试引擎与Peach代理器进行通信,从而对被测目标进行状态监视并对其进行执行控制。用户为Peach代理器设置一个Peach监视器,从而对被测程序进行状态监视,并进行执行控制如启动被测程序或者停止被测目标程序。每次测代或者测试子用例执行完毕,Peach代理器将把Peach监视器监视的被测目标程序的异常状态信息(如崩溃)返回给Peach测试引擎,如果被目标程序正常执行结束,那么将返回正常结束标志信息给Peach测试引擎。\.测试引擎:采用解析器解析用户输入的配置文件(一般为格式的文件),根据配置文件创建相应的组件并进行初始化如对状态模型状态机进行初始化,然后测试引擎进入执行测试用例的主循环。测试引擎中的发布器可以对任意的生成器提供透明的接口,常见的器有文件发布器或者网络发布器等,发布器是针对所生成的数据的一种传输形式。用户(二次开发人员或使用人员)可以将自己的生成接到不同的输出中。日志记录器可以设置日志的路径和文件名,并将测试执行过程中的状态信息记录到日志文件中。使用流程Peach的测试对象几乎包括了所有常见的Fuzz对象,例如文件结构,com,网络协议、API等。使用Peach进行fuzzing的主要步骤如下:1、创建模型2、选择/配置Publisher3、配置代理/监视器4、配置记录命令参数-1:执行第1次测试。-a:启动Peach代理。不指定”channel”默认为本地代理(默认支持,无需显式启动);“channel”可以指定为”tcp”远程代理。-c:统计测试用例数。-t:验证PeachPitxml文件正确性。-p:并行Fuzz。运行Peach的机器总数为M,这是第N个。–debug:调试信息开关。–skipto:指定Fuzz跳过的测试用例数。–range:指定Fuzz的测试用例范围Pit文件文件格式把用于数据定义的文件叫做Peachpitfile。使用时,实际上主要工作就是定义这样一个文件指示测试平台去做测试。pitfile基本上总是包含以下几个部分:<?xml...<?xml...版本,编码之类...><Peach...版本,作者介绍之类...><Include...包含的外部文件/><DataModel>原始数据结构定义</DataModel><StateModel>测试逻辑,状态转换定义,如收到什么样的数据包之后,发出什么样对应的数据包</StateModel><Agent>检测exception,crash等</Agent><Test>指定将要使用到的state,agent,publisher等</Test><Run>Fuzzer执行的进入点</Run></Peach>整个文件被一个大标签<Peach></Peach>包括。文件中的第二级标签包括Include,DataModel,StateModel,Agent,Test,Run共6种。Include包含的外部文件,其中defaults.xml和PeachTypes.xml是必须的,里边含有Peach的基本方法、类、数据类型等。DataModel用于定义数据结构,此标签下还可以有若干级、若干种下级标签。使用这些子标签可以比较容易的定义数据的类型,大小,各个数据块之间的关系,以及CRC校验和等。还可以定义多个DataModel,多个DataModel之间可以有关系也可以没有关系。StateModel用于定义测试的逻辑,实际上相当于一个状态机。下级标签包括State,每个State中又可以包含若干个Action标签。State态,不同的State之间可以根据一些判断条件进行跳转。Action用于执行打开文件,发送数据包之类的命令。Agent是一个主要功能是用来监测被测目标的反应,如crash等。Test这个标签域比较简单,一般只是制定使用哪个Agent,哪个StateModel,用什么方法发数据,有时还会指定使用什么方法加工(变异)数据。Run这个标签域也比较简单,指定当前这次Fuzz测试使用哪个Test。Include配置Include元素允许把其他pit文件包含到当前pit文件的名称空间中使用。当引用被包含的Pit文件时,用名称空间前缀和冒号的格式来命名。格式为:name:DataModel,如下所示:属性:属性:Ns必须的。名称空间前缀。Src必须的。源码URL,用“file:”前缀来命名文件名。DataModel配置PeachPit文件包含至少一个DataModel元素,DataModel描述的数据包括类型信息、关系信息(大小、数目、偏移)和其他让模糊器执行智能异的信息。DataModel是Peach根元素的子元素之一,它通过添加子元素(比如Number、Blob或者String)的方式定义了数据块的结构。属性Name必须的。当引用模型或者调试时,友好的DataModel名字是非常有用的。Ref可选的。引用一个DataModel模板。Mutable可选的,默认为真。该元素是否可变异。Constraint可选的。确定一个表达式,它帮助Peach确定数据元素是否已被适当的消耗。子元素BlockBlock、Choice、Custom、Flag、Flags、Number、Padding、String、XmlAttribute、XmlElement、Relation、Fixup、Transformer、Placeme一个名字为“”的包含一个字符串和输出“o!”如下所示:一个DataModel可以引用其他DataModel,可以继承带有ref属性的子元素。如下所示:StateModel配置重新创建测试一个协议所必须的基本状态机器逻辑。它定义了怎么给目标发送和接收数据。的范围从非常简单到及其杂。建议在开始时,保持状态模型简单,需要时再进行扩展。StateModel包含一个子元素state,state封装了一个为Peach工作的逻辑单元,进而来执行一个大的状态模型。state由action组成,每个actio以执行与单个状态如何封装逻辑相关的任务。元素能在中执行多种操作。是发送命令给的一种主要方式,它能发送输出,接收输入或打开一个连接。也能在StateModel中改为其他状态,在DataModel之间移动数据,调用被代理定义的方法。Agent配置代理是特殊的进程,它可以在本地或者远程运行。这些进程拥有一个或者多个监视器,这些监视器可以执行加载调试器,查看内存消耗者探测错误等操作。代理中的监视器可以收集信息和代表执行操作。常用的代理有:本地代理、TCP远程代理、ZeroMQ、RESTJson代理,其中前两种使用频率更高。本地代理Peach运行时支持一个运行在进程中的本地代理。如果不指定的话,这是一个默认的代理类型。配置一个本地代理如下:TCP远程代理这个代理存活在本地或远程机器的一个单独的进程中,通过远程完成连接,是一种被本地运行时支持的形式。为了使用远程代理,代进程必须首先运行起来。代理配置在远程主机上运行peach.exe-atcpMonitor配置监视器、监视器、Linux监视器和跨平台监视器,每个平台的监视器都分很多种。其中监视器包括:WindowsDebugger、cleanup、pageheap监视器、监视器、windowsService监视器等OSX监视器包括:CrashWrangler监视器、CrashReporterMonitorLinux监视器包括:LinuxCrash跨平台监视器包括:canakitrelay监视器、CleanupFolder监视器、IpPower9258监视器、内存监视器、Pcap监视器、Ping监视器、进程监视器、Processkiller监视器、保存文件监视器、socket监视器、ssh监视器、ssh下载器监视器、vmware监视器等。官方文档如下:以几个常见的为例进行参考。WindowsDebuggerMonitor监视器控制了一个调试句柄。主要有以下用途:进程调试、服务调试、内核调试。必须参数必须参数:Commandline用逗号分隔的窗口名字。Processname当找到一个窗口的时候,触发错误,默认为假。Kernelconnectionstring内核调试的连接字符串。Service要挂载的windows服务名称。如果停止或者崩溃,服务将会被启动。可选参数SymbolspathSymbolspath符号表路径或者服务。默认为:“SRV*/download/symbols”Windbgpathwindbg的安装路径。尽量在本地。Noncrystalline直到从状态模型的匹配调用完成时,debugger才会被挂载。Ignorefirstchanceguard忽略第一个机会机会保护页面错误。这些有时是假阳性或反调试错误。默认为假。Ignoresecondchanceguard忽略第二个机会保护页面错误。这些有时是假阳性或反调试错误。默认为假。Nocpukill不要使用进程CPU使用率提前终止。默认为假。Faultonearlyexit如果进程存在,触发错误。默认为假。Waitforexitoncall--如果时间间隔到了,-等待状态模型调用的进程退出和参数故障。Waitforexittimeout等待退出,timeout值单位为微秒。(-1位无穷大)默认位10000。Restaroneachtest为每次迭代重启进程。默认为假。其他参数示例CrashWrangler监视器监视器将启动一个进程和监视器感兴趣的崩溃。这个监视器采用苹果系统自带的工具,这个工具能从开发者网站载。为了该工具能够正常运行,它必须在每个机器上进行编译。参数:Command要执行的命令。Arguments命令行参数,可选,默认没有。StartOnCall状态模型调用的启动命令。可选,默认没有。UseDebugMalloc使用OSXDebugMalloc(比较慢),可选默认为假。ExecHandlerCrashWrangler执行处理程序,可选,默认为exc_handler。ExploitableReads读a/v被认为是可利用的?可选,默认为假。NoCpuKill通过CPU使用禁用进程杀死。可选,默认为假。CwLogFileCrashWrangler记录文件。可选,默认为cw.log。CwLockFileCrashWrangler锁文件,可选,默认为cw.lock。CwPidFileCrashWranglerPID文件,可选,默认为cw.pid。LinuxCrash监视器监视器用一个脚本来捕捉错误进程,该脚本被内置在内核中。参数:Executable目标可执行程序,被用于过滤崩溃,可选的,默认为所有。LogFolder记录文件的文件夹。可选默认为“/var/peachcrash”。Monomono执行=程序所需的运行时的全路径。可选,默认为“/usr/bin/mono”Test配置指定使用哪个Agent、StateModel,Publisher用什么方法发送数据,使用什么方法变异数据,日志文件路径等。可以有多个Test,使用时通过peach命令行指定要运行的Test名称,未指定默认运行名称为”Default”的Test。如下图:属性:Name必备的,test元素的名字,默认为“Default”。Waittime每次测试之间的等待时间,默认为0。Faultwaittime在开始下一次迭代时等待错误的时间,默认为0。controlIneration我们只需控制迭代的频率,默认为0。有效子元素:Agent(可选)StateModel(必须)Publisher(必须)Include(可选)Exclude(可选)Strategy(可选)Logger(可选,推荐)示例:Loggers配置Peach有一个可扩展的记录系统,它允许使用者存储他们想要的记录。默认情况下,Peach使用一个单独的文件系统记录器。Strategy配置Strategy(变异策略)包括:Random:默认会随机选择最大6个元素(可以通过参数MaxFieldsToMutate设置)利用随机mutator(变异器)进行变异。Sequential:Peach会顺序对每个元素使用其所有可用的Mutators进行变异。RandomDeterministic:Peach默认规则。这个规则对pitxml文件中元素根据Mutators生成的Iterations链表做相对随机(由链表中元素数目决定)的顺序混淆,所以每个xml文件每次运行生成的测试用例多少、顺序固定,这样才能保证skipto的准确性。Peach3包括元素增、删、改、交换,经验值,逐位、双字等Mutators,示例运行根据上述pit参数,做了个HelloTide的示例,了解pit文件基本的参数配置及结构。/TideSec/Peach_Fuzzing/blob/master/pit-xml-samples/HelloTide.xmlHelloTide的pit文件已上传github:/TideSec/Peach_Fuzzing/blob/master/pit-xml-samples/HelloTide.xml<?xmlversion="1.0"encoding="utf-8"?><Peachxmlns="/2012/Peach"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/2012/Peach../peach.xsd"><DataModelname="TheDataModel"><Stringvalue="HelloTide!"/></DataModel><StateModelname="State"initialState="State1"><Statename="State1"><Actiontype="output"><DataModelref="TheDataModel"/></Action></State></StateModel><Testname="Default"><StateModelref="State"/><Publisherclass="Console"/><Loggerclass="File"><Paramname="Path"value="log.txt"/></Logger></Test></Peach>在中运行 ,运行后会以这个原始的字符串为模板变异出许多畸形的数据出来,包括了超长串peach.exesamples\HelloTide.xmlNULL结束符缺失的非法串、格式化串等有可能引起程序出错的串,然后依次打印出来。peach.exesamples\HelloTide.xmlLog日志记录如下peach应用——HTTP协议模糊测试有些peach教程都是对图片或者音视频文件进行fuzz,作为web狗只是对HTTP协议比较熟,所以尝试对http进行peach模糊测试。测试目的本测试主要是测试HTTP协议的健壮性,通过定制Peachpitfile,查看是否可以通过对http协议进行模糊测试导致http服务不响应或其他异常象。选择的目标是之前写的一个扫描器登录界面/TideSec/WDScanner,使用phpstudy搭建。因为主要是测试http协议,所以意web应用都可以。分析协议既然要进项协议fuzz,那么首先应该搞清楚和服务器之间的通信协议是怎么样的。随意下载一个可以在应用层进行抓包的软件就可以满足我们需求,在此我用的是。抓取登录数据包:http请求包httpfuzz.xml定制pit文件httpfuzz.xml针对Http协议,完善pit文件/TideSec/Peach_Fuzzing/blob/master/pit-xml-samples/httpfuzz.xmlhttpfuzz的pit文件已上传github:/TideSec/Peach_Fuzzing/blob/master/pit-xml-samples/httpfuzz.xml<?xmlversion="1.0"encoding="utf-8"?><Peachxmlns="/2012/Peach"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/2012/Peach../peach.xsd"><DataModelname="DataLogin"><Stringvalue="GET/index.php?m=login"mutable="false"token="true"/><Stringvalue="HTTP/1.1"/> <!--不加mutable="false"说明要对该数值进行fuzz--><Stringvalue="\r\n"/><Stringvalue="Content-Type:"mutable="false"token="true"/><Stringvalue="application/x-www-form-urlencoded"mutable="false"token="true"/><Stringvalue="\r\n"mutable="false"token="true"/><Stringvalue="Accept-Encoding:"mutable="false"token="true"/><Stringvalue="gzip,deflate"mutable="false"token="true"/><Stringvalue="\r\n"mutable="false"token="true"/><Stringvalue="Accept:"mutable="false"token="true"/><Stringvalue="text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"mutable="false"token="true"/><Stringvalue="\r\n"mutable="false"token="true"/><Stringvalue="User-Agent:"mutable="false"token="true"/><Stringvalue="Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.100Safari/537.36"mutable="false"token="true"/><Stringvalue="\r\n"mutable="false"token="true"/><Stringvalue="Host:"mutable="false"token="true"/><Stringvalue="\r\n"mutable="false"token="true"/><Stringvalue="Conection:"mutable="false"token="true"/><Stringvalue="Keep-Alive"mutable="false"token="true"/><Stringvalue="\r\n"mutable="false"token="true"/></DataModel><StateModelname="StateLogin"initialState="Initial"><Statename="Initial"><Actiontype="output"><DataModelref="DataLogin"/></Action></State></StateModel><Testname="Default"><StateModelref="StateLogin"/><Publisherclass="TcpClient"><Paramname="Host"value=""/><Paramname="Port"value="80"/></Publisher><Loggerclass="File"><Paramname="Path"value="C:\peach\logs"/></Logger><Strategyclass="Sequential"/></Test></Peach>HTTP/1.1\r\n在该文件中,针对数值 和 进行模糊测试,模糊策略为Sequential。HTTP/1.1\r\n执行测试在cmd中执行peach.exesamples\httpfuzz.xml测试结果在wireshark中可看到发送的数据包,peach自动对HTTP/1.1和\r\n生成了大量fuzz数据。在使用过程中,也可对peach加参数-debug进行调试模式,可直接看到发送的数据包。/TideSec/Peach_Fuzzing/blob/master/pit-xml-samples/httpfuzz1.xml他山之石/TideSec/Peach_Fuzzing/blob/master/pit-xml-samples/httpfuzz1.xml在查阅各种资料中,发现我上面的写法比较简单粗暴,在网上找到一个实现比较优雅的httpfuzz的Pit文件。httpfuzz1的pit文件已上传github:<?xmlversion="1.0"encoding="utf-8"?><Peachxmlns="/2012/Peach"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/2012/Peach/peach/peach.xsd"><DataModelname="Headermodel"><Stringname="Header"/><Stringvalue=":"/><Stringname="Value"/><Stringvalue="\r\n"/></DataModel><DataModelname="HttpRequest"><Blockname="RequestLine"><Stringname="Method"/><Stringvalue=""/><Stringname="RequestUri"/><Stringvalue=""/><Stringname="HttpVersion"/><Stringvalue="\r\n"/></Block><Blockname="HeaderHost"ref="Headermodel"><Stringname="Header"value="Host"/></Block><Blockname="HeaderContentLength"ref="Headermodel"><Stringname="Header"value="Content-Length"/><Stringname="Value"><Relationtype="size"of="httpBody.content"/></String></Block></Block><Blockname="httpBody"><Stringname="content"value="lengthis12"/></Block></DataModel><Dataname="HttpGet"><Fieldname="RequestLine.Method"value="GET"/><Fieldname="RequestLine.RequestUri"value=""/><Fieldname="RequestLine.HttpVersion"value="HTTP/1.1"/><Fieldname="HeaderHost.Value"value=""/><Fieldname="httpBody.content"value="\r\nfuzz"/></Data><Dataname="HttpOptions"ref="HttpGet"><Fieldname="RequestLine.Method"value="OPTIONS"/><Fieldname="RequestLine.RequestUri"value="*"/><Fieldname="HeaderHost.Value"value=""/></Data><StateModelname="State1"initialState="Initial"><Statename="Initial"><Actiontype="output"><DataModelref="HttpRequest"/><Dataref="HttpGet"/></Action></State></StateModel><StateModelname="State2"initialState="Initial"><Statename="Initial"><Actiontype="output"><DataModelref="HttpRequest"/><Dataref="HttpOptions"/></Action></State></StateModel><Testname="Default"><StateModelref="State1"/><Publisherclass="TcpClient"><Paramname="Host"value=""/><Paramname="Port"value="80"/></Publisher><Loggerclass="File"><Paramname="Path"value="C:\peach\logs"/></Logger></Test></Peach>效果和上面类似,数据畸变更明显,大家可以自己体验一下。测试结论可惜的是运行了很大一会,并没发现什么畸形数据能导致http服务宕掉,返回的数据包基本也都是400错误。peach应用——工控协议模糊测试对modbus协议的模糊测试参考了2019年10月世界信息安全大会中灯塔实验室的几位工控大佬的授课内容,在此表示由衷感谢!我们Tide安全团队的另外一个小伙伴也写了篇关于工控模糊测试的文章,也可以参考/s/h9JWw1lZpfCmlQYZbBJIY工控协议里modbus算是最为常见的了,关于modbus协议相关的资料以及比较多了,就不重复介绍了,不太熟悉的可以参考/luomingui/archive/2013/06/14/Modbus.html。在对modbus协议有了一定认识之后,我们开始对modbus协议进行fuzz测试。搭建环境理论上来讲,应该使用真实的工控设备来进行实验,因为仿真软件对这种畸形的协议是不会处理的,而真实的设备可能会因为无法应请求而导致设备宕掉。但因为比较穷,手头没有设备,所以还是只能用仿真器了。modbus仿真软件+采集软件下载:/TideSec/Peach_Fuzzing在一台虚拟机上打开modbus仿真软件,模拟modbus服务(相关软件在文末提供下载)在自己电脑上打开采集器分析数据在采集器连接到仿真器时,使用wireshark可抓取到modbus协议数据在任一modbus协议数据包上点右键,复制hex流190000000006010100000064导出的数据为 ,这也是协议的报文格式。190000000006010100000064/TideSec/Peach_Fuzzing/blob/master/pit-xml-samples/modbus.xml配置pit/TideSec/Peach_Fuzzing/blob/master/pit-xml-samples/modbus.xmlmodbusfuzz的pit文件已上传github:<?<?xmlversion="1.0"encoding="utf-8"?><Peachxmlns="/2012/Peach"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/2012/Peach../peach.xsd"><DataModelname="send_data"><Blockname="mod"><Numbername="01"size="16"value="1900"valueType="hex"signed="false"mutable="false"/><Numbername="02"size="16"value="0000"valueType="hex"

温馨提示

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

评论

0/150

提交评论