这篇博客由Hossein Jazi和Jérôme Segura撰写

6月10日,我们发现了一个伪装成简历的恶意Word文档,它使用模板注入来删除。net Loader。这是多阶段攻击的第一部分,我们认为这与APT攻击有关。在最后阶段,威胁行为者使用Cobalt Strike的可锻压C2功能下载最终有效载荷并执行C2通信。

这种攻击因其规避技术而特别巧妙。例如,我们观察到恶意Word宏在执行有效负载时故意延迟。我们的目标不是马上让受害者妥协,而是等到他们重新启动机器。此外,通过将外壳代码隐藏在无害的JavaScript中并在不接触磁盘的情况下加载外壳代码,此APT组可以进一步阻止安全产品的检测。

使用延迟代码执行的Lure

这份诱人的文件很可能是通过鱼叉式网络钓鱼电子邮件作为一份简历分发的发件人据称是一个名叫阿纳迪亚·瓦利德的人起初,我们认为它的目标是印度,但也有可能是更广泛的目标。

图1:简历

恶意文档通过模板注入从以下url下载远程模板:

https://yenile[.]亚洲/YOOMANHOWYOUDARE/indexb.dotm

图2:模板注入

用于托管远程模板的域于2020年2月29日由来自香港的人注册。文档的创建时间为此域注册后15天。

下载的模板“indexa”。,有一个包含五个功能的嵌入宏:

  • Document_Open
  • VBA_and_Replace
  • base64解码
  • ChangeFontSize
  • FileFolderExist。

下面显示了嵌入宏的函数图。

图3:宏函数图

主要功能是Document_open在打开文件时执行。这个函数将三个文件放入受害者的机器:

  • Ecmd.exeUserForm1和UserForm2包含两个Base64编码的有效负载。根据受害者机器上安装的。net框架的版本,UserForm1(在。net v3.5的情况下)或UserForm2(其他版本)的内容被解码并存储在“C:\ProgramData”中。
  • cf.ini:从UserForm3提取“cf.ini”文件的内容,并对其进行AES加密,随后由ecmd.exe解密。
  • ecmd.exe.lnk:这是“ecmd.exe”的快捷方式文件,是在Base64解码UserForm4的内容后创建的。该文件作为触发器和持久性机制被放到Startup目录中。

Ecmd.exe在机器重新启动后才会执行。

图4:Document_Open
图5:Custom Base64解码功能

ChangeFontSizeVBA_and_Replace函数不是恶意的,可能是从公共资源复制的[1.,2.]误导静态扫描仪。

中间装载机

Ecmd.exe是一个。net可执行文件,假装是一个ESET命令行工具。下面的图片显示了二进制证书、调试器和版本信息。

可执行文件已使用无效证书签名,以模拟ESET,其版本信息显示这是一个“ESET命令行界面”工具(图6-8)。

图6:证书信息
图7:版本信息
图8:调试器信息

ecmd.exe是一个小型加载程序,用于解密和执行前面提到的AES加密的cf.ini文件。它通过发送一个HTTP post请求到http://ip-api.com/xml”。然后解析XML响应并提取国家代码。

图9:Getcon函数:向“ipapi.com”发出http post请求
图10:ip-api.com输出

如果国家代码是“RU”或“US”,它就退出;否则,它将开始使用硬编码密钥和IV对解密“cf.ini”的内容。

图10:ecmd.exe主功能

解密的内容被复制到分配的内存区域,并使用VirtualAlloc和CreateThread API作为新线程执行。

图11:运行函数

ShellCode (cf.ini)

可延展的C2是攻击者混合指挥和控制流量(受害者和服务器之间的信标)的一种方式,目的是避免被发现。可以为每个目标创建自定义配置文件。

外壳代码使用Cobalt Strike Malleable C2特性和jquery Malleable C2配置文件,从“time.updateeset[.]com”下载第二个有效载荷。

图12:可扩展的C2请求

这一技术已被其他两个中国的APTs -野马熊猫APT41

外壳代码首先查找ntdll.exe使用PEB然后调用LoadLibrayExA加载Winint.dll.然后使用内特佩纳,InternetConnectA,HttpOpenRequestA,互联网选择HttpSendRequestA下载第二个有效负载的api。
API调用在两个循环中解析,然后使用跳转到解析的API调用的地址来执行。

图13:构建API调用

恶意负载被下载InternetReadFile并复制到分配的内存区域。

图14:InternetReadFile

考虑到通信是通过HTTPS进行的,Wireshark对发现恶意负载没有帮助。Fiddler也不能给我们有效载荷:

图15:Fiddler输出

使用Burp Suite代理,我们能够成功地验证和捕获下载的正确有效负载time.updateSet[.]com/jquery-3.3.1.slim.min.js.如图16所示,有效负载包含在HTTP响应返回的jQuery脚本中:

图16:有效负载出现在jquery的末尾

将有效负载复制到内存中的缓冲区后,shellcode跳转到缓冲区的开始并继续执行。这包括持续发送信标请求到time.updateeset com/jquery-3.3.1.min.js。等待C2可能发出的指令。

图17:C2通信

使用空心猎人我们从ecmd的内存空间提取了最后的有效载荷也就是Cobalt Strike。

归属

对这次攻击的精确归因是一项正在进行的工作,但在这里我们提供了一些关于谁可能是这次攻击的幕后黑手的见解。我们的分析表明,袭击者排除了俄罗斯和美国。前者可能是一面虚假的旗帜,而后者可能是为了避免美国恶意软件分析师的注意。

如前所述,托管远程模板的域是在香港注册的,而C2域的time.updateeset[。,是在2020年2月29日以一家名为Ehtesham Rayan的伊朗公司的名义注册的。这家公司曾经提供反病毒软件,现在似乎已经关闭了。然而,这些并不是归因的有力或可靠指标。

图11:updateeset.com whois注册信息

在使用的ttp方面,中国的APT组,如Mustang Panda和APT41,众所周知使用的是jQuery和Cobalt Strike的Malleable C2特性。具体来说,最近的运动野马熊猫使用相同的jQuery配置文件使用相同的Cobalt Strike特性来下载最终的有效负载,也就是Cobalt Strike。这与我们在这次活动中看到的非常相似,但是在我们的案例中,最初的感染媒介和第一个有效载荷是不同的。

IOCs

Anadia瓦利德resume.doc
259632b416b4b869fc6dc2d93d2b822dedf6526c0fa57723ad5c326a92d30621

远程模板:indexa.dotm
7F1325C5A9266E649743BA714D02C819A8BFC7FD58D58E28A2B123EA260CE2

远程模板Url:
亚洲/ YOOMANHOWYOUDARE / https://yenile []

C2:
time.updateSet[.]com

Ecmd.exe:
aeb4c3ff5b5a62f5b7fcb1f958885f76795ee792c12244cee7e36d9050cfb298
dcaaffea947152eab6572ae61d7a3783e6137901662e6b5b5cad82bffb5d8995
5F49A47ABC8E8D19BD5ED3625F28561EF584B1A26DF09D45455FBF38C73A79C

cf.ini:
0 eba651e5d54bd5bb502327daef6979de7e3eb63ba518756f659f373aa5f4f8b

解密后的Cf.ini shell代码:
5143C5D8715CFC1E70E9DB00184592C6CFBB4B9312EE02739D098CF6BC839

下载的外壳代码:
8cfd023f1aa40774a9b6ef3dbdfb75dea10eb7f601c308f8837920417f1ed702

钴罢工有效载荷
7963年ead16b6277e5b4fbd5d0b683593877d50a6ea7e64d2fc5def605eba1162a