工控网络协议模糊测试:用peach对modbus协议进行模糊测试
0x00 背景
本人第一次在FB发帖,进入工控安全行业时间不算很长,可能对模糊测试见解出现偏差,请见谅。
在接触工控安全这一段时间内,对于挖掘工控设备的漏洞,必须对工控各种协议有一定的了解,然后对工控协议,首先具备的对网络知识以及工控行业流程有所熟悉,其次就是对工控协议进行模糊测试。
0x01 模糊测试介绍
下面介绍一下模糊测试概念以及针对网络协议模糊测试的一些框架。
模糊测试就是通过非预期的输入并监视异常结果来发现软件故障的方法。(相对来说比较抽象,个人理解怕有偏差就不在此所描述了)。
针对模糊测试,目前已经开发了一些框架,这些框架统称为模糊器。常见的模糊测试器有sulley(在FB上面已经有人总结过了,在此不再说明),Peach,SIPIKE(用在UNIX下)等。
0x02 工控协议安全分析
工业控制网络协议模糊测试的目的是测试工业控制网络协议的实现的健壮性,它是采用构造畸形数据包,将畸形数据包发送给被测工控目标,从而测试被测工业控制网络协议的安全性。
下面是具体流程图:
流程图具体工作原理:
1、根据协议控制规范或者捕获工业控制网络协议数据流来构造正常的数据包;2、分析正常协议的字段及其重要性;3、根据分析的协议中不同的数据类型,设计有效地变异策略。4、设计并实现工业控制网络协议数据包发包工具;5、设计并实现代理器及监视器;6、采用发包工具,将畸形数据包发送给被测工控目标;7、通过监视器探测被测工控目标异常数据记录。
0x03 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
0x04 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的一个使用。
0x05 总结
模糊测试技术是发现工业控制网络协议未知漏洞和隐患的重要技术。针对工业控制网络协议,在这里介绍了相关的工业控制协议模糊测试挖掘漏洞的流程图,以及对peach框架简单的介绍,还有对modbus协议如何组包以及如何编写peach pit文件对工业控制协议进行模糊测试实例。第一次发帖,可能讲的不是很好,如有新手想学习,可以给我留言,大神勿喷。
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

相关文章:

工控网络协议模糊测试:用peach对modbus协议进行模糊测试
0x00 背景 本人第一次在FB发帖,进入工控安全行业时间不算很长,可能对模糊测试见解出现偏差,请见谅。 在接触工控安全这一段时间内,对于挖掘工控设备的漏洞,必须对工控各种协议有一定的了解,然后对工控协议…...

python+opencv+机器学习车牌识别 计算机竞赛
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器学习的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:3分 该项目较为新颖,适…...
魔域服务端数据库说明
Magic.DB MagID: 魔法ID Mag:Magic MagName: 魔法名称 EffectType: 效果类型 Effect: 效果 Spell: 魔力(魔法值) Power: 能力,力量 MaxPower: 最大能力 DefSpell: 变化后的魔力Def:deformation DefPower: 变化后能力 DefMaxPower:…...

笔记本无线网卡MAC一直改动
今天在网管处把我无线网卡的MAC地址添加后,回来链接无线网却一直显示网络链接失败,以为是自己的驱动问题,去官网下载了最新的驱动结果依然无法链接。之前在家或者公共场合链接WiFi从来没有出现过类似情况。 百思不得其解之际发现自己的无线网…...

【Tomcat】Apache发布两个新版本Tomcat修复多个Bug
Apache 官网发布了两个最新的 Tomcat 版本包,分别是:8.5.94、9.0.81 这两个最新版本修复了多个漏洞,统计信息如下表所示。有关漏洞的详细信息,请查阅官方相关文档(见:参考)。 严重等级漏洞说明…...

