4.Peach环境搭建【工业控制系列】
介绍
本章节会带大家了解Fuzz
并且安装Peach Fuzz
工具。
Fuzz(模糊测试)
是一种通过提供非预期的输入并监视异常结果来发现软件安全漏洞的方法。模糊测试在很大程度上是一种强制性的技术,简单并且有效,但测试存在盲目性。
典型地模糊测试过程是通过自动的或半自动的方法,反复驱动目标软件运行并为其提供构造的输入数据,同时监控软件运行的异常结果。
Fuzz
被认为是一种简单有效的黑盒测试,随着Smart Fuzz
的发展,RCE(逆向代码工程)需求的增加,其特征更符合一种灰盒测试。
常见的Fuzz
框架有很多。例如:Achilles、Peach、Spike等
。而我这里使用是通过Peach
进行Fuzz
测试。
Michael Eddington
等人开发的Peach
是一个遵守MIT
开源许可证的模糊测试框架, 最初采用Python
语言编写,发布于2004
年,第二版于2007
年发布,最新的第三版使用C#
重写了整个框架。
Peach
支持对文件格式、ActiveX
、网络协议、API
等进行Fuzz
测试;Peach Fuzz
的关键是编写Peach Pit
配置文件。
Windows
下使用Peach3
需要预先安装.net 4
和windbg
;Linux
、OS X
下需要安装Mono .net
开发框架。
安装Peach以及说明
这里按照PeachPit
官方文档进行安装[[点击跳转下载地址]](https://github.com/webraybtl/PeachFuzzer/tree/main/Peach%20Fuzzer),我Windows10默认有开启所以并不需要重复在安装,不同版本的内容稍有区别。
然后将Peach
解压到指定文件夹后运行peach.exe
可以看见简要的软件命令使用概述
参数说明
-1:执行单次迭代。
-a, --agent:启动 Peach 代理。
-c, --count:计算测试用例数量。
-t, --test xml_file:验证 Peach XML 文件的正确性。
-p, --parallel M,N:并行模糊测试。总共 M 台机器,当前为第 N 台。
--debug:启用调试消息,有助于 Peach XML 文件的调试。警告:消息有时可能非常难以理解。
--trace:启用更详细的调试消息。
--seed N:设置随机数生成器的种子。
--parseonly:仅解析测试 Peach XML 文件。
--makexsd:生成 peach.xsd 文件。
--showenv:显示所有数据元素、修正、监视器、发布器及其关联参数的列表。
--showdevices:显示 PCAP 设备的列表。
--analyzer:启动 Peach 分析器。
--skipto N:跳转到特定的测试编号。这取代了 -r 用于重新启动 Peach 测试。
--range N,M:指定要运行的测试编号范围。
-D/define=KEY=VALUE:定义替换值。在您的 PIT 中,您可以使用 ##KEY##,它将被替换为 VALUE。
--config=FILENAME:包含定义值的 XML 文件。
Peach 代理
makefileCopy code
语法: peach -a channel
在当前机器上启动一个 Peach 代理实例。用户必须提供一个通道/协议名(例如 tcp)。注意:本地代理会自动启动。
执行模糊测试
lessCopy code语法: peach peach_xml_file [test_name]
语法: peach --skipto 1234 peach_xml_file [test_name]
语法: peach --range 100,200 peach_xml_file [test_name]
通过指定 Peach XML 文件和要执行的测试名来启动模糊测试。如果测试因某些原因中断,可以使用 --skipto
参数并提供从哪个测试编号开始来重启。
执行并行模糊测试
lessCopy code
语法: peach -p 10,2 peach_xml_file [test_name]
并行模糊测试使用多台机器同时执行同样的测试,从而缩短所需时间。要以并行模式运行,我们需要知道机器的总数和当前机器编号。这些信息通过 -p
命令行参数以 "总机器数,当前机器" 的格式输入到 Peach 中。
验证 Peach XML 文件
makefileCopy code
语法: peach -t peach_xml_file
这将对 Peach XML 文件进行解析,并显示发现的任何错误。
调试 Peach XML 文件
luaCopy code
语法: peach -1 --debug peach_xml_file
这将在显示大量调试信息 (--debug
) 的同时执行文件的单次迭代 (-1
)。调试信息最初仅供开发者使用,但也可用于 PIT 文件的调试。