《工控安全团队能力提升课程》
第3章 工控网络协议基础

3. 工控网络协议基础:Modbus、Profibus、EtherNet/IP、OPC UA

工控网络协议是工业控制系统(ICS)的“语言”,它们负责在PLC、RTU、传感器、执行器以及上位机之间传递控制指令与状态数据。理解这些协议的工作原理与安全特性,是构建工控安全防御体系的基石。本章将深入剖析四种主流工控协议:Modbus、Profibus、EtherNet/IP 和 OPC UA。

3.1 Modbus 协议:工控界的“通用语”

工作原理

Modbus 是一种主从(Master/Slave)架构的串行或以太网协议。主站(如SCADA、HMI)发起请求,从站(如PLC、RTU)响应。它定义了四种基本数据模型:线圈(Coil)、离散输入(Discrete Input)、输入寄存器(Input Register)和保持寄存器(Holding Register)。

主站 (Master) 从站 1 (Slave) 从站 2 (Slave) 请求 响应 请求 响应 Modbus 报文结构 (RTU/ASCII/TCP) 地址 | 功能码 | 数据 | 校验 (CRC/LRC)

图 3-1:Modbus 主从通信模型与报文结构

安全特性与风险

  • 无认证机制:Modbus 协议本身不包含身份验证,任何设备只要知道从站地址即可发送指令。
  • 明文传输:所有数据(包括功能码、寄存器值)均以明文形式在网络上传输,极易被嗅探。
  • 功能码滥用:攻击者可通过功能码 0x10(写多个寄存器)直接篡改PLC参数,或通过 0x05(写单个线圈)控制物理设备启停。
  • 广播风暴风险:Modbus TCP 缺乏流量控制,恶意广播可能导致网络拥塞。
# 示例:使用 Scapy 构造恶意 Modbus TCP 写请求
from scapy.all import *
# 构造写单个线圈请求 (功能码 0x05)
packet = IP(dst="192.168.1.100")/TCP(dport=502)/Raw(b'\x00\x01\x00\x00\x00\x06\x01\x05\x00\x01\xff\x00')
send(packet)

3.2 Profibus 协议:西门子的“高速总线”

工作原理

Profibus 是一种基于令牌传递(Token Passing)的现场总线协议,支持主站与从站混合组网。主站持有令牌时才能发起通信,从站仅响应。其物理层采用 RS-485,传输速率最高可达 12 Mbps。

主站1 主站2 从站1 从站2 令牌 令牌 轮询

图 3-2:Profibus 令牌传递与轮询机制

安全特性与风险

  • 物理层隔离:基于 RS-485 差分信号,具有一定的抗干扰能力,但无法防止物理接入。
  • 无加密与认证:与 Modbus 类似,Profibus 报文同样以明文传输,且无源地址验证。
  • 令牌劫持:攻击者若伪造令牌帧,可非法获得总线控制权,导致通信混乱。
  • 诊断报文泄露:Profibus 的诊断报文可能暴露设备型号、固件版本等敏感信息。

3.3 EtherNet/IP 协议:基于 CIP 的工业以太网

工作原理

EtherNet/IP 基于标准以太网(TCP/IP 和 UDP/IP),使用 CIP(Common Industrial Protocol)作为应用层协议。它支持两种通信模式:隐式报文(I/O 数据,基于 UDP,实时性高)和 显式报文(配置/诊断,基于 TCP)。

EtherNet/IP 节点 (PLC/驱动器/IO) EtherNet/IP 节点 (PLC/驱动器/IO) EtherNet/IP 节点 (PLC/驱动器/IO) UDP (隐式) TCP (显式) CIP 报文封装 以太网头 | IP头 | TCP/UDP头 | 封装头 | CIP命令 | 数据

图 3-3:EtherNet/IP 节点与 CIP 报文封装

安全特性与风险

  • 基于以太网:继承了 TCP/IP 协议栈的漏洞,如 ARP 欺骗、IP 欺骗、DoS 攻击。
  • CIP 安全扩展:CIP Security 提供了基于 TLS/DTLS 的加密和认证,但实际部署率极低。
  • 组播泛滥:EtherNet/IP 大量使用 UDP 组播进行 I/O 数据分发,攻击者可注入虚假组播报文。
  • 未授权连接:攻击者可通过 CIP 的 Forward Open 服务建立未授权连接,窃取或篡改数据。

3.4 OPC UA 协议:统一架构的“安全卫士”

工作原理

OPC UA(Unified Architecture)是一种面向服务的、平台无关的通信框架。它采用客户端/服务器或发布/订阅模式,支持数据访问、报警与事件、历史数据等功能。其核心是地址空间(Address Space),以节点(Node)和引用(Reference)的形式组织数据。

OPC UA 客户端 (SCADA / HMI) 请求/订阅 OPC UA 服务器 (PLC / 数据库) 响应/发布 加密通道 (TLS 1.3) 签名认证 OPC UA 地址空间示例 根节点 → 对象 → 设备 → 变量 (温度/压力/转速) 每个节点具有 NodeId、属性、引用

图 3-4:OPC UA 客户端/服务器模型与地址空间

安全特性与优势

  • 内置安全模型:OPC UA 原生支持身份认证(X.509 证书)、用户授权、消息签名与加密(AES-256)。
  • 会话管理:通过 Secure Channel 和 Session 机制,确保通信的机密性、完整性和不可否认性。
  • 审计日志:服务器可记录所有客户端操作,便于事后追溯。
  • 纵深防御:支持应用层防火墙规则,可限制特定客户端对特定节点的访问。
# 示例:OPC UA 客户端连接配置(安全模式)
from opcua import Client
client = Client("opc.tcp://192.168.1.10:4840")
# 设置安全策略与证书
client.set_security_string(
    "Basic256Sha256,SignAndEncrypt,"
    "certificate.der,private_key.pem"
)
client.connect()
# 读取变量
var = client.get_node("ns=2;i=1001")
print(var.get_value())
client.disconnect()

3.5 协议安全对比总结

特性 Modbus Profibus EtherNet/IP OPC UA
传输层 串口/TCP RS-485 TCP/UDP TCP/UDP/HTTPS
认证 无 无 可选 (CIP Security) 强制 (X.509)
加密 无 无 可选 (TLS) 强制 (AES-256)
实时性 低 高 高 (CIP Sync) 中 (PubSub)
主要风险 功能码滥用、明文 令牌劫持、诊断泄露 组播注入、ARP欺骗 证书管理、配置错误

3.6 工控协议安全加固建议

  1. 网络分段与纵深防御:将 OT 网络与 IT 网络严格隔离,使用工业防火墙(如 Tofino、EAGLE)过滤非必要协议与功能码。
  2. 协议白名单:仅允许已知的 Modbus 功能码、Profibus 站地址、EtherNet/IP 的 CIP 服务代码。
  3. 加密与认证升级:对老旧协议(Modbus、Profibus)使用 VPN 或协议网关进行隧道加密;优先部署 OPC UA 并启用安全模式。
  4. 异常检测:部署工控入侵检测系统(如 Zeek + ICS 插件),监控协议流量中的异常行为(如频繁写寄存器、非法令牌)。
  5. 定期安全评估:使用工控协议模糊测试工具(如 Peach、AFL)发现协议实现中的未知漏洞。

💡 核心要点:工控协议的安全短板源于其设计之初对“可用性”和“实时性”的极致追求,而牺牲了“安全性”。现代工控安全建设,必须在兼容老旧协议的同时,通过外围防护与协议升级(如 OPC UA)逐步构建安全防线。