Modbus/TCP协议安全性分析与防护技术探讨
2018-11-21闻宏强李富勇赵一凡
闻宏强,李富勇,赵一凡,方 源
(浙江省电子信息产品检验所,浙江 杭州310007)
0 引 言
随着工业互联网的大力推进,工业控制系统的开放互联成为新趋势,加之传统工业控制设备、系统在安全方面存在诸多问题,为当前的工业信息安全增加了更为严峻的风险和挑战。Modbus/TCP协议在石油、化工、能源、电力等工业控制系统中的广泛应用,使其安全性也受到越来越多的关注。
1 Modbus/TCP协议介绍
Modbus/TCP通过以太网通信,其实质是把Modbus通用帧封装到TCP帧中。Modbus通用帧由三部分组成,如图1所示,分别是附加地址、协议数据单元(PDU)和差错校验,其中附加地址用于表示从设备的地址,PDU用来指定应用层的相关操作,由功能码和数据共同组成。Modbus/TCP帧结构如图2所示,一方面去除了通用帧中的附加地址和校验,另一方面增加了报文头。主设备只在应用层将Modbus协议进行修改并封装到TCP协议中形成Modbus/TCP数据包,然后从设备收到该数据包,解封后获得Modbus原始数据并解析,最后将需要回传的Modbus数据重新封装进TCP协议中并发送到主设备。
图1 Modbus通用帧
图2 Modbus/TCP帧
2 Modbus/TCP协议安全分析
2.1 身份认证安全分析
在传统的信息系统中,身份认证技术得到了广泛应用,为用户访问系统资源提供了可靠的安全保障。但在工控系统中,在Modbus/TCP通信过程中,工程师站或者操作员站仅通过IP地址和Modbus功能码就能建立一个Modbus会话,由于缺乏相应的身份认证机制,Modbus主设备对Modbus从设备的恶意访问成为安全隐患。
2.2 完整性安全分析
在对Modbus/TCP协议进行测试的过程中,如果向Modbus从设备发送一个超长的畸形报文会导致拒绝服务的状况出现。这是Modbus/TCP协议中比较典型的安全问题。因此,当一个恶意者去破坏Modbus从设备时,可采取上述格式的畸形数据报文进行攻击,使得Modbus从设备的缓存区溢出导致设备宕机,使工业控制系统无法正常运行。
2.3 功能码使用安全分析
Modbus/TCP协议缺乏对用户功能权限的划分,这会导致功能码滥用的情况出现。功能码是Modbus主设备向Modbus从设备发送控制指令的关键,一旦被恶意修改,主设备可以向从设备发送一些原先不被允许的、非法的功能和操作。例如,非法请求关于Modbus从设备配置或其他敏感信息,非法重启设备,强制清除计数器,强制从设备处于监听状态等。
3 Modbus/TCP协议安全防护
3.1 基于深度包检测技术的防护模型
深度包检测技术是一种基于应用层的流量检测和控制技术,当IP数据包、TCP或UDP数据流通过基于该技术的带宽管理系统时,该系统会深入读取IP包载荷的内容对OSI七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。
为了保障Modbus/TCP协议在工业控制网络中数据传输的安全性,特建立基于深度包检测技术的防护模型,如图3所示。本防护模型主要由身份合法性检测、协议完整性检测、功能码使用安全性检测组成。其中,身份合法性检测通过对访问地址的解析判断访问者身份的合法性;协议完整性检测则通过对Modbus/TCP协议特征的解析判断数据包的规范性;功能码使用安全性检测基于对Modbus/TCP数据报文中功能码和数据的解析,以及对应用户授权的操作行为判断操作的合法性。
图3 基于深度包检测技术的防护模型
3.2 身份合法性检测
身份合法性检测主要包括数据链路层检测和网络层检测。数据链路层检测通过对数据包源MAC地址和目的MAC地址的解析和过滤可以阻断不合法设备的访问,网络层检测则通过解析数据包中的源IP和目的IP使得合法的IP访问顺利进行。
3.3 协议完整性检测
协议完整性检测主要包括端口检测、协议标识符检测和超长数据报文检测。端口检测通过解析数据报文的源端口和目的端口是否为502识别Modbus/TCP报文,协议标识符检测则通过解析协议标识符是否为0X0000判断Modbus/TCP数据,同时对数据报文的长度进行检测,若数据载荷过长则判断报文为恶意构造的数据包。
3.4 功能码使用安全性检测
在功能码的使用安全性检测中,可以设置访问控制规则,允许符合规则的Modbus/TCP数据报文通过,不符合的数据报文则丢弃。其内容应包括功能码、地址范围、阈值范围,并且是基于白名单的工作机制,以限制主站对从站的访问。例如:白名单规则:Pass[功能码:15][地址范围:5-9][阈值范围:50-100],默认规则:全部禁止。
4 结 语
针对当前Modbus/TCP协议存在的比较突出的安全风险,本文提出了基于深度包检测技术的防护模型,并从身份合法性检测、协议完整性检测和功能码使用安全性检测三个方面给出了具体的防护思路,相信能够对Modbus/TCP协议在工业控制网络数据传输过程中的安全防护起到积极作用。