安全路透社
当前位置:安全路透社 > 网络转载 > 正文

乌克兰又断电了,看Ukrenergo断电事件的技术分析与防护方案

1.png

事件综述

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

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

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

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

2.jpg

图1 绿盟科技安全响应

历史回顾

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

3.png

图2 乌克兰电网受攻击历史

电力系统简介

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

4.png

图3 电力系统组成

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

5.png

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

纵向加密:对变电站送往调度中心的通道数据进行加密。

远动装置:负责将变电站内的信息送往远方的调度中心。

网络分析仪:记录变电站内部网络的通信报文。

国外变电站主要结构示意图如图5所示:6.png

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

保护装置:对采集到的一次设备电压电流、开关量信号执行相应保护控制逻辑。

合并单元:负责采集一次设备的电压电流信号。

智能终端:负责采集一次设备的开关量信号,以及执行保护装置下发的开关控制命令。

状态监测与诊断装置:变电站现场的辅助监测类设备。

协议转换服务器:负责协议转换,使得采用不同协议的设备之间可以互相通信。

监控主机:负责变电站现场信息的汇总展示。

调度中心:集中展示和控制下面多个变电站的集控中心。

国内和国外变电站的主要区别表现在以下两点:

(1)国内将变电站内的区域通过防火墙分隔成了安全I区和安全II区。安全I区:实时生产控制区,可以直接控制电力一次设备的运行。安全II区:非实时控制区,如电能量计量系统,故障录波管理系统等。

(2)国内变电站是完全隔离的局域网,不与公网连接;而国外的变电站可以通过办公区以VPN等形式接入变电站的内部网络。

样本执行概要

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

6.png

图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所示:

7.jpg

图7 XLS运行后截图 

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

8.jpg

图8 宏定义的数组

9.jpg

图9 生成并运行文件

explorer.exe

主要功能

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

行为分析

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

 10.png

图10 样本所连接的域名

11.png

图11 域名对应的网站

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

12.png

图12 connect函数要连接的IP地址

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

13.png

图13 发送数据

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

14.png

图14 创建文件

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

15.png

图15 写入数据

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

16.png

图16 读取文件到内存

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

17.png

图17 解密操作

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

