工控CTF | 44期

admin 2024年8月6日16:11:04评论11 views字数 3183阅读10分36秒阅读模式
工控CTF | 44期

工控CTF

0x01 概述

工控其实就是工业控制自动化,实际上是属于自动化的一部分。
工业自动化是在工业生产中广泛采用自动控制、自动调整装置,用以代替人工操纵机器和机器体系进行加工生产的趋势。在工业生产自动化条件下,人只是间接地照管和监督机器进行生产。
广义的工控其实就是IOT。

0x02 工控的三层结构

  • 现场表计(电,气,液)动机构

  • 逻辑控制系统,也就是PLC和DCS

  • 上位机(操作员控制系统)

0x03 需要学习的知识

  • PLC编程

  • 组态

  • 数电模电

  • 网络拓扑结构

0x04 工控安全

现场设备安全

  • 硬件保护

  • 网络认证

控制系统安全

  • 系统安全

  • 网络认证

  • 重放攻击

操作员系统安全

0x05 CTF

  • 初级

    杂项(隐写,逆向,取证,脑洞,爆破)

  • 中级

    协议分析,组态分析(大部分)

  • 高级

    逆向(IOT)

  • 顶级

    社会工程学

0x06 前置知识

由于工控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校验

0x07 例题

传统misc

2023_ciscn初赛_Misc-modbus

首先打开文件协议分级分析一下发现是modbus/tcp的协议。
工控CTF | 44期
通过对功能码的解析,发现该流量包时是读取保持寄存器。
工控CTF | 44期
工控CTF | 44期
然后过滤一个方向的数据包看看发送的消息有没有可能存在隐写,发现果然数据包直接有一个字段值存在规律的,于是我们提取出来是MMYWMX3GNEYWOXZRGAYDA===。
工控CTF | 44期
解码出来的结果是c1f_fi1g_1000。
工控CTF | 44期

2023工业互联网安全新疆摩多的RTU

通过题目和给出的文件分析,可以知道这是modbus的RTU协议,于是我们找到对应的RTU协议,然后分析即可。
这里新增一个知识点:
工控CTF | 44期
工控CTF | 44期
再对应分析发现就是一个读取从机寄存器数据的报文,于是我们将数据提取出来转换为对应编码即可。
u0066u006Cu0061u0067u007Bu0038u0062u0030u0030u0064u0064u0030u0031u0034u0031u0033u0034u0038u0061u0065u0039u0066u0066u0039u0061u0061u0066u0063u0061u0062u0035u0061u0036u0030u0031u0061u0037u007D
flag{8b00dd0141348ae9ff9aafcab5a601a7}

协议分析

2023工业互联网安全江西风机故障分析

简单统计一下,发现还是modbus的报文居多,由于这道题没有给题目描述,所以根据2021年的一道类似的协议分析类型的题来看,应该是找风机转速超过2000的一个协议,然后flag是data段的数据。这是2021年的风机题:https://writeup.ctfhub.com/Challenge/2021/%E5%B7%A5%E4%B8%9A%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E6%8A%80%E8%83%BD%E5%A4%A7%E8%B5%9B/%E7%BA%BF%E4%B8%8A%E8%B5%9B-%E7%AC%AC%E4%B8%80%E5%9C%BA/feG6B8GqBJkg3jv7ZHuZjX.html
于是我们先过滤一下,看看有哪些协议,并且由于是写,我们就只需要找写的报文就行。通过分析发现只有1,2,3,4,6,15,16这些功能码。
工控CTF | 44期
1234协议码我们知道都是读的,于是排除,然后分析6,15,16功能码,通过分析6功能码发现,只有data为04d2的数据包,于是排除。
工控CTF | 44期
然后分析15,发现存在两个为0的其他的都为1的。但是不符合题意,于是排除。
工控CTF | 44期
最后分析16,发现存在一个大于2000的data,其他的都小于2000,于是可以知道就是这个数据包了。
工控CTF | 44期
可以知道flag为flag{1000130001020bb8}
工控CTF | 44期
上面的分析,是我根据2021年那个题分析的,不一定对,但思路应该差不多。

2023工业互联网安全河南modbus

其实这个题就是2022年的河南工业互联网原题,这是wp,于是我们跟着分析一遍即可。
http://www.hackdig.com/11/hack-839258.htm
wp里面有另外一种分析规律的办法,其实就是misc的方法,这里没有出,但也是一个分析misc的姿势。
因为没有描述,于是我们就只能一个个分析,大致思路就是一个过滤过去看哪个是异常数据包就行了,最后发现功能码为1的有两个异常数据包。
工控CTF | 44期

flag为flag{1642+5485}

2023工业互联网安全大赛DNS_Query

https://blog.csdn.net/mochu7777777/article/details/131574497原题wp。
和平时做的DNS隐写是一样的。发现DNS的qury存在异常,这需要对DNS有足够的了解或者做的misc够多才能发现。
工控CTF | 44期
tshark 提取。
提取源ip或者目的ip为 8.8.8.8 
dns && ip.dst ==8.8.8.8
tshark.exe -r "DNS_Query.pcapng" -Y "dns && ip.dst ==8.8.8.8" -T fields -e dns.qry.name
提取出来后是很多二进制数据,转换为二维码即可。
工控CTF | 44期
工控CTF | 44期

长按二维码关注

D0g3

道格安全

原文始发于微信公众号(道格安全):工控CTF | 44期

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月6日16:11:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   工控CTF | 44期http://cn-sec.com/archives/2039218.html

发表评论

匿名网友 填写信息