近日,ESET 研究人员深入研究了 Donot组织在 2020 年和 2021 年期间针对多个南亚国家的政府和军事对象实施的攻击。
Donot组织(也称为 APT-C-35 和 SectorE02)是一个至少从2016年开始运营的威胁组织,并以使用Windows和Android恶意软件攻击南亚的组织和个人而闻名。Amnesty International最近的一份报告将该组织与一家印度网络安全公司联系起来,后者可能正在向该地区的政府出售间谍软件或提供黑客出租服务。
我们一直在密切关注Donot组织的活动,并追踪了几起利用源自该组织的签名 yty 恶意软件框架的 Windows 恶意软件的活动。根据我们的发现,这个组织非常执着地攻击者一个目标,至少在过去的两年里一直以相同的组织为目标。
我们会在本文介绍最近活动中使用的恶意软件的两种变体——DarkMusical 和 Gedit。对于每一种变体,我们都会分析整个攻击链,并深入了解该组织如何更新其工具、策略和技术。
攻击目标分析
Donot组织的活动以间谍活动为主要载体,使用他们的签名恶意软件:“yty”恶意软件框架,其主要目的是收集和泄露数据。根据我们的追踪,Donot组织专注于南亚的几个目标——孟加拉国、斯里兰卡、巴基斯坦和尼泊尔——如下图所示。
Donot组织专注的目标国家
这些攻击集中在:
政府和军事组织;
外交部;
大使馆;
除了南亚的几个国家之外,如中东、欧洲、北美和拉丁美洲的国家也在Donot组织的攻击范围之内。
对于APT运营商来说,在某些情况下,这是通过部署一个更隐蔽的后门来实现的,该后门在攻击者需要它之前一直保持安静。在其他情况下,他们只是用新的恶意软件或以前使用过的恶意软件的变体重新启动操作。后者是Donot组织操作人员的情况,只是他们在尝试中非常坚持。
根据ESET的分析,Donot组织每隔两到四个月就会针对同一对象发送一波又一波带有恶意附件的钓鱼邮件。有趣的是,我们能够检索和分析的电子邮件并没有显示出被诱骗的迹象。一些电子邮件是从受到攻击的同一组织发送的。攻击者可能已经在早期的活动中攻击了一些受害者的电子邮件帐户,或者这些组织使用的电子邮件服务器。
通过鱼叉式网络钓鱼电子邮件,攻击者使用恶意 Microsoft Office 文档来部署他们的恶意软件。我们已经看到 Donot组织至少使用了三种技术。一种是 Word、Excel 和 PowerPoint 文档中的宏,如下图所示。
PowerPoint 文档中的恶意宏,它删除了一个下载器可执行文件并创建了一个计划任务来运行它
第二种技术是具有.doc扩展名的RTF文件,该文件利用方程编辑器中的内存破坏漏洞CVE-2017-11882,如下图所示。这些 RTF 文档还包含两个作为 OLE 对象的嵌入式 DLL,用于安装并下载更多组件(这两个 DLL 都在 Gedit 部分中进行了描述)。这允许攻击者执行 shellcode 并且不需要用户交互,shellcode 部署了恶意软件的主要组件。CVE-2017-11882是微软公布的一个远程执行漏洞,通杀目前市面上的所有office版本及Windows操作系统。该漏洞的成因是EQNEDT32.EXE进程在读入包含MathType的ole数据时,在复制公式名称名称时没有对名称长度进行校验,从而造成栈缓冲区溢出,是一个非常经典的栈溢出漏洞。上次出现这么典型的office栈溢出漏洞是著名的CVE-2012-0158。
RTF 文档用于加载公式编辑器的 COM 对象的 CLSID,随后的 OLE 对象包含 CVE-2017-1182 漏洞利用
DLL 的 OLE 对象标头也嵌入在 RTF 文档中
第三种技术是远程 RTF 模板注入,它允许攻击者在打开 RTF 文档时从远程服务器下载有效负载。这是通过在 RTF 文件格式的可选 \*\template 控制字中插入 URL 而不是本地文件资源的位置来实现的。Donot组织使用的有效负载是另一个利用 CVE-2017-11882 的文档,下载后会自动加载,如下图所示。
当 Word 打开带有远程模板的 RTF 文件时,它会自动尝试下载资源
yty恶意软件框架
由 NetScout 在 2018 年发现的 yty 恶意软件框架是旧框架 EHDevel 的一个不太复杂且开发不佳的变体。 yty框架由一系列下载程序组成,这些下载程序最终会下载一个带有最小功能的后门程序,用于下载和执行 Donot组织 工具集的其他组件。
其中包括基于文件扩展名和创建年份的文件收集器、屏幕捕获器、键盘记录器、反向 shell 等。如下图所示,用于渗透的组件从暂存文件夹收集收集的情报,并将每个文件上传到仅用于此目的的指定服务器。
解析暂存 JPEG 屏幕截图的文件夹名称的组件(左)和在暂存文件夹中查找所有文件的渗透组件(右)
几乎每个新的攻击活动都会更改暂存文件夹的名称和位置,以及一些组件的文件名。但是,在某些情况下,组件的名称保持不变,例如:gedit.exe、wuaupdt.exe、lmpss.exe、disc.exe 等。如下图所示,似乎对于每个新的活动,为了设置新的路径和文件名,必须在源代码中更改这些值然后重新编译,因为这些组件都没有使用配置块或文件。
包含经常更改的位置和文件名的加密字符串(顶部)和用于构建 C&C URL 的未加密值(底部)
该恶意软件使用计划任务进行持久化攻击,并在活动之间交替使用 DLL 和 EXE 文件。对于 DLL,计划任务执行 rundll32.exe 以加载它们并执行导出的函数之一。
yty框架的开发人员主要依赖c++编程语言,可能是为了逃避检测,他们还将其组件移植到其他语言,例如 VBScript、Python(与 PyInstaller 一起打包)、Visual C# 和 AutoIt 等。然而,自 2019 年以来,我们只看到他们利用 C++和 Go编程的组件。
捕获屏幕截图的组件的反编译代码,最初是用c++编写的
用于用Go编写的版本的组件截图的反编译代码
该恶意软件在部署过程中有时会使用两到三个服务器。它可能在其下载链中使用一个服务器,而后门可能会使用另一台服务器来接收其命令并下载更多组件,或者将同一台服务器用于这两种目的。总是使用不同的服务器上传收集的信息。在一些攻击中,Donot组织重用了以前攻击的C&C域——用于下载和渗透。如下图所示,这些组件(后来被认为是 DarkMusical 的变体)在同一攻击中使用,采用了三个不同的 C&C 域。
第一个下载器解密服务器的 URL,从该服务器下载链的下一个阶段
在后期阶段,后门使用不同的服务器进行 C&C 通信
渗透组件使用第三个服务器上传收集的文件时间轴的攻击
我们在本文中描述了从 2020 年 9 月到 2021 年 10 月的Donot组织在活动中使用的恶意软件变体,重点关注他们的 Windows 恶意软件。为清楚起见,我们将它们分为 yty 恶意软件框架的两个变体:Gedit 和 DarkMusical,其中一个使用Gedit的特定活动,我们将其命名为 Henos。
根据我们的追踪分析,攻击的时间线如下图所示。统计时,还包括了来自另一个变体的攻击,称为“Jaca框架”。然而,我们不会在本文描述它,因为它已在 CN-SEC 中进行过介绍。
从2020年9月到2021年10月,Donot组织的攻击时间线
DarkMusical
根据 ESET 的分析,使用此变体的第一波攻击发生在 2021 年 6 月,针对孟加拉国的军事组织。我们只能恢复其下载链及其主要后门。鉴于受害者人数很少,我们认为这可能是一次针对性很强的攻击。
9 月,针对尼泊尔军事组织的第二波攻击使用了新的 C&C 服务器以及文件和暂存文件夹名称。我们能够恢复一些从后门下载的组件,进而分析这些攻击。
鱼叉式钓鱼邮件发送的PowerPoint文档中包含一个宏,该宏部署了下载链的第一个组件,并使用一个计划任务进行持久化。当潜在的受害者打开这些文档时,他们将看到一条虚假的错误消息,如下图所示,这些文档将仍然没有任何可见的内容。
一个空白的恶意 PowerPoint 文档的屏幕截图
如下图所示,下载程序链旨在下载最终组件,该组件用作具有最少功能的后门:它下载独立组件,使用 ShellExecute Windows API 执行它们,获取并保存新的 C&C URL。ShellExecute的功能是运行一个外部程序或者是打开一个已注册的文件、打开一个目录、打印一个文件等,并对外部程序有一定的控制。
后门将处理信息收集和泄露的组件下载到专用服务器。这些组件不与后门或 C&C 通信以报告其活动。相反,它们使用指定的文件夹来暂存数据,一个单独的渗透组件将收集所有内容并上传。
观察到的 DarkMusical攻击链
我们决定将此活动称为 DarkMusical,因为攻击者为其文件和文件夹选择名称时,许多是西方名人或电影中的角色。下表简要描述了攻击链中每个组件的用途。
DarkMusical 攻击活动链中的组件:
我们在下表中描述了攻击者工具集的每个组件的用途。
攻击者 DarkMusical 工具集中的组件描述:
gedit
gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器,它使用GTK+编写而成,它十分的简单易用,有良好的语法高亮,支持包括gb2312、gbk在内的多种字符编码,是一个自由软件。
我们在 2020 年 9 月使用 Gedit 检测到该活动的首次攻击,攻击对象是巴基斯坦的一些组织,这些组织已经成为安装了Jaca框架的鱼叉式钓鱼和恶意RTF文件的目标。从那时起,Donot组织开始将目标定位在孟加拉国、尼泊尔和斯里兰卡。虽然该恶意软件显然源自 yty 恶意软件框架,但它们是截然不同的,与DarkMusical是两个独立的程序。
我们能够检索到与2021年2月发生的Gedit活动对应的鱼叉式钓鱼电子邮件,如下图所示。第一个附件包含一份来自孟加拉国军事对象的人员名单(没有恶意内容)。在执行恶意代码时,第二个附件只显示了一个空白页面。
攻击者发送的鱼叉式钓鱼电子邮件的屏幕截图
我们可以看到第二个文件的大小大于 2 MB,这是一个利用 CVE-2017-11882 删除文档中包含的两个 DLL 文件并执行其中一个的 RTF 文件。其他组件在各个阶段下载到受感染的计算机上。此攻击链及其恶意软件组件的概述如下图所示。
Gedit 活动中的攻击链
这些组件是用 Go 和 C++(使用 MinGW 和 Visual Studio 编译器)编写的。我们选择描述 2021 年 2 月该活动中使用的组件,如下表所示。
对Gedit 变体的组件描述
Henos攻击活动
最后,值得一提的是,在2021年2月至3月间发生了一系列针对孟加拉国和斯里兰卡军事组织的攻击。这些攻击使用了Gedit恶意软件的变体,但进行了一些小的修改。因此,我们决定将这个活动以它的后门 DLL – henos.dll 命名命名为Henos。
去年2月,网上也公开了属于这波攻击的组件的样本,这可能解释了为什么该组织不再使用这些组件的原因。
虽然我们没有找到相应的鱼叉式钓鱼邮件或恶意文档,但攻击链与我们上面描述的大致相同,只是在组件的执行方式上存在一些细微差别。下图对此进行了概述。
Henos 活动的攻击链
虽然该活动的某些组件被命名为 javatemp.exe 和 pytemp.exe,但选择这些文件名可能只是为了模仿 Java 或 Python 等合法软件。 pytemp.exe 和 plaapas.exe 是用 Go 语言编码的,而 javatemp.exe 是用 C++ 编码的(用 MinGW 编译的)。
最后一点是执行文件泄漏的组件 pytemp.exe 会执行检查以查看 gedit.exe 是否正在运行。如果找到两个或更多实例,则退出。我们认为这是开发时候的错误,因为它应该检查 pytemp.exe。然而,这个简单的错误帮助我们将 Henos 活动与恶意软件的 Gedit 变体(添加到代码相似性中)联系起来。
本文翻译自:https://www.welivesecurity.com/2022/01/18/donot-go-do-not-respawn/如若转载,请注明原文地址