正如Palo Alto Networks公司旗下Unit 42威胁研究团队在之前分析Cannon木马的文章中所提到的那样,Sofacy组织(又名Fancy Bear、APT28、STRONTIUM、Pawn Storm、Sednit)在今年10月中旬到11月中旬期间一直在忙于攻击世界各地的各种政府和私人组织。虽然其大部分攻击目标都位于北约盟国,但也有少部分位于前苏联国家。所有这些攻击大都旨在传播Unit 42在之前已经分析过的Zebrocy木马变种,但ESET的报告显示,其中一些恶意文档也传播了Cannon或Zebrocy Delphi变种。自2015年年中开始追踪Zebrocy的使用情况以来,Unit 42发现该木马的使用率一直呈上升趋势。相比其他与Sofacy组织相关的后门工具,Zebrocy在攻击行动中的使用率明显要高得多。

Unit 42最近分析的所有攻击都有一个共同点——恶意文档使用的都是同一个作者名称:Joohn。最初引起Unit 42注意的恶意文档样本被命名为“crash list(Lion Air Boeing 737).docx”,旨在传播Zebrocy木马。通过利用AutoFocus威胁情报平台,以及从VirusTotal收集到的数据,Unit 42基于这份文档的元数据和行为发现了Cannon木马,以及其他更多的恶意文档、payload和攻击目标。

需要说明的是,所有这些攻击的初始攻击媒介几乎全都是鱼叉式网络钓鱼电子邮件。另外,攻击使用的都是注册到合法电子邮件服务提供商的电子邮件帐户,而不是被黑的账户。这些帐户的名称看上去与合法政府组织的名称或其他受信任的第三方实体的名称十分相似。

此外,所有这些恶意文档在功能上几乎完全相同——利用Microsoft Word的远程模板下载功能从第一阶段C2检索恶意宏,加载并执行初始payload。大多数恶意文档都不包含任何文字内容,仅包含一张通用的诱饵图片,以诱使收件人启用宏。从这一点来看,攻击者似乎主要是想通过文件名来吸引受害者,而不是文档的内容。

总的来说,Unit 42在2018年10月17日到2018年11月15日期间共捕获了9份不同的恶意文档,它们都使用了相同作者名(即Joohn),旨在传播Zebrocy或Cannon变种。Unit 42收集到的数据显示,Dear Joohn行动的攻击目标横跨四大洲,从联邦层面的政府机构到地方政府机构。

此外,Unit 42还利用收集到的数据创建了Dear Joohn行动的时间表,从而能够更加清晰地展示Sofacy组织是在何时向他们的目标发起了攻击,以及他们是如何利用自动化工具来实施攻击的。

攻击活动分析

从10月17日开始,Unit 42一共捕获到了9份不同的恶意文档,它们被发送给了位于世界各地的多个组织。具体来说,攻击目标包括一个北美外交事务组织、几个欧洲外交事务组织以及几个前苏联国家政府实体。更多的证据表明,此次行动可能还针对了世界各地的执法机构,包括北美、澳大利亚和欧洲。另外,Unit 42的遥测数据还显示,此次行动有可能也针对了一些非政府组织、营销公司以及医疗行业的组织。所有这些攻击的攻击媒介都是鱼叉式网络钓鱼电子邮件,且使用的都是注册到免费电子邮件服务提供商Seznam的电子邮件帐户。这里需要说明一下的是,Seznam是一家位于捷克的合法电子邮件服务提供商。图1展示的是一封钓鱼电子邮件示例。

图1.在Dear Joohn行动中发送的鱼叉式网络钓鱼电子邮件示例

在此次行动中,Sofacy组织似乎主要是想通过文件名来吸引受害者。文档的名称包括英国脱欧(Brexit)、狮航客机坠毁,以及最近在以色列发生的火箭袭击(完整的恶意文档列表见表1)。虽然文档名称似乎透露出攻击具有高度针对性,但文档的实际内容却大体一致,都仅包含一张通用的诱饵图片,如图2所示。

图2.通用的诱饵图片

到了11月份,Sofacy组织改变了其战术,开始为他们的恶意文档使用不同的诱饵内容。在这个月,Unit 42一共捕获到了三份针对北约盟国的恶意文档样本,它们的内容均不相同,如图3所示。

