走近BlackEnergy:黑客为乌克兰政府量身打造的犯罪软件

2014-10-14 +9 125740人围观 ,发现 7 个不明物体 工具网络安全

Blackenergy是一个被各种犯罪团伙使用多年的工具。在2014年的夏季,F-Secure团队发现Blackenergy恶意软件的特定样本开始以乌克兰政府作为目标来收集情报。这些样本被识别出是同一组织的成果,该组织称之为“Quedagh”,历来喜欢把政府作为攻击目标。

一、介绍

BlackEnergy是一款受欢迎的犯罪软件(即一种使犯罪活动自动化的恶意软件),流通在俄罗斯的地下网络,最早能够追溯到2007年。刚开始,它被设计为一个在DDos攻击中创建僵尸网络的工具。随着时间的推移,这款恶意软件已经演变为支持各种插件,插件能够基于攻击的意图进行组合以提供必要的功能。(类似哆啦A梦的百宝袋)

鉴于该工具的特点,Blackenergy已被不同团伙用于不同的用途。有些团伙利用它发送垃圾邮件;另一些用来盗取银行凭证。最恶名昭彰的案例是在2008年俄格冲突期间,该工具被用来对格鲁吉亚实施网络攻击。

2014年夏,我们注意到BlackEnery的最新样本正在为乌克兰政府机构量身打造。尽管可能与政治不相关,但有趣的是,BlackEnergy这次的变化刚好赶上乌兰克剧烈动荡之时。(不难猜测谁为此事买单了)有无关联尚且不论,但有件事是确定的:攻击者利用这些为乌克兰政府量身打造的BlackEnergy正从目标那里窃取情报。在这次“黑色行动”中(作者喜欢玩使命召唤,特别取名自《使命召唤7:黑色行动》),一个重要的准则是这次攻击不好追究责任-还有什么比来源不明的犯罪软件提供更好的推卸责任的借口?(因为多方使用这个软件,所以不好判定攻击者是来自哪方的,其实作者在此含沙射影,借机暗讽俄罗斯吧)。

这些样本被识别出是同一组织的成果。该组织在本文中称为“Quedagh”,历来喜欢把政府作为攻击目标。在本文中,我们仅关注Quedagh所使用的BlackEnergy样本,该组织好像对政治目标特别感兴趣。重点关注在今年年初对乌克兰政府组织发起的针对性攻击(targeted attack )中所使用的样本。

图1 Quedagh Merchant 商船

Quedagh Merchant 是一艘摩尔人的500吨商船,在印度洋上被“海盗之王”威廉姆·基德抢占。

在撰写本文时,我们并不清楚受害者是如何接收到Quedagh团伙所推送的BlackEnergy恶意软件。一个合理的推测是他们在接收包含恶意附件的邮件时感染了该恶意软件(也可能是间谍吧)。同时,接下来的感染过程和技术细节是基于符合Quedagh特点的样本分析出来的,而这些样本是从F-Secure实验室搜集的所有BlackEnergy样本中搜索和筛选的。

该BlackEnergy工具带有一个构建器(builder)应用程序,生成感染受害者机器的客户端。同时该工具还配备了服务器端脚本,用于构建命令及控制(C&C)服务器。这些脚本也提供了一个接口,攻击者可以通过接口控制僵尸机。该工具具有简单易用的特点,意味着任何人只要能接触到这个工具,就可以利用它来构建自己的僵尸网络。

图2 2007年发现的BlackEnergy构建器

BlackEnergy最初版本出现在2007年,本文中称之为BlackEnergy 1。一个后续的变种(BlackEnergy 2)在2010年发布。我们也碰到了一个以前未曾见到过的变种,该变种已被重写并对配置数据采用了不同的保存格式。它不再使用驱动组件。我们把这个新变种称之为BlackEnergy 3。

图3 BlackEnergy 版本演化过程

二、感染途径

绝大多数最近搜集的BlackEnergy安装程序都名为msiexec.exe。我们认为它是另一个可执行程序释放的,该可执行程序利用社工手段来诱骗用户执行BlackEnergy安装程序;或者通过包括漏洞利用代码的文档,悄无声息地进行安装。我们至少发现了2个木马化(trojanized)的合法程序,用来执行BlackEnergy安装程序(除了他们的正当工作之外)。木马化(trojanized)是一个有效的感染方法,因为大部分用户无法留意到恶意组件正跟随着一个合法程序安装到计算机上。一些早期的安装程序变种,当时名为regedt32.exe,通过包含漏洞利用代码的文档来传播,CVE-2010-3333就是其中的漏洞之一。

BlackEnergy 3安装程序的文件名仍为msiexec.exe。然而,它被一个释放器(dropper)释放并执行,该释放器在前台打开一个欺骗性的文档。我们也曾接触到一个独立的、非持久化的样本,并伪装成一个Adobe Flash安装程序。它不使用任何欺骗性的文档或应用层程序,而且重启后便不再运行。

下图总结了Quedagh团伙为了把BlackEnergy犯罪软件投放至特定目标所用的感染途径。

