工业控制(ICS)---modbus

Modbus

Modbus,市场占有率高、出题频率高,算是最常见的题目,因为这个协议也是工控领域最常见的协议之一,主要有三类

Modbus/RTU

从机地址1B+功能码1B+数据字段xB+CRC值2B

最大长度256B,所以数据字段最大长度252B

Modbus/ASCII

由Modbus/RTU衍生,采用0123456789ABCDEF 表示原本的从机地址、功能码、数据字段,并添加开始结束标记,所以长度翻倍

开始标记:(0x3A)1B+从机地址2B+功能码2B+数据字段xB+LRC值2B+结束标记\r\n2B

最大长度513B,因为数据字段在RTU中是最大252B,所以在ASCII中最大504B

Modbus/TCP

不再需要从机地址,改用UnitID;不再需要CRC/LRC,因为TCP自带校验

传输标识符2B+协议标识符2B+长度2B+从机ID 1B+功能码1B+数据字段xB

题目中一般只考Modbus/TCP类型

功能码(常见)

bash 复制代码
1:读线圈
2:读离散输入
3:读保持
4:读输入
5:写单个线圈
6:写单个保持
15:写多个线圈
16:写多个保持

筛选出所有Modbus协议流量,发现有多种功能码,一个一个查询是否有异常流量

首先是17,发现请求包中无其他参数,查看前面几个回包均发现060000数据,猜测此为正常流量,于是将060000作为不查询条件

modbus and modbus.func_code == 17 and modbus.data!=06:00:00

没有其余流量,判断功能码17无问题,将17作为不查询条件接着查看下一个功能码

功能码109:查询和返回都有数据,先将查询的数据54不选中,得到大量返回包,将其数据00不选中

没有异常流量,查询下一功能码

功能码67:方式同上,这里将返回数据有多种情况

最终在功能码1中发现异常

(modbus.func_code == 1) && (modbus.bit_cnt != 8)

有请求包就有返回包,四个包都是异常的,但是异常一定是有请求数据异常导致,所以实际上只需找到请求包即可

筛选条件有多种方式

(((((modbus.func_code == 1)) && !(modbus.reference_num == 0)) && !(modbus.reference_num == 1536)) && !(frame[63:1] == 00)) && !(frame[63:1] == fe)

参考:https://blog.csdn.net/song123sh/article/details/128387982

相关推荐
Chockmans几秒前
春秋云境CVE-2019-8933
安全·web安全·网络安全·网络攻击模型·安全威胁分析·春秋云境·cve-2019-8933
说再见再也见不到几秒前
华为交换机端口隔离(port-isolate)
linux·服务器·网络·华为·交换机·端口隔离·port-isolate
m0_738120721 分钟前
渗透基础知识ctfshow——Web应用安全与防护(完结:第八章)
前端·python·sql·安全·web安全·网络安全
ん贤4 分钟前
如何设计一个灵活、高效、安全的 AI 工具系统
人工智能·安全·go
他是龙5517 分钟前
66:Java安全&SPEL表达式&SSTI模版注入&XXE&JDBC&MyBatis注入
java·安全·mybatis
安静轨迹7 分钟前
网口Bond模式详解:7种模式通俗解析
网络·网络协议
风曦Kisaki7 分钟前
企业级网络架构Day02:数据链路层、交换机原理、VLAN技术、Trunk中继链路、链路聚合
网络·架构
上海控安8 分钟前
汽车数字钥匙安全风险及渗透实践解析
网络·安全
renhongxia112 分钟前
从内部进行大型语言模型安全
大数据·人工智能·安全·语言模型·自然语言处理·逻辑回归
汽车仪器仪表相关领域12 分钟前
Kvaser Leaf Light HS v2 CB:裸卡式CAN接口新标杆,赋能车载与工业集成测试高效升级
服务器·网络·数据库·人工智能·单元测试·自动化·汽车