ESPscan 工控协议识别研究:把 unknown 端口还原成设备语言
最近在给 ESPscan 补工控协议指纹。重点不是单纯判断端口开放,而是把扫描结果里的 unknown 尽量还原成可判断的工业资产语言:PLC、RTU、SCADA、楼宇控制器、电力远动装置、工业数据服务。
本文示例 IP 均已脱敏,仅用于协议识别研究。实际扫描请确保获得授权。
为什么研究这个
很多扫描器看到 502、102、44818、20000,可能只会标记端口开放,或者丢一个 unknown。
但在工控场景里,端口背后往往不是普通服务,而是控制逻辑、运行参数、遥测点位,甚至分合闸指令。所以 ESPscan 想做的不是简单抓 banner,而是通过握手、异常响应、协议字段、设备标识等信息,提高协议识别置信度。
当前关注的工控协议
| 协议 | 常见端口 | 主要场景 | ESPscan 识别关注点 |
|---|---|---|---|
| Modbus TCP | 502 | PLC、传感器、电表、水泵、光伏采集器 | FC 异常、unit id、寄存器访问响应 |
| S7Comm | 102 | 西门子 S7 系列 PLC | ISO-TSAP 握手、CPU 型号、固件版本 |
| EtherNet/IP | 44818 | 罗克韦尔 / AB PLC、伺服、产线控制 | CIP 身份字段、设备型号、序列号脱敏 |
| DNP3 | 20000 | 电力、水利、油气 RTU | 源 / 目的地址、Unsolicited、IIN 标志 |
| IEC 104 | 2404 | 电网调度、变电站远动 | STARTDT / TESTFR、APCI 帧特征 |
| BACnet/IP | 47808/UDP | 楼宇 HVAC、消防、机房空调 | Device ID、Vendor ID、对象属性 |
| OPC UA | 4840 | MES、SCADA、工业数据中台 | Hello / Acknowledge、证书与匿名策略 |
| FINS | 9600 | 欧姆龙 PLC、日系产线 | FINS 节点地址、错误码 |
| MELSEC | 5007 | 三菱 PLC、CNC、3C 产线 | Melsoft 通信特征、时钟响应 |
| IEC 61850 MMS | 102 | 智能变电站、保护装置 | 与 S7 共用端口,需要上层语义区分 |
脱敏识别样例
203.x.x.10:502 Modbus Exception FC=0x2B code=1 unit=0
198.x.x.20:102 S7 6ES7 214-1HG40-0XB0 v.4.x | SN:****
192.x.x.30:44818 EtherNet/IP 1766-L32BWAA B/16.00 | Rockwell/Allen-Bradley | PLC | SN:****
203.x.x.40:20000 DNP3 UnconfirmedUserData dst=1024 src=90 Unsolicited IIN=0x0080
198.x.x.50:47808 BACnet Device 15201 | Vendor(7)
192.x.x.60:4840 OPCUA Acknowledge ver=0 recvBuf=65535 sendBuf=65535
203.x.x.70:9600 FINS NodeAddr client=0 server=100 err=0x00000020
198.x.x.80:5007 MELSEC Melsoft clock=****IEC 104 在公网暴露相对少,多数挂在专网、VPN 或防火墙后面。内网或靶场环境下,如果 2404 返回 STARTDT con,基本说明协议识别链路是通的。
几个研究结论
- 端口号不能直接等于协议。
102可能是 S7,也可能是 IEC 61850 MMS,需要继续解析上层语义。 - 工控识别的关键不是多发请求,而是理解握手、异常码、字段结构和设备身份响应。
- 公网可见的工控资产数量不一定大,但一旦暴露,风险等级通常高于普通 Web 服务。
- Modbus、S7、EtherNet/IP、DNP3 是资产测绘里比较常见的方向;IEC 104 公网少,但电力场景价值高。
- ESPscan 后续会继续补协议指纹、置信度评分和误报控制,而不是只追求端口数量。
风险声明
工控协议一旦被未授权访问,影响不只是数据泄露,可能直接关联生产运行、设备控制和供电安全。这里只做协议识别与资产测绘研究,不对未授权目标进行任何扫描或测试。
#工控安全 #资产测绘 #ESPscan #协议识别 #IOT安全