玄机 | 工控安全 | 工控-MMS协议分析
MMS 简介
MMS 全称为 Manufacturing Message Specification,中文名为制造报文规范,是一种面向工业自动化环境的应用层通信协议。MMS 的应用场景十分广泛,覆盖变电站自动化、IEC 61850、电力系统、PLC 与 IED 通信、SCADA 系统以及各类工业控制设备之间的数据交换。尤其在 IEC 61850 环境下,MMS 主要承担客户端与 IED 设备之间的各类交互工作,可实现变量读取、变量写入、数据集访问、对象属性读取、文件操作以及状态查询等功能。
IEC 61850 是电力系统、尤其是变电站自动化里非常重要的一套通信标准。
MMS 并不会直接裸跑在 TCP 之上,在 IEC 61850 场景下,MMS 完整的通信协议栈自上而下依次为 MMS → ACSE → Presentation 表示层 → Session 会话层 → COTP → TPKT → TCP → IP → Ethernet 以太网。在实际抓包分析过程中,我们重点关注的层级可以简化为 MMS → ISO‑on‑TCP → TCP,对应的典型端口为 TCP 102。因此当拿到一份工业 PCAP 数据包,并且题目明确提示存在 MMS 协议时,通常不会优先全文检索 flag,而是首先检查 TCP 102 端口是否存在相关通信流量。
思路
流量包里到底有哪些协议
统计 → 协议分级
确认有很多ISO-on-TCP / MMS 通信

优先考虑MMS流量
Wireshark 过滤:
mms

LLN0 是 IEC 61850 里的 Logical Node Zero
itemId: LLN0$EX$NamPlt$cdcName
这个特征说明是IEC 61850
MMS 在 IEC 61850 场景里通常跑在 TCP 102 端口上,所以筛选:
tcp.port == 102
观察 Source Destination
工业 MMS 通信通常可以理解成:
客户端→IED / MMS Server

这里我们发现有两个对象名异常
L666f61677e49435366
L7h756h7d646173617g
观察 第一段的原文666f6167
Hex:66 6c 61 67正好就是:f l a g 很接近
观察第二段
数据包当中出现了h、g这类字符,而合法的十六进制字符只能包含0‑9、a‑f以及A‑F。
这就要解码了
去掉 L 尝试对小写字母:ASCII - 3
第一段数据666c61677b49435366
第二段数据7h756h7d646173617g
Hex 解码:
第一段flag{ICSf
第二段~unzdasa}
flag{ICSf~unzdasa}
补充
分析异常流量
正常 MMS 流量,通常会长这样:
固定的客户端 ↔ 固定的 IED
TCP/102
持续、规律地 Read
访问 LLN0、LPHD、NamPlt、Beh、Health 等正常对象
请求和响应能够正常对应
异常流量常表现为:
突然出现新的客户端 IP
短时间大量枚举对象
大量 Write / Control 操作
访问非常奇怪的 itemId
对象名不像 IEC 61850 正常变量
请求频率突然暴增
大量失败响应
异常文件操作
这道题里,最关键的判断其实来自对象名异常。
正常对象例如:
LLN0$EX$NamPlt$cdcName
LPHD1$DC$NamPlt
LLN0$ST$Beh$stVal
这些虽然看起来复杂,但符合 IEC 61850 的命名规律,有明确业务语义。
可疑对象名:
L666f61677e49435366
L7h756h7d646173617g
这种就非常不正常,因为它不像逻辑节点、数据对象或属性名,反而像:编码后的数据、Hex、字符移位后的字符串,这就是典型的异常流量。
客户端发出的 MMS 读取请求特征
confirmedServiceRequest: read (4) 读取
itemId: LLN0$DC$NamPlt$configRev 读取IEC 61850 对象

浙公网安备 33010602011771号