【实战】工控网络协议模糊测试:用peach对modbus协议进行模糊测试

本文来自 熊猫(s_panda) 的投稿

0×00 背景

本人第一次在FB发帖,进入工控安全行业时间不算很长,可能对模糊测试见解出现偏差,请见谅。

在接触工控安全这一段时间内,对于挖掘工控设备的漏洞,必须对工控各种协议有一定的了解,然后对工控协议,首先具备的对网络知识以及工控行业流程有所熟悉,其次就是对工控协议进行模糊测试。

0×01 模糊测试介绍

下面介绍一下模糊测试概念以及针对网络协议模糊测试的一些框架。

模糊测试就是通过非预期的输入并监视异常结果来发现软件故障的方法。(相对来说比较抽象,个人理解怕有偏差就不在此所描述了)。

针对模糊测试,目前已经开发了一些框架,这些框架统称为模糊器。常见的模糊测试器有sulley(在FB上面已经有人总结过了,在此不再说明),Peach,SIPIKE(用在UNIX下)等。

0×02 工控协议安全分析

工业控制网络协议模糊测试的目的是测试工业控制网络协议的实现的健壮性,它是采用构造畸形数据包,将畸形数据包发送给被测工控目标,从而测试被测工业控制网络协议的安全性。

下面是具体流程图:

流程图具体工作原理:

    1、根据协议控制规范或者捕获工业控制网络协议数据流来构造正常的数据包;
    2、分析正常协议的字段及其重要性;
    3、根据分析的协议中不同的数据类型,设计有效地变异策略。
    4、设计并实现工业控制网络协议数据包发包工具;
    5、设计并实现代理器及监视器;
    6、采用发包工具,将畸形数据包发送给被测工控目标;
    7、通过监视器探测被测工控目标异常数据记录。

0×03 peach模糊测试

在研究网络协议模糊测试时,对sulley和peach两大框架都有所研究,依我个人而言,peach相对于sulley有以下几点优势:

    1、sulley目前已不再维护。
    2、对sulley模糊测试编写程序,需要有一定的python语言基础。而peach是xml格式的,比较容易理解。
    3、sulley配置环境相对繁琐,而peach配置环境相对简单(目前我手头有绿色版本,可以直接运行)。
    4、sulley只能对网络协议进行模糊测试,而peach相对更加多样化。

上面的工业控制网络协议流程图是建立在模糊测试的基础上的,下面针对讲解一些关于peach的模糊测试的知识,对于初学模糊测试不必找资源而烦躁了。(目前peach框架的文档相对来说较少,下面讲解的是依据一些英文文档以及相关的博客总结的,如有不足之处,请指出)。

peach概述

Michael Eddington等人开发的peach是一个遵守MIT开源许可证的模糊测试框架,最初采用python编写的发布与2004年,第二版于2007年发布,最新的第三版使用C#重写了整个框架。

peach支持对文件格式、ActiveX、网络协议、API等进行Fuzz测试。

下载和安装

相对比较容易,在Window下使用peach3需要安装.net4和windbg;我用的是绿色版本。

下载地址:http://pan.baidu.com/s/1eQ6XzyE

peach基础知识

peach中最重要一部分就是peach Pit配置文件。Peach Pit文件包含以下内容:

    1、General Configuration(通用配置)
    2、Data Modeling(数据模型)
    3、State Modeling(状态模型)
    4、Agents and Monitors(代理和监视)
    5、Test Configuration(测试配置)

具体编写步骤如下:

    <?xml 版本,编码之类?>
    <Peach 创建时间,地址,作者等等>
    <Include 包含外部文件 />
    <DataModel> 类型信息,关系(大小,计数,偏移)、可嵌套等<\DataMode>
    <StateModel>测试逻辑,状态转换</StateModel>
    <Agent>监视被测目标的情况,崩溃信息等</Agent>
    <Test>指定使用哪个StateModel,Agent,Publisher、Strategy、Logger等</Test>
    </Peach>

这只是编写Peach Pit配置文件的简单步骤,里面涉及的属性很多,下面发出给出一个测试案例:

这是关于peach针对http协议模糊测试,具体步骤如图所标。具体属性不做介绍(详情见下面英文文档进行学习)。

这是peach框架模糊测试的英文文档下载地址:链接: http://pan.baidu.com/s/1gdGyJZl 密码: ibnc

