解析Crash Override : 当下电网系统面临的安全威胁

执行摘要

2017年6月8日,Dragos公司收到斯洛伐克的反病毒厂商ESET公司的一则消息,内容与一个针对ICS(工业控制系统)的恶意软件有关。Dragos团队通过这条通知发现了恶意软件样本,分析了恶意软件的新功能和影响范围,并确认这个恶意软件与2016年12月17日发生在乌克兰首都基辅输电变电站的网络攻击事件有关。本报告作为一个行业报告,旨在向电力部门和安全组织解释一下这个恶意软件的潜在影响,对其中的一些细节酌情进行讨论。

为什么要发布这篇报告?

安全公司始终必须要保持一种平衡,切忌向公众(包括攻击者)透露太多关于攻击如何被检测和分析的过程,这个案例也是一样。事实上,本报告更想表述的是,通过报告中讲到的利用电网系统的知识,并没有简单的解决方案可以处理电网操作面临的网络威胁。这不是单方面的技术漏洞和利用,不能通过打补丁或调整架构来解决,尽管电网是完全可防御的。人类应该采取主动防御,比如在工业控制系统(ICS)网络内部进行威胁狩猎和应急响应,这是主要的确保安全的方法。

关键点

  • 多个地方的恶意软件样本都自称“Crash”,于是我们将这一恶意软件框架命名为“CRASHOVERRIDE”。
  • “CRASHOVERRIDE”是第一个被设计和部署用于电网攻击的恶意软件框架。
  • “CRASHOVERRIDE”是第四个定制的ICS恶意软件(前三例分别是:STUXNET, BLACKENERGY 2, 和 HAVEX)用来攻击目标,也是第二个被部署用于破坏物理工业过程的恶意软件(Stuxnet是第一个)。
  • “CRASHOVERRIDE”不是针对特定的供应商或某个独特的配置,而是利用网格运营和网络通信常识造成影响。如此一来,它将可以立即被重新利用在欧洲、亚洲和中东部分地区。
  • “CRASHOVERRIDE”是可扩展的,通过少量的修改(如包含一个DNP3协议栈)就可以针对北美电网进行攻击。
  • “CRASHOVERRIDE”能够同时在多个站点被利用,但是后果也不是灾难性的,可能会导致断电几小时、也可能是几天,不过不会连续发生几周或更长时间。
  • Dragos有充分的证明可以确定这款恶意软件曾被用于2016年12月17日的输电变电站的网络攻击中,那次事件导致部分用户无法用电。
  • “CRASHOVERRIDE”框架没有间谍活动,恶意软件的唯一功能就是攻击电网导致停电。
  • “CRASHOVERRIDE”可以通过一个附加的协议模块推广到其他行业,但是对手没有变现出对其他物理工业流程的知识来证实这一猜测,单独的协议变化可能是不充分的。

Dragos公司跟踪到“CRASHOVERRIDE”背后的组织是ELECTRUM,通过秘密的消息来源我们确信ELECTRUM 和 Sandworm组织之间有直接联系。ICS WorldView的客户将收到一个详细的报告,这份工业报告不会讨论敏感的技术细节,侧重于提供防御和认识影响方面所需的信息。

背景

2017年6月8日,斯洛伐克反病毒厂商ESET分享了一份恶意软件数字哈希的子集,Dragos对其中一部分进行了分析。Dragos团队在2017年6月12日公布了相关调查的结果。非常感谢ESET公司分享信息并允许Dragos团队在此基础上展开调查,Dragos期待可以公布这份报告,着重讲述一下电网操作的一些细节,另外本报告中还包含了一些新的发现、指标和事件的启示。Dragos团队在过去的96个小时内,重现并验证了ESET的分析,寻找并分析了新的恶意样本,识别了额外的感染,通知了相关的公司并通知了我们的客户。重要的是,Dragos更新了ICS 运营商的观念,他们需要意识到这种威胁的影响力,感谢相关政府机构、诸多国家计算机应急响应小组(CERT)和电力能源组织的参与和帮助。

