乌克兰电力系统遭受攻击事件综合分析报告

安全
电力系统是一套由发电厂、送变电线路、供配电所和用电等环节组成的电能生产与消费系统。整体的运行过程是由电源(发电厂)的升压变电站升压到一定等级后,经输电线路输送到负荷中心变电站,通过变电站降压至一定等级后,再经配电线路与用户连接。在整体电力系统中,使用计算机的节点主要在发电、变电站以及调度中心部分。

 1 事件综述

2015年12月23日,乌克兰电力部门遭受到恶意代码攻击,乌克兰新闻媒体TSN在24日报道称:“至少有三个电力区域被攻击,并于当地时间15时左右导致了数小时的停电事故”; “攻击者入侵了监控管理系统,超过一半的地区和部分伊万诺-弗兰科夫斯克地区断电几个小时。”

Kyivoblenergo电力公司发布公告称:“公司因遭到入侵,导致7个110KV的变电站和23个35KV的变电站出现故障,导致80000用户断电。”

安全公司ESET在2016年1月3日最早披露了本次事件中的相关恶意代码[2],表示乌克兰电力部门感染的是BlackEnergy(黑色能量),BlackEnergy被当作后门使用,并释放了KillDisk破坏数据来延缓系统的恢复。同时在其他服务器还发现一个添加后门的SSH程序,攻击者可以根据内置密码随时连入受感染主机[3][4][5][6]。BlackEnergy曾经在2014年被黑客团队“沙虫”用于攻击欧美SCADA工控系统,当时发布报告的安全公司iSIGHT Partners在2016年1月7日发文,将此次断电事件矛头直指“沙虫”团队,而在其2014年关于“沙虫”的报告中,iSIGHT Partners认为该团队与俄罗斯密切相关。 

俄乌两国作为独联体中最重要的两个国家,历史关系纠缠复杂。前苏联解体后,乌克兰逐渐走向“亲西疏俄”的方向,俄罗斯总统普京于2008年在北约和俄罗斯的首脑会议上指出,如果乌克兰加入北约,俄国将会收回乌克兰东部和克里米亚半岛(1954年由当时的苏共领导人决定从俄罗斯划归到乌克兰)。在2010年年初,由于亲俄的亚努科维奇当选为乌克兰总统,两国关系重新改善,但随着乌克兰国内政局,特别是在2014年发生了克里米亚危机等事件后,乌克兰中断了大部分与俄罗斯的合作,两国关系再度恶化。而围绕天然气展开的能源供给问题,一直是两国博弈的主要焦点。2014年3月16日,克里米亚发起全国公投,脱离乌克兰,成立新的克里米亚共和国,加入俄罗斯联邦。2015年11月22日凌晨,克里米亚遭乌克兰断电,近200万人受影响。2015年12月23日,乌克兰国家电力部门遭受恶意代码攻击导致断电。

除ESET外,多个安全企业和安全组织跟进了相关系列事件,2016年1月9日,美国工控系统安全组织SANS ICS发布报告对乌克兰变电站SCADA系统被攻击过程进行了分析和猜测;2016年1月15日,根据CERT-UA的消息,乌克兰最大机场基辅鲍里斯波尔机场网络遭受BlackEnergy攻击;2016年1月28日,卡巴斯基的分析师发现了针对乌克兰STB电视台攻击的BlackEnergy相关样本;2016年2月16日,趋势科技安全专家在乌克兰一家矿业公司和铁路运营商的系统上发现了BlackEnergy和KillDisk样本。

安天、四方继保与复旦大学于2016年1月5日建立了联合分析小组(以下简称“联合分析组”),正式启动对此次事件的分析;1月9日,完成事件相关样本基本分析;1月23日,完成初步分析报告,并在中国计算机学会计算机安全专业委员会相关事件的研讨活动中进行分发;2月24日,报告最终定稿发布。

联合分析组根据对整体事件的跟踪、电力运行系统分析和相关样本分析,认为这是一起以电力基础设施为目标;以BlackEnergy等相关恶意代码为主要攻击工具,通过BOTNET体系进行前期的资料采集和环境预置;以邮件发送恶意代码载荷为最终攻击的直接突破入口,通过远程控制SCADA节点下达指令为断电手段;以摧毁破坏SCADA系统实现迟滞恢复和状态致盲;以DDoS服务电话作为干扰,最后达成长时间停电并制造整个社会混乱的具有信息战水准的网络攻击事件。

特别值得注意的是,本次攻击的攻击点并不在电力基础设施的纵深位置,同时亦未使用0Day漏洞,而是完全通过恶意代码针对PC环节的投放和植入达成的。其攻击成本相对震网[8][9]、方程式等攻击,显著降低,但同样直接有效。

