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

news2024/11/25 21:19:34

0x00 背景

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

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

0x01 模糊测试介绍

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

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

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

0x02 工控协议安全分析

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

下面是具体流程图:

14491986222970.png!small

流程图具体工作原理:

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配置文件的简单步骤,里面涉及的属性很多,下面发出给出一个测试案例:

14492045975574.png!small

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

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

0x04 peach模糊测试modbus工控协议

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

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

1449215555408.png!small

MBAP报头字段如下:

14492156822072.png!small

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

14492158083096.png!small

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

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

14492151422075.png!small

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

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

14492168971469.png!small

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

14492169733654.png!small

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

0x05 总结

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

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

攀岩绳上亚马逊合规认证EN892测试标准

攀岩绳 攀岩绳是与攀岩安全带和锚点相连的一种装备&#xff0c;用于保护攀岩者&#xff0c;使其不会从高处跌落。攀岩绳由承重内芯和围绕内芯编织的护套组成。 亚马逊关于攀岩绳的政策 根据亚马逊的要求&#xff0c;所有攀岩绳均应经过检测&#xff0c;并且符合下列特定法规或…

Go语言Gin框架中使用MySQL数据库的三种方式

文章目录 原生SQL操作XORMGORM 本文演示在Gin框架中通过三种方式实现增删改查的操作&#xff0c;数据表结构如下&#xff1a; CREATE TABLE users (id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ID,user_no bigint(20) unsigned NOT NULL COMMENT 用户编号,name varch…

Ansible --- playbook 剧本

一、playbook 的简介 playbook是 一个不同于使用Ansible命令行执行方式的模式&#xff0c;其功能更强大灵活。 简单来说&#xff0c;playbook是一个非常简单的配置管理和多主机部署系统&#xff0c; 不同于任何已经存在的模式&#xff0c;可作为一个适合部署复杂应用程序的基…

win11 定时计划任务

控制面板 任务计划 添加任务计划 &#xff0c;选按步骤添加。

2023年【天津市安全员C证】模拟考试及天津市安全员C证实操考试视频

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 天津市安全员C证模拟考试是安全生产模拟考试一点通生成的&#xff0c;天津市安全员C证证模拟考试题库是根据天津市安全员C证最新版教材汇编出天津市安全员C证仿真模拟考试。2023年【天津市安全员C证】模拟考试及天津市…

docker全家桶(基本命令、dockerhub、docker-compose)

概念 应用场景&#xff1a; Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 作用&#xff1a;Docker 使您能够将应用程序与基…

算法通关村第19关【青铜】| 动态规划

动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是一种解决多阶段决策过程最优化问题的数学方法。它通常用于解决那些具有重叠子问题和最优子结构性质的问题&#xff0c;这些问题可以分解为多个相互关联的子问题。 动态规划的核心思想是将原问题分解为…

Android查看签名信息系列 · 使用逆向分析工具JadxGUI获取签名

前言 Android查看签名信息系列之使用逆向分析工具JadxGUI获取签名&#xff0c;通过这种方式&#xff0c;可以获取到的签名信息包括&#xff1a;MD5、SHA1、SHA-256、公钥(模数)等信息 实现方法 1、进入JadxGUI目录下的lib文件夹内&#xff0c;找到jadx-gui-1.4.7.jar文件 2、…

医疗制药行业数字化创新实践

本文将为大家分享3个制药行业的创新案例吧&#xff0c;都是在不同智能制造落地场景下的典型案例&#xff0c;希望对大家有所启发。 01 医疗设备企业零代码搭建集成式信息化管理平台&#xff0c;年节省150余万元 医疗制药行业数字化实现工具>>>>https://www.jianda…

LLVM(6)ORC实例分析:Transform in cpp

Transform用例总结 该用例调用JIT的setTransform接口&#xff0c;传入pass对IR代码做了一系列优化。优化一&#xff1a;fac函数的调用者能直接拿到返回值&#xff0c;不在需要进入fac计算了。 正常函数调用a fac(5)需要进入fac函数后才能拿到结果120。transform后&#xff0c…

