当前位置: 首页 > news >正文

用免费蜜罐工具配置Modbus工控蜜罐

导语:本文将用DecoyMini免费蜜罐工具来配置自定义的ModbusTCP工控仿真模板,并介绍部署后的Modbus蜜罐的使用效果。

DecoyMini是一个免费的蜜罐工具,其特色是仿真能力采用与软件松耦合的仿真模板来进行管理。通过一键式导入云端仿真模板库里的模板就可以在网络里快速部署多样化的虚假服务和应用,支持仿真模板自定义功能,支持采用可视化仿真编排引擎通过界面配置即可实现对自定义的网络协议、服务或应用的仿真能力。

本文将用DecoyMini免费蜜罐工具来配置自定义的ModbusTCP工控仿真模板,并介绍部署后的Modbus蜜罐的使用效果。

1 DecoyMini工具介绍

DecoyMini•智能仿真与攻击诱捕工具是北京吉沃科技有限公司(http://www.decoyit.com)基于商业化蜜罐产品积累而推出的免费蜜罐工具。工具支持主流操作系统,安装使用简单,支持通过仿真模板实现仿真环境的快速应用和部署。通过部署虚假的服务和应用仿真环境,吸引攻击者进行攻击,在虚假环境中对攻击者行为进行抓取和存储,基于对攻击者的行为分析来实现攻击预警、威胁分析和溯源取证。

DecoyMini免费蜜罐工具集成可视化仿真编排引擎,支持通过界面配置来定义对网络请求数据的解析方式,基于对请求参数的判断来响应对应的数据,实现对服务和应用的仿真能力。

对网络请求数据的处理支持多种方式,包括:

1、直接读取网络请求数据:支持直接读取指定长度,也支持按指定数据结尾来进行读取,对读取的数据可以直接存储到参数里,也可以将数据缓存,以便进行二次解析。

2、对缓存数据的解析:支持通过字节偏移、位偏移等方式从缓存数据里提取指定范围的数据。

对提取的数据支持以指定的类型存储到参数里,包括:

● 字符串

● 字节数组

● 整数(大端)

● 整数(小端)

在请求响应部分,引擎根据请求参数的综合条件判断,来决定给请求方的响应数据,支持的响应数据类型包括:

● 字符串

● 二进制

● 指定的配置文件

● 指定的数据文件

同时支持响应后关闭连接、跳转到指定参数来继续执行等操作。

在应答的同时,可以按需开启日志记录功能,记录的内容包括操作用户、操作类型、操作结果、日志描述、日志级别、请求参数等,以实现对攻击行为的详细记录。

2 Modbus介绍

Modbus是由Modicon(现在的https://baike.baidu.com/item/%E6%96%BD%E8%80%90%E5%BE%B7%E7%94%B5%E6%B0%94Schneider Electric)公司于1979年开发,已经成为工业领域通信协议的业界标准,现在是工业电子设备之间常用的连接方式,已经是工业领域全球最流行的协议。

Modbus协议是一种应用层报文传输协议,用Master/Slave方式通信,在1996年施耐德公司推出基于以太网TCP/IP的ModbusTCP协议后,Modbus共支持ASCII、RTU、TCP三种报文类型,物理层接口支持RS232、RS422、RS485和以太网等接口。

2.1 协议格式介绍

ModbusTCP的数据帧可分为两部分:MBAP+PDU。

2.1.1 报文头MBAP

MBAP为报文头,长度为7字节,组成如下:
在这里插入图片描述
各属性含义解释如下:

2.1.2 帧结构PDU

PDU由功能码+数据组成。功能码为1字节,数据长度不定,由具体功能决定。

功能码定义

Modbus的操作对象有四种:线圈、离散输入、保持寄存器、输入寄存器。
在这里插入图片描述
根据对象的不同,Modbus的功能码定义如下:
在这里插入图片描述
功能码更详细的说明如下:
在这里插入图片描述
错误代码表说明如下:
在这里插入图片描述
更详细的协议格式定义,请读者查阅Modbus协议规范。

3 仿真模板配置

了解ModbusTCP协议后,开始Modbus仿真模板配置。安装好DecoyMini工具,登录进管理中心。
在这里插入图片描述
进入仿真模板,用TCP自定义引擎新建“ Modbus TCP 协议”模板,设置基本的模板参数,开始结合Modbus协议格式来配置模板对应的解析规则。

3.1 请求数据解析

DecoyMini会按照顺序从第一条规则往后执行解析规则。依次配置参数解析规则来解析事务处理标识、协议标识、长度、单元标识符等参数。

3.1.1 事务处理标识

事务处理标识为报文头前2个字节,定义名为number的参数直接从网络请求数据中读取2个字节的数据即可。在响应数据里可以通过{{number}}形式来对事务处理标识值进行引用。

配置的规则如下:
在这里插入图片描述
3.1.2 协议标识

协议标识为事务处理标识随后2个字节,定义名为protocol的参数继续从网络请求数据中读取2个字节的数据。读取的数据将会存放在protocol参数中,在响应数据里可以通过{{protocol}}形式来引用对应的数据。

配置的规则如下:
在这里插入图片描述
3.1.3 数据长度

数据长度为协议标识后2个字节,定义名为length的参数继续从网络请求数据中读取2个字节的数据按整数(大端)格式存储到参数中。在响应数据里可以通过{{length}}形式来引用数据长度对应的值。

配置的规则如下:
在这里插入图片描述
3.1.4 读取数据区域

数据长度后为具体的数据区域,需要根据数据长度值来读取对应长度的数据,定义名为readdata的参数从网络请求数据中读取{{length}}个字节的数据存储到参数中;由于随后还需要对readdata数据进行进一步解析,因此需要为此参数启用缓存数据功能。

配置的规则如下:
在这里插入图片描述
3.1.5 单元标识符

单元标识符为数据区域的第一个字节,因此,需要从已缓存的readdata参数里去进行解析。定义名为devno的参数,设置解析数据源为缓存数据,指定缓存数据名称,设置为通过字节偏移(0:1)来获取数据。

配置的规则如下:
在这里插入图片描述
3.1.6 功能码

功能码为PDU首部,在单元标识符后面,从已缓存的readdata参数里去进行解析。定义名为function的参数,设置解析数据源为缓存数据,指定缓存数据名称,设置为通过字节偏移(1:2)来获取功能码对应数据。

配置的规则如下:
在这里插入图片描述
3.1.7 数据

数据为PDU第二部分,从已缓存的readdata参数里去进行解析。定义名为data的参数,设置解析数据源为缓存数据,指定缓存数据名称,设置为通过字节偏移(2:{{length}})来获取请求数据。

配置的规则如下:
在这里插入图片描述
最终配置完成的解析参数完整列表如下:
在这里插入图片描述
3.2 请求响应配置

3.2.1 协议格式检查

需要先检查是否为有效的Modbus请求,根据协议标识符以及实际读取的数据长度是否和报文头里定义的长度一致来判断。如果不满足条件,则为非Modbus协议连接,直接关闭TCP连接。

判断协议标识符是否有效规则定义如下:
在这里插入图片描述
判断数据长度是否有效规则定义如下:
在这里插入图片描述
3.2.2 读线圈

在设备中读线圈状态(功能码为0x01)

● 请求:MBAP 功能码 起始地址H 起始地址L 数量H 数量L

● 响应:MBAP 功能码 数据长度 数据

本示例直接返回设备故障的异常功能码(81)和错误码(04),读者可以按需修改为所需的返回数据。返回数据后跳转到第一个参数,重新接收新的请求。

对应的响应数据配置规则如下:
在这里插入图片描述
3.2.3 写单个线圈

写设备中的一个输出(功能码为0x05)

● 请求:MBAP 功能码 输出地址H 输出地址L 输出值H 输出值L

● 响应:MBAP 功能码 输出地址H 输出地址L 输出值H 输出值L

本示例直接返回设备故障的异常功能码(85)和错误码(04),读者可以按需修改为所需的返回数据。返回数据后跳转到第一个参数,重新接收新的请求。

对应的响应数据配置规则如下:
在这里插入图片描述
3.2.4 写多个线圈

写设备中的一个线圈序列的值(功能码为0x0F)

● 请求:MBAP 功能码 起始地址H 起始地址L 输出数量H 输出数量L 字节长度 输出值H 输出值L

● 响应:MBAP 功能码 起始地址H 起始地址L 输出数量H 输出数量L

本示例直接返回设备故障的异常功能码(95)和错误码(04),读者可以按需修改为所需的返回数据。返回数据后跳转到第一个参数,重新接收新的请求。

对应的响应数据配置规则如下:
在这里插入图片描述
3.2.5 读离散量输入

从设备中读多个连续的离散量输入状态(功能码为0x02)

● 请求:MBAP 功能码 起始地址H 起始地址L 数量H 数量L

● 响应:MBAP 功能码 数据长度 数据

本示例直接返回设备故障的异常功能码(82)和错误码(04),读者可以按需修改为所需的返回数据。返回数据后跳转到第一个参数,重新接收新的请求。

对应的响应数据配置规则如下:
在这里插入图片描述
3.2.6 读输入寄存器

从设备中读多个连续输入寄存器(功能码为0x04)

● 请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L

● 响应:MBAP 功能码 数据长度 寄存器数据

本示例直接返回设备故障的异常功能码(84)和错误码(04),读者可以按需修改为所需的返回数据。返回数据后跳转到第一个参数,重新接收新的请求。

对应的响应数据配置规则如下:
在这里插入图片描述
3.2.7 读保持寄存器

从设备中读保持寄存器连续块的内容(功能码为0x03)

● 请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L

● 响应:MBAP 功能码 数据长度 寄存器数据

本示例直接返回设备故障的异常功能码(83)和错误码(04),读者可以按需修改为所需的返回数据。返回数据后跳转到第一个参数,重新接收新的请求。

对应的响应数据配置规则如下:
在这里插入图片描述
3.2.8 写单个保持寄存器

在设备中写一个保持寄存器(功能码为0x06)

● 请求:MBAP 功能码 寄存器地址H 寄存器地址L 寄存器值H 寄存器值L

● 响应:MBAP 功能码 寄存器地址H 寄存器地址L 寄存器值H 寄存器值L

本示例直接返回设备故障的异常功能码(86)和错误码(04),读者可以按需修改为所需的返回数据。返回数据后跳转到第一个参数,重新接收新的请求。

对应的响应数据配置规则如下:
在这里插入图片描述
3.2.9 写多个保持寄存器

在设备中写连续寄存器块(功能码为0x10)

● 请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L 字节长度 寄存器值

● 响应:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L

本示例直接返回设备故障的异常功能码(96)和错误码(04),读者可以按需修改为所需的返回数据。返回数据后跳转到第一个参数,重新接收新的请求。

对应的响应数据配置规则如下:
在这里插入图片描述
3.2.10 未知操作处理

如果功能码非上述值,则为不支持的功能码请求操作,直接关闭链接。
在这里插入图片描述

4 蜜罐部署效果

在DecoyMini上部署配置好的Modbus仿真模板,用Modbus工具来进行连接测试,设置正确的IP和端口后可以正常连接。
在这里插入图片描述
执行各种功能请求,也可以按预期进行正确响应。
在这里插入图片描述
由此可见,通过DecoyMini的仿真模板经过简单的配置就实现了对Modbus工控协议、设备的仿真。以上配置的模板可以到http://bbs.decoyit.com/template.php下载,此模板仅配置了Modbus的基本功能,读者可以根据自己的需求去改进以支持更完善的功能、仿真模拟不同的工控设备,实现更完备、多样化的高仿真的工控设备攻击诱捕环境。

DecoyMini免费蜜罐工具的仿真模板功能具有很强的仿真自定义能力,后继将为大家继续分享基于此免费工具来实现对更多协议、服务和应用的仿真自定义方法,敬请期待!大家感兴趣的可以下载工具安装体验,工具免费下载地址:https://github.com/decoymini

相关文章:

用免费蜜罐工具配置Modbus工控蜜罐

导语:本文将用DecoyMini免费蜜罐工具来配置自定义的ModbusTCP工控仿真模板,并介绍部署后的Modbus蜜罐的使用效果。 DecoyMini是一个免费的蜜罐工具,其特色是仿真能力采用与软件松耦合的仿真模板来进行管理。通过一键式导入云端仿真模板库里的…...

DataGridXL中快速搜索单元格和底部全屏模式区域隐藏

DataGridXL表格是在2020年发布,DataGridXL在设计时就考虑到了性能。提供最快、最简单、最可靠的数据网格。DataGridXL支持所有常用所有的浏览器,为 Web 应用程序提供类似于 Microsoft Excel 的体验,它支持前端框架有Vue、React、Angular等。 …...

DotNet几种微服务框架,你用过吗?

最近有群友问,.NET有哪些微服务框架?.NET的微服务框架还真不多,一般企业都会自己搭建微服务框架,或者基于其它框架搭建微服务(比如abp)。本文将介绍几种微服务框架,供大家学习参考。 一、Servi…...

Nature | 生成式人工智能如何构建更好的抗体

疫情高峰期,研究人员竞相开发一些首批有效的COVID-19治疗方法:从已经康复的人的血液中分离出来的抗体分子。 现在,科学家已经证明,生成式人工智能(AI)可以通过一些繁琐的过程提供捷径,提出增强抗…...

【hive】基于Qt5和libuv udp 的lan chat

作者已经不更新了,但是很棒 在线用户列表: 聊天窗口 主程序 单独的网络线程: network_thread data管理关联网络管理的 程序update升级更新 和消息收到 即可...

Java版本工程项目管理系统源码,助力工程企业实现数字化管理

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…...

什么是零拷贝?

零拷贝 什么是零拷贝 零拷贝指的是,从一个存储区域到另一个存储区域的copy任务无需CPU参与就可完成。零拷贝的底层是 通过DMA总线技术实现的。零拷贝与具体的编程语言无关,完全依赖于OS,OS支持就可使用,不支持 设置了也不起作用…...

计算机专业含金量高的证书

目录 第一种证书:计算机技术与软件专业资格考试证书 第二种证书:微软认证 第三种证书:Oracle认证 第四种证书:思科认证 第五种证书:华为认证 第六种证书:红帽认证工程师 第七种证书:阿里…...

原装二手Keithley 2401低压源表 吉时利2401数字源表

Keithley 2401低压源表,20V,1A,20W Keithley 2401 低压源表提供精密电压和电流源和测量功能(1V - 20V 和 10pA - 1A)。它既是高度稳定的直流电源,又是真正的仪器级 5 位万用表。电源特性包括低噪声、精度和…...

gradle-8.1.1-all 快速下载百度网盘下载

Gradle 8.1.1 发布 这是Gradle 8.1的第一个补丁发布。 它修复了以下3个问题: 为配置缓存检测具有数千个lambdas的类时出现MethodTooLargeException;用Gradle 8.1构建的Kotlin DSL预编译脚本插件不能用于其他版本的Gradle;Gradle 8.1在buil…...

C#开发的OpenRA游戏之基地工程车部署命令产生过程

C#开发的OpenRA游戏之基地工程车部署命令产生过程 OpenRA游戏里,前面已经分析基地工程车部署的流程, 但那只是一个框架的流程,只能理解大体的框架, 如果想要深入一步了解怎么样产生部署命令,还需继续探讨以下的代码。 基地工程车是先选中,然后再在基地工程车上面点击右…...

C++ 智能指针的原理、分类、使用

1. 智能指针介绍 为解决裸指针可能导致的内存泄漏问题。如: a)忘记释放内存; b)程序提前退出导致资源释放代码未执行到。 就出现了智能指针,能够做到资源的自动释放。 2. 智能指针的原理和简单实现 2.1 智能指针的原…...