2 电力系统原理及断电原因分析

2.1 电力系统概述

电力系统是一套由发电厂、送变电线路、供配电所和用电等环节组成的电能生产与消费系统。整体的运行过程是由电源(发电厂)的升压变电站升压到一定等级后,经输电线路输送到负荷中心变电站,通过变电站降压至一定等级后,再经配电线路与用户连接。在整体电力系统中,使用计算机的节点主要在发电、变电站以及调度中心部分。

图 1 电力系统示意图

2.2 电力系统环节介绍

2.2.1 升压变电站

[[180398]]

图 2 升压变电站

升压变电站可以将交流电从不大于20KV的电压变换至需要的输电电压等级。其主要设备包括:升压变压器,断路器、隔离开关、互感器、继电保护等。

2.2.2 输电线路

[[180399]]

图 3 输电线路

  • 输电网:将发电厂发的电通过变压器转变为高压电传输到各个变电所。
  • 配电网:将变电所的高压电变成低压电供到各个用户。
  • 输电线路:110KV,220KV,330KV,500KV,750KV,1000KV。

2.2.3 降压变电站

[[180400]]

图 4 降压变电站

根据变电站在系统中的地位,可分为:枢纽变电站、中间变电站、地区变电站、终端变电站。

[[180401]]

图 5 某500KV枢纽变电站

[[180402]]

图 6 某220KV中间变电站

[[180403]]

图 7 某110KV地区变电站

[[180404]]

图 8 某35KV终端变电站

2.2.4 配电网

配电网在电力网中主要是把输电网送来的电能再分配和送到各类用户,担任配送电能的任务。配电设施包括配电线路、配电变电所、配电变压器等。

2.3 变电站自动化系统概述

联合分析组工作的一个困难,是难以获得乌克兰地区电力系统更准确的资料。新中国在建国初期,得到了前苏联在专家、技术和设备上的支持,因此电网电压等级有一部分沿袭自前苏联电压等级,但之后由于特殊的历史原因,双方的技术联系被长期切断,改革开放后,中国又迅速转向引进欧美技术。相关信息只透露了受到影响的变电站为110kV和35kV。联合分析组只能据此做出部分“常识性”的判断,通常来看,交流750kV和直流±400kV以上的高压电网主要是跨区域输电网络,交流500kV、330kV、220kV和110kV电网主要作为区域内输电主网,35kV和10kV电网主要作为配电网络和农电网络,而其中110kV和35kV变电站属于接近最终用户的变电站。

对于一个实际的变电站,通常习惯将隔离开关(刀闸)、断路器、变压器、PT、CT等直接与高压(强电)相关的设备称为一次设备,而将保护(继电保护)、仪表、中央信号、远动装置等保护、测量、监控和远方控制设备称为二次设备,二次设备所需的信号线路、通信线路等称为二次接线。变电站综合自动化系统(以下简称变电站自动化系统)的核心是将二次设备系统进行计算机化,集变电站保护、测量、监控和远方控制于一体,替代常规变电站二次设备,简化二次接线。变电站自动化系统是最终实现变电站无人值守化的基础。

在化工等工业体系中,工业控制系统以过程控制系统(PCS)为主,属于闭环自动控制系统,仪表控制系统以及DCS均属于PCS。但对于变电站自动化系统,目前仍然以人工监控(开环控制)为主,主要需要实现遥测、遥信、遥控和遥调“四遥”功能,除了继电保护系统需要独立完成保护自动控制之外,变电站自动化系统一般认为属于以人工监控为主的SCADA(数据采集和监控系统),与属于PCS的DCS系统有一定相似之处,但体系结构不完全相同,一个可能的变电站SCADA体系结构如图9所示。

图 9一个可能的变电站SCADA体系结构

如果将变电站SCADA与一般工业DCS做一个比较,则过程层相当于DCS中的现场仪表层面,直接连接断路器、变压器、PT、CT等一次设备,完成最终的遥测、遥控等功能;间隔层相当于DCS中的现场控

制层面,特别是继电保护装置属于自动控制,相当于DCS中的一个现场控制站;站控层相当于DCS中的HMI、组态等层面,目前都基于PC和相应软件实现。站控层网络相当于工业以太网(工控内网);过程层网络相当于现场总线。对于智能变电站,目前一般统一使用基于以太网的IEC 61850标准通信协议;对于非智能变电站,过程层与间隔层没有标准的通信协议,一般根据过程层设备(RTU等)确定通信协议。

2.3.1 PC以及Windows-Intel结构在变电站自动化系统中的地位

