工控网络被攻击的取证方法研究

2019-09-10 07:22黄旭梁效宁
信息技术时代·上旬刊 2019年2期

黄旭 梁效宁

摘要:随着工业化和信息化的融合,传统信息网络的攻击在工控网络也愈发频繁,尤其工业控制网络的使用专用的工控协议如Modbus,S7,profine等,这些协议在设计的时候一般只考虑功能,缺乏安全验证,所以通信数据容易被拦截,甚至篡改,影响工控网络安全。在遭遇攻击以后,使用传统的电子取证方法面临协议无法解析,且攻击日志保留难等问题。在研究西门子S7協议重放攻击基础上,结合实际工作环境,提出了一种工控网络协议电子取证方法,根据实际工作环境的设备数据信息,建立安全模型,通过安全模型建立正常通信安全基线,所有的通信协议通过拦截设备进行过滤,通信数据和安全基线对比,和安全基线不一致的则认定为篡改,拦截设备则发出告警信息,同时通信数据被拦截,所有的过滤和拦截数据和分析过程都会被作为日志记录。经实验证明,该方法可以有效检测通信数据是否被篡改,所有的过滤和拦截数据都被有效分析并记录,对于电子取证起到了良好的帮助作用。

关键词:电子取证;协议解析;工控网络;工控协议;S7;重放攻击

1.背景

工业控制系统广泛用于冶金、电力、石油石化、核能等工业生产领域,以及航空、铁路、公路、地铁等公共服务领域,是国家关键生产设施和基础设施运行的“中枢”。从工业控制系统自身来看,随着计算机和网络技术的发展,尤其是信息化与工业化深度融合,工业控制系统越来越多地采用通用协议、通用硬件和通用软件,通过互联网等公共网络连接的业务系统也越来越普遍,这使得针对工业控制系统的攻击行为大幅度增长,也使得工业控制系统的脆弱性正在逐渐显现,面临的信息安全问题日益突出。2010 年的“震网”病毒、 2012 年的超级病毒“火焰”、 2014 年的 Havex 病毒等等专门针对工业控制系统的病毒爆发给用户带来了巨大损失,同时直接或间接地威胁到国家安全。2015 年发生的乌克兰电力遭受攻击事件看到,在不需要利用复杂攻击手段、不需要完整还原业务系统运行过程的情况下,就可以达到对工控系统的运行影响。从实际的攻击过程看,攻击的成本在降低,而攻击所带来的影响在进一步加重。

2.电子取证

电子取证一直以在公检法等政府部门、知识产权机构、数据服务机构、情报分析机构和企业网络安全部门等发挥着巨大作用。随着工业化和信息化的融合,传统信息网络的攻击在工控网络也愈发频繁,工控网络也需要进行电子取证,通过网络状态和数据包分析,日志文件分析,文件内容调查,使用痕迹调查等分析,发现入侵的行为和动作,以便采取相应的应对措施。

但是,工控网络和传统信息网络有着巨大的区别,表现之一就是公开网络采用专有通信协议,这些协议很多并不公开协议内容,常规的取证方法无法分析协议包数据。同时,由于工业控制网络的使用专用的工控协议如Modbus,S7,profine等,这些协议在设计的时候一般只考虑功能,缺乏安全验证,所以通信数据容易被拦截,甚至篡改,影响工控网络安全,这些协议的执行一般是通过上位机向下位机下发执行指令,日志记录在上位机日志中,下位机日志记录简单,无法提供取证完整的技术支撑。

针对这种困难,在研究西门子S7协议重放攻击基础上,结合实际工作环境,提出了一种工控网络被攻击时的电子取证方法,根据实际工作环境的设备数据信息,建立数据安全模型,通过数据安全模型建立正常通信安全基线,所有的通信协议从上位机发送下位机时必须通过拦截设备进行过滤,通信数据和安全基线对比,和安全基线不一致的则认定为异常篡改,拦截设备发出告警信息,同时通信数据被拦截,所有的过滤和拦截数据和分析过程都会被作为日志被记录。经实验证明,该方法可以有效检测通信数据是否被篡改,所有的过滤和拦截数据都被有效分析并记录,记录的日志是经过解析的可以阅读的内容,电子取证可以直接使用,这对于工控网络攻击时的快速安全的电子取证起到了良好的帮助作用。

3.工控协议分析

3.1.基本功能分析

S7 协议是西门子专有协议,广泛用于各种通讯服务,S7 协议独立于西门子各种通讯总线,可以在 MPI,PROFIBUS,Ethernet ,PROFINET上运行。S7协议是西门子的私有协议,不对外公开,我们通过PLC通信过程的侦听来分析S7协议的实现。

通过分析,我们得到了S7协议的通信过程,数据读取分为三个步骤:

PLC和应用程序通过TCP三次握手,建立连接关系;

通过PCL 和客户应用程序通过RFC1006 建立连接请求和应答关系;

PLC使用S7协议和应用程序S7协议之间建立请求应答关系;

重复第三步,直至数据读取过程结束。

协议字段解释如下:

