工控CTF之协议分析1——Modbus

协议分析

流量分析

主要以工控流量和恶意流量为主,难度较低的题目主要考察Wireshark使用和找规律,难度较高的题目主要考察协议定义和特征
简单只能简单得干篇一律,难可以难得五花八门

常见的工控协议有:ModbusMMSIEC60870MQTT、CoAP、COTP、IEC104、IEC61850、S7commOMRON

由于工控技术起步较早但是统一的协议规范制定较晚,所以许多工业设备都有自己的协议,网上资料数量视其设备普及程度而定,还有部分协议为国家制定,但仅在自己国内使用,网上资料数量视其影响力而定

CTF之协议分析文章合集

工控CTF之协议分析1——Modbus
工控CTF之协议分析2——MMS
工控CTF之协议分析3——IEC60870
工控CTF之协议分析4——MQTT
工控CTF之协议分析5——COTP
工控CTF之协议分析6——s7comm
工控CTF之协议分析7——OMRON
工控CTF之协议分析8——特殊隧道
工控CTF之协议分析9——其他协议
文中题目链接如下
站内下载
网盘下载:https://pan.baidu.com/s/1vWowLRkd0IdvL8GoMxG-tA?pwd=jkkg
提取码:jkkg

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类型

功能码(常见)

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

例题1 HNGK-Modbus流量分析

打开流量包发现基本都是Modbus/TCP协议,包含少量TCP协议,第一个筛选条件,找出所有Modbus协议

image-20221204174443110

第二个筛选条件:分析功能码,以功能码为1举例

image-20221204174802308

第三筛选条件,找回包(对比发现回包有一个代表长度的Byte Count),且发现看似是二进制的乱码

image-20221204175519470

查找每一个功能码,最终在功能码16找到flag

image-20221204175337229

例题2 HNGK-modbus(异常流量)

flag为异常流量的序号

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

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

image-20221204180959778

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

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

image-20221204181412183

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

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

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

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

image-20221204191810369

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

筛选条件有多种方式

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

image-20221204192317360

例题3 HNGK-modbus协议分析(偏脑洞)

以Modbus协议为条件筛选,发现功能码大部分为3,少数为2和6,老规矩,一个一个分析

以功能码3为例:请求包几乎都一样,无明显异常

image-20221209192944023

筛回复包,题中源ip为192.1688.161.2的是回复,所以ip.src == 192.168.161.2

可以看到有很多无效数据

image-20221209193157264

将无效数据筛除,条件有很多,这里筛选包含byte count的数据即为回复数据

从头到尾看一遍会发现响应值逐渐出现数据,看似很有规律且都是键盘上那一行字符

复制16进制流并剔除不需要的杂数据

image-20221209194256817

将无用字符00删除,得到有用十六进制

image-20221209200850842

将其转为十进制

image-20221209201231024

这一题的脑洞也就是这里,将十进制当做十六进制处理,发现居然没有乱码,得到的结果很合理

image-20221209202321485

再解十六进制得到明显base64,解得flag

hngk是CTF (Capture The Flag)比赛中关于MMS(Multimedia Messaging Service)协议分析的题目。 MMS协议是一种用于在移动设备之间传输多媒体信息的协议。要解决这个hngk问题,我们需要先了解MMS协议的基本结构和特点。 MMS协议包括多个消息体,每个消息体都带有特定的头部和正文。在分析hngk题目时,我们需要检查MMS消息包的头部和正文,以确定其中所包含的信息。 首先,我们需要对MMS消息包进行解析,查看头部的字段信息。头部中通常包含了发送者和接收者的信息、消息的类型、MMS版本、时间戳等。通过分析头部信息,我们可以确定MMS消息的基本属性。 接下来,我们需要查看MMS消息包的正文内容。正文可以是文本、图片、音频、视频等多种媒体类型。我们需要仔细研究正文中的各个部分,以确定是否存在隐藏的信息。在hngk题目中,可能会有一些隐藏的命令、密码或者其他关键信息,通过分析正文内容,我们可以找到这些隐藏信息。 同时,我们还需要分析MMS消息包的编码方式。MMS消息可以使用多种编码方式进行数据传输,如Binary、Base64等。根据题目要求,我们可能需要对这些编码方式进行解码,以得到真正的数据。 总结来说,解决hngk问题需要对MMS协议的消息包进行逐层分析,包括头部字段、正文内容和编码方式。通过仔细研究这些信息,我们可以找到隐藏的命令或密码,从而解决这个题目。在这个过程中,需要运用MMS协议的相关知识和分析技巧。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shadow丶S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值