工控系统的历史比PC的历史更为悠久,早期的工控系统是相对低级、原始的模拟量控制系统,以仪表为显示回馈,其中自然没有 PC系统的存在。PC系统进入到工控系统的初期,并非扮演核心中枢的角色,而主要是提供监控人机界面(HMI工作站)。但随着工业化和信息化的逐步融合,通用性PC(含服务器)以其标准的体系结构、丰富的软件系统等优势,开始逐步在工业控制系统中扮演更关键的角色,特别是在承担了自动控制的组态、配置等工作(工程师站、运维计算机等),从而具备了直接操作实际生产环节的能力。

通常220kV及以上等级的变电站,监控系统(属于变电站SCADA站控层)使用的操作系统通常是Unix、Linux等系统,110kV和35kV变电站,监控系统操作系统中则有较高比例的Windows操作系统。现阶段俄罗斯和其它前苏联加盟共和国大量存在110kV和35kV变电站,其监控系统操作系统目前以Windows为主。需要指出的是,没有任何操作系统能够对攻击百分百“免疫”,任何关键位置的节点系统及其上的软件与应用,必然会面临安全挑战。这与其是何种操作系统没有本质关系。鉴于APT等攻击发起者所拥有的资源、承担攻击成本的能力和坚定的攻击意志,不会有任何一种操作系统能凭借其自身的安全能力就可以使其上的业务系统免受攻击。

SCADA系统是以计算机为基础的生产过程控制与调度自动化系统。它可以对现场的运行设备进行监视和控制,以实现数据采集、设备控制、测量、参数调节以及各类信号报警等各项功能。随着智能电网的广泛应用,PC节点在整个电网体系中作用日趋重要。在变供电站的SCADA系统中,PC收集大量的实时电网数据,并进行汇总和分析后,送到人机交互界面进行相应的展示。同时PC根据统计分析数据,对电网进行电力的实时负载调配,并且针对调配对电网下达相应的控制指令。另外PC在SCADA系统中同样可以对系统中DCS的相关配置进行远程配置。

在部分工业控制系统设计者的认知中:自动控制的核心,对于DCS是由工控机、嵌入式系统或者PLC实现的现场控制站,属于现场控制层面;对于变电站SCADA,是继电保护装置(35kV及其以下电压等级的变电站可能使用保护测控一体化装置),属于间隔层,无论是现场控制站还是继电保护装置,都是独立运行的。现场控制站、继电保护装置等能够独立运行,完成控制、保护等功能。这一体系结构设计称为集散原则或者分布式原则,又称为“分散控制+集中监控”模式。在这种模式下,如果只是出现了上层SCADA

系统的故障,有可能全系统依然能够正常运行一段时间。这种风险控制模式的有效性是建立在应对非主观破坏带来的单点失效和突发事故的前提假定下的;但对高级网络攻击乃至在信息战场景,攻击者基于环境预置、定向入侵渗透等方式取得了SCADA系统的控制权的情况下,仅靠这种简单的集散原则是远远不够的。

2.4 攻击导致断电的方法分析

目前变电站SCADA系统可以实现远程数据采集、远程设备控制、远程测量、远程参数调节、信号报警等功能。同时有多种方式可以通过SCADA导致断电,如:

控制远程设备的运行状态。例如断路器、闸刀状态,这种方式比较直接,就是直接切断供电线路,导致对应线路断电。

修改设备运行参数。例如修改继电保护装置的保护整定值,过电流保护的电流整定值减小,这样会使得继电保护装置将正常负荷稍重的情况误判为过电流,引发保护动作进而造成一定破坏,如使断路器跳闸等。

对于乌克兰停电事件中的攻击者来讲,在取得了对SCADA系统的控制能力后,可完成上述操作的手法也有多种:

通过恶意代码直接对变电站系统的程序界面进行控制

当攻击者取得变电站SCADA系统的控制权(如SCADA管理人员工作站节点)后,可取得与SCADA操作人员完全一致的操作界面和操作权限(包括键盘输入、鼠标点击、行命令执行以及更复杂的基于界面交互的配置操作),操作员在本地的各种鉴权操作(如登录口令等),也是可以被攻击者通过技术手段获取的,而采用USB KEY等登录认证方式的USB设备,也可能是默认接入在设备上的。因此,攻击者可像操作人员一样,通过操作界面远程控制对远程设备进行开关控制,以达到断电的目的;同样也可以对远程设备参数进行调节,导致设备误动作或不动作,引起电网故障或断电。

通过恶意代码伪造和篡改指令来控制电力设备