图3.有针对性的诱饵内容

其中一份文档向收件人展示的内容是模糊不清的,但可以很明显地看到北约爆炸军械处理小组(EOD)的印章。实际上,恶意文档所包含的内容仍然仅是一张图片,只是经过了模糊处理,上面的内容与一个北约研讨会议有关。另外两份文档彼此之间非常相似,向收件人展示的内容都是一堆乱码,以及有关如何正确查看文档的说明。有趣的是,其中一份文档中的说明是采用俄文编写的,这可能表明其攻击目标位于一个讲俄语的国家。

无论实际内容如何,所有恶意文档均使用了相同的策略来实施攻击。在被打开之后,恶意文档首先会利用Microsoft Word自带的功能来尝试下载一个远程模板,然后加载恶意宏,如图4所示。

图4.Microsoft Word尝试下载远程模板

如果C2服务器在文档被打开时处于开启状态,那么下载将会成功,而恶意宏将被加载到同一Microsoft Word会话中。然后,收件人将看到一个“Enable Content(启用内容)”提示,如图5所示。但如果C2服务器处于关闭状态,那么下载将会失败,收件人将不会看到“Enable Content(启用内容)”提示,因为没有宏被下载。”

图5.下载的远程模板,提示收件人单击“Enable Content”以运行宏

恶意文档分析

Unit 42在10月和11月期间捕获的所有恶意文档都存在大量相似之处(如表1所示),这使得Unit 42可以将这些攻击联系起来。其中最明显的相似之处就是,文档作者的名字都是Joohn。不过,这种相似性在11月份出现了一个细微的偏差。虽然Unit 42在该月捕获的三个样本仍然使用了Joohn这个名字,但它仅作为“最后一次保存者”出现,而“作者”属性改为了使用默认的“USER/user”。

表1.出现在Dear Joohn行动中的恶意文档

此外,由表1中的恶意文档下载的远程模板也使用了相同的作者名称:xxx,如表2所示(想要查看完整的散列值和元数据,请戳这里)。

表2.Dear Joohn恶意文档下载的远程模板

如表1所示,恶意文档分别从四台不同的C2服务器下载对应的远程模板,服务器的IP地址如下:

  • 185.203.118[.]198
  • 145.249.105[.]16
  • 188.241.58[.]170
  • 109.248.148[.]42

这些初始C2 服务器IP地址不仅托管了会在随后加载第一阶段Zebrocy或Cannon payload的远程模板,而且还托管了第一阶段payload的C2服务器。在Dear Joohn行动中使用的所有C2服务器都基于IP,并且基础设施与早前的Zebrocy或Sofacy基础设施之间不存在任何重叠或关联。Dear Joohn行动的基础设施网络如图6所示。

图6.Dear Joohn行动的基础设施网络

Unit 42根据收集的数据创建了Dear Joohn行动的时间表(基于表3中的时间戳),且发现攻击主要集中在10月中下旬和11月中旬,如图7所示。

表3.恶意文档的时间戳(所有时间均为UTC)

图7.Dear Joohn行动时间表

从时间戳来看,最初的四份恶意文档是在2018年9月11日04:22同时被创建的,并在2018年10月13日08:21同时被修改。四份恶意文档在完全相同的时间被创建并修改,但却被嵌入了三个不同的C2地址,这可能表明攻击者使用了某种自动化工具。我们都知道,这可以通过使用基于命令行的渗透测试工具包来实现。比如Phishery,它就允许我们通过一个简单的脚本,以不同的输入同时生成多个文档。总的来说,这四份文档从最初创建到用于攻击的平均时间间隔为46天。随着时间的推移,Dear Joohn行动的节奏明显加快,从文件的创建到用于攻击的平均时间间隔下降到了大约两天。

Payload分析

如上所述,出现在Dear Joohn行动中的恶意文档会下载一个远程模板,包含在其中的恶意宏被用于安装第一阶段payload。除了Cannon之外,第一阶段payload几乎都是Zebrocy木马的变种。在此次行动中传播的Zebrocy变种由多种不同的语言编写而成,包括Delphi、C#和VB.NET。表4列出了出现在Dear Joohn行动中的所有第一阶段payload的信息。

