乌克兰Ukrenergo断电事件技术分析与防护方案

Ukrenergo是乌克兰国内的主要能源供应企业,2016年12月17日晚,该公司经历了一次供电故障,影响到基辅附近诺威佩特里夫茨村的北部变电站自动化控制系统,该停电事故主要影响的范围是基辅(乌克兰首都)北部及其周边地区。

事件综述

Ukrenergo是乌克兰国内的主要能源供应企业,2016年12月17日晚,该公司经历了一次供电故障,影响到基辅附近诺威佩特里夫茨村的北部变电站自动化控制系统,该停电事故主要影响的范围是基辅(乌克兰首都)北部及其周边地区。

停电事件发生后30分钟,Ukrenergo工程师将设备切换为手工模式,并开始恢复供电;75分钟后完全恢复供电。

2016年12月18日上午,Ukrenergo负责人Vsevolod Kovalchuk在Facebook上发布信息描述了上述经过,并称本次停电的原因可能是设备故障,也可能是由于网络攻击。

针对本次停电事件,绿盟科技安全团队响应如图1所示:

绿盟科技安全响应

历史回顾

乌克兰电网受攻击历史

乌克兰电网近期遭受的攻击事件如图2所示。绿盟科技安全团队通过对恶意代码的分析发现本次事件的攻击者是Telebots组织,该组织与BlackEnergy组织有关。

电力系统简介

电力系统是由发电、输电、变电、配电和用电连接成的统一整体,如图3所示。其中,升压变电所是将电压升高,变为高压电从而进行远距离电力传送;降压变电所是将高压电的电压降低,以供区域电网或终端用户使用;配电变电所负责将电网输送来的电能分配给各类用户。在整个电力系统中,几乎每个环节都依赖计算机技术的支撑,比如各级电网调度控制中心的计算机系统、变电站的计算机监控系统等等。

电力系统组成

国内变电站主要结构示意图如图4所示:

国内变电站主要结构示意图

  • 纵向加密:对变电站送往调度中心的通道数据进行加密。
  • 远动装置:负责将变电站内的信息送往远方的调度中心。
  • 网络分析仪:记录变电站内部网络的通信报文。
  • 国外变电站主要结构示意图如图5所示:

国外变电站主要结构示意图

  • 保护装置:对采集到的一次设备电压电流、开关量信号执行相应保护控制逻辑。
  • 合并单元:负责采集一次设备的电压电流信号。
  • 智能终端:负责采集一次设备的开关量信号,以及执行保护装置下发的开关控制命令。
  • 状态监测与诊断装置:变电站现场的辅助监测类设备。
  • 协议转换服务器:负责协议转换,使得采用不同协议的设备之间可以互相通信。
  • 监控主机:负责变电站现场信息的汇总展示。
  • 调度中心:集中展示和控制下面多个变电站的集控中心。(1)国内将变电站内的区域通过防火墙分隔成了安全I区和安全II区。安全I区:实时生产控制区,可以直接控制电力一次设备的运行。安全II区:非实时控制区,如电能量计量系统,故障录波管理系统等。
  • (2)国内变电站是完全隔离的局域网,不与公网连接;而国外的变电站可以通过办公区以VPN等形式接入变电站的内部网络。
  • 国内和国外变电站的主要区别表现在以下两点:

样本执行概要

该样本的执行流程图如图6所示:

样本执行流程图

样本结构

此样本是一个复合样本,包含多个样本文件:

文件类型 MD5 功能
XLS FD0FD58B20B1476E8F67D6A05307E9BC

7D4FC63F2096A485D2DA3DB1150E6D34

释放并执行

C:\User\xxx\AppData\Local\Temp\explorer.exe

explorer.exe 1019C101FC1AE71E5C1687E34F0628E6 下载并执行

C:\User\xxx\AppData\Local\Temp\lsass.exe

lsass.exe 873C7701E16BC68AD7A90886B5D0A3F0

75EE947E31A40AB4B5CDE9F4A767310B

0FCE93CD9BEEEA30A7F0E2A819D2B968

远控木马,根据服务器发送的命令执行不同的功能
KillDisk.exe B75C869561E014F4D384773427C879A6

FFB1E8BABAECC4A8CB3D763412294469