如果你是Dragos公司的客户,你已经收到了一份更简洁、技术细节更深入的情报报告。伴随着后续的报道,Dragos团队会让你及时了解事情的发展状况。Dragos认为本报告包含的重要评估值得电力行业相关单位和人员的关注。

避免炒作和引起恐惧永远都应当是最重要的,但这个案例的研究具有直接的现实意义,这并不是一个单独的事件。“ CRASHOVERRIDE”的野心是影响电网操作,为达成这个目标已经建立了一个框架,以便于未来可以针对其他国家的电网进行攻击并造成影响,如同它在2016年12月17日对乌克兰的攻击。然而,一如既往,防守是可行的。

电网系统概述

与大多数ICS安全事件一样,攻击中最有趣的一部分是对手如何展示他们对物理工业过程的理解。尽管脆弱性、漏洞利用和感染向量等可以引发对IT安全威胁中入侵分析的讨论,但这对于ICS攻击而言并不是最重要的。要全面理解“CRASHOVERRIDE”,了解它的独特的能力以及对ICS安全整体的影响,需要了解一些电网操作方面的基本知识。

简单来讲,电网可以分为三大功能:发电厂发电,利用高压输电实现远距离传输,利用低压配电线路向电力用户供电。完成远距离运输和配电系统的物理设施是变电站,变电站的主要功能转变电压、提供交换和供给服务、故障保护。

许多工业接入电网,这些不同的工业需要不同的系统和通信,打个比方,发电厂向电网输送能量时,然而发电厂的类型多种多样,其所利用的能源不同,包括燃煤发电、核能发电、风力发电、太阳能发电、燃气轮机发电、水力发电等等,这就意味着电网必须时一个健壮的系统,可以覆盖大区域内的电力移动和平衡。电网使用一种特殊类型的工业控制系统,被称为监控和数据采集(supervisory control and data acquisition ,SCADA)系统,用于管理整个地理区域内的电能的传输和分配过程。每个区域内都有自己的变电站完成本地区电能传输和分配的工作,跨领域的SCADA系统24/7 由人工操作,这些控制中心会经常定期管理和响应客户的持续需求、应对故障、规划和周边设施协同工作。

名词解释:SCADA系统是ICS(工业控制系统)的一个子集,通常是指那些覆盖地域较广的工业控制系统,如油气管道、电力传输系统或配水系统等。SCADA包含以下子系统:(1)人机界面(human machine interface,简称HMI)是一个可以显示程序状态的设备,操作员可以依此设备监控及控制程序,方便对设备进行监视管理;(2)远程终端控制系统(Remote Terminal Unit,简称RTU)连接许多程序中用到的感测器,将模拟和离散的测量值转换为数字信息;(3)可编程逻辑控制器(programmable logic controller,简称PLC);(4) 智能电子设备(IED) 一种基于微处理器的控制器,能够发送控制命令,传输指令流。——摘自blog.topsec.com

这些电网操作的简要视图在全世界范围内基本上都是相似的,不同国家之间可能在供应商和网络协议上会有差异,但是电力工程和总体过程基本上是相同的。比如这些系统都使用SCADA系统和杠杆系统(如远程终端单元,RTUs)来控制断路器,当断路器打开和关闭时,变电站被通电或断电,以平衡整个电网的电力。常用的一些网络协议,如IEC 104(一种基于TCP的协议),以及它的串行协议IEC 101,通常是区域性的。欧洲、亚洲一些地区和中东部分地区,利用这些协议,通过SCADA 系统的人机界面(HMIs)来控制RTUs。

图1:与CRASHOVERRIDE相关的电网操作系统和通信的简单模拟图

