基于Modbus协议认证漏洞的数据包伪造方法研究

2016-12-12 12:23郭政伟向上陈武张林鹏王勇上海电力学院计算机科学与技术学院上海201000
自动化博览 2016年9期
关键词:IP地址校验数据包

郭政伟,向上,陈武,张林鹏,王勇(上海电力学院计算机科学与技术学院,上海 201000)

基于Modbus协议认证漏洞的数据包伪造方法研究

郭政伟,向上,陈武,张林鹏,王勇(上海电力学院计算机科学与技术学院,上海 201000)

Modbus 协议在工业控制系统领域应用十分广泛,但是该协议存在认证漏洞,严重威胁着工业控制系统的安全性。本文提出了基于Modbus协议认证漏洞的Modbus /TCP协议数据包的伪造方法。在Modbus协议服务端模拟器Modbus Poll和客户端模拟器Modbus Slave搭建了Modbus/TCP的实验环境,利用伪造数据包的方法,实现对任意指定IP地址进行攻击,并且给出了该攻击方法的防御措施。实验结果表明,伪造Modbus/TCP协议数据包的方法严重威胁到当前工业控制系统安全。

Modbus/TCP协议;工业控制网络安全;协议分析;攻击过程

1 引言

2015年12月乌克兰电力部门遭到BlackEnergy的攻击,并引起了乌克兰大规模的停电事故。由于PROFINET在工业控制系统的领域广泛应用,数据包在以太网介质中传输[4],再加上Modbus/ TCP协议原理以及其本身的脆弱性,给工业控制系统带来很大的隐患。

Modbus是一种串行通信协议标准(规约),是Modicon(现为施耐德电气公司的一个品牌)于1979年,为使用可编程逻辑控制器(PLC)通信而发布的。按照OSI模型分,Modbus是应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供服务器/客户机通信(主机/从机)。

现阶段研究大部分集中在防御策略的研究,例如:在该领域,主要开展了Modbus/TCP原理及安全性系统的阐述[1],利用攻击图的方法定性、定量分析了Modbus协议的脆弱性[2],设计了Modbus TCP/IP协议防火墙[3]等。本文提出了基于Modbus 协议认证漏洞的Modbus/TCP协议数据包的伪造方法。

2 Modbus协议漏洞

Modbus协议采用服务器-客户终端的结构,提供了连接不同种总线与网络之间工业设备的通信,服务器与客户机均可通过操作码发送要请求的操作与请求响应。

2.1 Modbus协议格式

因为Modbus通信的对象是工业设备,设备的标准不一。所以其定义了一个与基层无关的数据单元PDU解决这个问题。并且协议通过增加附加地址与差错校验域进一步增强了它在不同物理通信介质上的兼容性。

实际中无论是主设备与从设备在通讯中二层协议都会选择ASCII模式或者RTU模式其中一种作为通讯协议,以此选择不同模式所需要的不同物理链路与接口,而在实验之中是以以太网帧为基础,传输三层协议TCP/IP,封装四层Modbus数据包达到目的的。而对实际中的二层协议通过分析,我们做如下总结:

(1)ASCII模式

编码系统:16进制,ASCII字符0-9,A-F

数据位:1位起始位,7位数据,低位先送,奇/偶校验1位:无奇偶校验时0位,(LRC)1位带校验1停止位;无校验2停止位错误校验区:纵向冗余校验。

表1 ASCII帧

(2)RTU模式

编码系统:16进制,ASCII字符0-9,A-F

数据位:1起始位,8位数据,地位先送,奇/偶校验1位:无奇偶校验时0位(LRC)1位带校验1停止位;无校验2停止位错误校验区:循环冗余校验(CRC)。

表2 RTU帧

(3)以太网(TCP/IP)模式

实验中使用的是TCP/IP模拟分析软件,所以用到了传统以太帧在(TCP/IP)协议之上封装Modbus功能码和数据。TCP/IP 模式去除了附加地址和校验,增加了报文头。

2.2 Modbus协议认证漏洞

协议安全研究方向主要包括两种,一是协议自身的设计与描述引起的安全问题,另一种是协议的不正确实现产生的问题。

目前研究下Modbus协议的固有问题主要源于其设计之初只着重考虑了其功能、效率、可靠性和兼容性等方面,从而存在着安全性问题。第一种是协议安全性问题,例如它缺乏认证和授权,没有加密措施,而且滥用功能码与无效功能码的识别。第二种是协议实现安全性问题,协议本身存在安全问题,容易导致设备缓冲区溢出,还有Modbus在多种基础通信层中的安全问题等。

认证的目的是保证收到的信息来自合法的用户,未认证用户向设备发送控制命令不会被执行。通过上述对Modbus协议存在的安全问题的阐述,可以看出Modbus协议通信过程中,没有任何认证方面的相关定义,攻击者只需要找到一个合法的地址就可以使用功能码建立一个Modbus通信会话,从而扰乱整个或者部分控制过程。实际中则可以利用TCP/IP协议并基于IP地址进行主从机的通信,但是Modbus协议却没有对地址来源进行认证。也就是说攻击者可以利用IP地址欺骗或者是其他漏洞达到同时或间接与服务端通信的权利。并且可以仿冒服务端对客户终端数据进行篡改,这样实际设备就可能会被第三方恶意控制。

3 基于认证漏洞的数据包伪造攻击测试

3.1 实验平台搭建

安装Modbus协议服务端模拟器Modbus Poll(可设置虚拟IP地址,常用请求功能码,任意大小的内存)客户端模拟器Modbus Slave以及Modbus_RSsim(可读取协议数据段数据)。

