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_SP_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_NA_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 | 目录 |
| 127 | F_SC_NB_1 | 日志查询-请求存档文件 |
CauseTx
常见 CauseTx 含义
| CauseTx | 名称 | 含义说明 |
|---|---|---|
| 01 | Per/Cyc | 周期传送 |
| 03 | Spont | 自发传送 |
| 04 | Initialized | 初始化完成 |
| 06 | Act | 激活 |
| 07 | ActCon | 激活确认 |
| 0a | ActTerm | 激活终止 |
| 6e | Unknown CA | 未知 ASDU 公共地址 |
探测发现
网络空间引擎
Shodan
FOFA
ZoomEye
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
COMMAND_ADDRESS
COMMAND_TYPE
COMMAND_VALUE
ORIGINATOR_ADDRESS
IEC104 Client Simulator
优点:GUI,上手简单易操作
缺点:要钱,联网激活不适合内网机器
常见攻击点
下面统一使用 Metasploit 工具为例
未授权主站接入
日志特征
Received STARTDT_ACT
Received end of initialisation confirmation
CauseTx: 04 (Initialized)
说明设备接受 IEC 104 数据传输启动(STARTDT),并将当前主机视为合法主站
ASDU 校验缺失
日志特征
Parsing response: Interrogation command (C_IC_NA_1)
CauseTx: 07 (Activation Confirmation)
设备接受总召唤请求(C_IC_NA_1)并返回激活确认,未对请求中携带的 ASDU 公共地址进行有效校验
信息泄漏
日志特征
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
设备在总召过程中返回单点遥信、双点遥信及测量值数据,数据内容为实时运行状态信息,包含明确的 IOA 地址与有效数值
参考
远动设备及系统 第 5-104 部分:传输规约 采用标准传输协议集的 IEC 60870-5-101 网络访问
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。