Empowering Low-Light Image Enhancer through Customized Learnable Priors 论文阅读笔记
中科大、西安交大、南开大学发表在ICCV2023的论文,作者里有李重仪老师和中科大的Jie Huang(ECCV2022的FEC CVPR2022的ENC和CVPR2023的ERL的一作)喔,看来可能是和Jie Huang同一个课题组的,而且同样代码是开源的…...
LeetCode 2652. 倍数求和【数学,容斥原理】简单
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
ansible-playbook剧本
一,playbook组成: (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates&…...

竞赛选题 深度学习LSTM新冠数据预测
文章目录 0 前言1 课题简介2 预测算法2.1 Logistic回归模型2.2 基于动力学SEIR模型改进的SEITR模型2.3 LSTM神经网络模型 3 预测效果3.1 Logistic回归模型3.2 SEITR模型3.3 LSTM神经网络模型 4 结论5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 …...

机械设计师应该在工作中培养哪些良好习惯?
图纸规范 1、一定要按照制图标准设计图纸!图纸上任何一条直线(无论是点划线、粗实线、细实线等等)、数值、公差、图标等,都必须有理有据,不能想当然。图纸是产品生产的基础,无论是生产、加工、装配&#x…...

小程序新增功能页面
需求背景: 小程序主页面有个报名板块,我打算替换主页面报名板块菜单,迁移到我的页面里面, 替换成资讯栏目,我喜欢分享最新技术,开源课题,IT资讯,本想做成论坛的效果,由于时间问题,先替换添加板块 替换后效果: 模块功能: 添加、修改、删除、查看 文件目录:// 添…...
LeetCode每日一题——2652. Sum Multiples
文章目录 一、题目二、题解 一、题目 Given a positive integer n, find the sum of all integers in the range [1, n] inclusive that are divisible by 3, 5, or 7. Return an integer denoting the sum of all numbers in the given range satisfying the constraint. E…...
Python问答题(更新中)
1. 列表(list)和元组(tuple)有什么区别? 列表是可变的,创建后可以对其进行修改;元组是不可变的,元组一旦创建,就不能对其进行更改。列表表示的是顺序。它们是有序序列&a…...

服务器中了locked勒索病毒怎么办,勒索病毒解密,数据恢复
最近一段时间内,相信很多使用金蝶或用友的办公软件的企业,有很多都经历了locked勒索病毒的攻击,导致企业服务器被加密无法正常使用,严重影响了企业的正常工作。通过云天数据恢复中心的解密恢复发现,在今年locked勒索病…...

游游的字母串 (环形数组两点之间的位置)
题目链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 yab 输出 3 思路: 暴力枚举,全部变成对应的26个字母字符需要的操作步数,取最少的一个操作步数, 这里的操作步数࿰…...

Flink的ResourceManager详解(一)
ResourceManager 总结 一、概述 1、ResourceManager 管理 Flink 集群中的计算资源,计算资源主要来自 TaskManager 组件。 2、如果集群采用 Native【本地模式】部署,则 ResourceManager 会动态地向集群资源管理器申请 Container 并启动TaskManager&…...
Tornado 可以使用 nginx 提供负载均衡
Tornado和nginx都是网络服务器的重要组成部分,但它们在职能和使用场景上存在显著的差异。 Tornado可以独立运行,而不需要依赖nginx等其他Web服务器。这是因为Tornado本身就是一个完整的Web服务器,可以独立处理HTTP请求并返回响应数据。 ngi…...

Golang 面向对象编程 多态
基本介绍 变量(实例)具有多种形态。面向对象的第三大特征,在Go语言,多态特征是通过接口实现的(接口能够体现多态的特征)。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 在前面的Usb接口案例,u…...

WLAN 无线案例(华为AC控制器配置模板)
实验说明: 无线用户VLAN 30 192.168.30.0/24 AP和AC用VLAN 20 192.168.20.0/24 有线网段 VLAN 10 192.168.10.0/24 步骤一:全网互通 sw1: sysname sw1 # vlan batch 10 20 30 # dhcp enable # ip pool 20 gateway-list 192.168.20.1…...

精美的早安问候语,暖心祝福,开心每一天
1、 美好的祝福,成了清晨的主题。相互问候,是一天的开始。让我们伴着不老的岁月,永远开心快乐。早晨好! 2、 心宽似海,百福皆来,世事看淡,内心安然。随缘即福,随遇而安࿰…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
智能体革命:企业如何构建自主决策的AI代理?
OpenAI智能代理构建实用指南详解 随着大型语言模型(LLM)在推理、多模态理解和工具调用能力上的进步,智能代理(Agents)成为自动化领域的新突破。与传统软件仅帮助用户自动化流程不同,智能代理能够自主执行工…...

可视化预警系统:如何实现生产风险的实时监控?
在生产环境中,风险无处不在,而传统的监控方式往往只能事后补救,难以做到提前预警。但如今,可视化预警系统正在改变这一切!它能够实时收集和分析生产数据,通过直观的图表和警报,让管理者第一时间…...