IEC 104 协议安全测试方法

IEC 104 协议

默认端口:2404

可能的端口:7002、9999

ASDU

ASDU
 ├─ Type ID        → ASDU 类型(业务语义)
 ├─ VSQ            → 信息体数量及结构
 ├─ CauseTx (COT)  → 传输原因 / 通信阶段
 ├─ ASDU Address   → 逻辑站地址
 └─ IOA + 数据     → 具体点位及数值

ASDU 类型(Type ID)

监视方向的过程信息(M_*_*_1)

类型标识 ASDU 名称 含义说明
1 M_SP_NA_1 单点信息
3 M_DP_NA_1 双点信息
5 M_ST_NA_1 步位置信息
7 M_BO_NA_1 32 比特串
9 M_ME_NA_1 测量值,归一化值
11 M_ME_NB_1 测量值,标度化值
13 M_ME_NC_1 测量值,短浮点数
15 M_IT_NA_1 累计量
20 M_PS_NA_1 带状态检出的成组单点信息
21 M_ME_ND_1 不带品质描述的归一化测量值
30 M_SP_TB_1 带时标 CP56Time2a 的单点信息
31 M_DP_TB_1 带时标 CP56Time2a 的双点信息
32 M_ST_TB_1 带时标 CP56Time2a 的步位置信息
33 M_BO_TB_1 带时标 CP56Time2a 的 32 比特串
34 M_ME_TD_1 带时标 CP56Time2a 的测量值,归一化值
35 M_ME_TE_1 带时标 CP56Time2a 的测量值,标度化值
36 M_ME_TF_1 带时标 CP56Time2a 的测量值,短浮点数
37 M_IT_TB_1 带时标 CP56Time2a 的累计量
38 M_EP_TD_1 带时标 CP56Time2a 的继电保护装置事件
39 M_EP_TE_1 带时标 CP56Time2a 的继电保护装置成组启动事件
40 M_EP_TF_1 带时标 CP56Time2a 的继电保护装置成组输出电路信息
控制方向的过程信息(C_*_*_1)
类型标识 ASDU 名称 含义说明
45 C_SC_NA_1 单命令
46 C_DC_NA_1 双命令
47 C_RC_NA_1 步调节命令
48 C_SE_NA_1 设点命令,归一化值
49 C_SE_NB_1 设点命令,标度化值
50 C_SE_NC_1 设点命令,短浮点数
51 C_BO_NA_1 32 比特串
58 C_SC_TA_1 带时标 CP56Time2a 的单命令
59 C_DC_TA_1 带时标 CP56Time2a 的双命令
60 C_RC_TA_1 带时标 CP56Time2a 的步调节命令
61 C_SE_TA_1 带时标 CP56Time2a 的设点命令,归一化值
62 C_SE_TB_1 带时标 CP56Time2a 的设点命令,标度化值
63 C_SE_TC_1 带时标 CP56Time2a 的设点命令,短浮点数
64 C_BO_TA_1 带时标 CP56Time2a 的 32 比特串

监视方向的系统信息(M_*_*_1)

类型标识 ASDU 名称 含义说明
70 M_EI_NA_1 初始化结束

控制方向的参数(C_*_*_1)

类型标识 ASDU 名称 含义说明
100 C_IC_NA_1 总召唤命令
101 C_CI_NA_1 电能脉冲召唤命令
102 C_RD_NA_1 读命令
103 C_CS_NA_1 时钟同步命令
104 C_TS_NA_1 测试命令
105 C_RP_NA_1 复位进程命令
106 C_CD_NA_1 延时获取命令
107 C_TS_TA_1 带时标 CP56Time2a 的测试命令

文件传输(F_*_*_1)

类型标识 ASDU 名称 含义说明
120 F_FR_NA_1 文件已准备好
121 F_SR_NA_1 节已准备好
122 F_SC_NA_1 召唤目录,选择文件,召唤文件,召唤节
123 F_LS_NA_1 最后的节,最后的段
124 F_AF_NA_1 确认文件,确认节
125 F_SG_NA_1
126 F_DR_TA_1 目录

标准文件传输类型为 120 至 126。部分厂商或行业扩展会使用 127 等私有 Type ID,必须以设备规约为准,不能直接套用标准名称解释。

CauseTx

常见 CauseTx 含义

