MMS 协议
概述
MMS 提供了一套面向对象的客户端/服务器通信模型,核心功能包括:
读/写变量:读取或修改设备内部的数据点(如温度、电压、开关状态)
报告:设备在数据变化或事件触发时主动向客户端推送信息
文件操作:上传/下载设备上的配置文件或固件
控制:启停设备、执行预定义程序等。
设备建模:通过虚拟制造设备(VMD)和域(Domain)等抽象概念,统一不同厂家的设备数据接口
最常见的应用场景是 电力系统 IEC 61850 通信(变电站自动化),以及制造业的 SCADA 系统、机器人控制等
报文结构
MMS 协议的 PDU 完全使用 ASN.1 基本编码规则(BER) 来描述,也就是 Tag - Length - Value 结构
BER 快速回顾
Tag(标签):1~多字节,说明数据类型及上下文
Length(长度):1~多字节,指明后续 Value 的字节数
Value(内容):可以是简单整数、字符串,也可以是嵌套的 TLV 结构
MMS 中几乎都用上下文特定的构造标签(如 0xA0、0xA1 等)
顶层的 MMS PDU 类型
MMS 定义了以下几种顶层 PDU,每一类都有一个固定的标签:
| PDU 类型 | 对应的顶层标签 | 说明 |
|---|---|---|
| confirmed-RequestPDU | A0 | 客户端请求(需要响应) |
| confirmed-ResponsePDU | A1 | 服务端对请求的响应 |
| unconfirmed-PDU | A2 | 单向报文(如信息报告,无需确认) |
| initiate-RequestPDU | A8 | 连接发起方协商能力 |
| initiate-ResponsePDU | A9 | 连接响应方协商能力 |
| conclude-RequestPDU | AC | 请求释放连接 |
| 等等… |
实战案例
窃取数据的黑客

查看会话可以看到一直在跟 192.168.51.34:102 通信
所以 192.168.51.34 就是服务器

按照长度排列,第 3096 包没有 info 信息有点可疑(3022、3059 也一样)

展开后可以看到 flag.7z 以及 flag.txt

按照最先发包顺序,从 3022 之后看攻击者 IP 192.168.51.33 请求操作
在 3066 包中可以看到访问了 flag.7z

编写脚本去响应中找到这个压缩文件
1 | import struct |

解压后拿到 flag 值
