跳转至

工控 ICS 协议安全:从 Modbus 到 OPC UA 的攻防实战

难度:🟡 中级 | 领域:工控安全、协议分析 | 阅读时间:约 25 分钟

日常类比

想象一座城市的供水系统:水厂控制室通过管道与阀门控制器调节水压、投放消毒剂、监控水质。三十年前,控制室与现场设备走专有线路,外人碰不到。

为了远程监控,控制信号越来越多地走上以太网甚至广域网。问题是:当年设计的"控制语言"(工控协议)往往没考虑安全——例如 Modbus 无认证、无加密,能碰到线路的人就可以发"开阀门""关水泵"。

这不是纸上谈兵:公开报道的乌克兰电网事件曾造成大规模停电;TRITON/TRISIS 恶意软件瞄准安全仪表系统(Safety Instrumented System, SIS),试图同时破坏工艺并禁用安全保护[3]。工控协议安全直接关系到物理世界安全。

摘要

工业控制系统(Industrial Control System, ICS)与数据采集与监视控制(Supervisory Control and Data Acquisition, SCADA)长期依赖为可用性设计的协议。本文按 Purdue 模型梳理协议全景,分析 Modbus、分布式网络协议第 3 版(Distributed Network Protocol 3, DNP3)、OPC 统一架构(OPC Unified Architecture, OPC UA)等的安全能力与加固路径,结合 Stuxnet、TRITON 等公开案例,并对照 IEC 62443 与 NIST SP 800-82 给出可执行建议与局限[1][6]。

1. 工控系统架构与协议全景

1.1 Purdue 参考模型

Purdue 模型是工控网络安全分层的常用参照,将系统大致分为 0–5 层:

Level 5  ┌──────────────────────────────┐  企业网络
         │ ERP / 邮件 / 办公系统          │  (IT 网络)
Level 4  ├──────────────────────────────┤  ← DMZ(隔离区)
         │ 历史数据库 / MES / 数据网关    │
         │ 远程访问 / 补丁管理            │
- - - - -├ - - - - - - - - - - - - - - -┤- - IT/OT 边界 - - -
Level 3  │ 控制中心 / SCADA 服务器        │
         │ 历史数据 / 工程工作站          │  (OT 网络)
Level 2  ├──────────────────────────────┤
         │ HMI / DCS / 区域控制器         │
Level 1  ├──────────────────────────────┤
         │ PLC / RTU / 安全控制器 (SIS)   │
Level 0  ├──────────────────────────────┤
         │ 传感器 / 执行器 / 电机 / 阀门   │  物理过程
         └──────────────────────────────┘

信息技术(Information Technology, IT)与操作技术(Operational Technology, OT)边界通常落在 Level 3/4 之间;越往下,可用性与确定性越优先于机密性[6]。

1.2 主要工控协议

协议 年代 层级 传输 认证 加密 主要领域
Modbus RTU/TCP 1979 L1–L2 串口/TCP 无(原生) 无(原生) 通用工控
DNP3 1993 L1–L3 串口/TCP SA 可选 可选 TLS 电力/水务
OPC UA 2008 L2–L4 TCP/HTTPS 等 证书/用户名 TLS/消息安全 现代工控
EtherNet/IP (CIP) 2001 L1–L3 UDP/TCP CIP Security 可选 TLS/DTLS 制造业
PROFINET 2004 L1–L2 以太网 可选 可选 制造业(欧洲常见)
IEC 61850 (MMS/GOOSE) 2003 L1–L3 以太网 可选 可选 变电站
BACnet 1995 L1–L3 UDP/IP BACnet/SC 等 TLS(SC) 楼宇自动化

2. 协议漏洞深度分析

2.1 Modbus:零安全设计

Modbus 仍广泛使用,原生设计几乎无安全机制[8]。

# Modbus TCP 教学演示(严禁用于未授权系统)
from pymodbus.client import ModbusTcpClient

client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()

result = client.read_holding_registers(address=0, count=10, slave=1)
print(f"当前寄存器值: {result.registers}")

# 写寄存器在无认证环境下同样可调用——生产环境必须靠外层控制
# client.write_register(address=0, value=9999, slave=1)

client.close()
Modbus TCP 帧结构(明文,无认证字段):

| Transaction ID | Protocol ID (0x0000) | Length | Unit ID | Function Code | Data ... |

Function Code 5/6/15/16 等写操作在无外层防护时可直接改变过程量。

2.2 DNP3:有限安全扩展