在北美洲,使用的是分布式网络协议3(Distributed Network Protocol 3 ,DNP3)。各种协议的用途是相同的:通过RTUs控制物理设备、可编程逻辑控制器(PLCs)和其他通过HMI连接的最终控制元件,作为SCADA系统的一部分。一些协议被多个国家采用,比如IEC61850标准,IEC61850建模了大多数公共实际设备和设备组件。这些模型定义了公共数据格式、标识符、行为和控制,例如变电站和馈线设备(诸如断路器、电压调节器和继电保护等)和其他类型的智能电子设备(IEDs)。IEDs是专用的微机控制装置,通常与电源设备如断路器一起工作。IEDs和RTUs以主从模式进行操作,从属设备从主设备处接受命令和轮询。

名词解释:IEC61850标准是电力系统自动化领域唯一的全球通用标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明。不论是哪个系统集成商建立的智能变电站工程都可以通过SCD(系统配置)文件了解整个变电站的结构和布局,对于智能化变电站发展具有不可替代的作用。 ——百科

变电站利用传输和分配线路来管理电力能源。管理这些线路通电或断电,最终控制了电力能源何时、何地进出变电站。如果“打开”一个断路器,就相当于是移动了电力流动的路径或者断电;如果“关闭”一个断路器,就相当于关闭了间隙并允许电力流动,这个概念类似于一个人在自己的房子里操作开关电闸。传统的IT或IT安全人员可能会对这个术语感到困惑,因为它与人们如何描述防火墙规则整好相反,防火墙规则的“打开”意味着允许网络流量流通,而“关闭”意味着禁止网络流量流通。

网格是一个精心设计的系统,然而依然会受到损害。需要了解的一个关键点是,在世界各地电力公司设计的系统都是可靠的、安全的,增强安全性是其天然的一个属性。以美国为例,安全加固由定期培训和安全事件驱动,诸如北美电网安全演习(GridEx)主要练习如何应对飓风、恐怖事件、网络攻击等导致的电力中断事故。在提到电网操作时,有必要充分理解一个持续性的平衡:系统是脆弱的,必须做更多的工作去理解那些复杂的、多阶段的攻击,但是电网也处于一个很好的防御位置,因为多年来工作经验的积累。

间谍情报技术的演化

“CRASHOVERRIDE” 表明了对工业系统发起攻击的对手,其间谍情报技术和能力在不断演化。为了更充分地理解恶意软件,有必要将其与它的前辈和2015年的乌克兰网络攻击事件做个比较。

STUXNET蠕虫

STUXNET蠕虫的影响如此广泛,经常被拿来跟其他ICS相关事件和恶意软件做比较。STUXNET蠕虫是世界上首个被发现的专门针对工业控制系统编写的恶意软件,代码利用了windows系统的4个零日漏洞,这为其赢得了许多恶名,然而针对ICS的特制的恶意软件载荷才是其最有趣的组件。STUXNET的间谍情报技术表明其对工业过程有详细的了解。

在IT网络中,对手识别漏洞并利用它们加载恶意程序、在系统上获得特权,这是相当重要的部分。

然而在ICS网络中,最受关注的问题是对手学习物理过程的能力,例如系统的工程化实现及其组件之间是如何协同工作的。STUXNET的最大优势是滥用西门子设备的功能,控制和改变了离心机的转速。STUXNET的攻击者采用预编译知识修改离心机的速度会造成离心机从壳体爆炸。我们现在知道针对工业控制系统定制恶意软件需要掌握工业过程的知识,然而STUXNET病毒是特定的利用了西门子设备且专门针对伊朗伊朗纳坦兹的设施。间谍情报技术和漏洞可以复制,但是重现STUXNET事件是不合理的假设。

Dragonfly/HAVEX

Dragonfly活动是一个使用工控系统的间谍软件发动的网络攻击,影响范围广泛,估计有2000多个网站受到了感染,主要目标是电力和石化行业。Dragonfly使用了HAVEX恶意软件。不同的工控系统网站,由于供应商、实施、集成和每个站点的物理过程不同,几乎没有共同点。在众多的ICS行业中,类似OPC这样的标准协议数量很少。