删除系统日志,清空部分扇区数据,导致系统崩溃无法重启
keylogger.exe 4919569CD19164C1F123F97C5B44B03B 记录键盘消息
LDAPquery.exe 76691C58103431624D26F2B8384A57B0 查询LDAP服务器
mimikatz.exe BDE6C0DAC3E594A4A859B490AAAF1217 抓取系统口令
CredRaptor.exe 389AE3A4589E355E173E9B077D6F1A0A 窃取浏览器中用户的用户名和密码
Intercepter-NG.exe 5BD6B79A4443AFD27F7ED1FBF66060EA 抓包工具
VBS 2D7866989D659C1F8AE795E5CAB40BF3

C404B959B51AD0425F1789F03E2C6ECF

获取并执行指令
telebot.exe 24313581BBBFFA9A784B48075B525810 远控木马,根据不同的指令执行不同的功能

表1 样本文件列表

详细文件功能介绍如下:

XLS

主要功能

通过运行文档中的宏代码,将可执行文件释放到临时目录“C:\User\xxx\AppData\Local\Temp”,并命名为“explorer.exe”来隐藏自身。

行为分析

该文件运行后如图7所示:

XLS运行后截图

图8中为宏代码中定义的数组中的第一个,这些数组中的数据是一个PE文件,“77”和“90”分别对应16进制的“4D5A”。

宏定义的数组

生成并运行文件

explorer.exe

主要功能

该文件是一个下载器,主要功能是从服务器下载文件并执行。

行为分析

样本会首先连接域名,所连接的域名如图10所示。该域名是一个允许任何人下载和上传文件的托管网站,如图11所示。

样本所连接的域名

域名对应的网站

对该样本文件逆向分析如下:(1)首先调用connect函数,要连接的IP地址为188.234.144.11,如图12所示。该IP是一个存储文件的服务器。

connect函数要连接的IP地址

(2)发送数据,如图13:

图13 发送数据

(3)接收数据后创建文件,如图14:

图14 创建文件

(4)将接收的数据写入文件中,如图15:

图15 写入数据

(5)之后逐部分读取文件内容到内存中,如图16:

图16 读取文件到内存

(6)进行解密,如图17:

图17 解密操作

(7)解密部分的代码表2所示:

(8)创建lsass.exe文件,如图18:

图18 创建文件

(9)将文件内容写入\AppData\Local\Temp\lsass.exe中,如图19:

图19 写入lsass

(10)完成后即删除原txt文件,如图20:

图20 删除txt文件

(11)创建进程,如图21:

图21 删除进程

lsass.exe

主要功能

接收服务器的指令,执行不同的功能。

行为分析

首先使用pyinstxtractor.py将样本反编译成py文件,图22为反编译后的py文件。

图22 反编译后的py文件

图23为解密后的代码:

解密后的代码

该代码会从远程服务器获取指令,先尝试直接从服务器读取指令,如果失败则尝试获取指令文件中的内容,在本地新建一个长度为10字节的随机dat文件,将指令文件中的内容写入dat文件中。

从服务器获取指令

根据不同指令执行各种功能

指令解析如表3所示:

命令 功能
help 显示可以执行的指令
cmd||(cmd command) 执行(cmd command)中的命令(读取数据时cp866解码后用utf-8编码)
cmdd||(cmd command) 执行(cmd command)中的命令
getphoto||(path) 获取路径为(path)的文件(发送数据时用本机编码方式解码再用utf-8编码)
getdoc||(doc path) 获取路径为(doc path)的文件
forcecheckin||random data 获取主机信息
time||(int) 设置sleep的时间
ss||(random data) 未实现,从名称判断为获取截屏

表3 指令解析

KillDisk.exe

主要功能

清除系统扇区,删除重要的系统文件,对特定类型的文件内容进行覆盖,结束系统进程,致使系统崩溃,无法修复。

行为分析

样本首先会提升进程权限,使病毒程序具有关机和修改系统目录文件的权限。

图26 提升权限

启动cmd创建服务,如图27:

图27 创建服务

创建服务后启动服务,如图28:

图28 启动服务

而启动的服务程序即是它本身,如图29:

图29 服务程序

创建线程删除日志文件,隐藏操作痕迹,如图30:

图30 隐藏痕迹

样本企图对PhysicalDriver0到PhysicalDriver15进行内存填充,如图31:

图31 内存填充