图4 BlackEnergy 3的感染途径

三、技术详情

1. 安装过程中绕过UAC

只有当前用户属于本地管理员组时,恶意软件才会试图感染该系统;如果不是管理员账户,在Vista系统上该恶意软件会以管理员身份重新运行自己。但该方式在Windows7上触发UAC提示对话框。在Windows 7及后续版本,该恶意软件试图绕过默认的UAC设置。它利用新版Windows中的一个向后兼容的功能。BlackEnergy安装程序包含一个Shim数据库或一个“修复”,指示SndVol.exe运行cmd.exe,而不是去解决兼容性问题。

SndVol.exe是一个可自动提升运行权限的Windows可执行程序,因为它被认为是安全的。一个音量控制程序能够造成什么危害哪?然而,在恶意“修复”的帮助下,SndVol.exe将会执行不安全的cmd.exe文件,用于在权限提升的状态下安装恶意软件。

2. 绕过驱动签名策略

安装程序的职能是部署恶意软件的持久化的组件,即驱动组件。在64位Windows系统上,微软强制执行了一个策略,要求所有的驱动程序都必须签名。签名提供一种识别驱动开发者身份的方法,有效地减少了恶意软件制作者的数量。为了让开发者在开发过程中测试他们的驱动,微软提供了一个TESTSIGNING启动配置选项。当处于这个模式下,屏幕上会显示一个水印提醒用户,防止恶意软件利用这个选项。

图5 恶意的“修复”把SndVol.exe重定向到cmd.exe。

(小图:测试模式的水印)

BlackE先启动TESTINGSIGNING选项,再加载驱动组件。为了防止用户察觉,恶意软件通过删除系统上user32.dll.mui中的相关字符串来移除水印。然而,在Windows 8及以上系统,相关字符串不再存储在user32.dll.mui中,所以这个伎俩失效了。这就解释了为什么会存在独立非持久化的变种。该恶意软件不会感染Vista之前的64位系统。

3. 劫持已有驱动程序

安装程序会试图定位一个已有但未激活的驱动服务。该服务通常是合法的,因为不再使用或设置成按需启动而处于未启动状态。安装程序把驱动组件释放到相应服务所在的路径。如果需要的话,可能会覆盖已有的驱动。被劫持的服务会被设置成自动启动。这就是重启之后该恶意软件如何存活的。

Quedagh团伙可能希望恶意驱动程序会逃脱管理员或调查员的法眼,因为他们对这些合法服务司空见惯了。

图6 恶意软件的安装过程

4. 驱动组件

驱动组件是将会驻留在被感染系统上的唯一组件。Quedagh团伙使用的驱动组件是BlackEnergy2驱动的一个裁剪版本。这个驱动组件的唯一目的是把DLL组件注入到svchost.exe。有趣的是, 通常BlackEnergy 2驱动组件包含rootkit功能来隐藏进程、文件或注册表对象,而BlackEnergy 3驱动组件却移除了rootkit功能。Quedagh团伙可能是反其道而行之,躲避rootkit扫描工具的检测,如GMER和RootkitRevealer检测系统异常。(当黑客也要熟读用兵之法啊)

图7 驱动组件的作用

该驱动组件提供一个IOCTL接口和主DLL组件进行通信。表1总结了可传递至IOCTL缓冲区的命令码。32位版本还包含了一些不完整的例行程序,如使用直接内核对象操作(DKOM)实现进程隐藏,在内存中管理BlackEnergy 2的rootkit规则。

表1:IOCTL 缓冲区的命令码

5. 主DLL组件

BlackEnergy 2的核心功能位于主DLL组件。该组件被嵌入到驱动组件中,无法在文件系统找到,减少了系统上的感染痕迹。主DLL为攻击者提供了一个用于维护僵尸网络的健壮框架,确保僵尸网络局限于某个特定功能。该恶意软件可基于僵尸控制者的意图加载不同的定制化插件。它是一个面向插件的框架,用于和中心C&C(命令和控制)进行通信。

此外,主DLL组件只提供了命令的一个最小集合。表2总结了针对乌克兰政府组织的变种所支持的命令。在BlackEnergy 2中,主DLL组件通过一个系列的API调用和插件进行通信。它导出一些函数供插件调用。同时,插件也需要导出两个函数才能工作。有关BlackEnergy 2插件框架的详情,我们推荐Dell SecureWorks的研究报告。

表2 针对乌克兰政府的变种所支持的命令集合

相对于BlackEnergy 2,BlackEnergy 3使用了一个简化的安装组件。它并不包含一个驱动组件,且安装程序直接释放主DLL到本地Application Data文件夹中。然后,安装程序在启动文件夹(即C:\Documents and Settings\User\「开始」菜单\程序\启动)中创建一个lnk文件,其文件名是基于卷序列号生成的。该lnk文件是一个利用rundll32.exe执行主DLL的快捷方式。该变种采用了一个新的配置格式。配置数据经过X509_ASN编码,并需要通过ID号访问。表3列出了最新变种所使用的完整命令集。BlackEnergy 3和插件的通信也采用了一个不同的方法,即通过RPC over the Named-Pipe(ncacn_np)进行通信。

