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

news2025/1/31 18:36:10

协议分析

流量分析

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

常见的工控协议有:Modbus、MMS、IEC60870、MQTT、CoAP、COTP、IEC104、IEC61850、S7comm、OMRON等

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

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

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

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

相关文章

猿如意中的【Parrot-树莓派-5.0 arm64位 】工具框架的介绍详情

目录 一、工具名称 二、下载安装渠道 2.1 什么是猿如意? 2.2 如何下载猿如意? 三、工具介绍 四、Parrot-树莓派-5.0 arm64位功能介绍 五、软件安装过程 5.1 如何在猿如意中下载开发框架Parrot-树莓派-5.0 arm64位? 5.2 下载完成的Pa…

JMeter中如何简单地使用cookie

JMeter是一个集接口调试和性能测试于一体的测试工具,是很多技术型测试人员的必备工具,下面介绍一个如何简单地在JMeter中使用cookie登录一个网站并进行简单断言,拿广大测试人员最熟悉的51testing论坛来举例~ 一、收集登录数据 1.用Chrome打…

真正“自学”入门编程/程序员是一种怎样的体验

当年没考上大学,读了自考。 从那以后就开始了自学生涯,第一年还乖乖的去听课,第二年就完全放弃课堂了。 后来考本,读研,中间穿插学点通信,画图什么的,全部自己来。 仔细想想,读研…

我转行前端花了11个月

当你看到这行文字时,我假设你是一个准备转行前端,或者正在转行前端的人。我刚花了11个月转行前端。和你聊聊我的故事吧。 转行花了多久?11个月 准备转行前端时,我看了很多过来人写的转行经验。别人什么条件,转行花了…

SpringBoot3.0整合chatGPT

导读 导读 | 12月总体来说互联网的技术圈是非常热闹的,chatGPT爆火,SpringBoot3.0发布等重磅陆消息续进入大家的视线,而本文作者将以技术整合的角度,带大家把最火的两个技术整合在一起。读完本文,你将熟悉SpringBoot3…

(2022年12月最新)SpringBoot远程代码执行whitelabel error page SpEL RCE漏洞复现

1、 漏洞原理 spring boot 处理参数值出错,流程进入org.springframework.util.PropertyPlaceholderHelper 类中 此时 URL 中的参数值会用 parseStringValue 方法进行递归解析。其中 ${} 包围的内容都会被org.springframework.boot.autoconfigure.web.ErrorMvcAutoC…

电机分类和原理

一:核心原理 电生磁。 电机(英文:Electric machinery,俗称“马达”)是指依据电磁感应定律实现电能转换或传递的一种电磁装置。分为电动机(符号为M)和发电机(符号为G)。…

如何做好预算管理?预算上接战略,下接绩效,如何形成战略-计划-预算-绩效的闭环?

如何做好预算管理? 以前觉得经营是对净利润负责,年底有钱赚就可以,从未考虑过如何才能赚更多的钱,也未考虑过经营是对股东负责。 现在觉得经营的门道确实很大,以前看的面窄,并没有真正理解预算的意义&…

WPF中如何实现页面的切换

总目录 文章目录总目录前言一、准备工作1.搭建一个简单的mvvm项目结构二、实现1.使用Frame控件的方式实现2.使用反射的方式实现3.实现效果总结前言 本文主要讲述如何在同一个窗体内,实现不同功能模块的页面切换。 一、准备工作 1.搭建一个简单的mvvm项目结构 首先…

『纯canvas实现』你可能想象不到,粒子效果配合时钟还能这么玩?

前言 大家好,我们知道一般学习 canvas 时,做的最多的莫过于各种时钟,像下面这样的: 亦或是这样的: 或是这样的: 上面给大家展示了三种风格各异的时钟效果,但都没有让人眼前一亮的感觉&#xff…

一颗红心,三手准备,分别基于图片(img)/SCSS(样式)/SVG动画实现动态拉轰的点赞按钮特效

华丽炫酷的动画特效总能够让人心旷神怡,不能自已。艳羡之余,如果还能够探究其华丽外表下的实现逻辑,那就是百尺竿头,更上一步了。本次我们使用图片、SCSS样式以及SVG图片动画来实现“点赞”按钮的动画特效,并比较不同之…

CLM陆面过程模式

NCAR陆面模式CLM (Community Land Model)是地球系统模式CESM (Community Earth System Model)中的陆面过程模式分量,是在结合了BATS、LSM和IAP94等众多陆面模式的优点后,加入水文过程而开发出的综合性陆面模式,是目前国际上发展最为完善且得到…

java实现每日给女友微信发送早安等微信信息

大家好,我是雄雄。 前言 据说这个功能最近在抖音上很火,我没有抖音,没有看到。 但是我在掘金和CSDN上看了,相关案例确实很多,但是大家都是借助于了微信服务号,在我看来,效果很不佳。 其实我原…

如何在 Ubuntu 上将 ONLYOFFICE 文档集成至 Redmine

ONLYOFFICE 文档是一款符合 GNU AGPL v3.0 的开源办公套件。其中包含基于 Web 的查看器和协作编辑器,可用于处理文本文档、电子表格以及与 OOXML 格式高度兼容的演示文稿。 ONLYOFFICE 文档可与 Nextcloud、ownCloud、Seafile、Alfresco、Plone 等多种云服务进行集…

RabbitMQ(消息中间件)入门

目录 一. 什么是MQ? 二. 应用场景 三. 主流MQ框架 四. Docker安装部署RabbitMQ 1.查询镜像 2.获取镜像 3.运行镜像 四.进入RabbitMQ管理平台进行相关操作 五. RabbitMQ管理平台 1.Virtual Hosts 2.RabbitMQ关键名词 六. MQ的核心概念 七. springboot整合ra…

BiliBili 100+国际名校免费公开课整理分享

本资源这是一份公开课的目录,这里的视频大多来自 YouTube 等国内无法访问的网站,为了方便国内的朋友观看,作者将这些视频搬运到了BiliBili。 资源整理自网络,源地址:https://github.com/wenhan-wu/OpenCourseCatalog 所…

我今年大一,自学编程可行吗?

自学编程是可行的,但是你行不行就不好说了。 可能,这就是人生吧~ 建议你在自学编程之前,先看一下这几个问题: 1、我是一个意志坚定,抗压能力强,能耐得住寂寞的人吗?2、我对学编程是有规划还是只…

君子不玩物丧志,亦常以借物调心,网站集成二次元网页小组件(widget)石蒜模拟器,聊以赏玩

传世经典《菜根谭》中有言曰:“徜徉于山林泉石之间,而尘心渐息;夷犹于诗书图画之内,而俗气潜消。故君子虽不玩物丧志,亦常借物调心。”意思是,徜徉在林泉山石之间,能够摒弃杂念,留意…

C++程序设计——运算符重载(运算符重载的概念;运算符成员函数与友元函数;单目运算符重载;重载流运算符;双目运算符重载;赋值运算符重载)

目录 前言 一、运算符重的概念与意义 1.运算符重载 (1)函数重载 (2)运算符重载 2.运算符重载的意义 (1)例子引入 (2)意义 (3)运算符重载的限制 …

有人问,普通人学python有意义吗?看看这位大佬怎么说

普通人学python有意义吗? 现在随着python越来越火,尤其是它成为了人工智能的第一编程语言,还被纳入了中小学的教育中。并且python的应用范围很广泛,可以解决很多专业或非专业的问题。 但python真的适合普通人学习吗?…