java部署教程

关闭防火墙 不管是windows还是linux&#xff0c;首先必须关闭防火墙。 # linux添加8080端口 firewall-cmd --zonepublic --add-port8080/tcp --permanent#删除80端口 firewall-cmd --zonepublic --remove-port8080/tcp --permanent# 刷新使端口立即生效 firewall-cmd --reloa…

AI大模型下一步怎么走?百度携AI原生应用抢先作答

前言 10月17日&#xff0c;百度世界2023在北京首钢园召开&#xff0c;这是百度近四年来首次恢复线下举办世界大会&#xff0c;会上发布了文心大模型4.0以及基于大模型的AI原生应用的最新进展。 文章目录 前言我眼里的百度世界大会文心大模型4.0正式发布&#xff0c;与GPT4相比毫…

解决spring项目中无法加载resources下文件

解决spring项目中无法加载resources下文件 问题发现问题解决步骤一&#xff1a;检查文件名步骤二&#xff1a;确保测试资源目录步骤三&#xff1a;检查文件路径是否正确 问题发现 在学习Spring过程中&#xff0c;TestContext框架试图检测一个默认的XML资源位置。如果您的类被命…

数字孪生的多领域应用:塑造未来的可能性

数字孪生技术正迅速改变着我们与世界互动的方式&#xff0c;为各个领域带来了前所未有的机会。从制造业到医疗保健&#xff0c;再到城市规划和交通系统&#xff0c;数字孪生正在成为创新和效率提升的引擎。本文带大家分析数字孪生的一些应用场景和其潜在影响的更多细节&#xf…

QT中使用QVTKOpenGLNativeWidget的简单教程以及案例

先添加一个带有ui的QT应用程序。 一、在ui界面中添加QVTKOpenGLNativeWidget控件 先拖出来一个QOpenGLWidget控件 修改布局如下&#xff1a; 然后将QOpenGLWidget控件提升为QVTKOpenGLNativeWidget控件&#xff0c;步骤如下&#xff1a; 右击QOpenGLWidget窗口&#xff0c;选…

知识蒸馏(Knowledge Distillation)简述

知识蒸馏&#xff08;Knowledge Distillation&#xff09;简述 结论 Reference&#xff1a; Distilling the Knowledge in a Neural Network知识蒸馏&#xff08;Knowledge Distillation&#xff09;简述&#xff08;一&#xff09; 知识蒸馏被广泛用于模型压缩和迁移学习当中…

【STM32】--基础了解

一、STM32来历背景 1.从51到STM32 &#xff08;1&#xff09;单片机有很多种 &#xff08;2&#xff09;STM32内核使用ARM&#xff0c;但是ARM不一定是STM32 &#xff08;3&#xff09;ATM32是当前主流的32位高性能单片机 &#xff08;4&#xff09;STM32的特点&#xff1a;高…

数据发现工具

数据发现是从非结构化和结构化数据源中查找特定数据子集的过程&#xff0c;必须查明业务存储库中有哪些数据以及位置&#xff0c;数据发现与数据分类&#xff0c;这是根据其敏感性和脆弱性对不同类型的数据进行排序的过程&#xff0c;敏感数据发现和分类本身就是不同的过程&…

测试网线的仪器叫什么?

测试网线的仪器有哪些&#xff1f;测试网线的仪器叫什么&#xff1f;很多小伙伴对此有疑问。咱们逐一分析&#xff0c;并做出简单的讨论。 测试网线的仪器大概几类&#xff0c;从携带是否方便上来说&#xff0c;手持式和台式。从测试功能上来说&#xff0c;分为物理常量、电气…

利用在线培训系统提升员工技能,助力企业发展

近年来&#xff0c;随着互联网技术的发展&#xff0c;在线培训系统逐渐成为企业提升员工技能的利器。这种新型的培训方式打破了时间和空间的限制&#xff0c;为企业提供了更加灵活和高效的培训解决方案。下面&#xff0c;我们将详细介绍如何利用在线培训系统提升员工技能&#…