学习笔记——SVG.js中形状元素的创建及其相关方法

CreateElement 1)创建svg元素 在svg.js中,每个元素都是一个对象,可以通过构造它来创建: import { Rect } from "svgdotjs/svg.js" var rect new Rect().size(100, 100).addTo(draw) // or to reuse an existing nod…...

Linux一学就会——系统文件I/O

Linux一学就会——系统文件I/O 有几种输出信息到显示器的方式 #include <stdio.h> #include <string.h> int main() {const char *msg "hello fwrite\n";fwrite(msg, strlen(msg), 1, stdout);printf("hello printf\n");fprintf(stdout, &q…...

OpenCV-Python图像阈值

目录 简单阈值 自适应阈值 Otsu的二值化 所谓的图像阈值&#xff0c;就是图像二值化&#xff0c;什么是二值化&#xff0c;就是只有0和1&#xff0c;没有其他的。在OpenCV的图像里面&#xff0c;二值化表示图像的像素为0和255&#xff0c;并没有其他的值&#xff0c;它跟灰度…...

LangChain-Agents 入门指南

LangChain-Agents 入门指南 LangChain-Agents 入门指南注册 Serpapi运行高级 Agents API 测试运行 Google Search其它 Here’s the table of contents: LangChain-Agents 入门指南 LangChain是一个使用LLMs构建应用程序的工具箱&#xff0c;包含Models、Prompts、Indexes、Mem…...