表3 BlackEnergy 3支持的命令集合

6. 情报窃取插件

因为主DLL组件关于该恶意软件的使用目的提供极少的线索,所以我们从插件入手来判断Quedagh组织的意图。在这次攻击中,有一个非常特别的插件,名字为“si”,可能意思是“steal information(窃取信息)”。在我们发现的最新样本中,该插件试图搜集以下信息并发送至C&C服务器:

• System configuration information (gathered via systeminfo.exe)
• Operating system version
• Privileges
• Current time
• Up time
• Idle Time
• Proxy
• Installed apps (gathered from uninstall program registry)
• Process list (gathered via tasklist.exe)
• IP configurations (gathered via ipconfig.exe)
• Network connections (gathered via netstat.exe)
• Routing tables (gathered via route.exe)
• Traceroute and Ping information to Google (gathered viatracert.exe and ping.exe)
• Registered mail, browser, and instant messaging clients(gathered via client registry)
• Account and password information from The
Bat! email client (gathered from account.cfn and account.cfg)
• Stored username and passwords in Mozilla password managerof the following applications (gathered from signons*.txt and signons.sqlite)
• Thunderbird
• Firefox
• SeaMonkey
• IceDragon
• Stored username and passwords in Google Chrome passwordmanager of the following applications (gathered from “LoginData”)
• Google Chrome
• Chromium
• Comodo Dragon
• Xpom
• Nichrome
• QIP Surf
• Torch
• YandexBrowser
• Opera
• Sleipnir
• Account and password information from Outlook andOutlook Express
• Internet Explorer version and stored username
and passwords
• Stored username and passwords in Windows
Credential Store
• Live
• Remote Desktop
• Other generic credentials (Microsoft_WinInet_*)

搜集信息的特点看起来像是通用的而不是有针对性的。这可能是因为该恶意软件起源于犯罪软件。可是,搜集的信息仍然是非常有用的,有助于对同一目标发起更进一步的攻击。

7. 网络流量

BlackEnergy通过HTTP POST请求和C&C服务器进行通信。对于Quedagh所使用的BlackEnergy 2样本,请求包含以下字段:

id=[bot_id]&bid=[base64_encoded_build_id]&dv=[x]&mv=[y]&dpv=[z]

其中:

①bot_id 等同于被感染的主机名和卷序列号按照以下格式x[主机名]_[序列号](例如xJOEPC_484DA98A);

②build_id是位于样本配置数据中build_id字段的字符串;

③x,y,z是硬编码值,随着样本的不同而发生变化;

上述字段和BlackEnergy 3样本中的字段几乎一致:

id=[bot_id_sha1]&bid=[base64_encoded_build_id]&nm=[x]&cn=[y]&num=[z]

主要的不同之处是id字段包含了散列值,而不是实际的字符串。产生散列值的源字符串也有一点区别,所使用的格式为:

[domain_sid]_[host_name]_ [serial_no]

而且C&C服务器的响应使用POST请求中的id字段作为密钥进行加密。在响应解密之后,响应按照BlackEnergy样本中配置数据的格式存在。例如,BlackEnergy 2样本期望解密后的响应是一个XML文档,而BlackEnergy 3样本则期望解密后的响应是一系列X509_ASN编码的值。

解密后的响应等同于另一份配置文件,会像嵌入到主DLL的初始配置数据一样被处理。唯一区别是被处理的数据字段。这个周期如图3所示。

图8 配置数据的处理过程

当主DLL需要下载额外的文件时,它也使用表4所列出的字段。

表4 主DLL下载额外的文件所使用的辅助命令

四、结论

Blackenergy是一个被各种犯罪团伙使用多年的工具。在2014年的夏季,我们注意到Blackenergy恶意软件的特定样本开始以乌克兰政府作为目标来收集情报。这些样本被识别出是同一组织的成果。该组织在本文中称为“Quedagh”,是一个历来把政府作为目标。

Quedagh对BlackEnergy 恶意软件的定制包括代理服务器的支持、使用Windows 64位环境下绕过UAC和驱动程序签名的相关技术。在监控BlackEnergy的样本时,我也发现了该组织所使用的一个新变种,称之为BlackEnergy3。把BlackEnergy运用到面向政治的攻击简直是犯罪活动和间谍活动的一次完美结合(好莱坞大片即视感,后续FreeBuf也会带来跟踪报道)

[参考信息来源F-Secure,内容有所删减,尽量保留了原文本意。译自Rabbit_Run,喜欢文章请点赞鼓励。转载请注明来自FreeBuf.COM]

Rabbit_Run

35篇文章等级:6

某所信息安全工程师

这些评论亮了

  • 第一次来FreebuF.com 回复
    第一次来FreebuF.com,希望能有一些收获。
    )7( 亮了
发表评论

已有 7 条评论

取消
Loading...
Rabbit_Run

某所信息安全工程师

35篇文章89条评论

特别推荐

关注我们 分享每日精选文章

不容错过

css.php