表4.出现在Dear Joohn行动中的第一阶段payload

值得注意的是,出现在Dear Joohn行动中的Zebrocy Delphi变种与Unit 42之前在2018年6月有关Zebrocy的分析文章中讨论的Delphi downloader非常相似。因此,这个Delphi变种应该算是一种已知的变种。但是,出现在此次行动中的C#和VB.NET变种此前从未被报道过。需要指出的是,出现在此次行动中的所有Zebrocy Delphi变种均采用了UPX压缩,而其他变种都没有经过压缩。Unit 42推测,这很可能也正是因为Zebrocy Delphi变种作为一种已知变种已经被广泛分析的原因,Sofacy组织可能是想要通过对它进行压缩来增加逃过安全检测的机率。

通过对Cannon样本的收集和分析,Unit 42认为采用Delphi编写的Cannon也是一个全新的变种。鉴于我们已经看到Sofacy组织使用了多种语言来创建Zebrocy变种,因此该组织同样也有能力在多种编程语言中创建Cannon变种。

C#Cannon

自Unit 42发布有关Cannon的分析文章以来,他们成功捕获了其他的一些Cannon样本,以便更好地了解它的起源。从目前看来,第一个已知的C# Cannon样本似乎是在2018年4月18日创建的,从那以后至少有7个样本被发布。表5展示了目前已知的所有C# Cannon样本、它们的编译时间以及用于C2通信的电子邮箱帐户。

表5.已知的C# Cannon样本

正如Unit 42在最初的分析文章中所提到那样,被攻击者用来充当C2的电子邮箱地址是sahro.bella7[at]post.cz,但所有早期的C# Cannon样本使用的都是sym777.g[at]post.cz。此外,所有早期的C# Cannon样本都使用了同一个帐户名kae.mezhnosh来接收来自攻击者的电子邮件,同时使用帐户名vebek.morozh30、g0r7tsa45s和marvel.polezha来向攻击者发送电子邮件。

也正如Unit 42在最初的分析文章中所提到那样,C# Cannon能够使用POP3S登录到一个电子邮箱帐户,并检查具有特定文件名的电子邮件,该文件将被保存到目标系统并执行。需要指出的是,Unit 42最初分析的C# Cannon样本查找的是一个文件名为auddevc.txt的附件,但其他C# Cannon样本查找的是以下文件名:

  • wmssl.txt
  • audev.txt

Delphi Cannon

在收集Cannon样本的过程中,Unit 42发现了另一类使用电子邮件来进行C2通信的Cannon变种。之所以将它与Cannon联系起来,是因为它使用了文件名“wmssl.exe”。实际上,它是由wmssl.txt附件转换而来的,用于安装和执行一个辅助payload。当然,仅凭这一点,是无法将它与Cannon完全联系起来,但在收集到了Delphi Cannon的其他样本之后,Unit 42发现了更多能够证明它们之间存在联系的证据。表6展示的是Unit 42收集到的所有Delphi Cannon样本,其中样本(SHA256:215f7c08c2 ..)与ESET分析文章中讨论的木马非常相似。

表6. Unit 42收集到的所有Delphi Cannon样本

从表6我们可以看出,Delphi Cannon变种的编译时间要早于Unit 42在最初报告中讨论的变种的编译时间,因为第一个已知的Delphi样本是在2018年1月份编译的,而Unit 42在最初报告中讨论的Cannon样本是在2018年4月份编译的。Delphi Cannon变种没有使用合法的基于Web的电子邮件服务来进行C2通信,而是使用自主域名ambcomission[.]com电子邮箱帐户,而这个域名连接到一个更大的Sofacy基础设施网络,正如ThreatConnect所报道的那样。虽然Delphi Cannon也使用了POP3S和SMTPS来进行C2通信,但由于它使用的是由攻击者控制的自主域名,因此相对Seznam这样的合法电子邮件服务提供商来说,此类电子邮件更加容易被收件人屏蔽掉。