深度学习-tensorflow 使用keras进行深度神经网络训练

概要 深度学习网络的训练可能会很慢、也可能无法收敛&#xff0c;本文介绍使用keras进行深度神经网络训练的加速技巧&#xff0c;包括解决梯度消失和爆炸问题的策略&#xff08;参数初始化策略、激活函数策略、批量归一化、梯度裁剪&#xff09;、重用预训练层方法、更快的优化…...

【NLP开发】Python实现聊天机器人(ChatterBot,集成前端页面)

&#x1f37a;NLP开发系列相关文章编写如下&#x1f37a;&#xff1a; &#x1f388;【NLP开发】Python实现词云图&#x1f388;&#x1f388;【NLP开发】Python实现图片文字识别&#x1f388;&#x1f388;【NLP开发】Python实现中文、英文分词&#x1f388;&#x1f388;【N…...

Python 操作 Excel,如何又快又好?

➤数据处理是 Python 的一大应用场景&#xff0c;而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时&#xff0c;难免要和 Excel 打交道。Python处理Excel 常用的系列库有&#xff1a;xlrd、xlwt、xlutils、openpyxl ◈xlrd &#xff0d; 用于读取 Exce…...

Spring Redis 启用TLS配置支持(踩坑解决)

由于线上Redis要启用TLS,搜遍了google百度也没一个标准的解决方案,要不这个方法没有,要不那个类找不到...要不就是配置了还是一直连不上redis.... 本文基于 spring-data-redis-2.1.9.RELEASE 版本来提供一个解决方案: 1.运维那边提供过来三个文件,分别是redis.crt redis.key …...