除直接操作界面这种方式外,攻击者还可以通过本地调用API接口、或从网络上劫持等方式,直接伪造和篡改指令来控制电力设备。目前变电站SCADA站控层之下的通信网络,并无特别设计的安全加密通信协议。当攻击者获取不同位置的控制权(如SCADA站控层PC、生产网络相关网络设备等)后,可以直接构造和篡改SCADA监控软件与间隔层设备的通信,例如IEC 61850通信明码报文,IEC 61850属于公开协议、明码通信报文,截获以及伪造IEC 61850通信报文并不存在技术上的问题,因此攻击者可以构造或截获指令来直接遥控过程层电力设备,同样可以完成远程控制设备运行状态、更改设备运行参数引起电网故障或断电。

上述两种方式都不仅可以在攻击者远程操控情况下交互作业,同样可以进行指令预设、实现定时触发和条件触发,从而在不能和攻击者实时通讯的情况下发起攻击。即使是采用操控程序界面的方式,同样可以采用键盘和鼠标的行为的提前预设来完成。

2.5 攻击全程分析

通过以上对变电站系统的分析并基于目前公开的样本,我们分析攻击者可能采用的技术手法为:通过鱼叉式钓鱼邮件或其他手段,首先向“跳板机”植入BlackEnergy,随后通过BlackEnergy建立据点,以“跳板机”作为据点进行横向渗透,之后通过攻陷监控/装置区的关键主机。同时由于BlackEnergy已经形成了具备规模的僵尸网络以及定向传播等因素,亦不排除攻击者已经在乌克兰电力系统中完成了前期环境预置和持久化。

攻击者在获得了SCADA系统的控制能力后,通过相关方法下达断电指令导致断电:其后,采用覆盖MBR和部分扇区的方式,导致系统重启后不能自举(自举只有两个功能:加电自检和磁盘引导。);采用清除系统日志的方式提升事件后续分析难度;采用覆盖文档文件和其他重要格式文件的方式,导致实质性的数据损失。这一组合拳不仅使系统难以恢复,而且在失去SCADA的上层故障回馈和显示能力后,工作人员被“致盲”,从而不能有效推动恢复工作。

攻击者一方面在线上变电站进行攻击的同时,另一方面在线下还对电力客服中心进行电话DDoS攻击,两组“火力”共同配合发起攻击完成攻击者的目的。整体的攻击全景如下图所示:

图 10乌克兰停电事件攻击全程示意图

3 攻击组织及BlackEnergy分析

3.1 SandWorm(沙虫组织)

SandWorm(沙虫组织)是由iSIGHT于2014年10月首次发现,iSIGHT认为该组织与俄罗斯有关,该组织使用漏洞和恶意软件对感兴趣的目标进行攻击,主要的目标包括:北大西洋公约组织、乌克兰政府组织、西欧的政府组织、能源部门的公司(特别是波兰)、欧洲电信公司、美国学术组织等。

在此次乌克兰变电站遭受攻击事件中,攻击者采用了带有恶意宏代码的xls文档,我们通过对该文档的分析,发现其释放的恶意代码及相关特性与沙虫组织的攻击特性十分相似,比如:释放FONTCACHE.DAT文件、启动目录添加CLSID格式名称的快捷方式、释放的文件都是BlackEnergy僵尸网络程序。因此,安天认为本次攻击事件可能与沙虫组织有关。

3.2 BlackEnergy (黑色能量)

BlackEnergy是一种颇为流行的攻击工具,主要用于实施自动化犯罪活动,通常贩卖于俄罗斯的地下网络,其最早出现的时间可追溯到2007年。该软件最初被设计用于创建僵尸网络、实施DDoS攻击和窃取银行凭证的一款恶意软件,逐渐演变为支持多种组件的工具,其组件可根据不同攻击意图组合使用。

因为BlackEnergy具有多组件、多用途的特点,它已被多个团伙用于不同目的。例如,发送DDoS攻击、发送垃圾邮件、密码偷窃、盗取银行证书和搜索特定的文件类型等。近几年多次被利用攻击乌克兰政府、攻击工控系统、甚至攻击路由器等设备。关于本次事件中采用的BlackEnergy样本,可参见安天“沙虫(CVE-2014-4114)相关威胁综合分析报告[13]”中关于载荷文件的分析。

BlackEnergy已经形成了BOTNET(僵尸网络)体系,它成为采集相关基础设施和重要目标节点相关信息,建设在目标基础资源体系中建立持久化能力的重要利器。它通过配置build_id的值来甄别受感染的目标,再从中选取脆弱系统进行内网纵深攻击。

3.3 版本演进历史

3.3.1 BlackEnergy1

BlackEnergy工具带有一个构建器(builder)应用程序,下图是2007年发现的BlackEnergy构建器程序,称之为BlackEnergy1,主要用于实施DDoS攻击。

图 11 BlackEnergy1构建程序

DDoS攻击的BlackEnergy僵尸网络可以启动控制的“洪水”命令的参数,例如:ICMP ping洪水、TCP SYN洪水、UDP流量洪水、二进制包洪水、DNS请求洪水等。

