不管是工业还是英特网,只要涉及到网络的,就有一定的来自网络危险性,造成的损失或大或小而;已重工业对于任何一个国家来讲都是国民经济的支柱产业,根据 Transparent Market Research 提供的数据,全球工业控制市场在 2014 年创造价值 580 亿美元 , 预计将以每年4.9% 的速度增长,该市场到2021年将达到 810 亿美元的规模。工业控制系统所涉及的行业非常广泛,如石油化工、电力、交通、核工业等,在国民经济总量中也占有举足轻重的地位,仅能源(电力、石化、燃气等)行业所占GDP 的比重就已经超过了20%。
随着信息化和和自动化技术的发展,为了方便企业对工业控制系统进行控制和管理,在降低成本的需求驱动下,工业控制系统变得比以前更开放,越来越多地采用标准的通用的通信协议和软硬件系统。目前,工业控制系统与公司的业务网络基本上都是通过采取隔离措施直接连通的。工业控制系统在走向开放的同时,无可避免地引入了在传统 IT网络中普遍存在的漏洞和威胁等安全问题。还应该注意到,工业控制系统控制着各个国家的重要基础设施,容易受到敌对势力的攻击。以伊朗核电站受到 Stuxnet 病毒攻击为代表的安全事件敲响了工业控制系统安全态势的警钟。
20世纪90年代以来,针对工业控制系统的重大安全事件统计如下:
1)1994年美国亚利桑那州的 Salt River Project 被黑客入侵;
2)2000年俄罗斯政府声称黑客成功控制了GAzprom 公司的世界上最大的天然气输送管道网络;
3)2001年黑客入侵负责监管加州多数电力传输系统的运营商系统;
4)2002年美国俄亥俄州 Davis-Besse 的核电厂控制网络内的一台计算机被微软的 SQL Server 蠕虫所感染,导致其安全监管系统停机近5小时;
5)2010 年伊朗核设施遭到Stuxnet的攻击;
6)2014 年安全厂商F-Secure首先发现用于从事工业间谍活动的Havex木马病毒,该病毒的攻击对象为欧洲众多和开发使用工业应用程序的机械设备公司;
7)2014年美国ICS-CERT机构爆出又一个针对工业控制系统网络的攻击事件,攻击者利用 BlackEnergy 攻击人机界面(Human Machine Interface,HMI),包括 GE/ 研华 WebAccess、西门子 WinCC 等系统均受到了攻击。从这一系列的事件可以看出针对工业控制系统的入侵活动从来就没有停止过,只不过以前的安全事件发生频率不高,造成的后果并不严重,没有引起各界的足够重视。如图1 所示,2010 年以来工业控制系统的安全事件呈现出一个爆发性增长的趋势。
原因主要有以下2点:
1)通用协议和软硬件的使用使入侵变得容易;
2)工业控制系统的特殊地位使其容易成为敌对政府和势力的攻击目标。当前常见的威胁主要有APT(Advanced Persistent Threat)攻击、来自有组织犯罪的威胁、内部员工的误操作、工业间谍等。多方面的威胁以及工业控制系统自身的脆弱性都决定了对工业控制系统实施安全监管势在必行。
现有的针对工业控制系统的安全解决方案普遍存在以下问题:
1)当前的分析方法普遍基于 IDS 等安全设备截获的数据,而这些设备往往部署在现场设备层之上,无法避开这些设备在范围和功能上的限制。由于只能从网络层获取的数据包中解析数据,这些设备无法判定获取的数据是否与底层现场设备上的真实状态参数相吻合。由于并非所有需要监控的数据都会在网络中以互相通信的形式进行传输,如一些系统本身的状态参数等,导致数据获取存在遗失的可能。
2)现有的检测方法对于 Stuxnet、Havex 等APT 攻击的检测存在漏洞。Stuxnet会修改核电站中下层离心机的转速而对上层的 HMI 瞒报一个正常的值。而 Havex 是通过对自身的复制在移动介质和固定设备之间进行传播,同时通过对移动介质的驱动和固定设备硬盘的固件进行更改来隐藏自己。
3) 现有的安全方案没有充分考虑工业控制系统的特点。工业控制系统中,可靠性是首要的,而现有的安全方案大多是仅考虑如何使工控系统更加安全,没有提到他们方案的实施将对工控系统本身的可用性造成哪些影响,以及如何应对这些影响。由于担心安全机制的引入会对工控系统的正常运转造成不利的影响,国内部署有工控系统的相关行业对于安全措施的引入存在疑点,这样的情况也严重制约了安全措施的实施与推广。
4)缺乏对运维调试操作的监管。由于在技术方面还存在一定的差距,出于对质量和性能等方面的考虑,国内的相关行业大量地采用了国外厂商的设备,而当需要对这些设备进行维护时,通常都需要专业的技术人员来对其进行操作,目前来说,对这些操作还缺乏相应的监管。本文有针对性地提出了一种面向工业控制网络的监管框架,实现了对工业控制系统多层面的数据采集,使得对整个系统的监管更加全面;相应的数据采集策略会根据链路的拥塞情况、被采集设备的性能等参数动态地做出调整,多层面数据的关联与分析可以实现基线检测和操作指令一致性检测,从而提升系统对Stuxnet等APT攻击的检测能力。
1、相关技术研究
工控系统的安全问题得到广泛关注是以 2010 年伊朗Stuxnet 病毒事件为出发点,随后,各个国家都陆续展开了相应的研究。伊朗 Stuxnet 病毒事件表明,在这之前已经有个别国家或组织秘密的独立开展了相应的研究,对工控系统的了解相当深入,并且掌握了特定的攻击方法和系统的若干 0 day 漏洞。
现在,已经陆续有很多机构,包括产业界、学术界和标准化组织对工业控制系统的安全展开了研究。国外的研究机构有 Industrial Defender、美国国家标准与技术研究院(NIST)、palo alto 等,国内的研究机构有中国电子信息产业集团等科研机构和绿盟科技等信息安全公司。
目前,一种比较流行的做法是通过加入访问控制的措施来抵御外部的攻击威胁。但是,访问控制对于已经突破访问控制体系或从系统内部发起的入侵攻击却无能为力。针对这一现状,德国的 SCHUSTER 等人在调研了入侵检测技术在工业自动化领域的应用情况的基础上,提出了一种分布式的入侵检测系统。该系统包括了深度包检测、复杂事件处理、机器学习和异常检测等核心功能。该系统在网络不同的区域中,分布式地部署数据采集与监视控制系统(Supervisory Control and Data Acquisition,SCADA)避免了单点故障对整个系统的影响。
由于工业控制系统中网络和物理传感器产生的数据量显著增加,利用大数据技术对这些海量数据进行实时分析就显得很有必要了。罗马尼亚的 KISS 等人提出了一种基于数据聚类的方法来检测现代网络基础设施中的异常数据,他们尝试了多种数据聚类的方法以选择最适合用于对时间序列数据进行聚类的方法。最后给出了该方法和架构对气体压缩系统数据的测试结果,实验分别采用了K-means、Subtractive、Subtractive- K-means 三种聚类方法,结果显示 K-means方法对该案例数据的执行效果是最好的。
美国的 STONE 等人采用了针对可编程逻辑控制器(Programmable Logic Controller,PLC)验证的基于 RF(RadioFrequency)的异常检测方法。使用提取的来自RF 特征的信息识别操作特征的变化来检测 SCADA 系统中 PLC 的异常操作。该方法遇到的问题是当使用搜集到的多个时域波形时,基于波形的实现方式的性能会急剧下降。该问题可以通过先提取波形幅度的 RF 指纹特征,然后采用基于特征的异常检测方法来解决。
美国 Industrial Defender 公司的 ANDREW 设计了一种关于工业网络的简单网络异常检测器。该检测器只查看 IP 地址和 TCP/UDP 端口,在每一个位置,都会采取一个人工校正或学习的过程来鉴定哪些是符合当前位置安全策略的网络流量,而其他的流量都会触发警告。ANDREW概括了几个不同场景的异常检测情况,其中涉及到的技术主要有防火墙改造、黑白名单技术、入侵检测代理技术等。
此外,ANDREW 还描述了一种使用 tcpdump 抓包技术的异常检测器的架构,此架构是通过将获取到的 IP 包的包头信息发送给会话缓存模块,然后转换成对应的特定信息组合(包括采用的协议、端点 IP 地址和端点 IP 地址相对应的 TCP 或 UDP 端口等信息)的可唯一识别的会话流。再将转换后的会话流通过模式匹配模块进行验证,如果不符合设定的规则就会发出警告。
由于工业控制系统的安全是一个新兴领域,该领域的研究整体起步较晚,我国对工业控制系统安全的重视程度远不及国外。但是工控系统控制着关系到国家战略和民生的关键基础设施,保障工控系统的正常运行意义重大。因此,国内针对该领域的研究也在迅速跟进。PENG 等针对工控系统提出了三点基础的安全策略。
1)根据应用精简操作系统。Stuxnet 蠕虫病毒是利用微软的Windows系统和 SIMATIC(西门子自动化)的 WinCC 系统的多个漏洞展开攻击的。Stuxnet 病毒利用的 5 个漏洞中,有一个直到 2010 年12 月15日微软官方才宣布将其修复。
而此时,Stuxnet 病毒已经在全球范围内(尤其是伊朗)造成了非常严重的损失。操作系统中还存在着许多漏洞,工业软件想要避免这些威胁并不是一件容易的事,因此,最好根据操作系统安装的应用精简操作系统,降低被攻击的概率。
2)布置分布式防火墙。分布式防火墙可以克服传统边界防火墙具有的许多缺陷,分布式防火墙针对内部子网增加了一层安全保护层,针对各个服务对象的不同需求制定差别化的配置,网络处理负载的分散可以克服传统防火墙在高负载情况下的缺点。配置分布式防火墙时,需要充分考虑当前运行的应用情况。
3)对工业控制系统进行安全风险评估。安全风险评估的好处是我们可以针对不同事件的处理采取相应的安全策略并形成合理的方案。工业控制系统的风险评估应该基于成熟的风险评估方法,并且应该特别关注控制系统的特殊要求,以便根据控制系统的特点确保系统的正常运行。
目前来说,在工业控制系统的安全监管领域,图理论的方法、信号处理的方法、数据挖掘与机器学习等技术都有所应用。由于大量老旧系统遗留的问题,很多安全方案都要求对系统软硬件进行升级,但这一要求并不实际。目前对工业控制系统的安全监管的研究中,取得较多的进展集中在异常分析领域。
结合工业控制系统的实际特点,由于目前报道的入侵工控系统的病毒都没有源代码可获得,因此无法提取到这些攻击的指纹特征。所以,基于对正常行为的分析获得正常行为的特征,然后进行基于正常行为的异常检测是工业控制防御手段的重要方法。此外,由于工业控制系统产生数据量大的特点,很多研究人员从结合机器学习、数据挖掘等技术出发,对异常检测以及各种关联分析进行了有益的尝试。
2、监管系统框架
工业控制系统监控结构主要包括多层面的数据采集、弹性的数据采集策略的管理和数据分析模块。其中,多层面的数据采集不仅可以从网络层捕获数据,还可以从包括底层现场设备在内的设备上直接采集数据;弹性的数据采集策略的管理,可以根据链路的拥塞状况和机器的负荷状态等动态地调整数据的采集频率;数据分析模块可以实现对关键配置和参数的监控。
2.1 多层面的数据采集
图 2 为典型的工业控制系统网络示意图,在现有的工业控制系统监管方案中,对异常的分析普遍是基于 IDS 和防火墙等这样的安全设备的告警信息,数据采集的层次均在监管层及以上,忽略了对现场控制设备的监管。Stuxnet之所以在入侵伊朗核电站后没有被及时发现就是利用了系统在这方面的缺陷。
Stuxnet 攻击的基本原理是:1)通过使用一系列的 0day漏洞攻击感染 Windows系统,在 Windows系统上安装木马;2)寻找目标工业控制系统(西门子 WinCC SCADA),使用硬编码 SQL 认证将代码注入到数据库中,感染系统以便获取目标 PLC 的访问权限;3)注入代码到 PLC 中修改 PLC的输出数据,同时通过报告虚假信息到 HMI 来隐藏自己。由于在修改 PLC 梯形逻辑的同时向 HMI 报告了虚假信息,因此可以达到篡改离心机转速而不被立即发现的目的。这样的情况下,由于传统的监管系统只对 SCADA 进行了监管,显示离心机还处于正常工作的状态,因此对诸如 Stuxnet 病毒这样的攻击就无法实现有效的监控。
本文提出的安全监管系统的结构示意图如图 3 所示,数据采集模块综合了三种数据采集方法:网络采集、协议直采、采集代理。其中,网络采集是从交换机的镜像端口采集原始的网络流量;协议直采是利用工业协议建立和被采集对象之间的通信,获取想要的数据;采集代理是在设备上安装和设备的操作系统适配的采集代理模块,主动地搜集系统的参数设置和记录日志的事件等信息。
这三种数据采集方法的使用使得数据的采集可以深入到工业控制系统的现场控制设备层,不仅可以实现对原始网络流量的获取,还可以获取工业控制系统底层设备的状态、配置等信息,实现对系统更加全面的监管。
采集的数据根据采集方式的不同,可以分为三大类:通过采集代理采集的数据、通过协议直采的方式采集的数据和通过抓包获取的网络数据。其中通过采集代理进行采集的方式有两类:主机设备运行状态数据和工控控制系统组态软件的数据。
1)主机设备
需要采集的主机数据有:资产信息、软件信息、系统补丁信息、端口与服务信息、用户账号、文件信息、运行状态和非法外联监控等数据。其中,资产信息有 IP 地址,MAC 地址,生产厂商及型号,操作系统的版本及序列号,CPU 型号、主频,内存的大小、频率以及品牌,磁盘的品牌、大小及转数。软件信息有已经安装的软件名称、安装时间、版本信息以及卸载时间。系统补丁信息有已经安装的补丁的名称、安装时间、版本信息、卸载时间。端口与服务信息有开放的端口号、每个开放端口的服务进程信息、每个处于 connected 状态端口的连接信息。用户账号信息有登录名、登录时间、登出时间、登录时长、用户 ID、用户角色、用户权限。文件信息有注册表信息、文件名、文件目录、文件创建时间、文件修改时间、文件扩展。运行状态信息有主机资源使用情况日志包括 CPU 使用率、内存使用率、磁盘使用率,主机进程运行日志包括运行进程的数量、每个进程启停次数及时间;主机 USB 设备运行日志,包括连接 USB 口的设备名称、连接时间、连接时长;主机流量日志包括进口流量统计、出口流量统计;Agent 代理运行日志包括 CPU占用率、内存占用率、错误 / 异常日志。非法外联监控包括对未知地址的访问、对已知地址的访问。
2)组态软件的数据
组态软件如 SCADA、PLC、DCS 等组态软件中的数据是通过采集代理调用这些软件的 API(Application Program Interface)来进行获取的。通过协议直采的方式获得数据有六类:防火墙设备数据、路由器设备数据、交换机设备数据、IDS/IPS 设备数据、网络审计设备数据和病毒网关数据。这些数据是通过SNMP 协议或者 Syslog 等进行采集的。
3)防火墙设备
需要采集的防火墙设备数据有:资产信息、配置信息和运行日志。其中,资产信息包括 IP 地址、MAC 地址和生产厂商 / 型号;配置信息有系统时钟信息,用户管理信息包括用户名称、用户角色 / 类型;工作模式信息包括路由模式、透明模式;过滤规则 / 策略信息包括 ACL 列表、黑名单 / 白名单、应用层包过滤规则和状态监测规则;转发规则信息包括地址转换规则 /NAT、端口映射规则;攻击检测信息包括 DoS/DDoS 防御策略、放扫描策略;流量控制信息包括连接速率限制、连接数目限制。运行日志信息包括运行日志和告警日志。
4)路由器设备
需要采集的路由器设备数据有:资产信息、配置信息和运行日志。其中资产信息包括 IP 地址、MAC 地址和生产厂商 / 型号。配置信息有系统时钟信息;网络配置信息包括 WAN口配置信息、LAN口配置信息、DHCP 配置信息和 VLAN 配置信息;路由配置信息包括静态路由信息、动态路由信息、策略路由信息;转发规则信息包括地址转换规则 /NAT、端口映射规则;VPN 配置信息包括 IPSec VPN配置信息、SSL VPN 配置信息、L2TP/PPTP 配置信息;流量控制信息包括 QoS 配置信息、连接速率限制、连接数目限制。运行日志信息包括运行日志和告警日志。
5)交换机设备
需要采集的交换机设备数据有:资产信息、配置信息和运行日志。资产信息即生产厂商 / 型号。配置信息有系统时钟信息;端口配置信息包括端口属性信息、端口镜像信息、端口限速信息和端口聚合信息;逻辑区域划分信息(VLAN配置信息);过滤规则信息(MAC 地址过滤信息);流量控制信息(QoS配置信息)。运行日志信息包括运行日志和告警日志。
6)IDS/IPS设备
需要采集的 IDS/IPS 设备数据有:资产信息、配置信息和运行日志。其中资产信息包括 IP 地址、MAC 地址、生产厂商 / 型号和区域管理信息(针对 IDS)。配置信息有:系统时钟信息;用户管理信息包括用户名称、用户角色 /类型;策略配置信息包括策略名称、策略组件信息 / 策略集信息;级联配置信息包括本级配置信息和上级 /下级配置信息。运行日志信息包括运行日志和告警日志。
7)网络审计设备
需要采集的网络审计设备数据有:资产信息、配置信息和运行日志。其中资产信息包括 IP 地址、MAC 地址、生产厂商 / 型号。配置信息有:系统时钟信息;用户管理信息包括用户名称、用户角色 / 类型和用户权限;资产配置信息包括主机资产信息和网络 / 安全设备资产信息;数据采集配置信息包括 Syslog 采集策略、SNMP 采集策略、Opsec Lec 采集策略、镜像数据采集策略、文件采集策略和远程采集策略 ;策略配置信息包括预置策略配置信息(归并策略、关联策略、数据策略)、实时规则配置信息、知识库配置管理信息和归档配置信息(数据归档配置)。运行日志信息包括运行日志、告警日志和审计日志。
8)病毒网关设备
需要采集的网络审计设备数据有:资产信息、配置信息和运行日志。其中资产信息包括 IP 地址、MAC 地址、生产厂商 / 型号。配置信息有:系统时钟信息;用户管理信息包括用户名称、用户角色/类型和用户权限;病毒库配置信息(病毒库升级/ 更新配置);运行策略信息包括策略名称和策略内容信息(病毒扫描策略、关键字过滤策略等)。运行日志信息包括运行日志和告警日志。
通过抓包获取的网络数据,是指通过抓包程序模块抓取 Modbus TCP、Profibus 等协议的数据包,再通过协议规范对这些数据包进行解析而获取的数据,主要用于后文中的操作指令一致性检测。采集代理和区域数据平台之间的通信流程如图 4 所示,主要有以下几步:1)客户端(采集代理)和服务器(区域数据平台)建立连接;2)如果客户端之前没有注册,则需要发送注册包至服务器,服务器做出响应,完成注册;3)服务器根据客户端是否能正常发回心跳数据包来判断连接是否正常;4)如果连接正常,可以通过服务器端给客户端下发采集策略;5)客户端根据服务器下发的采集策略上传相应的事件数据;6)服务器如果想获取客户端所在机器的配置数据,需要发送配置数据请求数据包给客户端。
由于需要由管理员主动向 Agent 代理发送采集策略等操作,并且考虑到数据传输需要保证可靠性和顺序性,故采用长连接方式与区域数据平台连接。服务器默认在10001 端口监听,并接受代理的连接请求。