ZjDroid命令大全:从DEX内存dump到Lua脚本注入的完整教程

ZjDroid命令大全&#xff1a;从DEX内存dump到Lua脚本注入的完整教程 【免费下载链接】ZjDroid Android app dynamic reverse tool based on Xposed framework. 项目地址: https://gitcode.com/gh_mirrors/zj/ZjDroid ZjDroid是一款基于Xposed框架的Android应用动态逆向分…...

身份证OCR识别接口接入实战:Python/Java/PHP/C#四语言代码示例与踩坑指南

#身份证OCR, #OCR接口, #API接入, #Python示例, #Java示例, #PHP示例, #踩坑指南, #石榴智能, #实名认证, #图片识别 身份证OCR识别接口接入实战&#xff1a;Python/Java/PHP/C#四语言代码示例与踩坑指南 作者&#xff1a;石榴智能技术团队 一、前言 身份证OCR识别已经不是什…...

销售怎么通过各种方法获取电话号码

第一种就是那个用爬虫电话号码&#xff0c;然后再打电话给客户。第二种是在别人的挪车电话看车挪车电话&#xff0c;然后再打电话找客户。第三就是。扫楼一顿顿的扫&#xff0c;第四就是这个那种商店&#xff0c;一个个的去问陌拜地推一个个的问店子要不要贷款&#xff0c;去问…...