名词解释:OPC全称是OLE for Process Control,即用于过程控制的OLE,是针对现场控制系统的一个工业标准接口,是工业控制和生产自动化领域中使用的硬件和软件的接口标准。基于微软的OLE(现在的Active X)、COM (部件对象模型)和DCOM (分布式部件对象模型)技术,OPC包括自动化应用中使用的一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。提供工业自动化系统中独立单元之间标准化的互联互通,顺应了自动化系统向开放、互操作、网络化、标准化方向发展的趋势。 —百科

OPC主要功能是为不同供应商和应用程序之间提供标准化的接口,使得很多工业组件可以很容易的访问HMI或专用的OPC服务器。HAVEX 恶意软件利用OPC协议的合法功能来检测ICS网络上的工业设施和设备。恶意软件本身并不复杂,但是它利用OPC的方式却是精妙的,其间谍技术是聪明的使用了OPC协议。不过Dragonfly活动完全专注于间谍活动(即信息收集),并没有产生任何物理中断或工业过程的破坏。相反的,它只是尽可能的收集系统相关数据,以便于在未来设计出针对特定目标的恶意软件,进而发动攻击。

BLACKENERGY 2

俄罗斯黑客组织“沙虫”(“Sandworm” )主要针对西方国家的军方、政府、科研机构、国防承包商以及众多的工业组织进行攻击,他们曾经试图用BLACKENERGY 2针对ICS系统发起过攻击。BLACKENERGY 2是由BLACKENERGY进化而来的,是一款针对ICS定制的恶意软件,利用了特性类型的HMIb应用程序的漏洞,包括Siemens SIMATIC, GE CIMPLICITY, 和Advantech WebAccess。BLACKENERGY 2的操作者使用了一个聪明的方式对目标系统进行入侵,利用HMIs的漏洞,攻击者得以访问到ICS系统的内部,逐步学习工业流程并通过HMI获取到ICS系统的框架图。恶意软件单纯以HMIs为目标,使其不足以造成物理伤害,但是它可以收集众多ICS系统组件的信息,并发送到C&C服务器,这为后续的攻击做好了准备。

2015年针对乌克兰电网的网络攻击

2015年12月23日,针对乌克兰电网发起的网络攻击成为了电网攻击史上的一次标志性事件,造成了该地区大规模的停电记录,这次事件也是首个已知的通过网络攻击扰乱电网运行的案例。事件归因于沙虫团队和他们使用的BlackEnergy 3恶意软件。BlackEnergy 3与BlackEnergy 2不同,它不包含ICS组件信息的收集,相反的,攻击者利用BlackEnergy 3获取电力企业操作网络的访问权限,然后转入SCADA 网络。在网络环境中,攻击者进行侦察活动,并最终利用网格系统发起了对抗自身的活动。攻击者学习了网格系统的操作流程,并使用了配电管理系统的合法功能,将变电站从电网中断开,导致了超过225,000用户长达6小时的断电,直到工作人员手动操作才恢复供电。恶意软件使用KillDisk组件擦除了windows系统上的数据,通过恶意的固件更新损害了串行到以太网的设备。乌克兰电网运营商失去了他们的SCADA环境,这就意味着他们失去了自动化的控制能力,在某些地区这个时间段长达一年以上。这次事件最大的启迪是攻击者如何学习利用系统本身来对抗自己,恶意软件发动攻击、延迟恢复工作,但是直接导致电力中断的是利用ICS系统本身的操作。

CRASHOVERRIDE

