玄机 | 工控安全 | 工控-失效的遥控
flag{gongkongaq_isflag}
前置
这里最值得注意的关键词并不是“失效”,而是“遥控”。在工业控制、电力自动化环境中,经常会提到“四遥”,分别为遥信、遥测、遥控、遥调,其中“遥控”一般指主站远程向从站、RTU或者IED下发开关控制命令。因此看到题目名称后,我们可以形成初步猜想,该流量大概率不属于普通IT网络流量,有可能和电力工业协议相关,需要重点留意是否出现IEC 104这类协议。不过不能仅仅凭借题目里出现的“遥控”二字就直接判定为IEC 104协议,依旧需要回到PCAP数据包中寻找实际证据来加以验证。
IEC 104的全称为IEC 60870‑5‑104,这是一套主要应用于电力自动化、调度系统、SCADA以及变电站远动通信场景的工业控制协议,可以简单理解为主站借助网络远程读取电力设备的状态与测量数值,同时向设备下发各类控制命令的通信规则。该协议最典型的用途就是实现远动功能,也就是我们常说的四遥:遥信用于读取开关、告警状态,例如断路器的分合状态;遥测用来采集电压、电流、功率等测量数据;遥控实现对断路器、开关的远程动作控制;遥调则负责远程修改设备的相关设定值。结合本题“失效的遥控”这一标题,在识别出IEC 104协议后,就应当将分析重心放在协议内的遥控命令上。
IEC 104默认工作在TCP 2404端口,在Wireshark中,我们通常可以使用过滤表达式tcp.port == 2404快速定位对应的流量。
APDU全称为Application Protocol Data Unit,中文一般称作应用协议数据单元,可以简单将其理解为一条完整的IEC 104应用层报文。
APCI全称为Application Protocol Control Information,中文一般称作应用协议控制信息,它主要承担IEC 104报文的传输控制工作,用来告知接收方一条IEC 104报文的起始位置、报文长度,区分报文属于I格式、S格式还是U格式,同时携带I格式报文的发送序号与接收序号。可以简单记为,APCI负责“怎么传”,ASDU负责“传什么业务”。
ASDU全称为Application Service Data Unit,中文叫做应用服务数据单元,它是我们分析工控流量题目时真正需要重点关注的业务数据部分,例如2d 01 06 00 02 00 67 00 00 81这类内容就属于ASDU。
完整 IEC 104 APDU 是:
68 0e 00 00 00 00 2d 01 06 00 02 00 67 00 00 81
│ │
└──── APCI ─────────┘└────────── ASDU ──────────┘
也就是:
APDU
├── APCI:68 0e 00 00 00 00
└── ASDU:2d 01 06 00 02 00 67 00 00 81
C_SC_NA_1是IEC 104当中的一种ASDU类型,代表单点命令,也就是单点遥控命令,对应的Type ID为45。我们可以简单拆解理解,C代表Command,即控制类;SC代表Single Command,也就是单点命令;NA表示该报文属于不带时标的基础形式;数字1则为对应的类型定义编号。
Act = Activation = 发起操作 ActCon = Activation Confirmation = 激活确认 ActTerm = Activation Termination = 激活结束
IOA全称为Information Object Address,中文一般称作信息体地址,在IEC 104协议中,它的作用可以简单理解为用来标识这条遥控、遥测或者遥信报文具体对应哪一个业务点位。变电站内部存在大量设备点位,例如断路器1、断路器2、开关1、电压测点、电流测点等,协议不能笼统地描述要控制开关,必须明确指定操作对象,IOA就承担了这个定位的功能,比如IOA等于103,含义就是对103号信息点执行相应操作。
姿势
看整个 PCAP 有什么协议
统计 → 协议分级

发现IEC 60870-5-104
统计→ 会话→ TCP

发现2404端口
筛选
tcp.port == 2404

发现C_SC_NA_1 Act

Type Identification: C_SC_NA_1 (45) 单点遥控类型
Cause: Activation (6) 6表示 发起/激活这个操作
确认了我们要找的“新发起的遥控命令”。
然后开始检查这些“新发起的单点遥控命令”到底控制了哪个信息点。IOA

正常情况下,IOA应当是工程前期配置完成的业务点号,例如1001、1002、2001、2002这类数值,但在这道题目当中却连续出现103、111、110、103、107等异常的IOA值。
比如一个变电站里可能人为配置:
IOA = 1001 → 1号断路器分合状态
IOA = 1002 → 2号断路器分合状态
IOA = 2001 → A相电压
IOA = 2002 → B相电压
IOA = 3001 → 1号开关遥控点
也就是说,IOA 本质上是工程人员在系统里提前规划好的“业务点地址”。
我们只记录单点发起操作C_SC_NA_1 + Act
| IOA 十进制 | IOA HEX | ASCII |
|---|---|---|
| 103 | 67 |
g |
| 111 | 6f |
o |
| 110 | 6e |
n |
| 103 | 67 |
g |
| 107 | 6b |
k |
| 111 | 6f |
o |
| 110 | 6e |
n |
| 103 | 67 |
g |
| 97 | 61 |
a |
| 113 | 71 |
q |
| 95 | 5f |
_ |
| 105 | 69 |
i |
| 115 | 73 |
s |
| 102 | 66 |
f |
| 108 | 6c |
l |
| 97 | 61 |
a |
| 103 | 67 |
g |
得到gongkongaq_isflag
注意
2404是IEC 104服务端典型的监听端口
但是2404 端口不能直接代表 IEC 104
理论上任何程序都可以占用 TCP 2404。
IEC 104 的典型 APDU 都会以:68开头。

第一个字节68是IEC 104 APDU的启动字符Start,为固定值0x68,因此在TCP载荷数据当中看到以68开头的内容,就是识别IEC 104 APDU的一个重要特征。
所以我们先确定IEC 104再去找2404

浙公网安备 33010602011771号