SAP-ABAP:变量、常量、结构与内表声明(10篇博客合集) 第五篇:声明时的键值设计技巧:结构与内表的主键、非主键配置指南

变量、常量、结构与内表声明&#xff08;10篇博客合集&#xff09; 第五篇&#xff1a;声明时的键值设计技巧&#xff1a;结构与内表的主键、非主键配置指南如果把内表比作一张内存中的“数据库表”&#xff0c;那么键就是这张表的索引甚至主键。键的设计直接决定了数据的唯一性…...

光效崩坏?噪点泛滥?色温漂移?——Midjourney专业级光效渲染全流程校准协议,含ACEScg色彩空间适配模板

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;光效崩坏、噪点泛滥与色温漂移的系统性归因诊断 图像采集链路中出现的光效崩坏、噪点泛滥与色温漂移并非孤立现象&#xff0c;而是光学设计、传感器响应、ISP管线调度及环境耦合失配共同作用的结果。三者常呈现…...

Owl-Alpha 新手快速上手指南

在处理大规模数据或构建高性能应用时&#xff0c;我们常常会遇到一个棘手的问题&#xff1a;如何在不阻塞主线程的情况下&#xff0c;高效地执行耗时任务&#xff1f;无论是处理图像、解析大型文件&#xff0c;还是进行复杂的数学运算&#xff0c;传统的单线程模式往往会让界面…...