对打开的每个磁盘的291个扇区进行内存的清零操作,如图32:

图32 对磁盘清零

上述操作完成后,操作系统已经无法重启。

重复三次结束系统关键进程的操作来结束一些系统进程,如图33。被结束的系统进程包含但不仅限于:system,vmacthlp.exe,VGAuthService.exe,vmtoolsd.exe,dllhost.exe,WmiPrvSE.exe,msdtc.exe,SearchIndexer.exe,sppsvc.exe,PCHunter32.exe。

图33 结束系统进程

上述行为最终会导致系统崩溃,重新启动。然而由于系统扇区内存已被清零,导致系统无法重启。

通过代码跟踪分析,发现了KillDisk组件的一个变种,可以运行在多种平台上。攻击者利用该变种文件不仅可以攻击Windows上位机控制的SCADA/ICS系统,可以攻击Linux上位机控制的SCADA/ICS系统。目前该变种文件已经被作为Linux系统的勒索软件,勒索赎金为222btc,折合人民币1729875元,如图34:

图34 KillDisk变种

keylogger.exe

主要功能

键盘记录器,记录用户的键盘输入并保存到临时目录下伪装成.tmp文件,攻击者如果有文件系统的读写权限,则只需读取该文件即可获得用户在某进程/窗口/文件下的所有键盘操作记录。

行为分析

在temp目录下生成键盘记录日志文件,如图35:

图35 生成键盘记录文件

日志文件的内容如图36所示:

图36 日志文件内容

日志文件包含以下信息:

1.键盘钩子设置情况。

2.进行键盘操作的进程PID、标题、进程名。

3.用户的键盘输入内容。

随后样本会注入各进程设置键盘钩子以获取键盘消息,如图37:

图37 设置键盘钩子

记录键盘消息,如图38:

图38 记录键盘消息

该样本不存在设置启动项的行为,是一次性的执行流程。然而攻击者既然已获得了上传并运行文件的权限,完全可以手工将其加入启动项列表中,借以绕过杀毒软件的检测。

LDAPquery.exe

主要功能

该文件是一个LDAP服务器的查询工具,成功连接至LDAP服务器后,可以通过ldap_search的方式查询分区、计算机、用户等信息。

行为分析

连接到LDAP服务器,如图39:

图39 连接LDAP服务器

成功连接LDAP服务器后(服务器地址根据运行参数而决定,若参数为空则连接默认LDAP服务器),样本将自动通过ldap_search函数查询服务器的相关信息并回显。

查询分区信息,如图40:

图40 查询分区信息

查询计算机信息,如图41:

图41 查询计算机信息

查询用户信息,如图42:

图42 查询用户信息

查询其他信息,如图43:

图43 查询其他信息

mimikatz.exe

主要功能

获取管理员的用户名和密码,该样本只能工作在32位系统环境中,它通过注入lsass.exe并读取内存来抓取用户名、工作组、密码等信息。

由于lsass.exe中的密码字段并非用hash加密且加密参数留驻于内存未能擦除,所以该样本可通过读取内存中加密的密文密码和加密参数,并调用lsasrv.dll中的解密模块进行解密,借以还原出用户的密码明文。

该样本可以获取所有处在于“已登录”状态的用户名和口令。

行为分析

注入并读取lsass.exe的内存,如图44:

图44 读取lsass.exe的内存

样本将从读到的内存基址中以偏移的方式分别获取以下内容的动态地址:

1.用户名

2.工作组

3.用户口令(密文)

读取动态地址中的用户名,如图45、图46:

CredRaptor.exe

主要功能

该样本通过检查系统版本来确定IE浏览器的版本,从而对不同版本的IE浏览器文件夹下存储的用户名密码文件进行解析,获取用户信息。获取信息的浏览器包含Google Chrome,Internet Explorer,Mozilla Firefox和Opera。

行为分析

首先程序检查系统版本,如图50:

CryptUnprotectData函数可以解密同一用户在相同权限下加密的数据。

尝试读取iexplorer的用户信息,如图53:

图53 读取用户信息

获取日志文件的路径,如图54:

使用SQL语句 SELECT ORIGIN_URL,USERNAME_VALUE,PASSWORD_VALUE FROM LOGINS进行查询操作,如图57:

Intercepter-NG.exe

主要功能

