安心农品计划”同期启动,三年扶持100个地标农品品牌。

8月5日,腾讯安全正式对外发布战略新品——腾讯安心平台。该平台基于腾讯在一物一码、区块链等前沿技术领域的积累和探索,结合二十多年的黑灰产对抗经验和安全能力沉淀,致力于帮助企业实现从商品生产过程、流通过程、营销过程的全链路数字化管理,为每一件商

安心农品计划”同期启动,三年扶持100个地标农品品牌。

8月5日,腾讯安全正式对外发布战略新品——腾讯安心平台。该平台基于腾讯在一物一码、区块链等前沿技术领域的积累和探索,结合二十多年的黑灰产对抗经验和安全能力沉淀,致力于帮助企业实现从商品生产过程、流通过程、营销过程的全链路数字化管理,为每一件商

640.png

因近期国内多地再次出现新冠疫情,疫情防控形势依然严峻。为积极响应党中央国务院决策部署和北京市政府对疫情防控的工作要求,避免人群聚集,保障参会嘉宾的健康与安全,XCon组委会经审慎研究,抱歉的通知您,原定于2021年8月18-19日于北京·望京昆泰酒店举行的XCon2021安全焦点信息安全技术峰会暨XCon20年庆典活动将延期举办。

计划推迟举办时间至2021年10月12日,大会时间由原定2天改为1天。届时组委会将综合评估国内疫情的发展动态,确定会议是否如期举行。

在此,我们真诚的感谢您对XCon会议的关注与支持,为此给您造成的不便我们深表遗憾。我们希望与您一道妥善做好大会延期平移工作、日程规划及门票的延期或退款工作,具体退款方式详见下文说明,再次感谢您的理解与支持。

票价调整与退款

【已报名嘉宾】

由于会议延期给已经安排行程的嘉宾造成了困扰,组委会经协商决定,对已报名并完成票款支付的嘉宾,您可根据变更后的行程选择是否继续参与会议。

如您选择继续参会,请您在XCon官方公众号(ID:XConXFocus)后台留言:继续参会+您购票时的手机号,您将享受原优惠票价的5折优惠(即:¥1,940元),已支付的票款超出部分会务组将原路退返至您的支付账户。

如您选择全额退款,您可在XCon官方公众号后台留言:退款+您购票时的手机号,组委会将会原路退返您的票款。

*以上操作请于8月20日前完成,逾期未回复,组委会将视为继续参会。如您在退款过程中遇到任何问题,请致电XCon组委会工作人员:010-64780062

【未报名嘉宾】

为有效控制疫情传播,会议在延期举办的同时将缩减会议周期,以最大限度地保障参会嘉宾的健康与生命安全。因此,对于未购票的嘉宾,您可在10月10日前享受优惠票价的7折优惠(¥2,710元)

即刻扫码,领取优惠福利

640 (1).png

活动时间、地点及日程调整

【活动时间】

计划于2021年10月12日举办

(组委会将视疫情进展情况,最终确定会议举办时间。如有变更另行通知。)

【活动地点】

北京市·朝阳区望京昆泰酒店

老地方,精彩延续

【活动议程】

9场权威技术演讲

来自顶尖安全人的技术干货

9场XReward开放路演

分享最新研究成果,发掘行业新生力量

沉浸式黑客体验馆·高能袭来

极限体验官免费招募,更有盲盒式豪礼等你抽取

For Free!For Free!For Free!


对于活动延期给大家带来的不便我们再一次深表歉意。真诚的感谢大家对XCon的支持与关注。

作为国内信息安全领域历史最悠久、举办规模最大、知名度最高的闭门型技术峰会,XCon持续致力于国内优质安全生态的构建,并着力为国内外安全技术的分享,交流与合作架设互联共通的桥梁。

今年,XCon正值品牌发展的第20年,长大后的XCon将在推动国内信息安全产业转型升级的同时肩负起更加艰巨的社会责任与使命。在这个特殊的时期,我们希望大家能做好个人防护,科学佩戴口罩,勤洗手,常通风,保持安全的社交距离,让我们一起齐心协力,早日阻断疫情的传播链,也让我们共同期待更加美好的相见!

有关大会的更多动态,请持续关注XCon官方公众号(ID:XConXFocus)!

XCon组委会

2021年8月

扫描下方蓝色二维码

即可进入购票页面

640 (12).png

640.png

因近期国内多地再次出现新冠疫情,疫情防控形势依然严峻。为积极响应党中央国务院决策部署和北京市政府对疫情防控的工作要求,避免人群聚集,保障参会嘉宾的健康与安全,XCon组委会经审慎研究,抱歉的通知您,原定于2021年8月18-19日于北京·望京昆泰酒店举行的XCon2021安全焦点信息安全技术峰会暨XCon20年庆典活动将延期举办。

计划推迟举办时间至2021年10月12日,大会时间由原定2天改为1天。届时组委会将综合评估国内疫情的发展动态,确定会议是否如期举行。

