王朝栋,郑忠斌,蔡佳浩
(工业互联网创新中心(上海)有限公司,上海 200032)
工业互联网是机器、物品、控制系统、信息系统、人之间互联的网络,是满足工业智能化发展的关键网络基础设施,工业环境原有的特性比如封闭性和专用性正在逐渐减弱,工业互联网在促进工业进步的同时也带来了不可忽略的安全[1-2]问题。近年来发生的各种工业安全事件,不断地在给人们敲响警钟,不管是2010年遭受震网病毒攻击的伊朗核电站事件,还是2018年发生在委内瑞拉的针对电网的恶性攻击事件,都发生在核电、能源、交通等不同的领域,病毒和木马等导致的攻击事件正在逐渐形成跨行业的特征。提高工业互联网整体安全防护已迫在眉睫。
国内针对工业互联网安全制定的相关政策起步较晚,传统工控网络蜜罐系统在国内工厂中的应用时间还短,该系统通过软件编程模拟出工厂拥有的资产设备的虚拟场景,用于迷惑网络攻击者,然后当攻击发生的时候记录攻击过程的痕迹,并通过分析获取攻击的标本,进而提高工控网络的安全性。
虽然传统工控网络蜜罐系统可以应对来自工业互联网中黑客或木马病毒的攻击,记录整个攻击流程痕迹,收集大量蠕虫、木马及黑客等的攻击操作行为,并进行相应的报警,但由于传统工控网络蜜罐系统在工业互联网中只能被动地监测内网系统,不能掌握整个工控网络设备中的木马、病毒和系统后门的情况,难以对高速传播的病毒进行早期预警。本文提出的基于主动防御技术的工业安全诱捕系统可以主动扫描可能存在安全风险的物理设备的端口,并通过构建带有某些特征的探测数据包,去引诱潜伏在工控网络内部的蠕虫、木马和后门程序进行攻击行为,然后记录攻击痕迹并进行报警。
传统工控网络蜜罐[3-9]技术是根据工厂的现实状况在工控网络内部虚拟高仿真度控制系统工艺运行环境的蜜罐,是一种被动的安全检测手段。传统工控网络蜜罐可以获取来自于外部网络中的攻击者在攻击过程中的许多有价值的痕迹,对于研究者具有很大的研究价值。传统工控网络蜜罐系统架构图如图1所示。
图1 传统工控网络蜜罐系统框架
在外部攻击者对工控网络进行攻击的时候,传统工控网络蜜罐系统中的不同子系统发挥着不同的功能,其中蜜罐系统负责通过对Modbus协议、西门子S7协议和IEC104协议的仿真来欺骗攻击者,引诱攻击者进行攻击,数据捕获系统对攻击者的数据进行捕获,获取攻击者/扫描者的IP等地址信息进行分析。数据记录系统对提取出来的攻击过程的行文特征进行记录,从而便于研究。
传统工控网络蜜罐系统通过提供Modbus、S7、IEC04等一系列的通用工控协议,构建一套复杂的工控基础设施用于欺骗未知的攻击者。除此之外,可以通过增加人机接口的方法提升对攻击者的迷惑性。
由于传统工控网络蜜罐系统在工控网络中只能被动地监测内网系统,不能掌握整个工控网络设备中的整体安全情况。
本文设计的基于主动防御技术的工业安全诱捕系统[10]是部署于已经搭建好的传统工控网络蜜罐系统内,设定检测规则,在工控网络内部隐藏的蠕虫、木马以及后门程序在传播之前,对网络内部设备端口进行扫描。对于检测结果是开放的设备端口,基于主动防御技术的工业安全诱捕系统将会与开放的设备端口建立连接,连接成功之后会发送探测包,探测包具有一些必要的特征,如在探测包头的option字段中加载一些特征值。当基于主动防御技术的工业安全诱捕系统接收到探测报文回应后,对探测报文进行分析,即可通过获取的option字段特征值、源IP等信息判断该端口是否存在木马、蠕虫及系统后门。基于主动防御技术的工业安全诱捕系统的流程图如图2所示。
图2 基于主动防御技术的工业安全诱捕系统流程图
基于主动防御的工业安全诱捕系统主要由四部分功能组成,第一部分是过滤功能,分析收到的设备端口返回的报文是普通行为或是非法行为。第二部分是探测功能,使用Nmap扫描内网主机服务,获取正在打开使用的端口地址;并根据探测到的服务端口地址尝试建立连接,对成功的连接发送探测包进行探测;通过探测包加载服务特征,引诱蠕虫、木马等病毒给基于主动防御的工业安全诱捕系统发送信息。第三部分是攻击记录功能,记录所有的攻击报文进行分析。第四部分是报文协议分析功能,将发送的请求,如不同的工控协议,转发至对应工控网络蜜罐中的虚拟环境进行响应。
其中,基于主动防御技术的工业安全诱捕系统尝试与端口建立连接的流程如图3所示。
图3 探测建立连接流程图
如图3所示,基于主动防御技术的工业安全诱捕系统想要连接工控网络内部设备80端口时,会先发送一个带有SYN标识和端口号的TCP数据包给工控网络内部设备80端口。如果端口是开放的,则工控网络内部设备会接受这个连接并返回一个带有SYN和ACK标识的数据包给工业安全诱捕系统。随后工业安全诱捕系统会返回带有ACK和RST标识的数据包,此时基于主动防御技术的工业安全诱捕系统与工控网络内部设备建立了连接。如果完成一次三次握手,那么工控网络内部设备上对应的端口肯定就是开放的。
基于主动防御技术的工业安全诱捕系统,通过端口扫描、探测数据包发送和攻击痕迹记录分析等功能能够与潜伏在工控系统中的木马、病毒和后门程序进行更好的交互,可以解决传统工控网络蜜罐系统被动防御的问题,主动地去寻找并发现在工控网络内部设备中潜伏的木马、蠕虫、后门程序等威胁,并在这些威胁窃取关键数据之前,获取潜伏的木马、蠕虫、后门程序的信息,实现早期预警防护。
基于主动防御技术的工业安全诱捕系统部署于一台高性能的服务器上,使用自裁剪Linux安全操作系统,内核版本2.6.32以上版本;数据库:MySQL 5.0以上版本;Web应用服务器:Tomcat 6.0以上版本作为产品旁路接入内网边界交换机,系统仿真实验的架构图如图4所示。
图4 工业安全诱捕系统仿真架构图
模拟完整的工控网络内部设备运行环境之后,通过Nmap扫描工具对工控网络内部设备的端口进行扫描确认端口开放情况和运行的服务,对工控网络内部设备端口扫描结果如图5所示。
在获取工控网络内部资产设备端口的开放情况和运行的服务之后,基于主动防御技术的工业安全诱捕系统与开放的端口尝试建立连接发送探测数据包,探测包头的option字段中加载一些不同协议通信的服务特征,以设备之间采用Modbus协议通信为例,option字段中加载的是Modbus报文的不同功能码,内部资产设备中隐藏的后门程序等可以基于Modbus协议,对工业控制设备进行基于指令的操作,包括打开或关闭阀门,读写线圈数据,启动或停止PLC,甚至可以更改控制逻辑,下载梯形图等危险操作。Modbus的报文格式较为简单,一个通用Modbus数据帧结构由地址域、功能码、数据、差错校验构成,Modbus的数据帧结构如图6所示。
图6 Modbus数据帧结构
其中,Modbus的部分功能码是协议强制要求规定的,部分功能码允许不同厂商进行自定义实现。工控网络中,Modbus协议无差错通信如图7所示,Modbus协议异常响应通信如图8所示。
图7 Modbus事务处理(无差错)
图8 Modbus事务处理(异常响应)
内部资产设备中隐藏的后门程序等威胁会拦截发往目标PLC的Modbus流量,一旦获取明文传输的sesseion key,攻击者就能发送请求增加任意命令。即攻击者可以通过简单地发送不同功能码的报文,就可以达到恶意操作设备的目的。
发送探测报文之后,对接收到的数据报文进行数据链路层解码、IP层解码,在白名单中查询该IP地址与端口服务,判断是否为合法连接,若为非法连接则基于已有的特征库,如木马、蠕虫、入侵、系统后门等规则库进行分析,将实际数据包与特征码相匹配,以判断检测数据包是否包含了攻击、木马、蠕虫等行为,这些特征码定义在数据库中,报文分析的流程图如图9所示。
图9 报文分析流程图
本文在传统工控网络蜜罐系统的基础上,提出了基于主动防御技术的工业安全诱捕系统,并给出了该系统的框架拓扑图,该系统利用诱骗探测技术,把传统工业蜜罐系统的守护者角色由被动转换为主动,不仅可以应对外部网络上的攻击者对工业控制网络造成的威胁,还可以抵御来自于工控网络内部设备中隐藏的木马、病毒、后门程序造成的危害,弥补了传统工控网络蜜罐系统技术的不足。
基于主动防御技术的工业安全诱捕系统支持对多种不同攻击行为的分析,同时又要对数据库进行大量的读写操作,所以必须对相关算法进行精心设计,确保基于主动防御的工业安全诱捕系统有足够的处理能力。