工控CTF
工控CTF
概述
工控其实就是工业控制自动化,实际上是属于自动化的一部分。
工业自动化是在工业生产中广泛采用自动控制、自动调整装置,用以代替人工操纵机器和机器体系进行加工生产的趋势。在工业生产自动化条件下,人只是间接地照管和监督机器进行生产。
广义的工控其实就是IOT。
工控的三层结构
- 现场表计(电,气,液)动机构
- 逻辑控制系统,也就是PLC和DCS
- 上位机(操作员控制系统)
需要学习的知识
- PLC编程
- 组态
- 数电模电
- 网络拓扑结构
工控CTF
工控安全
现场设备安全
- 硬件保护
- 网络认证
控制系统安全
- 系统安全
- 网络认证
- 重放攻击
操作员系统安全
CTF
初级
杂项(隐写,逆向,取证,脑洞,爆破)
中级
协议分析,组态分析(大部分)
高级
逆向(IOT)
顶级
社会工程学
前置知识
由于工控CTF中常见的就是隐写和协议分析,隐写一般就是常见的流量分析,这里就不赘述了,国资师傅上课的时候并没有将modbus协议的详细介绍,我网上学了点,这里稍微总结一下
这里还有一个学习连接
https://blog.csdn.net/as480133937/article/details/123197782
modbus
Modbus是一种数据通信协议,最初由 Modicon(现为施耐德电气)于 1979 年发布,用于其可编程逻辑控制器(PLC)。Modbus 已成为*事实上的* 标准通信协议,并且是连接工业电子设备的常用方式。
modbus一般分为三种类型
modbus ASCII
modbus ASCII协议采用ASCII码进行消息编码
modbus RTU
modbus RTU采用二进制编码和CRC错误校验,因此配置为modbus ASCII模式的设备无法与modbus RTU进行通信
modbus TCP/IP
modbus RTU
modbus RTU采用三种接口进行通信
- RS-232(通信距离小于15米时使用)
- RS-485(通信距离大于于15米时使用,比较流行,单位距离下可以接32个从机,接入的从机大于32个就必须使用中继器,通信距离最远可以达到1200m)
- RS-422(通信距离小于15米时使用)
所有设备必须使用相同的波特率,9600到19600之间。主机可以写从机也可以读从机。主机一般使用的SCADA和HMI等主机设备。必须采用菊花链的方式进行连接,不能使用星型拓扑结构。
modbus TCP/IP(MBAP)
设备之间用网线通过交换机进行连接,RTU模式也可以通过封装为数据包用网线通过交换机进行交换。modbus TCP/IP使用的是MBAP的消息封装方式。
modbus协议定义的数据模型
- 线圈(访问长度为(位)bit),可读可写
- 离散量输入(访问长度为(位)bit),只读
- 输入寄存器(访问长度为(字)word),只读
- 保持寄存器(访问长度为(字)word),可读可写
modbus协议的地址模型
- 线圈地址范围(00001-09999)
- 离散量输入地址范围(10001-19999)
- 输入寄存器地址范围(30001-39999)
- 保持寄存器地址范围(40001-49999)
modbus RTU的信息帧
八位地址码+八位功能码+N*8位数据区+16为错误校验码
- 地址码:每个从机具有唯一的地址码
- 功能码:协议定义功能码为1-127,如果协议返回的功能码一致,表示从机执行成功1,如果从机返回的功能码最高位为1,表示从机没有响应操作或者发送出错。
- 数据区:不同的功能码对应的数据区是不一样的。
- CRC校验码:CRC校验
例题
传统misc
2023_ciscn初赛_Misc-modbus
首先打开文件协议分级分析一下发现是modbus/tcp的协议
通过对功能码的解析,发现该流量包时是读取保持寄存器
然后过滤一个方向的数据包看看发送的消息有没有可能存在隐写,发现果然数据包直接有一个字段值存在规律的,于是我们提取出来是MMYWMX3GNEYWOXZRGAYDA===
解码出来的结果是c1f_fi1g_1000
2023工业互联网安全新疆摩多的RTU
通过题目和给出的文件分析,可以知道这是modbus的RTU协议,于是我们找到对应的RTU协议,然后分析即可
这里新增一个知识点
再对应分析发现就是一个读取从机寄存器数据的报文,于是我们将数据提取出来转换为对应编码即可
\u0066\u006C\u0061\u0067\u007B\u0038\u0062\u0030\u0030\u0064\u0064\u0030\u0031\u0034\u0031\u0033\u0034\u0038\u0061\u0065\u0039\u0066\u0066\u0039\u0061\u0061\u0066\u0063\u0061\u0062\u0035\u0061\u0036\u0030\u0031\u0061\u0037\u007D
flag{8b00dd0141348ae9ff9aafcab5a601a7}
协议分析
2023工业互联网安全江西风机故障分析
简单统计一下,发现还是modbus的报文居多,由于这道题没有给题目描述,所以根据2021年的一道类似的协议分析类型的题来看,应该是找风机转速超过2000的一个协议,然后flag是data段的数据。这是2021年的风机题
于是我们先过滤一下,看看有哪些协议,并且由于是写,我们就只需要找写的报文就行。通过分析发现只有1,2,3,4,6,15,16这些功能码
1234协议码我们知道都是读的,于是排除,然后分析6,15,16功能码,通过分析6功能码发现,只有data为04d2的数据包,于是排除
然后分析15,发现存在两个为0的其他的都为1的。但是不符合题意,于是排除
最后分析16,发现存在一个大于2000的data,其他的都小于2000,于是可以知道就是这个数据包了。
可以知道flag为flag{1000130001020bb8}
上面的分析,是我根据2021年那个题分析的,不一定对,但思路应该差不多
2023工业互联网安全河南modbus
其实这个题就是2022年的河南工业互联网原题,这是wp,于是我们跟着分析一遍即可
http://www.hackdig.com/11/hack-839258.htm
wp里面有另外一种分析规律的办法,其实就是misc的方法,这里没有出,但也是一个分析misc的姿势。
因为没有描述,于是我们就只能一个个分析,大致思路就是一个过滤过去看哪个是异常数据包就行了,最后发现功能码为1的有两个异常数据包
flag为flag{1642+5485}
2023_工业互联网安全大赛_DNS_Query
https://blog.csdn.net/mochu7777777/article/details/131574497原题wp
和平时做的DNS隐写是一样的。发现DNS的qury存在异常,这需要对DNS有足够的了解或者做的misc够多才能发现
tshark 提取
提取 源ip或者目的ip为 8.8.8.8 ,
1 | dns && ip.dst ==8.8.8.8 |
提取出来后是很多二进制数据,转换为二维码即可