工控CTF之协议分析6——s7comm

协议分析

流量分析

主要以工控流量和恶意流量为主,难度较低的题目主要考察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

S7comm

西门子设备工控协议,基于COTP实现,是COTP的上层协议,主要由三种类型(ROSCTR):Job(1)、Ack_Data(3)/Ack(2)、Userdata(7)

Job:下发任务/指令,机器收到任务/指令后回传数据确认收到,回传的内容就是Ack/Ack_Data

Ack_Data:带有返回数据,例如指令是查询内容,返回的就有要查询的东西

Ack:单纯确认,不含有数据

  • Job,主要有10种功能(Function)

    • Setup communication (0xf0) 启动、初始化
    • Read Var (0x04) 读参数
    • Write Var (0x05) 写参数
    • 下载
      • Request download (0x1a) 请求下载
      • Download block (0x1b) 要下载的数据,可能出现多次
      • Download ended (0x1c) 表示数据已发送完毕
    • 上传
      • Start upload (0x1d) 表示要上传东西,读取文件
      • Upload (0x1e) 上传内容
      • End upload (0x1f) 表示上传完成
    • PI-Service (0x28) 控制指令,控制一些程序,在题目中很少见
  • Userdata,用户自定义数据区,也包含功能指令,主要有6种功能组(Function group)

    • Mode-transition (0) 模式转换
    • Programmer commands (1) 执行
    • Block functions (3)
    • CPU functions (4)
    • Security (5) 安全相关
    • Time functions (7) 定时任务相关

例题1 2020ICSC湖州站—工控协议数据分析

image-20221212135529669

发现不仅有s7,还有很多COTP,因为s7是COTP上层协议,s7数据都是通过COTP传输

筛选s7,读参数的请求内容会在返回数据中,写请求内容一定在发送数据中,根据不同功能分析数据包

image-20221212140645107

image-20221212140731967

看第二个写请求,发现参数转码为l,判断flag藏在写请求中,筛选所有写请求

(s7comm) && (s7comm.param.func == 0x05) && (s7comm.header.rosctr == 1)

提取所有写请求参数,转码得到flag

例题2 2020ICSC济南站—被篡改的数据

直接筛选s7comm,根据题目提示,篡改的数据,那么优先筛选写参数请求即write var

发现大量数据66,转码为f,猜测可能是flag的f字符,但是两千多条,先将其筛除,看剩下的

(((s7comm) && (s7comm.param.func == 0x05)) && (s7comm.header.rosctr == 1)) && !(s7comm.resp.data == 66)

剩下的数据可以直接看出就是flag,开头结尾有花括号,但是为了防止flag中含有f,重新筛一遍

直接看序号19987,即刚刚发现的l上一条,从这里开始提取得到flag

手动复制或者py脚本提取

例题3 枢网智盾2021—异常流分析

发现流量都是s7协议写入数据

(s7comm) && !(s7comm.header.rosctr == 3)

且发现写入数据内容都是ffff开头,先筛一下看看有没有不是ffff开头的

((s7comm) && !(s7comm.header.rosctr == 3)) && (s7comm.resp.data[0:2] != ff:ff)

image-20221220105924820

这个就是异常流量,得到flag

例题3 枢网智盾2021—工控协议分析

image-20221220110752693

前面初始化setup出错误,没有ack的setup,往后看也没有什么明显的异常了

image-20221220110826247

发现本该是应答初始化的地方变成了返回read结果,且是明文

image-20221220111213229

尝试解码

image-20221220111342718

得到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协议的相关知识和分析技巧。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Shadow丶S

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

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

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

打赏作者

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

抵扣说明:

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

余额充值