十进制(十六进制) 名称 含义说明
1(0x01 Per/Cyc 周期传送
3(0x03 Spont 自发传送
4(0x04 Initialized 初始化完成
6(0x06 Act 激活
7(0x07 ActCon 激活确认
10(0x0a ActTerm 激活终止
44(0x2c Unknown Type ID 未知类型标识
45(0x2d Unknown COT 未知传输原因
46(0x2e Unknown CA 未知 ASDU 公共地址
47(0x2f Unknown IOA 未知信息对象地址

抓包工具可能用十进制或十六进制显示 COT。分析时先确认显示基数,避免把 0x2e 误读成十进制 46 之外的值。


探测发现

网络空间引擎

Shodan

port:2404 ASDU

FOFA

protocol=”iec-104”

ZoomEye

service=”IEC 60870-5-104”

Censys

host.services.protocol = “IEC60870_5_104”(免费用户不可用)

工具

Nmap

nmap <IP地址> -p2404 --script iec-identify
Starting Nmap 7.98SVN ( https://nmap.org ) at 2025-07-31 00:01 +0800  
Nmap scan report for x.x.x.x  
Host is up (0.51s latency).  
  
PORT     STATE SERVICE  
2404/tcp open  iec-104  
| iec-identify:    
|   ASDU address: 15  
|_  Information objects: 0  
  
Nmap done: 1 IP address (1 host up) scanned in 3.34 seconds

Metasploit

使用iec104模块

use auxiliary/client/iec104/iec104

查看参数

msf6 auxiliary(client/iec104/iec104) > show options    
  
Module options (auxiliary/client/iec104/iec104):  
  
  Name                Current Setting  Required  Description  
  ----                ---------------  --------  -----------  
  ASDU_ADDRESS        1                yes       Common Address of ASDU  
  COMMAND_ADDRESS     0                yes       Command Address / IOA Address  
  COMMAND_TYPE        100              yes       Command Type  
  COMMAND_VALUE       20               yes       Command Value  
  ORIGINATOR_ADDRESS  0                yes       Originator Address  
  RHOSTS                               yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html  
  RPORT               2404             yes       The target port (TCP)  
  
  
Auxiliary action:  
  
  Name          Description  
  ----          -----------  
  SEND_COMMAND  Send command to device  
  
  
  
View the full module info with the info, or info -d command.

参数解释:

参数 含义
ASDU_ADDRESS ASDU 公共地址,也就是目标逻辑站地址
COMMAND_ADDRESS 信息对象地址(IOA)
COMMAND_TYPE 要发送的 ASDU Type ID,例如 100 表示总召唤
COMMAND_VALUE 对应命令类型的数据值或限定词,含义随 Type ID 改变
ORIGINATOR_ADDRESS 传送原因字段中的源发地址

COMMAND_TYPE 决定发送的 ASDU 类型。100 是总召唤,45 至 64 是控制类 ASDU,103 是时钟同步,105 是进程复位。

IEC104 Client Simulator

优点:GUI,上手简单易操作
缺点:要钱,联网激活不适合内网机器

下载
官网
微软商店


协议行为验证

主站接入控制

日志特征

Received STARTDT_ACT
Received end of initialisation confirmation
CauseTx: 04 (Initialized)

STARTDT_CON 表示从站接受数据传输启动。IEC 60870-5-104 本身没有身份认证字段,来源限制通常由 TCP 白名单、防火墙或安全网关实现。

ASDU 地址校验

日志特征

Parsing response: Interrogation command (C_IC_NA_1)
CauseTx: 07 (Activation Confirmation)

保持其他字段不变,分别使用合法公共地址和未分配地址发送总召唤。合法地址应收到激活确认;未分配地址通常返回 COT 46(Unknown CA)或不返回业务数据。两者返回相同站点数据时,公共地址校验无效。

遥测数据暴露

日志特征

Parsing response: Single point information (M_SP_NA_1)
Parsing response: Double point information (M_DP_NA_1)
Parsing response: Measured value (M_ME_NA_1)
IOA: xxx Value: xxxx

实测总召唤会返回单点、双点和测量值。响应中的 ASDU 公共地址、Type ID、IOA、COT、品质描述符和数值可用于还原站点遥测结构。


参考

远动设备及系统 第 5-104 部分:传输规约 采用标准传输协议集的 IEC 60870-5-101 网络访问


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:IEC 104 协议安全测试方法

字数:1.8k

本文作者:

发布时间:2025-12-13, 15:38:00

最后更新:2026-08-26, 21:18:00

原始链接:https://cnlnn.pages.dev/posts/iec-104-protocol-security-testing/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。