.text:00405142                 mov     eax, [esp+2C8h]
.text:00405149                 mov     edx, [esp+5Ch]
.text:0040514D                 mov     edi, ebx
.text:0040514F                 mov     ebx, [esp+1Ch]
.text:00405153                 mov     ecx, [esp+2C4h]
.text:0040515A                 or      eax, [esp+54h]
.text:0040515E                 add     edx, [esp+50h]
.text:00405162                 mov     [ebx+edi], al
.text:00405165                 inc     edi
.text:00405166                 mov     esi, eax
.text:00405168                 lea     edx, [ecx+edx+4]
.text:0040516C                 mov     [esp+20h], edi
.text:00405170                 mov     [esp+4Ch], edi
.text:00405174                 mov     edi, [esp+18h]
.text:00405178                 mov     ebx, edx
.text:0040517A                 shl     esi, 6
.text:0040517D                 mov     dl, 1
.text:0040517F                 nop
.text:00405180
.text:00405180 loc_405180:                             ; CODE XREF: micro::main::hd9f3cc455036707f+25FCj
.text:00405180                 xor     ecx, ecx
.text:00405182                 mov     [esp+5Ch], ebx
.text:00405186
.text:00405186 loc_405186:                             ; CODE XREF: micro::main::hd9f3cc455036707f+269Dj
.text:00405186                 cmp     edi, ebx
.text:00405188                 jz      loc_406B19
.text:0040518E                 movzx   eax, byte ptr [ebx]
.text:00405191                 mov     [esp+50h], eax
.text:00405195                 movzx   eax, byte ptr [eax+45CD5Fh]
.text:0040519C                 cmp     eax, 0FDh
.text:004051A1                 jb      short loc_4051AF
.text:004051A3                 inc     ebx
.text:004051A4                 inc     ecx
.text:004051A5                 cmp     al, 0FDh
.text:004051A7                 jnz     loc_405338
.text:004051AD                 jmp     short loc_405186
.text:004051AF ; ---------------------------------------------------------------------------
.text:004051AF
.text:004051AF loc_4051AF:                             ; CODE XREF: micro::main::hd9f3cc455036707f+2691j
.text:004051AF                 or      eax, esi
.text:004051B1                 inc     ebx
.text:004051B2                 shl     eax, 6
.text:004051B5                 mov     [esp+54h], eax
.text:004051B9
.text:004051B9 loc_4051B9:                             ; CODE XREF: micro::main::hd9f3cc455036707f+26DCj
.text:004051B9                 mov     eax, [esp+2D8h]
.text:004051C0                 mov     esi, 1
.text:004051C5                 lea     eax, (loc_402B28 - 402B28h)[ebx+eax]
.text:004051C8                 cmp     eax, 1
.text:004051CB                 jz      loc_406C0C
.text:004051D1                 movzx   esi, byte ptr [ebx]
.text:004051D4                 movzx   eax, ds:_const_47[esi]
.text:004051DB                 cmp     eax, 0FCh
.text:004051E0                 jbe     short loc_4051EE
.text:004051E2                 inc     ebx
.text:004051E3                 inc     ecx
.text:004051E4                 cmp     al, 0FDh
.text:004051E6                 jnz     loc_406B2A
.text:004051EC                 jmp     short loc_4051B9
.text:004051EE ; ---------------------------------------------------------------------------
.text:004051EE
.text:004051EE loc_4051EE:                             ; CODE XREF: micro::main::hd9f3cc455036707f+26D0j
.text:004051EE                 or      eax, [esp+54h]
.text:004051F2                 mov     edx, [esp+2D0h]
.text:004051F9                 mov     [esp+18h], edi
.text:004051FD                 mov     edi, ecx
.text:004051FF                 mov     [esp+2CCh], eax
.text:00405206                 shl     eax, 6
.text:00405209                 mov     [esp+54h], eax
.text:0040520D                 mov     eax, [esp+5Ch]
.text:00405211                 lea     eax, (loc_402B28 - 402B28h)[eax+edx]
.text:00405214
.text:00405214 loc_405214:                             ; CODE XREF: micro::main::hd9f3cc455036707f+2734j
.text:00405214                 mov     edx, eax
.text:00405216                 add     edx, edi
.text:00405218                 jz      loc_406BA6
.text:0040521E                 mov     edx, [esp+5Ch]
.text:00405222                 movzx   ecx, byte ptr [edx+edi+2]
.text:00405227                 movzx   ebx, ds:_const_47[ecx]
.text:0040522E                 mov     [esp+50h], ecx
.text:00405232                 cmp     ebx, 0FCh
.text:00405238                 jbe     short loc_405246
.text:0040523A                 inc     edi
.text:0040523B                 cmp     bl, 0FDh
.text:0040523E                 jnz     loc_406B8A
.text:00405244                 jmp     short loc_405214
.text:00405246 ; ---------------------------------------------------------------------------
.text:00405246
.text:00405246 loc_405246:                             ; CODE XREF: micro::main::hd9f3cc455036707f+2728j
.text:00405246                 or      ebx, [esp+54h]
.text:0040524A                 mov     ecx, [esp+5Ch]
.text:0040524E                 xor     esi, esi
.text:00405250                 mov     eax, ebx
.text:00405252                 shl     eax, 6
.text:00405255                 mov     [esp+54h], eax
.text:00405259                 mov     eax, [esp+4]
.text:0040525D                 lea     eax, (loc_402B28 - 402B28h)[ecx+eax]
.text:00405260                 add     eax, edi
.text:00405262
.text:00405262 loc_405262:                             ; CODE XREF: micro::main::hd9f3cc455036707f+2781j
.text:00405262                 mov     edx, eax
.text:00405264                 add     edx, esi
.text:00405266                 jz      loc_406C4A
.text:0040526C                 lea     edx, [ecx+esi]
.text:0040526F                 movzx   edx, byte ptr [edx+edi+3]
.text:00405274                 mov     [esp+50h], edx
.text:00405278                 movzx   edx, ds:_const_47[edx]
.text:0040527F                 cmp     edx, 0FCh
.text:00405285                 jbe     short loc_405293
.text:00405287                 inc     esi
.text:00405288                 cmp     dl, 0FDh
.text:0040528B                 jnz     loc_406BB7
.text:00405291                 jmp     short loc_405262
.text:00405293 ; ---------------------------------------------------------------------------
.text:00405293
.text:00405293 loc_405293:                             ; CODE XREF: micro::main::hd9f3cc455036707f+2775j
.text:00405293                 mov     eax, [esp+20h]
.text:00405297                 mov     [esp+2C8h], edx
.text:0040529E                 mov     [esp+2C4h], esi
.text:004052A5                 mov     [esp+50h], edi
.text:004052A9                 cmp     eax, [esp+48h]
.text:004052AD                 jnz     short loc_4052C8
.text:004052AF                 lea     ecx, [esp+44h]
.text:004052B3                 call    __ZN40_$LT$alloc__raw_vec__RawVec$LT$T$GT$$GT$6double17h06f32d01d77fcc35E_703
.text:004052B8                 mov     eax, [esp+44h]
.text:004052BC                 mov     ecx, [esp+4Ch]
.text:004052C0                 mov     [esp+1Ch], eax
.text:004052C4                 mov     [esp+20h], ecx
.text:004052C8
.text:004052C8 loc_4052C8:                             ; CODE XREF: micro::main::hd9f3cc455036707f+279Dj
.text:004052C8                 mov     edx, [esp+2CCh]
.text:004052CF                 mov     eax, [esp+1Ch]
.text:004052D3                 mov     ecx, [esp+20h]
.text:004052D7                 shr     edx, 4
.text:004052DA                 mov     byte ptr ds:(loc_402B28 - 402B28h)[eax+ecx], dl
.text:004052DD                 mov     eax, [esp+4Ch]
.text:004052E1                 inc     eax
.text:004052E2                 mov     [esp+4Ch], eax
.text:004052E6                 mov     ecx, eax
.text:004052E8                 mov     edi, [esp+48h]
.text:004052EC                 cmp     eax, edi
.text:004052EE                 jnz     short loc_405301
.text:004052F0                 lea     ecx, [esp+44h]
.text:004052F4                 call    __ZN40_$LT$alloc__raw_vec__RawVec$LT$T$GT$$GT$6double17h06f32d01d77fcc35E_703
.text:004052F9                 mov     edi, [esp+48h]
.text:004052FD                 mov     ecx, [esp+4Ch]
.text:00405301
.text:00405301 loc_405301:                             ; CODE XREF: micro::main::hd9f3cc455036707f+27DEj
.text:00405301                 mov     eax, [esp+44h]
.text:00405305                 shr     ebx, 2
.text:00405308                 mov     [esp+1Ch], eax
.text:0040530C                 mov     byte ptr ds:(loc_402B28 - 402B28h)[eax+ecx], bl
.text:0040530F                 inc     ecx
.text:00405310                 mov     ebx, ecx
.text:00405312                 mov     [esp+4Ch], ecx
.text:00405316                 cmp     ecx, edi
.text:00405318                 jnz     loc_405142
赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册