该样本是俄罗斯人编写的一款抓包工具,其特点为:

  • 监听不同类型的密码或Hash包括:

ICQ\IRC\AIM\FTP\IMAP\POP3\SMTP\LDAP\BNC\SOCKS\

HTTP\WWW\NNTP\CVS\TELNET\MRA\DC++\VNC\MYSQL\ORACLE\NTLM

  • 监听以下即时通讯工具的实时聊天内容:ICQ\AIM\JABBER\YAHOO\MSN\IRC\MRA
  • 混杂模式\ARP\DHCP\Gateway\智能扫描模式
  • Raw mode\eXtreme\Resurrection mode
  • 捕获数据报并提供离线分析功能
  • 通过RPCAP daemon捕获传输远程数据
  • NAT\SOCKS\DHCP
  • ARP\DNS over ICMP\DHCP\SSL\SSLSTRIP\WPAD\SMBRelay 中间人攻击
  • 可以工作在NT平台,任何的*nix平台,以及IOS和Android平台。

具体内容请参见官网:

http://sniff.su/

VBS

主要功能

从服务端获取并执行指令。

行为分析

向远程服务器请求数据,并将请求到的数据转换成指令执行,如图61:

VBS样本的指令格式*:report_id$arg0 arg1

command Function
!cmd arg1 执行arg1
!cmdd arg1 执行arg1
!dump arg1 发送对arg1再次进行编码的内容
!timeout arg1 设置sleep的时间
!bye 设置exitFlag = True(该变量控制程序是否退出)
!kill 自我删除, 设置exitFlag = True(该变量控制程序是否退出)
!up (int) 将arg1指定的文件内容编码后发送

表4 VBS样本指令格式

telebot.exe

主要功能

此样本是一个木马程序,根据不同指令执行不同功能。

行为分析

从邮箱获取文件然后进行解码来获取命令然后执行。

图64 发送文件

邮箱样本的指令格式{“CMD”:“”,“”:“jobid”,“ARG”:“*”}。

command Function
CMD:download

ARG:filepath

将filepath指定的文件发给自己的邮箱
CMD:cmd

ARG:cmd command

执行(cmd command)中的命令并将输出信息和出错信息发给自己邮箱
CMD:upload

ARG:url

下载url代表的文件并在本地运行
CMD:forcecheckin,

ARG:

向自己发邮件,内容为字符串信息和本机信息

表5 邮箱样本指令格式

通过登陆自己邮箱,将窃取到的信息发送到自己的邮箱,如图65:

经验证该账号密码仍然可用,但需要进行验证,如图67:

攻击定位

通过对样本的分析,发现样本会连接两个IP地址和一个域名,信息如下:

  1. IP(188.234.144.11),位于俄罗斯地区,如图68:

图68 攻击定位(1)

2.IP(93.190.137.212)位于荷兰,如图69:

图69 攻击定位(2)

3.lsass中链接的域名为

https://api.telegram.org/bot140192111:AAGSxqO9Xz9meTaG7Ecdh80LGnYXNIbbgp4

此域名解析的结果如图70:

图70 域名解析结果

防护方案

  •  绿盟科技检测服务

  1. 绿盟科技工程师前往客户现场检测。
  2. 绿盟科技在线云检测,登陆绿盟云,申请威胁分析中心试用。链接地址如下:

https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?service_id=1018

  • 绿盟科技木马专杀解决方案

  1. 短期服务:绿盟科技工程师现场木马后门清理服务(人工服务+IPS+TAC+终端防护(金山V8+))。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。
  2. 中期服务:提供3-6个月的风险监控与巡检服务(IPS+TAC+人工服务)。根除风险,确保事件不复发。
  3. 长期服务:基于行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)

总结

此次攻击和BlackEnergy类似,攻击者使用带有Microsoft Excel文档的spearphishing电子邮件,其中包含恶意宏作为初始感染向量。不同的是这次恶意文档没有使用任何社会工程学的方法来诱导受害者点击启动宏按钮,这样攻击是否成功只能完全依靠受害者是否点击它。

宏病毒运行后释放恶意文件,开始执行恶意功能。

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

更多内容,请下载附件:乌克兰Ukrenergo断电事件技术分析与防护方案

如果您需要了解更多内容,可以
加入QQ群:570982169
直接询问:010-68438880

 

发表评论