DNP3 Secure Authentication(SA)在后续版本增加了认证,但现场是否启用取决于业主与改造成本;行业报告常指出大量部署仍运行在无 SA 或弱配置状态,具体比例随样本与地区变化,不宜当作全球精确占比[4][7]。

版本/形态 安全能力 常见问题
DNP3 原始 完全依赖网络隔离
DNP3 SA v2 HMAC 认证 密钥分发与轮换困难
DNP3 SA v5 非对称认证 + 密钥更新 性能与运维开销
DNP3 over TLS 传输层加密 需要证书基础设施

2.3 OPC UA:内建安全的范例

OPC UA 从设计起提供应用层与通道层安全选项[5]:

应用层:用户认证、节点级授权、审计
SecureChannel:消息签名/加密、X.509 双向认证
传输层:TCP / HTTPS / WebSocket 等
安全策略(示例) 要点 生产建议
None 无保护 仅测试
Basic256Sha256 AES-256 + SHA-256 + RSA 可接受过渡
Aes128_Sha256_RsaOaep AES-128 + RSA-OAEP 可用
Aes256_Sha256_RsaPss 较强组合 优先选用(在兼容前提下)

3. 历史攻击事件分析

3.1 Stuxnet (2010)

维度 详情
目标 铀浓缩相关离心机控制链路(公开分析)
路径 可移动介质 → Windows 漏洞 → 工程软件 → PLC
协议/逻辑 篡改控制逻辑并欺骗人机界面(Human-Machine Interface, HMI)读数
教训 物理隔离不等于安全;供应链与工程站可被武器化[2]

3.2 TRITON/TRISIS (2017)

维度 详情
目标 Triconex 类 SIS
路径 IT 渗透 → OT 横向移动 → SIS 控制器
协议利用 私有工程协议缺乏强认证时的重编程风险
教训 SIS 应与基本过程控制系统严格隔离;私有协议 ≠ 安全[3]

3.3 乌克兰电网相关事件(公开报道)

公开技术分析描述的典型链路包括:钓鱼进入办公网 → 获取远程访问 → 熟悉 SCADA/HMI → 远程分闸 → 破坏恢复手段。停电规模与时长以官方与权威机构通报为准,本文不绑定单一伤亡/户数数字作为精确统计[4]。


4. 防御策略

4.1 网络分段与纵深防御

互联网 → 防火墙 → 企业网 → DMZ(代理/单向数据)
       → 控制中心 (L3) → 协议白名单防火墙
       → 现场控制 (L1–L2) → VLAN/端口安全
       → SIS 独立网络(物理或等效强隔离)

4.2 工控入侵检测(ICS IDS)

被动旁听 + 深度包检测(Deep Packet Inspection, DPI)可在不改写过程通信的前提下发现危险功能码与非工作时间写操作[6][10]。

# Suricata 工控规则示例(教学)
alert modbus any any -> any 502 (msg:"MODBUS - Write Single Coil";
    modbus: function 5; classtype:attempted-admin; sid:1100001; rev:1;)

alert dnp3 any any -> any 20000 (msg:"DNP3 - Cold Restart";
    dnp3_func:cold_restart; classtype:attempted-admin; sid:1100003; rev:1;)

alert tcp any any -> any 102 (msg:"S7COMM - Download Block";
    content:"|32 07|"; offset:7; depth:2;
    classtype:attempted-admin; sid:1100005; rev:1;)

4.3 工控安全监控平台对照

平台 类型 协议覆盖(厂商宣称量级) 部署 特色
Dragos 商业 数十种级 被动旁听 威胁情报
Claroty 商业 数百种级 被动+主动发现 资产发现
Nozomi Networks 商业 数十种级 被动 异常检测
Security Onion 开源 通用+工控规则 Suricata/Zeek 可自建
Grassmarlin 开源(历史 NSA 发布) 基础工控 被动 拓扑可视化

具体协议数量以产品文档为准,上表仅作选型维度对照[7]。


5. IEC 62443 安全框架

5.1 区域与管道(Zones and Conduits)

IEC 62443 用区域(Zone)与管道(Conduit)描述信任边界:同安全需求资产同区,跨区通信经受控管道(防火墙、单向网关、协议过滤)[1]。

5.2 安全等级(Security Levels)

安全等级 对抗威胁(概括) 适用倾向
SL 1 偶然/无意违规 非关键、低暴露
SL 2 低资源恶意攻击 一般控制系统
SL 3 中等资源有组织攻击 关键控制
SL 4 高能力持续威胁 SIS / 关键基础设施

5.3 系列标准分工