在此,我们真诚的感谢您对XCon会议的关注与支持,为此给您造成的不便我们深表遗憾。我们希望与您一道妥善做好大会延期平移工作、日程规划及门票的延期或退款工作,具体退款方式详见下文说明,再次感谢您的理解与支持。

票价调整与退款

【已报名嘉宾】

由于会议延期给已经安排行程的嘉宾造成了困扰,组委会经协商决定,对已报名并完成票款支付的嘉宾,您可根据变更后的行程选择是否继续参与会议。

如您选择继续参会,请您在XCon官方公众号(ID:XConXFocus)后台留言:继续参会+您购票时的手机号,您将享受原优惠票价的5折优惠(即:¥1,940元),已支付的票款超出部分会务组将原路退返至您的支付账户。

如您选择全额退款,您可在XCon官方公众号后台留言:退款+您购票时的手机号,组委会将会原路退返您的票款。

*以上操作请于8月20日前完成,逾期未回复,组委会将视为继续参会。如您在退款过程中遇到任何问题,请致电XCon组委会工作人员:010-64780062

【未报名嘉宾】

为有效控制疫情传播,会议在延期举办的同时将缩减会议周期,以最大限度地保障参会嘉宾的健康与生命安全。因此,对于未购票的嘉宾,您可在10月10日前享受优惠票价的7折优惠(¥2,710元)

即刻扫码,领取优惠福利

640 (1).png

活动时间、地点及日程调整

【活动时间】

计划于2021年10月12日举办

(组委会将视疫情进展情况,最终确定会议举办时间。如有变更另行通知。)

【活动地点】

北京市·朝阳区望京昆泰酒店

老地方,精彩延续

【活动议程】

9场权威技术演讲

来自顶尖安全人的技术干货

9场XReward开放路演

分享最新研究成果,发掘行业新生力量

沉浸式黑客体验馆·高能袭来

极限体验官免费招募,更有盲盒式豪礼等你抽取

For Free!For Free!For Free!


对于活动延期给大家带来的不便我们再一次深表歉意。真诚的感谢大家对XCon的支持与关注。

作为国内信息安全领域历史最悠久、举办规模最大、知名度最高的闭门型技术峰会,XCon持续致力于国内优质安全生态的构建,并着力为国内外安全技术的分享,交流与合作架设互联共通的桥梁。

今年,XCon正值品牌发展的第20年,长大后的XCon将在推动国内信息安全产业转型升级的同时肩负起更加艰巨的社会责任与使命。在这个特殊的时期,我们希望大家能做好个人防护,科学佩戴口罩,勤洗手,常通风,保持安全的社交距离,让我们一起齐心协力,早日阻断疫情的传播链,也让我们共同期待更加美好的相见!

有关大会的更多动态,请持续关注XCon官方公众号(ID:XConXFocus)!

XCon组委会

2021年8月

扫描下方蓝色二维码

即可进入购票页面

640 (12).png

本文作者:Falcon

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字节,组成如下:

微信截图_20210805133839.png

各属性含义解释如下:

2.1.2 帧结构PDU

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

功能码定义

Modbus的操作对象有四种:线圈、离散输入、保持寄存器、输入寄存器。

微信截图_20210805133925.png

根据对象的不同,Modbus的功能码定义如下:

微信截图_20210805133937.png

功能码更详细的说明如下:

微信截图_20210805133945.png

错误代码表说明如下:

微信截图_20210805133937.png

更详细的协议格式定义,请读者查阅Modbus协议规范。

3 仿真模板配置

了解ModbusTCP协议后,开始Modbus仿真模板配置。安装好DecoyMini工具,登录进管理中心。

image.png

进入仿真模板,用TCP自定义引擎新建“ Modbus TCP 协议”模板,设置基本的模板参数,开始结合Modbus协议格式来配置模板对应的解析规则。

3.1 请求数据解析

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

3.1.1 事务处理标识

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

配置的规则如下:

11.png

3.1.2 协议标识

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

配置的规则如下:

22.png

3.1.3 数据长度

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

配置的规则如下:

33.png

3.1.4 读取数据区域

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

配置的规则如下:

44.png

3.1.5 单元标识符

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

配置的规则如下:

55.png

3.1.6 功能码

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

配置的规则如下:

66.png

3.1.7 数据

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

配置的规则如下:

77.png

最终配置完成的解析参数完整列表如下:

88.png

3.2 请求响应配置

3.2.1 协议格式检查

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

判断协议标识符是否有效规则定义如下:

99.png

判断数据长度是否有效规则定义如下:

00.png

3.2.2 读线圈

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

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

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

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

对应的响应数据配置规则如下:

101.png

3.2.3 写单个线圈

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

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

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

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

对应的响应数据配置规则如下:

102.png

3.2.4 写多个线圈

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

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

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

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

对应的响应数据配置规则如下:

103.png

3.2.5 读离散量输入

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

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

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

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

对应的响应数据配置规则如下:

104.png

3.2.6 读输入寄存器

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

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

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

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

