摘要:本文首先简要介绍SCADA系统的组成、协议、特点及其先天的脆弱性,其次对目前现有对SCADA系统进行扫描探测的技术、方法和工具进行详细分析,表明主动扫描与被动扫描各有优点和缺点,而智能扫描可将二者优势进行整合,是未来SCADA系统探测扫描的发展方向。最后通过简单的测试和分析对SCADA系统的安全防护进行思考并提出建议。
关键词:SCADA;漏洞扫描;工控系统
1 引言
“工业4.0”时代,网络化、数字化、智能化成为了新的方向。信息技术(Information Technology,IT)和操作技术(Operational Technology,OT)的融合已成为大势所趋,同时是工业智能化的核心。早期的工业控制系统(Industrial Control System,ICS)中IT与OT相对较独立,但随着因特网的快速发展,再加上ICS在对图像、信号、控制等大数据要求下,IT和OT融合的新型ICS因此诞生。虽然IT和OT的融合给企业带来了更高的生产效率及控制效率,但也因此使得OT系统将要面临来自IT的威胁,威胁参与者可以利用IT网络访问OT系统,从而进行攻击。ICS一旦遭受攻击,将会带来巨大的经济损失,因此ICS安全就显得格Vulnerability Scanning and Detection Technique on SCADA Systems外重要。
2 SCADA系统概述
数据采集与监视控制(Supervisory Control and Data Acquisition,SCADA)系统是智能化工业领域中必不可缺的一部分,它可以对现场的设备进行监视和控制,同时还具有数据采集、测量、信号报警等功能,被广泛运用于电力、石油、化工、铁路等领域。曾经的SCADA系统是孤立于外界网络的独立网络,但在当今IT和OT融合的环境下,因特网协议(Internet Protocol,IP)也与SCADA相融合。由于部分设备较为脆弱,威胁参与者可以通过恶意扫描对SCADA设备进行交互,并对工业设备造成破坏,当遭受到攻击时可能会导致发电机停止工作或异常报警等。
2.1 SCADA系统的组成结构
SCADA系统由硬件设备和软件组成的对生产过程控制与调度的自动化系统,其主要组件有负责收集过程数据并向连接设备发送控制命令的监控计算机、连接过程中的传感器和控制器的远程终端单元(RTU)、通过输入输出来控制各种硬件设备的可编程逻辑控制器(PLC)、为操作员提供窗口的人机界面(HMI)和通信基础设施。
2.2 SCADA的协议概述
为了充分理解SCADA系统的通信技术和在SCADA设备上执行网络扫描的可行性,首先对SCADA系统常见的DNP3和ModBus两种协议进行回顾。
DNP3协议是自动化系统组件间的通信协议,它是完全基于TCP/IP的,在应用层实现了对传输数据的分片、校验、控制等诸多功能。在工业中,常被用于水利和电力公司。它为各种SCADA系统之间提供通信,在SCADA系统中起着决定性作用,它主要负责主站与RTU、IED、HMI之间的通信,且支持多主机、多从和对等通信,有轮询操作和静态操作的操作模式。操作员可以通过抓包的形式来监视DNP3协议,以便提高系统的可靠性、减少故障和停机时间,但它并没有被设计于保障通信安全。
ModBus是一种点对点的串行通信协议,其作用为提供RTU和PLC通信的标准,协议可以确定控制器是如何知道设备地址、识别发送给它的消息、采取的措施等。但ModBus有很多缺点,同时也有许多扩展去解决和修复这些缺点,其中最有名的就是ModBus X拓展。在网络扫描过程中,由于数据包的接收方设备和发送方设备不同,他们的指令集也不同,一个Ethernet数据包从发送方发送出去,但接收方不一定会要求SCADA设备做出正确回应,当出现这样的情况时,扫描可能将失去意义。如果接收方在接收过程中,数据包太大或者传输速度太快,SCADA设备的CPU可能也将无法正常解析数据。此外,扫描工具在传输数据时可能无法穿过正在使用的特定介质,这可能会导致在串行网络上造成连接中断、拒绝服务等负面影响。
2.3 SCADA与商用IT网络的差异
SCADA系统中的网络与传统的商用IT网络存在着一定差异。一是,SCADA系统中的ICS网络和商用IT网络实施不同,ICS网络对于网络的实时性要求较高;二是,构建的每个节点和子网的架构不同;三是,故障的严重性不同,ICS网络一旦出现故障,将会带来严重的后果,巨大的经济损失甚至人员伤亡。工业网络安全事故造成严重后果的例子众多,如美国Davis Besse核电站受到蠕虫攻击、震网病毒攻击伊朗核电站事件。
2.4 SCADA系统漏洞扫描的难点
由于SCADA系统最初与IT相对独立,SCADA系统中的设备在设计之初并不注重信息安全的基本属性,这将无法保证SCADA设备的安全性和处理事故的能力,因此它们很容易被攻击。当SCADA系统或ICS组件可能存在漏洞时、受到出于经济利益的网络攻击时或遭遇到网络战时,攻击者首先会通过扫描技术进行工业设备及工控设备的资产发现,以确定一个IP地址内是否存在设备、该设备是什么样的设备。除了资产发现以外,在监视控制、数据采集、漏洞扫描等方面都需要使用扫描技术,这样的扫描技术主要包括主动扫描和被动扫描,以及最新提出的智能扫描。
SCADA系统的脆弱性意味着扫描技术也可能会带来风险,尤其是主动扫描甚至可能会造成工业设备的损坏。PLC和RTU等OT设备将监视机械设备(例如泵、阀门、发电机、报警器等)的运行以及环境因素(例如温度、湿度、PH值等)。但这些设备是非常敏感的,无法承受住主动扫描。设备敏感的原因如下:
(1)CPU的功能有限并且性能不高:设备被设计成一次只能做一件事,可能会导致被大量请求淹没;
(2)实时通信:他们使用实时通信协议,如果通信延迟,重新建立通信也可能会遇到困难,比如全面的漏洞扫描将会造成延迟;
(3)设计之初未重视网络安全:OT设备在设计之初都偏向于对环境的耐受性,比如耐热、耐振动、抵抗空气中的微粒或者抗电源中断等,但没有设计足够的网络通信最大承载量;
(4)使用自定义的操作系统和软件:许多OT设备不会使用经过广泛测试、安全性较高的Windows、Linux系统和其他软件,而是使用自定义的操作系统,独立设计的小型软件,这都意味着系统安全性能较低;
(5)后期维护不充分:一个OT设备可能会使用数年甚至十数年,维护不充分造成OT设备处于崩溃的边缘,例如积满灰尘让设备运行至接近过载点。完整的漏洞扫描则可能会带来额外的负载,使其超过过载点而崩溃。
3 SCADA系统漏洞扫描方法与工具
3.1 漏洞扫描方法
3.1.1 被动扫描
被动扫描也叫做被动监视、被动嗅探。它使用对网络流量的监视来识别服务、主机和客户端。在网络上设置了一个观察点,需要网络管理员或网络工程师的协助才能配置这些系统以获得最佳结果。无源扫描器可以长时间连续运行,而不会中断常规的网络流量或与设备本身进行交互,因为无源扫描工具的输入数据是由网络流量直接馈送。这意味着用户可以创建算法以剖析每个协议,有可能从每个数据包中提取重要的信息和标识符。被动扫描是一种安全的扫描方式,由于其被动性质,它无法获得设备的详细信息,且无法扫描到休眠设备。
3.1.2 主动扫描
主动扫描是主动向被扫描设备发送数据包的扫描方式,它试图联系每个主机上的每个服务,将数据包发送到每个主机并监视响应,但是随着时间的流逝,或者在以后重复相同的扫描时,此信息将会过时。主动扫描与被动扫描的一个显著差异:与设备的实时交互。在获取有关ICS或SCADA网络上设备的信息时,主动方法需要与网络上的设备进行某种形式的交互,在网络上的“观察点”运行更长的时间,从而无需从任何已连接的设备发送或接收数据。利用主动扫描可以扫描漏洞、发现和识别网络上的资产、操作系统和网络设备等的配置评估、扫描恶意软件、检测更新等,但主动扫描是一种侵入型扫描,再加上工控设备的脆弱性,可能会损坏部分敏感的工控设备。
3.1.3 智能扫描
智能扫描是一种新的扫描技术。无论是被动扫描还是主动扫描都有缺点。被动扫描无法给出较为完善的信息,主动扫描可以提供更多的信息但又可能对敏感的工控设备造成损坏,而智能扫描,结合了两者的优点,同时使缺点最小化。智能扫描通过对设备的判定来决定是否中断扫描。因为智能扫描是为了保护SCADA敏感设备不因扫描而破坏而研究的,工厂使用智能扫描大多为了SCADA系统的检查与防护,从而可以获得被扫描设备的参数,例如CPU的当前负载率、设备温度的变化情况、设备安全的CPU负载和温度阈值,将这些参数代入计算扫描方式的算法中,然后将会得出一个安全的扫描方式。对性能较好的设备采用高速扫描:在不需要得到上一个数据包结果的情况下,快速连续发送一系列数据包,最后在对所接收到的全部数据包进行统计。而对性能较差的设备采用缓慢低速的扫描,甚至一次只发送一个数据包,当接收到上一个数据包后才发送下一个数据包,若在规定的时间内(可以是30秒,也可以是60秒等等)没有收到数据包,则视为被扫描设备进行了丢包操作,扫描程序将会再次发出数据包,但连续超过四次以上的丢包将会中断扫描。除此之外,当收到的数据包是断断续续则可能是因为CPU性能处于极限状态。如果是敏感设备将及时中断扫描,并记录该设备的IP、MAC地址等信息,默认下次扫描将会跳过该敏感设备。通过目前技术分析以及各大厂商设备的出现,未来全智能扫描分析具有广阔应用空间,通过扫描技术获得系统一切可利用的参数,并把用户想知道的部分提取出来,整理成数据方式选择目前最优的方案呈现在用户的面前。或许未来还会在智能扫描功能中内嵌“治疗系统”,集扫描分析治疗为一体,我们可以拭目以待。
3.2 常用扫描工具
3.2.1 Shodan
Shodan是一个搜索引擎,但它与Google这种搜索网址的搜索引擎不同,Shodan用来搜索网络空间中的在线设备,用户可以通过Shodan搜索指定的设备,或者搜索特定类型的设备,其中Shodan上最受欢迎的搜索内容是:webcam,linksys,cisco,netgear,SCADA等等。那么Shodan是如何工作的呢?Shodan 通过扫描全网设备并抓取解析各个设备返回的banner 信息,通过了解这些信息 Shodan 就能得知网络中最受欢迎的Web服务器,或是网络中存在可匿名登录的 FTP服务器数量。Shodan常被用于查看指定主机的相关信息,如地理位置信息、开放端口、是否存在某些漏洞等信息。
图1 Shodan查看指定IP的SCADA设备情报及漏洞扫描结果
3.2.2 Nmap
Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在连接端,并且推断哪个操作系统计算机运行(亦称为 fingerprinting)。它是网络管理员必用的软件之一,用以评估网络系统。正如大多数被用于网络安全的工具,Nmap也是不少黑客及骇客爱用的工具。系统管理员可以利用Nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用Nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
Nmap以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。Nmap工具在电影黑客帝国(The Matrix)中也被用到(引自电影人物:崔妮蒂利用Nmap工具配合SSH1的32位元循环冗余校验漏洞入侵发电站的能源管理系统)。Nmap具有众多的脚本,其中就包含了针对各个公司SCADA设备的漏洞扫描脚本,这些脚本集成了该公司大多数SCADA设备的漏洞扫描,但不同公司SCADA设备的脚本通常是不能通用的。
图2 Nmap扫描罗克韦尔自动化Allen-Bradley PLC
3.2.3 Nessus
Nessus是目前全世界使用人数颇多的系统漏洞扫描与分析软件,总共有超过75,000个机构使用Nessus作为扫描该机构电脑系统的软件。作为漏洞扫描方面强大的工具之一,Nessus提供完整的电脑漏洞扫描服务, 并随时更新其漏洞数据库。不同于传统的漏洞扫描软件, Nessus 可同时在本机或远端上遥控, 进行系统的漏洞分析扫描。其运作效能能随着系统的资源而自行调整。如果将主机加入更多的资源(例如加快CPU速度或增加内存大小),其效率表现可因为丰富资源而提高。Nessus拥有众多的插件,因此也可以用于扫描SCADA,但需要事先安装好插件,它可以帮助使用者扫描常见的SCADA设备。这些插件的安装方法简单,且该软件具有可视化图形界面,对于技术水平一般的工作人员极为友好。
图3 Nessus扫描SCADA结果
3.2.4 Passive Vulnerability Scanner
Passive Vulnerability Scanner(PVS)是一项网络发现和漏洞分析的专利技术,它以一种非入侵性的方式,提供持续的实时网络分析和监控。在数据包层PVS 漏洞监控工具监控IPv4和IPv6网络流量,来确定拓扑结构、服务和漏洞。可以完整查看用户的安全状态,同时集中日志分析和漏洞管理。
顾名思义,这款软件是一款被动扫描软件,在ICS中,可以用其来进行网络分析和监控,以检测是否有异常流量通过。
图4 PVS被动扫描的数据监控页面
3.2.5 MSF
MSF是一个渗透测试框架,它的功能十分强大,无论是漏洞扫描还是漏洞利用、远程控制等它都可以实现。MSF通过加载众多的模块进行扫描及利用,利用一个模块对SCADA系统的攻击流程为:(1)加载模块;(2)设置目标IP;(3)对目标进行漏洞扫描,判断其存在模块内的哪些漏洞;(4)如果该设备存在漏洞,就可以对其进行攻击。
图5 MSF使用模块对SCADA系统进行扫描及利用
4 测试与分析
4.1 SCADA漏洞扫描及利用测试
如果SCADA系统被威胁参与者进行恶意的漏洞扫描,威胁参与者可能会对扫描出的漏洞加以利用,从而对SCADA系统造成破坏。为了观察和评估对SCADA系统进行恶意的漏洞扫描所造成的后果,笔者利用现有的ICS模拟设备进行本次SCADA系统漏洞扫描及利用实验,本次实验基于搭载了西门子S7 PLC的智能制造工控模拟系统。
首先使用Nmap对整个SCADA系统进行扫描,以发现存活主机,该SCADA系统由一个PLC、一个HMI和一个RTU组成。本次测试以该SCADA系统中的PLC为攻击目标,利用ISF对目标PLC进行攻击,本次使用攻击模块为s7_300_400_PLC_control,此脚本可以使PLC停止工作。在命令框内输入命令以运行ISF。
图6 ISF运行界面
使用模块后,设置目标的IP地址,然后运行模块 后,将会在确认目标存活后发送一个数据包以停止PLC运行。
图7 利用模块进行攻击
4.2 趋势分析与思考
基于SCADA的漏洞扫描可以是出于工厂为提前发现风险、降低风险而做的自我保护;也可以是出于破坏或牟利的威胁参与者对SCADA系统的漏洞扫描,威胁参与者通过漏洞来攻击SCADA系统。由于主动扫描具有一定危害性,笔者从工厂如何进行更为安全的漏洞扫描和防御威胁参与者的恶意扫描两个方面进行分析与思考。
当工厂对SCADA系统进行安全检查时,如何进行安全的漏洞扫描?笔者认为可以使用主动扫描与被动扫描相结合的方式。主动扫描应当在确保SCADA系统安全的情况下使用,对非敏感的设备使用主动扫描可以获得更为详细的设备信息并且可以检测出存在的漏洞,而对于敏感设备应当使用被动扫描以监控和分析流经敏感设备的网络流量。而未来的研究方向将会是智能扫描如何在保证SCADA系统安全的情况下尽可能的实现更为细致的扫描。
那么工厂又该如何去防御威胁参与者的恶意扫描?笔者认为工厂必须具备一个完整的安全策略,这个安全策略不仅仅作用于硬件设备,还作用于所有员工。从硬件设备层面来说是在系统中配置防火墙以限制外来网络流量,以及做好充分的态势感知和威胁检测。从员工层面来说就是限制员工权限,每个员工能接触的设备及接触设备方式都需要进行限制,使权限最小化、精细化,最大化保证安全。
5 结语
在IT/OT融合环境下,SCADA系统将无法避免来自IT的威胁,由于工控系统中部分设备极为敏感,无论是基于漏洞发掘的扫描,还是基于资产发现的扫描,都将可能造成敏感设备损坏,从而对整个工业生产造成损失。无论是主动扫描还是被动扫描,都有明显的缺点与不足,而智能扫描可以通过计算设备过载点并给出适合的扫描方案,以此来保证SCADA系统敏感设备不因为受到扫描而产生设备损坏、拒绝服务等不良影响。通过对扫描算法的不断更新与完善,未来智能扫描将成为SCADA系统漏洞扫描的新方向。
作者简介
陈博(1992-),男,安徽安庆人,大专学历,北京天地和兴科技有限公司渗透测试工程师、安全研究员,研究方向为工业控制系统的漏洞挖掘技术。
马达(1999-),云南昆明人,学士学位在读,北京天地和兴科技有限公司渗透测试工程师、安全研究员,研究方向为工业控制系统的漏洞挖掘技术。
摘自《自动化博览》2020年12月刊
声明:本文来自工业安全产业联盟,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。