该版本服务器程序为WEB版本,将受害者机器相关信息Base64编码后回传C&C服务器中。

图 12 Base64加密

图 13 解密后数据

Base64解码后的内容为服务器上的配置信息加上一个上线ID号,BlackEnergy配置还包含一个叫build_id的值,该字符串是个特殊字符串,是用来甄别受感染个体的,比如:

表 1 build_id

BlackEnergy1本恶意代码释放的文件名通常为mssrv32.exe,并将该进程注入Svchost.exe中,隐藏自身,伺机发动DDoS攻击。

3.3.2 BlackEnergy2

BlackEnergy2依然是一个具备DDoS功能的僵尸网络程序,该样本新增类加密软件以对自身加密处理,防止反病毒软件查杀。该版本程序首先释放驱动文件以服务方式运行,将驱动程序注入系统进程,随后样本连接远程服务器,下载DDoS攻击组件,根据配置文件对目标发起DDoS攻击。

图 14 BlackEnergy2 工作原理图

BlackEnergy2恶意程序不仅功能强大,实用性广,而且非常易于部署和管理。支持可升级的组件(附加模块),使得黑客更容易修改和扩展其功能。黑客可以通过远程控制中心发布命令,实现组件的快速安装和升级。

BlackEnergy2拥有3个组件,分别SYN、HTTP、DDoS攻击组件,组件下载后样本会将其加载到内存中执行,然后对远程服务器配置展开攻击。

对于大部分BlackEnergy2安装程序来说,安装程序名均为msiexec.exe。msiexec.exe是系统进程,是Windows Installer的一部分,用于安装Windows Installer安装包(MSI)用途,被BlackEnergy恶意混淆利用。

3.3.3 BlackEnergy3

2014年9月F-Secure发布报告称,发现了一个以前未曾见到过的变种,该版本已经重写了代码而且对配置数据采用了不同的保存格式。该版本不再使用驱动组件。我们把这个新变种称之为BlackEnergy 3。但目前对该版本的攻击事件,还并不常见。

3.4 攻击装备/组件介绍

BlackEnergy组件是DLL库文件,一般通过加密方式发送到僵尸程序,一旦组件DLL被接收和解密,将被置于分配的内存中。然后等待相应的命令。例如:可以通过组件发送垃圾邮件、窃取用户机密信息、建立代理服务器、伺机发动DDoS攻击等。

3.5 历史事件及攻击对象回顾

图 15 BlackEnergy历史事件

2007年

BlackEnergy最初版本出现在2007年,主要在俄罗斯地下网络流行,实现DDoS攻击、创建僵尸网络、窃取银行凭证等。

2008年

俄格冲突期间,该工具被用来对格鲁吉亚实施网络攻击。

2009年

BlackEnergy攻击美国花旗银行,盗取数千万美金。

2010年

BlackEnergy2在2010年发布,支持更多的插件功能。

2014年

BlackEnergy的最新样本目标锁定在乌克兰和波兰的攻击。

2014年10月

BlackEnergy恶意软件针对不同厂商的HMI进行攻击,被攻击厂商的系统已包括GE、研华WebAccess、西门子WinCC。

2014年10月14日

SandWorm被iSIGHT发现利用CVE-2014-4114传播的BlackEnergy样本 [14]。安天于2014年10月15日发布“沙虫(CVE-2014-4114)相关威胁综合分析报告”对相关漏洞和样本进行复盘分析。

2014年11月

攻击Linux和Cisco思科设备。

2014年12月

德国联邦信息安全办公室(BSI)发布2014年的信息安全报告,报告中披露了一起针对德国钢厂基础设施的网络攻击,并造成重大物理伤害,相关报道指出该事件可能与BlackEnergy有关。安天随后跟进分析,于次日形成关于BlackEnergy的分析报告[15]。

2015年11月

乌克兰大选期间曾遭受过黑客的攻击,导致资料被窃取。

2015年12月

乌克兰称电网遭遇黑客攻击,相关报告称这起事件和BlackEnergy有关。

4 相关样本分析

4.1 前导文档

安天CERT通过对公开的样本进行关联,关联到发送前导文档的原始邮件。该邮件在2015年3月被用于攻击乌克兰媒体,其中一个包含恶意代码的文档,攻击者在文档中嵌入了恶意宏代码,一旦用户打开文档并运行宏就会对目标系统进行感染。

这与我们过去看到的大量APT攻击中出现的格式溢出文档所不同的是,尽管其也使用了邮件和Office文档作为攻击手段,但并没有使用0Day,甚至相关载荷都没有使用格式溢出方式,而是类似一个传统的宏病毒。这说明高级攻击中是否使用0Day与相关组织的作业能力、0Day储备、以及对目标的适应性有关,高级的攻击未必需要使用“高级攻击技术”(如格式溢出、0Day)。