配置上述模拟软件,进行常规通信,设置IP端口为502。以功能码01(读线圈)、03(读寄存器)、15(写多个线圈)发出请求包,此时开启抓包软件对数据包内容进行分析。随后获得返回响应包,读出其中内容,亦对其分析。列举常用公共功能码以及特定功能码内容如表3所示。

表3 公共功能码分类

3.2 Modbus公共功能码定义

Modbus协议定义了三种功能码:

公共功能码:被确切定义的、唯一的功能码,由Modbus-IDA组织确认、可进行一致性测试且已在MB、IETF和 RFC中归档。

用户定义的功能码:用户无需Modbus-IDA组织的任何批准就可以选择和实现的功能码,但是不能保证被选功能码的使用是唯一的。

保留功能码:某些公司在传统产品上现行使用的功能码,不作为公共使用。

表4 公共功能码定义

3.3 伪装数据包

对数据包结构进行分析,得出结果如下:

15 (0x0F) 一次对多个线圈进行改写数据包。

解释:

3.4 Modbus协议攻击

根据请求响应数据包结构结合TCP/IP编写java模拟攻击程序

(1)添加Modbus协议库文件jamod.jar,modbus4.jar,seroUtils.jar

(2)通过协议数据结构,编写socket,将其IP地址设为Modbus合法地址。攻击程序核心代码如下:

3.5 攻击结果分析

执行攻击程序,将IP、端口号、设备号、开始序号传给上述函数,通过对values数组进行修改,以达到程序运行后对攻击目标的寄存器的值的修改,观察程序发出包,并对比攻击前后寄存器内容。数据包内容见表5:

表5 请求保持寄存器数据包

当上述攻击数据包发出后,可发现网段内所有设备的内存中的值均可返回,并且得到的返回包格式见表6:

表6 返回保持寄存器数据包

4 总结与展望

上述的攻击结果表明,普通的Modbus协议网络有着其脆弱性,可以轻易通过伪造数据包达到控制工业设备的目的。因此,研究如何增强Modbus TCP/IP协议的网络安全性具有十分重要的现实意义。从目前来看,可以添加一个降低风险的模型来提高Modbus TCP/IP协议的安全性[3]。主要功能模块为:(1)内核模块。该模块通过直接抓取数据包,并对连接的IP地址和物理地址进行简单的检查认证。(2)过滤模块。该模块针对Modbus TCP/IP数据包文里的线圈或寄存器地址、功能码和操作使用的数据一一在白名单核对,没找到的一律不能通过,并剔除格式不是Modbus TCP/IP协议的通讯报文。(3)加解密模块。使用多重加密的方式来传输数据。数据和加密数据的密钥采用不同的算法。另外,使用TPM(可信计算)模块也可以达到数据加密传输的效果,并且性能会更强。(4)配置模块。实现整个程序和白名单的配置。(5)日志模块。该模块完成对过滤日志的记录。

另外,为了构建安全稳定的工业控制系统,需要研究和设计一套更全面、更可靠的工业网络控制协议,防止类似于“乌克兰电力系统”事件的大规模工业事故的发生。现阶段,为了突破传统的通讯协议的局限性,PROFINET已逐渐创新成长为工业控制领域的新生力量[4]。PROFINET协议的一个重要特性便是可以同时传送实时数据和标准的TCP/IP数据。为了保护现场数据的安全,PROFINET配备了专有的安全机制,通过专用的安全屏障来使工业控制系统的安全风险降到最低。因此,PROFINET必将成为新一代工业控制网络的通信标准。

[1] 左卫, 程永新. Modbus协议原理及安全性分析[J]. 通信技术, 2013, 46(12): 66 - 69.

[2] 徐丽娟. 基于攻击图的工业控制网络安全隐患分析[D]. 北京邮电大学, 2015.

[3] 高栋梁. MODBUS TCP/IP协议防火墙的研究与实现[D]. 北京邮电大学, 2015.

[4] 张利新, 徐扬. Profinet在工业自动控制系统中的应用[A]. 全国冶金自动化信息网2016年会论文集[C]. 2016.

Data Packet Forgery Method of Modbus Protocol based on Authentication Vulnerability

Modbus protocol is widely used in the field of industrial control system. However, it has authentication vulnerabilities, which seriously threaten the security of industrial control systems. In this paper, we propose a forgery method of Modbus /TCP protocol data packet based on Modbus protocol authentication vulnerability. By building Modbus / TCP experimental environment in the Modbus protocol server simulator Modbus poll and client simulator MODBUS slave and using the forged packet method, we can realize the attack on any of the specified IP address, and meanwhile give the defense measures of these attacks. Experimental results show that forging the TCP/IP Modbus data packet is a serious threat to the current industrial control system security.

Modbus/TCP protocol; Industrial control network security; Modbus protocol analysis; Attack process

A

1003-0492(2016)09-0080-03

TP393.1

上海科委地方能力建设项目(15110500700);上海市浦江人才计划资助(16PJ1433100);上海自然科学基金(16ZR1436300)

郭政伟(1994-),男,河南安阳人,本科,就读于上海电力学院信息安全系。

向 上(1994-),男,四川德阳人,本科,就读于上海电力学院信息安全系。

陈 武(1993-),男,湖南郴州人,硕士研究生,现就读于上海电力学院计算机科学与技术学院。

张林鹏(1991-),男,河北邢台人,硕士研究生,现就读于上海电力学院计算机科学与技术学院。

王 勇(1973-),男,河南确山人,教授,现就职于上海电力学院信息安全系。

猜你喜欢
IP地址校验数据包
使用Excel朗读功能校验工作表中的数据
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
铁路远动系统几种组网方式IP地址的申请和设置
C#串口高效可靠的接收方案设计
炉温均匀性校验在铸锻企业的应用
电子式互感器校验方式研究
公安网络中IP地址智能管理的研究与思考
《IP地址及其管理》教学设计
浅谈微电子故障校验