本节摘要:Modbus 诞生于可信网络时代——没有认证、没有加密、任何能摸到报文的人都能读写设备。本节讲清这个"先天缺陷"在工控与物联网场景下的具体风险,以及为什么"能连上"不等于"可以放心连"。位置:第 6 章把总线调顺了,本章直面它的安全账。
Modbus(经典版本)没有任何身份认证与加密机制:请求帧里没有用户名、没有密码、没有签名。任何人只要在网络可达的范围内发出正确的报文,就能读寄存器(偷数据)、写寄存器(改参数)、甚至复位设备。攻击者甚至不需要知道设备地址——广播地址 0 可以同时作用于所有从站。
把风险翻译成业务语言:写保持寄存器 = 改变频器频率、改温控设定值、改阀门开度;写线圈 = 启动/停止设备。对工业设备而言,"能写 Modbus"约等于"能操作设备",而它不需要任何凭证。
路径一:网络暴露——Modbus TCP 直接接办公网或互联网(用 502 端口映射到公网),扫描器几分钟就能找到,发几条报文就能控制。路径二:中间人——攻击者接入总线段,监听主站与从站间的报文,重放"写参数"指令。路径三:物理接入——RS-485 总线本身无防护,摸到线就能抓包注入。
工业安全事件(不指名具体厂商)的常见复盘结论几乎一致:入口不是"高级漏洞",而是"Modbus 无认证 + 网络未隔离"——攻击者从办公网或互联网摸到工控网段,用现成工具(Modbus 扫描器)逐个设备试写。修复方向也一致:网络隔离 + 认证加密 + 最小权限,三者缺一不可。
不是所有寄存器都同等危险,做安全规划先分级:高危——控制类(启停、频率、开度)与安全类(急停、联锁)寄存器,被写会造成设备误动作;中危——工艺参数(设定值、阈值),被改会降低产品质量;低危——只读遥测数据,被读泄露工艺信息。分级结果决定防护重点:高危设备必须放在隔离区+认证后,低危遥测可以放宽。
把 Modbus 无认证类比成"大楼的门没锁":写字楼里最值钱的不是门禁系统本身,而是"知道该锁哪扇门"。工控安全的重点同样不是给每个寄存器加密,而是把设备放在物理隔离 + 逻辑隔离 + 访问控制之后,让"没钥匙的人到不了门口"。第 7.2 节会讲这套纵深防御怎么做。
| 级别 | 寄存器类型 | 被写后果 | 防护重点 |
|---|---|---|---|
| 高危 | 控制类(启停、频率、开度) | 设备误动作 | 隔离区 + 白名单 |
| 中危 | 工艺参数(设定值、阈值) | 产品质量下降 | 写保护 + 审计 |
| 低危 | 只读遥测 | 信息泄露 | 网络隔离即可 |
分级的意义:安全投入按"被写后果"排序,而不是按寄存器数量排序。
要点回顾:Modbus 无认证无加密,"能写即能控";风险从网络暴露、中间人、物理接入三条路径进来;先按寄存器分级再设计防护。下一节讲防护怎么做——Modbus Security 与纵深防御。
把 Modbus 的攻击面系统盘点一遍:网络层(502 端口暴露、扫描器发现设备、未授权连接);协议层(无认证直接读写、广播写、异常注入、重放);应用层(寄存器语义被利用——把温度设定改成危险值、把状态位清零)。盘点方法:把自己当攻击者走一遍——用 Modbus 扫描器扫网段看能发现什么、用调试器直接读写看有没有被拦、把抓到的写请求重放看是否生效。走完一遍,防护优先级自然就清楚了。
假设最坏情况(设备被远程改写)已发生,预案三个动作:1 隔离——断开该网段与外部网络的连接(拔线或防火墙断规则),防止进一步扩散;2 取证——保存网关与上位机日志、抓包文件,记录"何时、哪个 IP、写了哪些寄存器";3 恢复——核对关键参数(对照工艺基准表重写设定值)、排查是否还有其它设备被改、升级防护(补隔离、加认证)。预案要在平时演练——出事后才想流程,等于把处置时间浪费在慌乱上。
安全投入算不清账是常态,换个算法:一次工控事件的平均损失(停产、设备损坏、数据泄露)除以防护成本(网关、防火墙、隔离改造)——多数工厂算下来防护成本只占潜在损失的零头。结论:先做"高杠杆"动作(网络隔离、高危寄存器白名单、管理口改密码),再做"锦上添花"(TLS 全链路),按 ROI 排序投钱,而不是追求"全都要"。
