一、来自于工控通信协议的威胁 工控通信协议作为工控设备与应用、设备与设备之间沟通的一种重要语言。工控系统中如果需要实现远程数据监控(SCADA)就一定离不开通讯协议,SCADA系统中会使用经由双方约定的协议直接与下层设备或数据采集转换器进行数据通信。随着时代的发展,厂级监控的实时性、可靠性需求增高,工业通信总线通讯速率的不断提升,从RS232/485到工业以太网再到工业实时以太网,工控网络中大量引入了以太网,并且使用TCP/IP或ISO标准封装后进行传输,因为一般的工控协议都经历了长时间的演变与积累,协议在设计之初都没有考虑加密、认证等在当今看来保障用户安全的必要认证条件,如第一个现场总线协议Modbus由莫迪康与1979年提出,所以我们常见的工控网络协议的安全性一直都不高。加上工控协议的特性是面向命令、面向功能、轮询应答式,攻击者只需要掌握协议构造方式,并接入到了工控网络中,便可以通过协议对目标设备的任意数据进行篡改。

点击查看原图

二、如何解决来自工控通信协议的威胁 一般常见工控协议中包含了大量的命令字,如读取、写入数据等,然而其中一部分高级或协议约定的自定义功能往往会给用户安全带来更多的威胁,如Modbus协议的从机诊断命令将会造成从机设备切换到侦听模式、CIP协议某些命令字还能导致设备直接重启、S7协议的STOP CPU功能将会导致PLC程序运行停止,在大多数的情况下用户在上位机进行组态时仅会使用协议的某些读取数据功能和固定范围、固定地址的写数据功能,而协议栈上更多的功能则不会应用于系统集成中。如果对协议字段的掌握和对协议命令字的掌握,便可以很灵活的将可能给用户带来风险和威胁的一些隐藏功能,单独使用应用层防火墙对报文进行深度过滤,或者使用IDS进行报警提醒,如下便总结了2个协议中常见的威胁样例以及报警规则的应用方式。 三、工控通信协议威胁常见样例    Modbus
严重等级 威胁行为描述 潜在危害
主站下发08号功能码 可能导致设备进入Standby状态
主站下发90(5A)号功能码-stop(Schneider) 导致PLC CPU进入STOP停机状态
主站下发90(5A)号功能码-download(Schneider) PLC的内部程序可能正在被替换程
主站下发90(5A)号功能码-upload(Schneider) 设备将工程上传至主站可能造成信息泄露
主站一次下发modbus报文超过260个字节 超出modbus tcp协议标准组包长度,可能导致设备拒绝服务
主站下发43(2B)号功能码 导致设备及其固件版本信息泄露
西门子S7协议 
严重等级 威胁行为描述 潜在危害
主站下发STOP/RUN命令 导致设备进入停机状态/导致设备被启机初始化
主站下发download block命令 PLC的内部程序可能正在被替换程
主站下发delet block命令 PLC的内部程序块可能正在被删除
主站下发错误的密码请求 正在未授权访问
主站下发read szl请求 正在尝试获取设备模块信息、固件信息
解决与实践 如果了解了工控网络通信协议其中的威胁对正常运行所带来的潜在危害,我们其实可以很好的使用与创建规则进行拦截与报警,例如可以非常方便的基于Snort构建报警规则,如下为部分Snort规则的样例。 代码:
分享本页
返回顶部