标准号 范围 适用对象
62443-1-x 概念、术语、模型 全体
62443-2-x 策略与流程 资产拥有者
62443-3-x 系统要求 集成商
62443-4-x 组件要求 产品开发商

6. 协议加固实践

6.1 Modbus 外层增强

协议本身难"原地升级"时,常见外层方案:

方案 做法 优点 缺点
Modbus/TCP over TLS TLS 封装 加密+认证 需设备/网关支持
VPN 隧道 IPsec/WireGuard 等 少改协议 延迟与运维
工控防火墙 功能码/寄存器白名单 不改现场设备 难防合法身份滥用
DPI/IDS 检测异常命令 被动、低干扰 默认只告警
协议代理 中间件认证与审计 可集中策略 引入单点与延迟

6.2 OPC UA 配置要点

生产环境应禁用 None、启用 SignAndEncrypt、校验证书吊销与最小密钥长度,并打开审计日志[5]。会话超时、证书生命周期与吊销列表(Certificate Revocation List, CRL)/在线证书状态协议(Online Certificate Status Protocol, OCSP)需纳入运维。


7. 实践建议(优先级)

优先级 措施 成本倾向 影响
P0 IT/OT 分段与远程访问强控(VPN + 多因素) 中/低 极高
P1 资产清点 + 工控防火墙白名单 低–中
P2 被动 IDS;SIS 强隔离
P3 向 OPC UA 等可认证协议迁移;集中审计
P4 IEC 62443 体系化合规 长期

原则:可用性优先于机密性改造节奏;先被动摸清基线再谈主动阻断;勿把"私有协议"当成安全控制。


8. 局限、挑战与可改进方向

1. 遗留协议无法端到端认证

局限:大量现场仍跑原生 Modbus/无 SA 的 DNP3,设备生命周期长达十余年,无法"一键打补丁"[8][10]。 改进:在管道层部署协议代理或工控防火墙;新项目强制可认证协议;用资产台账驱动分批改造。

2. 安全扩展部署率与运维能力脱节

局限:DNP3 SA、CIP Security、OPC UA 强策略在纸面可用,密钥/证书运维跟不上会导致回退到 None 或明文[5][7]。 改进:把公钥基础设施(Public Key Infrastructure, PKI)与证书轮换写进运行规程;用集中证书管理;验收时抽检实际协商的安全策略。

3. IDS 误报与过程噪声

局限:工程下载、批次切换、维保写寄存器会被规则当成攻击;纯签名难覆盖针对性 ICS 恶意软件[9][10]。 改进:先建通信基线(谁对谁、功能码、时段);规则+行为异常融合;维保窗口白名单与工单关联。

4. IT/OT 组织墙导致响应慢

局限:事件跨 IT 安全与工艺运维,责任不清时 MTTD/MTTR 拉长。 改进:联合值班与统一工单;预演"疑似写线圈"剧本;明确谁有权下阻断策略。

5. 测试床与真实厂差异

局限:公开数据集与实验室拓扑难复现真实工艺时序与安全联锁[9][10]。 改进:建设含真实协议栈的数字孪生/硬件在环;红队仅在授权窗口对镜像环境演练。


参考文献

[1] IEC, "IEC 62443: Security for industrial automation and control systems," 系列标准, 近年修订版. [2] R. Langner, "Stuxnet: Dissecting a Cyberwarfare Weapon," IEEE Security & Privacy, 2011. [3] B. Johnson et al., "Attackers Deploy New ICS Attack Framework TRITON," FireEye/Mandiant, 2017. [4] CISA, "ICS Advisories / ICS-CERT," https://www.cisa.gov/ics [5] OPC Foundation, "OPC UA Security," 技术文档与安全分析材料, 2022 及相关更新. [6] K. Stouffer et al., "NIST SP 800-82 Rev. 3: Guide to Operational Technology (OT) Security," 2023. [7] Dragos, "Year in Review: ICS/OT Cybersecurity," 2024. [8] Modbus Organization, "Modbus/TCP Security Protocol," 2018 及相关说明. [9] B. Green et al., "Pains, Gains and PLCs: Ten Lessons from Building an Industrial Control Systems Testbed," USENIX CSET, 2017. [10] M. Conti et al., "A Survey on Industrial Control System Testbeds and Datasets for Security Research," IEEE Communications Surveys & Tutorials, 2021. [11] E. Byres et al., 工控协议安全与深度包检测相关实践文献 / 白皮书综述材料. [12] IEC, "IEC 61850" 与变电站通信安全相关部分, 近年修订版.