导语:Sednit组织在过去两年中大量使用Zebrocy,其为Sednit工具库中稳定、成熟的工具之一,并且这一工具值得密切关注。
Sednit组织,也被称为APT28, Fancy Bear, Sofacy 或STRONTIUM,是一个自2004年以来运行的攻击组织,其主要目的是窃取目标的机密信息。
在2015年底,我们开始看到该组织正在部署一个新组件:一个用于主要Sednit后门Xagent的下载程序。卡巴斯基2017年首次在其APT趋势报告(APT trend report)中提到了这个组件,并于最近撰写了一篇文章,将其命名为Zebrocy。
这个新组件是一个恶意软件家族,由Delphi和AutoIt编写的下载器和后门程序组成。这些组件在Sednit系统中扮演与Seduploader相同的角色——即第一阶段的恶意软件。
我们见到的Zebrocy的受害者位于阿塞拜疆、波黑、埃及、格鲁吉亚、伊朗、哈萨克斯坦、韩国、吉尔吉斯斯坦、俄罗斯、沙特阿拉伯、塞尔维亚、瑞士、塔吉克斯坦、土耳其、土库曼斯坦、乌克兰、乌拉圭和津巴布韦。这些目标包括大使馆、外交部和外交官。
Zebrocy家族由三部分组成。按照部署顺序,这些是Delphi下载器、AutoIt下载器和Delphi后门。图1显示了这些组件之间的关系。在本文中,我们将介绍这个系列以及它如何与旧版Seduploader侦察工具共存。最后讨论Downdelph 的一些相似之处和不同之处。
图1:Sednit系统
图1显示了Sednit使用的攻击方法和恶意软件。电子邮件附件是Sednit系统的主要入口点。DealerChoice仍在使用中,正如Palo Alto Networks最近在这篇博文blogpost中提到的。Sednit组织通过电子邮件附件积极传播Seduploader和Zebrocy。最后,在侦察阶段之后,Xagent和Xtunnel被部署在令运营者感兴趣的目标上。
一、攻击方法
基于Zebrocy的攻击的第一个组件是以电子邮件的形式发送的。受害人被引诱打开电子邮件附件,该附件可以是Microsoft Office文档或存档。
二、恶意文档
Sednit使用的恶意文档通过VBA、漏洞利用甚至使用动态数据交换(DDE)下载第一阶段payload。在2017年底,Sednit组织发动了两个传播两个不同恶意文档的行动。第一个命名为Syria – New Russia provocations.doc,第二个命名为Note Letter Mary Christmas Card.doc。
图2: Zebrocy的恶意文档
两个恶意文档都包含一个VBA宏,该宏在%TEMP%中创建一个随机命名的文件,然后将恶意软件解码并写入此文件,通过PowerShell命令或通过脚本Shell对象(Scriptable Shell Objects)执行该文件。
来自Syria – New Russia provocations.doc 的Visual Basic函数和base64编码的例子(第一阶段)。
三、存档
有些行动已使用存档将第一阶段投放到受害者的计算机上,而不是Office文档宏。该存档是作为电子邮件附件提供的。Zebrocy家族的所有第一阶段都是带有图标和文件类文件名的可执行文件,旨在欺骗受害者,如图3所示。
图3: Zebrocy第一阶段使用Word 文档图标
四、Delphi downloader
Delphi下载器是Zebrocy家族的第一阶段,尽管我们已经看到Sednit组织的一些行动直接使用AutoIt而不使用此下载器。Delphi下载器的大部分二进制文件都使用Office文档图标或Windows库等其他图标,有时样本使用UPX打包。这个阶段的目的非常简单:从受害者的计算机中获取最多的信息。
当恶意软件启动时,窗口会弹出一个错误消息和投放的二进制文件名。例如,如果文件名是srsiymyw.exe,那么出现在splash窗口中的文件名将是srsiymyw.doc(参见图4)。弹出窗口的目的是分散用户的注意力,以免他认为自己电脑上发生了异常的事情。
图4: Delphi下载器弹窗
实际上,下载器正忙于在%TEMP%下创建一个文件,其名字在二进制文件中硬编码(尽管在此阶段该文件为空)。通过将硬编码文件名的路径添加到Windows注册表项HKCU\Software\Microsoft\Windows\CurrentVersion\Run\来实现持久性。
为了收集信息,恶意软件使用Windows API CreateProcess函数和cmd.exe / c SYSTEMINFO&TASKLIST作为lpCommandLine参数创建一个新进程。一旦检索到信息,它将通过HTTP POST请求将结果发送到二进制硬编码的C&C服务器。它不停重试,直到接收到下一个阶段。
Delphi downloader HTTP POST request
Delphi下载器HTTP POST请求
一旦请求被发送,C&C服务器通过发送下一个阶段来响应,如果运营者对目标感兴趣的话。发送报告和收到payload之间的时间需要几个小时。下一个阶段被写入到之前创建的文件中并执行。
五、AutoIt downloader
AutoIt下载器是感染受害者计算机期间侦察阶段的另一层。从这一点开始,有两种情况是可能的:第一种情况是,Delphi下载器是第一阶段,第二阶段是AutoIt下载器,它是轻量级的下载器。在另一种情况下,AutoIt下载器是第一阶段,它具有Delphi下载器的所有功能,甚至更多。
当AutoIt下载器是第一阶段时,它执行许多侦察功能。即使与Delphi下载器有一些相似之处,例如持久性机制和弹出窗口,它比Delphi下载器在侦察阶段增加更多的功能。以下是其部分功能的列表:
· 检测沙箱和虚拟环境
· 获取已安装软件的列表(通过HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
· 获取Windows版本(32位或64位)
· 获取进程列表
· 获取硬盘信息
· 获取屏幕截图
· 使用WMI对象获取有关受害者计算机的各种信息,可能受此GitHub repository代码的启发
根据前一阶段的不同,AutoIt二进制文件的名称不同。如果恶意软件作为第一阶段被投放,则它具有类似文档的名称。否则,其名称将在Delphi下载器中被硬编码,如表1所示。
这个阶段的目的与前一个阶段的目的不太一样。在野外有许多不同的版本,但它们都至少包含实现以下内容的代码:
· 检索硬盘驱动器C:的序列号
· 使用winhttp.dll或winhttp.au3的网络函数
· 执行从C&C服务器收到的payload
与Delphi下载器具有弹窗的方式相同,AutoIt在作为电子邮件附件时也有一个弹窗,即AutoIt是第一阶段。弹窗与二进制图标相关。例如,一个带有Adobe Reader的AutoIt下载器作为图标显示一个闪屏,说明受害者期望显示的PDF文件已损坏。带有Word图标的AutoIt二进制文件将显示以下弹出窗口询问密码。这里不考虑密码;我们认为这只是一种从真实恶意活动中分散受害者的方式。
图5: AutoIt下载器Word弹框
六、Delphi后门
Delphi后门是Zebrocy组件链的最后一个阶段。我们曾经看到Zebrocy下载过Sednit组织的旗舰后门Xagent。与以前的组件不同,这个版本的内部版本号似乎与特定的攻击行动没有关系。该版本号随着时间的推移而发展,如表2所示:
请注意,我们没有完整的列表,有可能错过了后门的某些版本。此外,版本之间有一些重叠,这意味着一些旧版本仍然与新版本同时使用。
在接下来的几段中,我们将重点介绍恶意软件在进化过程中出现的一些差异。后门嵌入了一个配置块。配置值从一个样本更改为另一个样本,但可配置项目列表保持不变。但是,配置数据存储在恶意软件样本中的方式随着时间而变化。后门的第一个版本以明文形式嵌入配置数据,如图6所示。
图6: Delphi后门明配置数据
然后,在更高版本中,恶意软件的作者将配置数据编码为十六进制字符串,如图7所示。
图 7: Delphi后门编码配置数据
在最新版本中,配置数据使用AES算法在资源中加密。旧版本将其存储在.text部分。配置数据包含:
· 与C&C服务器进行通信的AES密钥
· 不同样本的路径和URL不同
· 恶意软件的版本
· 确保后门持久化的Windows注册表项/值
· 存储临时文件的路径(%APPDATA%)
· 要创建用于存储临时文件的隐藏目录的名称:目录文件名与环境变量(%APPDATA%)连接在一起
一旦恶意软件设置完成,它就会通过Windows API函数SetTimer执行回调函数。这些回调允许操作员处理后门的许多功能和命令。
· 截取受害者的桌面截图
· 捕获击键
· 列出驱动器/网络资源
· 读/写入Windows注册表
· 复制/移动/删除文件系统对象
· 执行文件或创建计划任务
由后门处理的命令数量(大约30 )因版本而异。与C&C服务器通信后,后门将这些功能的报告存储到临时文件中。然后它会读取临时文件的内容并发送它。临时文件存储在设置阶段创建的隐藏目录中。
Delphi后门POST请求
tempfilename内容是所执行命令的输出。使用配置数据中的第一个AES密钥,使用AES-256-ECB算法对内容进行加密,然后以十六进制编码输出。发送到C&C服务器的内容因命令而异,但都至少包含HDD序列号和计算机名称的前四个字节。例如,HELLO对应于后门发送的第一个与之建立联系的数据包C&C服务器。如下所示,它包含启动任务的日期、Delphi后门的内部版本号、HDD序列号、计算机名称(前四个字节)、执行后门程序的命令和日期。
Start: 1/4/2018 1:37:00 PM – [<vx.x>]:42424242ESET-HELLO-[2018-04-04 01-37-00]-315.TXT.
配置数据中的第二个AES密钥用于解密来自C&C服务器的响应。与Seduploader一样,该后门用于在受害机器上部署Xagent,在侦察阶段后显然被运营者视为“有趣”。
七、总结
Delphi编写的组件对于Sednit组织来说并不是什么新东西,它已经在Downdelph中使用过这种语言。然而,即使这个最新组件与Downdelph没有任何共同之处,“从技术角度而言”,还是有值得一提的一些东西。
· 部署方法相同,均作为电子邮件附件。
· 我们于2015年9月最后一次看到了Downdelph,在野外看到的第一批Zebrocy样本的日期为2015年11月。
· 两个都是用Delphi编写的。
我们可以假设Sednit组织放弃了一个组件并开始开发一个新组件。然而,对于这个组织来说,一件事情不会改变,就是他们犯的错误:
· 计划任务的名称:Windiws
· AutoIt下载器中检索系统信息的函数名称是_SOFWARE()
· 在Note Letter Mary Christmas Card.doc中Mary代替了 Merry
Delphi后门用作AES-256密钥的字节数组长度为38个字节,而不是32个字节。这不是拼写错误,但可能是由于缺乏关注。
我们已经看到Sednit组织在过去两年中大量使用Zebrocy。自2017年以来我们对定期出现的许多新变种的分析表明,Zebrocy正由其作者积极维护和改进。我们可以将其视为Sednit工具库中稳定而成熟的工具之一,这一工具值得密切关注。
IoCs(参见原文)