CRASHOVERRIDE恶意软件在2016年12月17日乌克兰的一个变电站被发现,许多攻击元素看起来更多是一个概念层面的证明。了解恶意软件间谍情报技术演变的一个关键是通过对过去发生的攻击事件的学习,了解恶意软件的编码规范和可伸缩性。这款恶意软件通过采取类似 STUXNET蠕虫的措施,很入了解了工业流程知识以达到破坏操作的目标。它利用OPC协议绘制了网络环境地图,然后像HAVEX木马一样选择攻击目标。它利用HMIs的库和配置文件进一步熟悉环境,像BLACKENERGY 2 那样利用HMIs 连接到互联网连接点。它使用了在2015年乌克兰电网攻击事件中的攻击手段,即通过理解网格操作然而利用系统本身对自己发动攻击。它用到了所有这些攻击方式,并且为每个类别增加了复杂度,这就为攻击方提供了一个平台,可疑在不同的环境中对电网系统发起攻击,而不再仅仅局限于特定的供应商平台。它标志着攻击者在中断操作能力方面的进步,同时也对防御者提出了挑战,防御人员通常以修复系统作为主要防护手段、使用反恶意软件工具来检测特定的样本,并依靠加固网络边界或网络隔离作为一个一劳永逸的结局方案。攻击者变得越来越聪明,他们通过学习工业系统的流程、编码和级别等相关知识来提升自己的能力,作为防御者,必须尽快适应。

能力

功能概述

CRASHOVERRIDE 恶意软件是一个模块化的框架,由一个初始的后门、一个加载模块、几个支持和有效载荷模块组成。

最重要的是后门程序,它的主要功能是访问被感染系统,加载模块和几个独立的载荷模块可以实现对系统的影响。Dragos对上述几个模块比较关注,因为他们与电网运行的维护密切相关。分析师获取到了两个针对工控系统的恶意软件样本,其中一个是IEC 104 协议模块,另外一个是数据擦除模块。两个样本具有共同的设计特效,表明他们是一个更广泛的ICS攻击和操作框架的一部分。ESET曾经发现了一个额外的IEC 61850 和OPC模块,与Dragos分享了分析结果。

下图概述了程序执行流程及其依赖性:

 

模块的共性

Dragos分析师能够确定两个样本的编辑时间是一个未知时区的12月18日凌晨2:30分钟后,每个样本的编译时间在12分钟内,尽管样本的时间戳数据被清零了。这些时间与乌克兰事件的时间表相吻合。这两个模块样本都导出了一个名为“Crash”的函数,该函数作为main函数引导执行。Crash函数的常用功能是引入“plug and play” 附加模块。

Backdoor/RAT 模块

主要特征

  • 在后门模块安装之前,通过内部网络使用一个本地代理进行身份认证;
  • 通过身份认证后,利用内部代理打开一个HTTP通道与外部C&C服务器进行连接;
  • 接收外部C&C服务器的命令;
  • 在本地系统上创建一个文件(内容尚未确定);
  • 重新一个现有的服务并指向后门程序,确保机器重启后恶意软件依然存在。

细节

通过后门模块访问ICS网络,Dragos掌握的四个样本在这方面都具有相似的功能,在执行过程中,恶意软件试图连接本地网络中硬编码的代理地址,在安装后门模块之前ELECTRUM必须先建立内部代理。

恶意软件希望与监听TCP 3128端口的内部代理进行通信,这个端口是Squid代理默认的端口。持续的发出信标直到建立连接。然后,后门会发送一系列的HTTP POST请求,在HTTP body中包含受害者主机的windows GUID(每个Windows安装的唯一标识符集),这个信息是为了完成与C&C服务器的身份验证,如果C&C服务器不响应,后门就会退出。

如果对内部代理的身份验证成功,恶意软件会试图通过内部代理与外部C&C服务器建立HTTP连接。四个样本中,Dragos确定了三个不同的C&C地址,它们可能是在2016年12月的乌克兰袭击的一部分:

195.16.88.6

93.115.27.57

5.39.218.152

使用TOR 项目的 ExoneraTOR服务对这几个IP进行检测,发现它们在乌克兰事件期间都位于活跃的Tor 节点之列。

执行HTTP连接时,恶意软件试图识别系统默认的user agent,如果不能确定或不存在,则使用恶意代码中硬编码存储的默认值:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1)

恶意软件可以通过硬编码配置一个数值,指定周期性的发送信标。这样设计的目的是为了检索C&C服务器的命令:

  • 为登录用户创建一个新进程;
  • 通过CreateProcessWithLogon为指定用户创建一个新进程;
  • 写文件
  • 复制文件
  • 为登录用户执行一个命令
  • 为指定用户执行一个命令
  • 杀死后门
  • 停止一个服务
  • 指定一个用户(作为用户登录)并停止一个服务;
  • 指定一个用户(作为用户登录)并启动一个服务;
  • 修改一个现有的服务,使之指向特定的流程,并更改为在启动时开始

