玄机 | 工控安全 | 工控-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 通信

1

优先考虑MMS流量

Wireshark 过滤:

mms

2

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

3

这里我们发现有两个对象名异常

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 对象

posted @ 2026-08-21 19:33  yeran烨染  阅读(26)  评论(0)    收藏  举报