图 16 邮件内容

邮件译文:

乌克兰总统对部分动员令

据乌克兰总统2015年第15号局部动员令,法令从15年1月14日开始。为了保持乌克兰武装部队和其他军事单位进行战斗动员和动员准备。

乌克兰公民组织负责人必须提供的组织示例(附件1),当地政府雇员的列表、用户类别。不包含乌克兰总统令中附录2和信息附录3所列的顺序动员。

这是一种针对性攻击常用的手法,首先攻击者在一封邮件中嵌入一个恶意文档发送给目标,如果目标主机存在安全隐患,则在打开附件时就会自动运行宏代码,附件(Excel)打开后显示如下图,为了诱导受害者启用宏,攻击者还使用乌克兰语进行了提醒,图中文字含义为:“注意!该文档由较新版本的Office 创建,为显示文档内容,必须启用宏。”

图 17 Excel内容

经分析人员对宏代码进行提取分析,发现宏代码主要分为两个部分,首先通过25个函数定义768个数组,在数组中写入二进制数据(PE文件)备用,如下图:

图 18 宏代码

然后通过一个循环将二进制数据写入到指定的磁盘文件,对应的路径为:%TEMP%\vba_macro.exe,随后执行此文件,即BlackEnergy Dropper,在经过多次解密后,其会释放BlackEnergy,并利用BlackEnergy下载插件对系统进行攻击。

图 19 生成PE

4.2 Dropbear SSH

该样本是攻击者使用组件,一个攻击者篡改的SSH服务端程序,该程序是基于开源的SSH软件Dropbear SSH[16],改动部分代码后生成。

攻击者利用VBS文件启动这个SSH服务端,VBS内容如下:

图 20 VBS内容

VBS脚本启动SSH程序,开启6789端口等待连接,这样攻击者可以在内网中连接到受害机。

这个SSH程序是攻击者使用Dropbear SSH源码重新编译的,在其中添加了固定密码“passDs5Bu9Te7”,因此只有使用这个密码才能连接上SSH服务,下图是原版Dropbear SSH源码和攻击者修改后的代码:

图 21 Dropbear SSH

图 22 添加后门的Dropbear SSH代码

安天分析工程师认为不排除Dropbear SSH正是乌克兰电力部门使用的SSH管理工具,假定,相关带有后门的Dropbear SSH的出现,也不排除是此次攻击的环境预置的一部分。同时攻击者使用开源代码为基础,构造可疑功能,可以起到躲避安全软件的检测的目的。通过图23所示该文件的检测历史情况,可以看出该样本刚出现时,所有的安全软件都不能检测,之后由于ESET最早获得样本,而能够独家检测,其后各厂商才陆续检出。

图 23 历史检测结果

4.3 KillDisk

KillDisk也是攻击者使用的组件,主要目的是擦除证据,破坏系统。样本运行后会遍历文件进行擦除操作,还会擦写磁盘MBR、破坏文件,最后强制关闭计算机。

4.3.1 样本标签

4.3.2 样本安装流程

样本具有延迟触发的功能,在启动样本时,需要添加一个参数,用来指定样本在多少分钟之后执行恶意操作。样本会将输入的参数乘以60转为秒数,再使用函数RtlTimeToSecondsSince1970获取当前的秒数相加,将此值写入到注册表中。

图 24 写入注册表

利用ShellExecuteW调用cmd.exe来执行安装操作,参数如下:

图 25 添加服务

安装完成之后,样本会执行一个循环操作,判断当前系统时间是否已经大于注册表中的数值,若已经大于,则执行恶意操作;若未达到,则继续执行循环操作。

图 26 延时操作

4.3.3 样本功能分析

4.3.3.1 覆盖MBR和部分扇区

样本会将系统中的磁盘进行破坏,将磁盘的前0x20000字节写入“\x00”,使系统重启之后无法正常启动。 对系统中的前十块磁盘进行擦除操作,打开磁盘,获取句柄。

图 27 遍历磁盘

从磁盘的起始位置开始进行擦除,每次写入0x200字节的“\x00”,执行0x100次操作。

图 28 磁盘擦除

4.3.3.2 清理系统日志

如对部分扇区的擦除工作能够正常完成,该样本会对系统的日志进行清理,以增加事后分析的难度,如图29:

图 29 清理日志

4.3.3.3 进程遍历和清理进程

此后样本会遍历系统中的进程,若进程名存在于下面的列表中,则会放行;否则会结束进程的运行。

图 30 进程列表