执行结果会遗留几个文件在主机上。在执行过程中,恶意软件会检测互斥值是否存在。本案例中,CRASHOVERRIDE恶意软件对“ \Sessions\1\Windows\ApiPortection ” 进行检查。

后门也可以创建并检查一个空白互斥名。在执行和分析恶意软件其他模块的过程中,复查备忘录显示:\ Sessions\1\Windows\ appears多次出现,它表明正在执行一次检查。

后门会向C:\Users\Public\ 或 C:\Users\<Executing User>中写入一个文件,在我们分析过程中,没有发现这个文件的内容,而且它对恶意软件而言似乎是无关紧要的。然而,它可以作为检测到活动的一个很好的指示器,可以通过基于主机的指标检测来检查这个特定的样本。

服务控制流程是恶意软件使用的唯一的持久性机制。执行过程中,攻击者可以选择任意一个系统服务,将之指向CRASHOVERRIDE,确保它可以随系统加载被启动,如果失败,及时恶意软件在磁盘上,系统重启后也将无法启动。

评估攻击者的恶意软件时,一个大多数远程访问工具都必备的重要部分是缺席的,那就是:一条渗漏数据的命令。当然,向外传输数据功能的选项可以通过命令来创建,但是如果攻击者希望将工作作为一个包罗万象的后门和间谍框架,那么人们会希望有个明显的选项用于下载和复制主机上的文件。相反的,这个工具只显示的提供了便于访问机器和在系统上执行命令,与诸如间谍软件、窃取数据之类的功能无关。

发射器模块

主要特点

  • 加载有效载荷,用于操纵ICS、通过擦除造成破坏;
  • 作为一个服务启动自身,隐蔽性更好;
  • 在执行过程中,加载命令行中定义的有效载荷模块;
  • 启动有效载荷,1小时或2小时之后,启动数据擦除(依赖于变量)

细节

在攻击序列中,ICS有效载荷模块和数据擦除模块必须由单独的加载程序EXE加载。在一个样本中,这个文件被称为Launcher。

Launcher启动时有三个参数:

Launcher.exe <Working Directory> payload.dll con guration.ini

发射时,被分析的样本会启动一个名为defragsvc的服务,它会通过一个名为“Crash”的导出函数加载DLL模块。执行机器上会创建一个最高优先级的新线程。执行数据擦除模块之前发射器会等待两个小时事件,控制程序从发射器传递到加载模块。

数据擦除模块

主要特点

  • 清除与系统服务相关的所有注册表项;
  • 覆盖所有的ICS配置文件,包括硬盘驱动器和所有网络驱动器映射,也会特别针对ABB PCM600的配置文件示例;
  • 覆盖一般的windows文件;
  • 使系统无法使用

细节

一旦开始执行,数据擦除模块会清除注册表项、删除文件、杀掉系统上正在运行的进程。数据擦除的一个独特之处在于其主要功能时由Crash函数实现的。

数据擦除模块的第一个任务时将SYSTEM\CurrentControlSet\Services下所有的注册表项清零。

这个注册表目录包含了系统上每个服务的初始值,删除这些值将导致系统无法运行。数据擦除模块的第二个任务是本地硬盘驱动器和映射的网络驱动器上的ICS的配置文件。恶意软件制作者针对“C-Z”命名的驱动器执行擦除操作。数据擦除模块除了针对一般的windows文件外,也会擦除ABB的PCM600产品中的特定文件。下表中罗列了数据擦除模块针对的工业控制系统使用的一些独特的文件扩展名:

未完需待续,下篇更精彩。

*参考来源:Dragos,转载请注明来自MottoIN

原创文章,作者:M0tto1n,如若转载,请注明出处:http://www.mottoin.com/102935.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code