请求应答:0x1为发送命令,0x3为应答帧。

保留:保留,填充为0。

事务处理标识:请求、应答事务标识。

命令长度:帧长度。

保留:保留,填充为0。

命令符:0x4 位读取命令,0x5位写命令。

读取数据段数:读取数据段的个数。

读取数据段命令域:读取多个不连续的数据时,该部分可以重复出现。

命令域字段标识头:读取数据段命令域的标识头。

命令域字段长度:命令域字段的长度。

未知:通常为0x10,暂不清楚具体含义。

数据类型:0x1bit,0x2 byte,0x4位float。

读取字节:读取字节的长度。

数据块编号:读取数据块编号,I、Q、M等区为0。

寄存器类型:读取寄存器类型。

偏移地址:开始读取量的偏移地址,按bit计算。

数据段:根据读取不联系的地址命令,一个应答帧可以包含过个读取的数据段。其中,标示头为 XFF,有效性标示该数据段数据的有效性,数据长度为返回的数据长度,子数据段数据为返回的数据。

3.2.安全性分析

S7是典型的工控网络协议,研究其安全性对于加强工业控制网络安全有重要意义。经过分析可知,S7存在如下安全问题。

     缺少认证

认证的目的是保证收到的信息来自于合法的用户,未认证的用户向设备发送命令不会被执行。在S7的通信过程中,没有任何认证方面的相关定义,任何人只要找到一个合法地址即可使用功能码建立S7通信会话,从而扰乱控制过程。

     缺少授权

授权是保证不同的特权操作由拥有不同权限的认证用户来完成,这样可以降低误操作与内部攻击的概率。任意用户可以执行任意功能,如PLC启停,程序上载,后门植入等。

     缺少加密

加密可以保证通信过程中双方的信息不被第三方非法获取。在S7通信过程中,地址和命令全部采用明文传输,所以可以很容易被攻击者捕获和解析,然后篡改报文,发送出去,从而影响控制过程。截取的非加密数据如图1所示:

4.安全防护研究

4.1.风险攻击分析

     病毒和蠕虫

西门子的PLC通信端口都是102端口,所以病毒和蠕虫可以通过不定时扫描102端口,通过发送获取cpu信息的数据包对PLC的类型进行判断,然后加载适合的payload程序。可以发送已经编写好的程序程序控制PLC,比如停止PLC工作,清空plc程序,在DB中写入垃圾指令等;还可以通过FB块TCON、TDISCON、TSEND、TRCV模块进行PLC之间的传播感染。

     重放攻击

通过抓包截取PLC和应用程序之间的通信数据,即从开始连接到结束连接这一段的数据包,然后记录,修改再进行重新发送,因为S7协议缺少认证授权及加密特性,重放被攻击者经常使用。

4.2.安全防护流程

为了避免S7协议的篡改风险,保护通信环境安全,针对工控环境通信流量相对单一,上位机和PLC通信模型相对固定,经过分析实际环境使用的机械手的部件抓手、货物、吊臂和板车的关系,本文提出一种工控网络协议拦截保护方法,基本思路就是通过分析上位机和PLC的通信流量,建立通信关系模型,形成安全基线。上位机和下位机的通信数据都需要经过通信模型验证过滤,通信数据和安全基线对比,和安全基线不一致的则认定为篡改,拦截设备则发出告警信息,同时通信数据被拦截。

在实际PLC使用过程中,正常状态下,通过设置货物的X,Y坐标,吊臂的X坐标,抓手X,Y坐标,板车X坐标的值,可以通过机械手把货物放在板车上。

4.3.安全防护实验验证

根据模型的算法,我们设计了三组实验来验证。

(1)正常未篡改实验

实验所用相关数据表1所示:

实验过程中对数据抓包,抓包数据如图2所示:

从效果图可以看出,满足安全基线的数据,,板车、货物、吊臂、抓手關系显示正常,且货物被正确放在板车上如图3所示:

(2)未拦截的篡改实验

实验所用相关数据表2所示:

实验过程中对数据抓包,抓包数据如图3所示:

效果图如图4所示,从图中可以看出,货物半掉在空中,这很显然不符合常规,篡改成功,也就是说重放攻击成功。

(3)拦截的篡改实验

实验所用相关数据表3所示:

5.总结

基于西门子S7协议的特点,本文对针对S7重放攻击威胁进行了研究,并结合实际工控网络环境,提出了拦截算法并做实验进行验证,在拦截的过程中实现电子取证的功能,实验结果表明,该算法能有效地拦截针对S7的篡改攻击,同时保证了电子取证的有效性,不仅可以有效的保护工控网络环境的安全还可以对电子取证做出有效帮助。

参考文献

[1]马多贺.基于POF的网络窃听攻击移动目标防御方法[J],通信学报,2018,39(2):1-15

[2]姚羽.工业控制网络安全技术与实践[M].机械工业出版社,2017:100-110

[3]房强.一种单独运行在PLC中的蠕虫病毒研究[J],信息安全与通信保密,2016(9):46-47.