已知最早的Delphi变种样本(SHA256:5a02d4e5f6 …)为Unit 42提供了更多能够证明Delphi Cannon和Cannon之间存在联系的证据。例如,这个样本会将收集到的系统信息发送给C2,其中涉及到将正在运行进程的路径附加到header字符串Running place,而这个字符串也可以在C# Cannon样本(SHA256:4405cfbf28 …)的inf函数中找到,如图8所示:

图8. C# Cannon的inf函数

在对比这两类Cannon变种的过程中,Unit 42在Delphi Cannon样本(SHA256:5a02d4e5f6 …)中也发现了一个函数,它使用Running place和Logical_Drivers作为header字符串来将收集到的系统信息通过电子邮件发送给C2。虽然不完全匹配,但如图9所示,C# Cannon同样包含类似的header字符串,这使得Unit 42更加确信,这两类变种的确来自同一个木马家族:

图9. Delphi Cannon 和C# Cannon的相似之处

VB.NET Zebrocy

VB.NET Zebrocy变种(SHA256:e5aece694d ..)与其他已知的Zebrocy变种非常相似,它会将硬盘卷序列号包含在被它用作C2 beacon的URL中。需要说明的是,这个beacon是通过使用Scripting.FileSystemObject对象从存储在Environment.SpecialFolder.LocalApplicationData中的路径调用GetDriveName获得的。然后,它会使用从GetDriveName函数获取到的硬盘卷调用GetDrive,以获取硬盘的SerialNumber。接下来,这个VB.NET变种会通过运行以下命令来收集系统信息和正在运行的进程:

systeminfo & tasklist

用于将系统信息、正在运行的进程和屏幕截图发送到C2服务器的URL如下所示:

hxxp://109.248.148[.]42/agr-enum/progress-inform/cube.php?res=[serial number]

VB.NET Zebrocy变种通过将一个HTTP POST请求发送到上面的URL来传输收集到的数据,这些数据包含在HTTP POST请求中,其结构如下(注意:“&”前后都有一个空格):

data=[system information and running processes] & arg=[screenshot in BMP format]

C# Zebrocy

C# Zebrocy变种在功能上与其他变种类似,但也有一些值得讨论的独有特性。与其他Zebrocy变种一样,C# Zebrocy变种会收集硬盘卷序列号,以用于C2服务器的出站beacon。具体来说,C# Zebrocy变种会使用Windows API函数GetVolumeInformation来获取C盘的序列号。另外,这个变种还能够捕获屏幕截图,并以JPEG格式传输到C2服务器。

除了使用的编程语言之外,C# Zebrocy变种最显着的变化是收集系统信息和正在运行的进程的方式。具体来说,C# Zebrocy变种使用的是WMI查询来收集此类信息,而不是使用systeminfo和tasklist命令。具体的WMI查询列表如下所示:

  • wmic logicaldisk get Caption, Description,VolumeSerialNumber,Size,FreeSpace
  • wmic diskdrive get Model, SerialNumber
  • wmic computersystem get Manufacturer, Model, Name, SystemTypec
  • wmic os get Caption, OSArchitecture, OSLanguage,SystemDrive,MUILanguages
  • wmic process get Caption,ExecutablePath

用于将系统信息、正在运行的进程和屏幕截图发送到C2服务器的URL如下所示:

hxxp://145.249.105[.]165/resource-store/stockroom-center-service/check.php?fm=[serial number]

C# Zebrocy变种通过将一个HTTP POST请求发送到上面的URL来传输收集到的数据,这些数据包含在HTTP POST请求中,其结构如下:

spp=[system information from WMI queries] &spvg=[screenshot in JPEG format]

总结

Sofacy组织仍在继续使用类似的策略和技术来攻击全球各地的组织。Unit 42观察到,他们在10月底到11月期间通过鱼叉式网络钓鱼电子邮件实施了攻击,通常利用近期新闻事件作为文件名来诱使收件人打开恶意附件。在这些攻击中,该组织明显倾向于使用类似Zebrocy这样的简单downloader作为第一阶段payload。另一方面,该组织显然仍在继续对Zebrocy进行开发,并已经开发出了VB.NET和C#版本。此外,他们在过去的攻击行动中似乎还使用了不同版本的Cannon。

声明:本文来自黑客视界,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。