如何快速集成 react-native-bottom-sheet-behavior:5 分钟搞定 Android 底部弹窗

如何快速集成 react-native-bottom-sheet-behavior&#xff1a;5 分钟搞定 Android 底部弹窗 【免费下载链接】react-native-bottom-sheet-behavior react-native wrapper for android BottomSheetBehavior 项目地址: https://gitcode.com/gh_mirrors/re/react-native-bottom…...

输电线路在线监测系统|架空线路安全运行的“第一道防线“!

输电线路微气象监测站是专为高压输电线路、电网廊道、杆塔运维量身打造的专利级一体化微气象智能监测设备。依托双专利超声波探测技术、六要素集成传感架构、无启动风速高精测量、智能抗干扰稳控系统&#xff0c;实现输电线路沿线气象24小时全自动捕捉、动态实时监测、大风风险…...

Noto字体终极指南:告别“豆腐块“,让全球文字清晰显示

Noto字体终极指南&#xff1a;告别"豆腐块"&#xff0c;让全球文字清晰显示 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 在数字世界中&#xff0c;你是否经常看到那些令人困…...

VisualCppRedist AIO:Windows系统依赖问题终极解决方案,一键修复所有VC++运行库

VisualCppRedist AIO&#xff1a;Windows系统依赖问题终极解决方案&#xff0c;一键修复所有VC运行库 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经…...