从表中可以看出,多数为系统的关键进程,只有komut.exe不是系统进程。样本中止掉其他进程,应是为榨取更多的系统资源,以使下一个动作(文件擦除)产生更好的效果,但同时又避免误杀系统进程导致系统运行受到影响。

4.3.3.4 文件擦除

该部分操作是由一个新创建的线程所执行。它会先对磁盘中的文件进行全盘遍历,根据文件后缀的不同分为两类,最后使用随机数字对文件进行擦除。图31为部分代码:

图 31 文件擦除

通过函数m_FileSearch对文件的遍历,得到inList、outList。若文件后缀存在于下面的表中,则文件路径存放到inList中;否则存放到outList中。

  1. .crt.bin.exe.db.dbf.pdf.djvu.doc.docx.xls.xlsx.jar.ppt.pptx.tib.vhd.iso.lib.mdb.accdb.sql.mdf.xml.rtf.ini.cfg.boot.txt.rar.msi.zip.jpg.bmp.jpeg.tiff 

表 4 后缀列表

由于该部分运行在线程中,无法保证所有文件都被破坏。样本首先擦除的是inList中的文件,可见攻击者是想先破坏掉带有上面后缀的文件,如果有时间,再去破坏系统中的其它文件,被擦除后的文件大小均为8.03kb。

4.3.3.5 结束进程

通过遍历系统进程,查找sec_service.exe,若存在该进程,则将其结束掉,并执行两次。

图 32 结束进程

若不存在该进程,则判断是否存在sec_service服务,若存在,则将其关闭并删除该服务。

4.3.3.6 关机操作

当执行完上面的操作之后,样本会执行关机操作。

图 33 关机操作

该条指令执行之后,会在5秒后关机,样本在这5秒内还会进行一次系统遍历,结束三个系统进程csrss.exe、smss.exe、lsass.exe,猜测攻击者是担心因为这些进程的干扰导致无法达到重启的目的。

而在关机后,由于MBR已经被破坏,系统将不能完成自举。

4.3.3.7 其它样本

关于KillDisk的样本共有四个,上面的分析是功能最为强大的一个样本。对另外三个样本,我们也进行了分析,发现它们之间功能基本一致,多个函数都完全一样,前三个样本的时间戳信息接近,推断这四个样本是由同一个团队,对同一套代码的不断修改所编译出来的,而且最后一个样本的时间戳是被修改的。下面是它们之间的对比信息:

4.4 硬盘破坏程度

样本会对磁盘的前0x20000字节进行擦写。每个扇区的大小为0x200字节,换句话说,样本会擦写磁盘的前256个扇区。

第1个扇区为主引导扇区(MBR),其结构如下:

图 34 MBR结构

分区项的结构如下:

图 35 分区项结构

系统引导扇区(BOOT区)存放在哪个扇区一般由分区项1决定。我们使用Win XP与Win 7分别进行了测试。结果如下:

表 6 测试结果

样本一定会破坏掉MBR,使系统无法正常启动,但是否会破坏到系统引导扇区以及破坏的程度大小无法确定,这取决于磁盘的大小、所使用的分区工具、所安装的操作系统等等多种因素。

4.5 可恢复程度测试

以下测试仅针对擦写磁盘MBR后,样本未将磁盘文件擦除的前提下所进行的。我们对被样本擦写后的磁盘进行了恢复测试,首先使用工具PTDD Partition Table Doctor对磁盘MBR进行重建,再对分区表进行重建,测试修复后的磁盘是否可以正常启动系统,文件是否完整。

这两项修复工作只会对磁盘的第一个扇区进行修改,包含主引导程序的出错信息、四个分区项和结束字。

对两块硬盘进行了测试:一是XP系统的,分区项1的内容在前256个扇区内,已经被破坏;二是Win7系统的,分区项1的内容不在前256个扇区内,未被破坏。

  • XP系统磁盘修复

该磁盘在修复前,因为MBR被破坏,找不到系统分区,系统显示的错误信息如下:

图 36 MBR丢失

将MBR进行修复之后,但由于系统启动文件被破坏,会出现下面的错误:

图 37 系统文件破坏

Win7系统磁盘修复

对磁盘MBR进行重建之后,利用工具无法找到磁盘分区,这时需要人工查找系统盘所在分区,确定所有位置及大小,并将这些信息写入到MBR扇区对应位置。

图 38 MBR扇区

这时运行系统会出现如下错误:

图 39 系统错误

再使用WinPE进入系统,利用命令bcdedit进行修复,命令如下:

  1. bcdedit /set {default} device partition=c: 
  2. bcdedit /set {default} osdevice partition=c: 
  3. bcdedit /set {default} detecthal 1 

表 7 修复命令

可正常启动开机。