对应的响应数据配置规则如下:

105.png

3.2.7 读保持寄存器

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

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

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

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

对应的响应数据配置规则如下:

106.png

3.2.8 写单个保持寄存器

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

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

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

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

对应的响应数据配置规则如下:

107.png

3.2.9 写多个保持寄存器

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

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

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

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

对应的响应数据配置规则如下:

108.png

3.2.10 未知操作处理

如果功能码非上述值,则为不支持的功能码请求操作,直接关闭链接。

109.png

4 蜜罐部署效果

在DecoyMini上部署配置好的Modbus仿真模板,用Modbus工具来进行连接测试,设置正确的IP和端口后可以正常连接。

110.png

执行各种功能请求,也可以按预期进行正确响应。

111.png

由此可见,通过DecoyMini的仿真模板经过简单的配置就实现了对Modbus工控协议、设备的仿真。以上配置的模板可以到http://bbs.decoyit.com/template.php下载,此模板仅配置了Modbus的基本功能,读者可以根据自己的需求去改进以支持更完善的功能、仿真模拟不同的工控设备,实现更完备、多样化的高仿真的工控设备攻击诱捕环境。

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

本文作者:Falcon

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字节,组成如下:

微信截图_20210805133839.png

各属性含义解释如下:

2.1.2 帧结构PDU

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

功能码定义

Modbus的操作对象有四种:线圈、离散输入、保持寄存器、输入寄存器。

微信截图_20210805133925.png

根据对象的不同,Modbus的功能码定义如下:

微信截图_20210805133937.png

功能码更详细的说明如下:

微信截图_20210805133945.png

错误代码表说明如下:

微信截图_20210805133937.png

更详细的协议格式定义,请读者查阅Modbus协议规范。

3 仿真模板配置

了解ModbusTCP协议后,开始Modbus仿真模板配置。安装好DecoyMini工具,登录进管理中心。

image.png

进入仿真模板,用TCP自定义引擎新建“ Modbus TCP 协议”模板,设置基本的模板参数,开始结合Modbus协议格式来配置模板对应的解析规则。

3.1 请求数据解析

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

3.1.1 事务处理标识

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

配置的规则如下:

11.png

3.1.2 协议标识

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

配置的规则如下:

22.png

3.1.3 数据长度

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

配置的规则如下:

33.png

3.1.4 读取数据区域

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

配置的规则如下:

44.png

3.1.5 单元标识符

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

配置的规则如下:

55.png

3.1.6 功能码

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

配置的规则如下:

66.png

3.1.7 数据

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

配置的规则如下:

77.png

最终配置完成的解析参数完整列表如下:

88.png

3.2 请求响应配置

3.2.1 协议格式检查

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

判断协议标识符是否有效规则定义如下:

99.png

判断数据长度是否有效规则定义如下:

00.png

3.2.2 读线圈

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

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

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

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

对应的响应数据配置规则如下:

101.png

3.2.3 写单个线圈

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

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

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

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

对应的响应数据配置规则如下:

102.png

3.2.4 写多个线圈

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

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

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

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

对应的响应数据配置规则如下:

103.png

3.2.5 读离散量输入

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

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

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

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

对应的响应数据配置规则如下:

104.png

3.2.6 读输入寄存器

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

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

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

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

对应的响应数据配置规则如下:

105.png

3.2.7 读保持寄存器

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

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

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

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

对应的响应数据配置规则如下:

106.png

3.2.8 写单个保持寄存器

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

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

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

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

对应的响应数据配置规则如下:

107.png

3.2.9 写多个保持寄存器

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

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

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

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

对应的响应数据配置规则如下:

108.png

3.2.10 未知操作处理

如果功能码非上述值,则为不支持的功能码请求操作,直接关闭链接。

109.png

4 蜜罐部署效果

在DecoyMini上部署配置好的Modbus仿真模板,用Modbus工具来进行连接测试,设置正确的IP和端口后可以正常连接。

110.png

执行各种功能请求,也可以按预期进行正确响应。

111.png

由此可见,通过DecoyMini的仿真模板经过简单的配置就实现了对Modbus工控协议、设备的仿真。以上配置的模板可以到http://bbs.decoyit.com/template.php下载,此模板仅配置了Modbus的基本功能,读者可以根据自己的需求去改进以支持更完善的功能、仿真模拟不同的工控设备,实现更完备、多样化的高仿真的工控设备攻击诱捕环境。

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

2021年8月4日,JFrog和Forescout的研究人员发布了一份联合报告,公开披露了在NicheStack TCP/IP堆栈中发现的14个安全漏洞

Forescout和JFrog Security研究人员在NicheStack中发现的14个漏洞被统称为“INFRA:HALT”允许远程代码

2021年8月4日,JFrog和Forescout的研究人员发布了一份联合报告,公开披露了在NicheStack TCP/IP堆栈中发现的14个安全漏洞

Forescout和JFrog Security研究人员在NicheStack中发现的14个漏洞被统称为“INFRA:HALT”允许远程代码