0×04 peach模糊测试modbus工控协议

modbus是全球一个真正用于工业现场的总线协议,是公开的协议,协议报文格式比较简单。下面以modbus协议为例来讲解关于peach在工业控制协议方面的模糊测试。

modbus在TCP/IP通信数据报格式

MBAP报头字段如下:

modbus中1号功能码请求的报头格式:

由上面的报文格式可以组包为:00 01 00 00 00 06 01 01 00 00 00 01

对modbus协议可以组包之后通过peach框架编写Peach Pit配置文件:

在上图所示中,简单的描述了编写网络协议模糊测试的Pit文件。里面没有涉及到代理和监听还有调试功能(主要是工控设备目前不支持,仅我个人理解),在这里不是很懂的话,请详细了解peach的英文文档多加了解。其中的日志路径实际包含运行名字和时间戳。直到检测到一个故障信息,这些记录才会记录到磁盘空间。

下面是对01号功能码进行安全性测试过程,如图所示:

针对执行过程,通过wireshark抓包可以获取通信数据流量,如图所示:

上面的例子只是简单的运用peach框架对工控中modbus的一个使用。

0×05 总结

模糊测试技术是发现工业控制网络协议未知漏洞和隐患的重要技术。针对工业控制网络协议,在这里介绍了相关的工业控制协议模糊测试挖掘漏洞的流程图,以及对peach框架简单的介绍,还有对modbus协议如何组包以及如何编写peach pit文件对工业控制协议进行模糊测试实例。第一次发帖,可能讲的不是很好,如有新手想学习,可以给我留言,大神勿喷。

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2016-09-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯NEXT学位

怎样让开源项目看起来“高大上”

3714
来自专栏SAP最佳业务实践

SAP最佳业务实践:生产订单拆分-按库存生产(248)-3生产订单处理1

image.png 生产订单处理 MD04创建生产订单 创建不含外部处理工序的生产订单。 已生成装配成品 (F248-1) 的生产订单。 后勤®生产 ®物料需...

2863
来自专栏双十二技术哥

Android性能优化(八)之网络优化

移动互联网发展到现在,用户的联网方式已经完成了由流量依赖到Wifi依赖的转变。虽然网络环境在变好,但也对网络的应用提出了更高的要求,同时开发人员对网络的重视度却...

1703
来自专栏逸鹏说道

数据库高可用实战案例

原文链接:http://www.cnblogs.com/double-K/p/5803956.html 说到高可用,看官们会想到很多方案,也许是自亲身经历过系统...

3547
来自专栏SAP最佳业务实践

SAP最佳业务实践:SD–带质量管理的销售退货(237)-4退货质检

一、QA32对接收货物进行质量检验 在收到退货过账到退货状态之后,对物料进行质量检验。将退回的货物收货过账时,系统将自动创建检验批。质量检验后,再进行进一步的处...

3734
来自专栏腾讯大讲堂的专栏

【折腾不止】前端工程与性能优化

作者:addy(许斌),前端开发工程师,文艺青年一枚,写得了文章,编得了代码。 作为开发,不仅仅是前端,优化总是你绕不开的事,我们的目标就是要产品变得更快。优化...

2408
来自专栏知晓程序

「大众点评点餐」小程序开发经验 06:解析开发工具

邹弓一,美团点评前端工程师,4年 Web 前端开发经验,现在是美团点评点餐团队的一员。

1243
来自专栏CSDN技术头条

围绕着内存数据库的4个流言

【编者按】作者Yiftach Shoolman是Redis Labs的联合创始人兼CTO,拥有着丰富的实践经验。Yiftach 之前曾是Crescendo Ne...

2007
来自专栏玄魂工作室

不明恶意攻击致<搜狗搜索><搜索结果>跳转<百度搜索>技术原理分析

先声明一点,本文作者不是搜狗的 然后 只是从技术的角度探讨问题---- 目录 不明恶意攻击致<搜狗搜索><搜索结果>跳转<百度搜索>技术原理分析 目录 * 前...

4559
来自专栏阳光之海

Chrome浏览器v70正式发布:同步方式改变 新增AV1解码器

谷歌今天发布了Chrome浏览器的最新版本 70.0.3538.67(正式版本)。今天发布的最令人期待的新功能是新的Chrome设置面板选项,允许用户控制浏览器...

2424

扫码关注云+社区

领取腾讯云代金券