通过以上的测试可以看出,如果MBR与分区项1的内容都被样本擦写,只可以对MBR进行修复,分区项1中的内容无法进行修复,也无法开机;若只有MBR被擦写,可以对其修复并正常开机。

但样本运行之后,对系统中磁盘的文件进行了擦除,即使MBR修复之后,由于系统文件的损坏,也无法进行恢复,可见样本的破坏性之大。

5 事件总结

图 40 乌克兰停电攻击事件过程总结

正如我们开篇指出的那样:这是一起以BlackEnergy等相关恶意代码为主要攻击工具,通过BOTNET体系进行前期的资料采集和环境预置;以邮件发送恶意代码载荷为最终攻击的直接突破入口,通过远程控制SCADA节点下达指令为断电手段;以摧毁破坏SCADA系统实现迟滞恢复和状态致盲;以DDoS电话作为干扰,最后达成长时间停电并制造整个社会混乱的具有信息战水准的网络攻击事件。

此次攻击的对象为关键基础设施,这就使人们很自然地联想到六年前的“震网蠕虫”。我们把相关事件的要素放在一起对比,则会看到不同的攻击组织带有完全迥异的风格,如果说“震网”这样的A2PT攻击让人看到更多的是0Day、复杂严密的加密策略、PLC与固件等等;而乌克兰停电事件的“战果”,是攻击者在未使用任何0Day,也未使用位于生产系统侧的攻击组件,仅仅依托PC端的恶意代码作业的情况下取得的,显然其攻击成本和“震网”相比要低得多。

表 8 震网事件与乌克兰变电站遭受攻击事件对比

这也再一次提醒我们需要重新审视所谓APT攻击或CyberWar的评价标准,事件的定性不在于刻板的字面意义,而是其背后深层次的动机与能力的综合因素,对攻击集团来说,只要可以完成作业目的,一切手段皆可用,通用网络攻击工具、商用恶意代码、被改造的开源工具、1Day漏洞,传统的宏病毒等等,将更多地被用于对关键目标的攻击当中。在商业军火和开源工具被广泛应用的场景下,通过恶意代码本身来确定攻击来源将日趋困难,而放在更大的攻防态势上来看,地下黑产的基础设施也正在形成,并构成了一个惟利是图的多边信息共享机制,被普通僵尸网络采集窃取到的信息,有着巨大的流向不确定性,而一般性的恶意代码感染、弱化安全性的盗版镜像、夹带恶意代码汉化、破解工具等等,都在客观上起到降低战略攻击者门槛的作用。对那些“普通的”恶意代码感染扩散事件予以漠视,而幻想依托威胁情报就可以发现拦截高级威胁的想法无疑是幼稚的。

对于关键基础设施特别是工控系统的IT管理者们来说,需要走入“物理隔离”带来的虚假安全感:传统的内网隔离安全很大程度上是受到封闭空间保障的,封闭空间的场景依托物理安全措施提升攻击成本,提升了接触式攻击的成本。但社会基础设施则是需要向社会纵深进行有效覆盖的,特别是像电网这样的注定呈现出巨大的物理空间覆盖力体系,必然需要大量使用无人值守设备的方式。因此,这些孤点的风险不止在于他们可能是失能的末梢,也在于他们可能是攻击的入口。

而在对关键基础设施防御点和投入配比上,当人们认为对关键基础设施的攻击必然在“纵深位置”时,乌克兰停电事件则提醒我们,随着仪表盘和操控面板被更多的PC设备替代。PC环境已经在工业控制体系中,扮演“一览众山小”的位置。如果SCADA等PC节点失守,攻击者几乎可以为所欲为。为有效改善基础设施体系中PC节点和TCP/IP网络,需要通过网络捕获与检测、沙箱自动化分析、白名单+安全基线等综合方式改善防御纵深能力;同时,也要和防火墙、补丁与配置强化、反病毒等传统手段有效结合,改善IT治理;需要把更多更细腻的工作放到内部的安全策略与管理以及外部供应链安全等环节中去。

责任编辑:武晓燕 来源: 安天实验室
相关推荐

2012-05-30 15:16:49

ibmdw

2022-04-18 19:28:39

数智电力新型电力电力行业

2022-07-15 16:10:53

戴尔

2009-08-13 14:58:15

2010-09-26 13:05:58

2016-01-08 16:11:47

2010-03-01 09:28:34

2021-05-07 15:57:56

数据中心电力系统绿色数据中心

2019-03-12 05:37:12

断电事件网络攻击

2022-02-16 13:11:40

DDoS攻击网络攻击

2017-06-29 10:43:15

2012-08-06 10:18:09

2017-07-05 11:23:38

勒索病毒网络安全企业数据
点赞
收藏

51CTO技术栈公众号