08 Modbus协议安全分析
Modbus协议是典型的工控网协议,研究其安全性对于加强工业控制网络的安全性有重要意义。一般来说,协议安全性问题可以分为两种,一种是协议自身的设计和描述引起的安全问题;另一种是协议的不正确实现引起的安全问题。Modbus 协议也存在着
这两方面的问题。
8.1Modbus 协议的固有问题
绝大多数工控协议在设计之初,仅仅考虑了功能实现、提高效率、提高可靠性等方面,而没考虑过安全性问题。Modbus协议也不例外,其已经成为事实上的工业标准。从前面原理分析可以看出其本身的安全性问题是:缺乏认证、授权、加密等安全防护机制和功能码滥用问题。
( 1) 缺乏认证
认证的目的是保证收到的信息来自合法的用户,未认证用户向设备发送控制命令不会被执行。在Modbus协议通信过程中,没有任何认证方面的相关定义,攻击者只需要找到一个合法的地址就可以使用功能码就能建立一个Modbus通信会话,从而扰乱整个或者部分控制过程。
( 2) 缺乏授权
授权是保证不同的特权操作需要由拥有不同权限的认证用户来完成,这样可大大降低误操作与内部攻击的概率。目前,Modbus协议没有基于角色的访问控制机制,也没有对用户分类,没有对用户的权限进行划分,这会导致任意用户可以执行任意功能。
( 3) 缺乏加密
加密可以保证通信过程中双方的信息不被第三方非法获取。Modbus协议通信过程中,地址和命令全部采用明文传输,数据可以很容易的被攻击者
捕获和解析,为攻击者提供便利。
( 4) 功能码滥用
功能码是Modbus 协议中的一项重要内容,几乎所有的通信都包含功能码。目前,功能码滥用是导致Modbus网络异常的一个主要因素。例如不合法报文长度,短周期的无用命令,不正确的报文长度,确认异常代码延迟等都有可能导致拒绝服务攻击。
8.2协议实现产生的问题
Modbus协议获得了广泛的应用,在实现具体的工业控制系统时,开发者并不具备安全知识或者没有意识到安全问题。这样就导致了使用Modbus协议的系统中可能存在各种各样的安全漏洞。
( 1) 设计安全问题
Modbus 系统开发者重点关注的是其功能实现问题,安全问题在设计时很少被注意到。设计安全是指设计时充分考虑安全性,解决Modbus系统可能出现的各种异常和非法操作等问题。比如在通信过程中,某个节点被恶意控制后发出非法数据,就需要考虑这些数据的判别和处理问题。
( 2) 缓冲区溢出漏洞
缓冲区溢出是指在向缓冲区内填充数据时超过了缓冲区本身的容量导致溢出的数据覆盖在合法数据上,这是在软件开发中Zui常见也是非常危险的漏洞,可以导致系统崩溃,或者被攻击者利用来控制系统。Modbus系统开发者大多不具备安全开发知识,这样就会产生很多的缓冲区溢出漏洞,一旦被恶意者利用会导致严重的后果。
( 3) Modbus TCP 安全问题
目前,Modbus 协议已经可以在通用计算机和通用操作系统上实现,运行于TCP /IP 之上以满足发展需要。这样,TCP /IP协议自身存在的安全问题不可避免地会影响到工控网络安全。非法网络数据获取,中间人,拒绝服务, IP 欺骗,病毒木马等在IP互联网中的常用攻击手段都会影响Modbus 系统安全。
8.3安全建议
目前,Modbus系统采取的安全防护措施普遍不足,这里参考信息安全业内研究并结合工控系统自身的安全问题,提出了一些安全建议,能够有效地降低工业控制系统面临的威胁。
( 1) 从源头开始
工控网络漏洞,很大一部分是其实现过程出现的漏洞。如果从源头开始控制,从Modbus系统的需求设计、开发实现、内部测试和部署等阶段,全生命周期的介入安全手段,融入安全设计、安全编码以及安全测试等技术,可以极大地消除安全漏洞,降低整个Modbus系统的安全风险。
( 2) 异常行为检测
异常行为代表着可能发生威胁,不管是有没有攻击者,开发针对Modbus系统的专用异常行为检测设备可以极大提高工控网络的安全性。针对Modbus系统,要分析其存在的各种操作行为,依据“主体,地点,时间,访问方式,操作,客体”等行为描述成一个六元组模型;进而分析其行为是否属于异常; Zui终决定采取记录或者报警等措施。
( 3) 安全审计
Modbus 的安全审计就是对协议数据进行深度解码分析,记录操作的时间、地点、操作者和操作行为等关键信息,实现对Modbus系统的安全审计日志记录和审计功能,从而提供安全事件爆发后的时候追查能力。
( 4) 使用网络安全设备
使用入侵防御和防火墙等网络安全设备。防火墙是一个串行设备,通过设置,只允许特定的地址访问服务端,禁止外部地址访问Modbus服务器,可以有效的防止外部入侵;入侵防御设备可以分析Modbus协议的具体操作内容,有效地检测并阻止来自内部/外部的异常操作和各种渗透攻击行为,对内网提供保护功能