译文声明
本文是翻译文章,文章原作者William Gamazo Sanchez, Aliakbar Zahravi, Elliot Cao, Cedric Pernet, Daniel Lunghi, Jaromir Horejsi, Joseph C Chen, John Zhang
原文地址:https://www.trendmicro.com/en_us/research/20/j/operation-earth-kitsune-a-dance-of-two-new-backdoors.html
译文仅供参考,具体内容表达以及含义以原文为准
我们最近发表了有关地球未来行动的研究论文,旨在通过破坏网站来窃取信息。除了大量使用SLUB恶意软件外,我们还发现了与该活动有关的两个新的后门:agfSpy和dneSpy,它们以攻击者的三字母来命名。
我们在操作的过程中发现,虽然SLUB主要用于渗透获取数据,但是agfSpy和denSpy两个漏洞同时也用于控制受影响的系统。这篇文章提供了有关这些恶意软件类型的更多详细信息,包括它们的命令和如何控制(C&C)服务器。
图1显示了如何在攻击中使用agfSpy和dneSpy。我们能够识别出五台C&C服务器,它们可以进行通信并向间谍后门提供帮助。
::: hljs-center
图1.攻击概述
:::
DneSpy和agfSpy的C&C服务器
该运动使用了位于多个国家的廉价外部资源。攻击者根据不同的预算针对不同样本设置服务。表1显示了C&C服务器的分布方式。它还显示所有注册域都在使用“ no-ip.com”注册服务。请注意,这些是合法的服务,已被操作背后的威胁参与者滥用。
::: hljs-center
表1.发现的C&C服务器
:::
DneSpy使用了动态C&C发现机制,该机制首先连接到whoami2[.]ddns[.]net,然后接收有关主服务器whoamimaster[.]ddns[.]net的信息。
作为其部署的一部分,dneSpy还提供了agfSpy,如图2所示。
::: hljs-center
图2. dneSpy如何交付agfSpy
:::
此方案说明了为什么dneSpy首先使用CreateMutex技术检查系统上是否已安装agfSpy。通过这种架构,攻击者希望在部署期间具有一定程度的弹性-即使已经将agfSpy作为初始媒介提供,攻击者也会再次尝试。对于这两个后门,俗称“探戈需要两个人”,因为这对后门在这场“舞蹈”中扮演了伙伴的角色。
DneSpy间谍活动后门
DneSpy收集信息,截屏,下载并执行受感染系统中其他恶意组件的最新版本。该恶意软件旨在接收JSON格式的“策略”文件,其中包含所有要执行的命令。C&C服务器发送的策略文件可以随时间更改和更新,从而使dneSpy更灵活。每个命令的输出都需要经过压缩,加密并传输到C&C服务器。这些特征使dneSpy成为功能齐全的间谍活动后门。
DneSpy C&C通讯
执行后,dneSpy通过执行图3中所示的命令,根据系统参数为其受害者生成一个唯一的ID。
::: hljs-center
图3.受害者ID识别参数
:::
根据图3中命令的完整输出(全文),将创建一个4字节的哈希并将其与计算机名称连接起来,以在与C&C服务器的通信请求中形成一个“ id”参数。然后,将生成的唯一受害者ID用于跟踪首次的感染目标,然后C&C服务器根据该信息做出决定。图4显示了生成自定义4字节哈希的算法的Python实现。
::: hljs-center
图4.计算自定义4字节哈希的算法
:::
在发送请求之前,首先对C&C服务器详细信息进行解码。DneSpy在同一个二进制文件中使用多种混淆字符串机制,有时使用XOR加密或ROT密码。对于C&C URL路径,它使用ROT密码,如图5所示。
::: hljs-center
图5.使用ROT对C&C参数进行模糊处理
:::
DneSpy在C&C服务器上创建目录或帐户以感染新的受害者。如图6所示,第一个请求的受害者ID格式为:CC669737_WIN-RSG1AKRI2C4。
::: hljs-center
图6. dneSpy的第一个请求
:::
dneSpy设计的一个有趣方面是其C&C透视行为。中央C&C服务器的响应实际上是下一阶段C&C服务器的域/ IP,dneSpy必须与之通信以接收进一步的指令。
::: hljs-center
图7.动态C&C服务器选择
:::
从关键的代码中可以看出,该恶意软件可以还用作服务端,在该服务中分发实际样本,以根据需要为选定的C&C服务器收集信息。
dneSpy C&C服务器将HTTP与HTTP数据主体一起使用AES CBC密码加密。dneSpy二进制文件在启动时需要接收命令行参数。图8显示了一个示例。
::: hljs-center
图8. dneSpy参数
:::
在与C&C服务器通信期间,使用参数“ helloworld”来解密接收到的数据。使用命令行参数和来自服务器的响应的前16个字节(实际上是AES的初始化向量),有效载荷数据(从收到的Blob的第17个字节开始)解密为ZIP文件。该ZIP存档包含一个名为“ DNS_PROFILE”的附加TXT文件,其中包含一个新域名。图9显示了完整的过程,从解密中央C&C服务器的第一个响应开始。
::: hljs-center
图9.第一个响应解密过程
:::
在解密和解压缩过程中,将在当前用户的TEMP文件夹中创建多个临时文件,如图10所示。
::: hljs-center
图10.解密第一个请求并获取下一个C&C服务器
:::
一旦收到并解密了新的C&C URL名称,dneSpy就会构造一个HTTP POST请求并将其发送到新的C&C服务器。如果一切正常,服务器以“帐户已创建!”作为响应。这是通过旋转式C&C服务器对受害者进行身份验证并保护C&C渠道的一种方式。
::: hljs-center
图11.在动态定义的C&C服务器上创建的受害者帐户
:::
在当前C&C服务器上创建帐户后,dneSpy将发送HTTP GET请求以接收policy.txt文件(带有要执行的命令)以及其他恶意软件有效载荷。
下一节将详细介绍此特定版本使用的渗透机制和数据捕获方法。
渗透机制
DneSpy的设计非常灵活,可以动态地从特定的透视C&C服务器接收指令。我们注意到其样本的至少两个版本收到了不同的说明。本节详细介绍其中之一。
图12显示了dneSpy将收集到的信息泄露到新的C&C服务器的一般步骤。
::: hljs-center
图12.渗透机制
:::
::: hljs-center
图12.渗透机制
:::
DneSpy首先发送HTTP GET请求以接收“ crypted_package”以获取policy.txt文件,如图13所示。
::: hljs-center
图13.请求“ crypted_package”
:::
dneSpy收到响应后,将在磁盘上创建一个“ crypted_package”文件。该文件随后被解密为“ crypted_package.zip”,如图14所示。
::: hljs-center
图14.“ crypted_package”解密
:::
如我们所见,“ crypted_package.zip”归档文件包含一个名为“ policy.txt”的文件,其中包含要由dneSpy执行的命令。policy.txt文件采用JSON格式,如图15所示。
::: hljs-center
图15. dneSpy执行策略
:::
没有使用多个参数,例如“ test”和“ etc”。但是,“ cmd”属性具有dneSpy在受害者计算机上要执行的所有命令。执行后,将根据policy.txt文件的“ cmd”属性为每个命令计算一个自定义的4字节哈希(与哈希计算机ID相同的算法)。然后,将此哈希用作文件名以临时存储命令结果。该文件经过压缩,加密并上传到所选的C&C服务器。图16中的示例显示了在执行dneSpy时要渗入C&C服务器的文件列表。
::: hljs-center
图16.磁盘上的临时文件准备好被渗入到C&C中
:::
渗透是使用HTTP多部分请求实现的,如图17所示。在渗透之后,所有临时文件都将被删除。
::: hljs-center
图17.提取HTTP POST请求
:::
最后,将截取屏幕截图,并将其与已执行命令的结果一起上传。
如果在受害者已经注册的情况下第二次运行dneSpy,则中央C&C服务器(负责提供新的透视C&C服务器)将以“非常规受害者!”做出响应信息。图18显示了这种情况的示例。
::: hljs-center
图18. C&C服务器响应“不是普通受害者!” 信息
:::
如前所述,dneSpy可以将agfSpy放到受感染的系统中。
agfSpy间谍活动后门
agfSpy后门从其C&C服务器检索配置和命令。这些命令允许后门执行Shell命令并将执行结果发送回服务器。它还可以枚举目录,并且可以有列出、上传、下载和执行文件以及其他功能。除了每个后门在消息交换中使用不同的C&C服务器和各种格式外,agfSpy的功能与dneSpy非常相似。
AgfSpy C&C服务器通信
AgfSpy 仅与一台 C&C 服务器通信;它不具有 dneSpy 的旋转功能。但是,在监视当前活动时,我们在多个 agfSpy 样本中至少发现了两个不同的域。
后门使用与dneSpy后门相同的算法来计算环境标识符(“ <哈希> _ <计算机名>”)。然后,它将具有ID(以空终止)的ID的消息以其格式发送到其C&C服务器,如图19所示:
::: hljs-center
图19. ID消息
:::
图20显示了恶意软件发送的ID消息(以十六进制转储)的示例。
::: hljs-center
图20. ID消息示例
:::
图21中的代码片段演示了恶意软件如何执行上述操作:
::: hljs-center
图21.用于发送ID消息的代码片段
:::
然后,该恶意软件从其C&C服务器接收一个表。该表用于防止后门上传旧文件和不需要的文件,并且包含已上传文件或不需要的文件的标志。
如果服务器接收到上传的文件,则会根据文件的路径和时间戳在表中设置一个标志。在恶意软件将文件上传到受感染的系统之前,它将通过计算其路径和时间戳检查表中是否存在该文件的标志。如果是这样,它将不会将文件上传到服务器。
图22显示了由恶意软件发送的上载表格消息的示例(显示在十六进制转储中)。
::: hljs-center
图22.上传表消息示例
:::
之后,恶意软件会从其C&C服务器接收加密的JSON消息以获取命令。服务器响应的格式如图23所示:
::: hljs-center
图23.来自服务器的命令消息
:::
恶意软件与C&C服务器之间的所有有效负载均通过使用多字节密钥的简单XOR加密进行了加密。然后,在加密的Blob前面添加2字节标记“ SC”,后跟4字节有效载荷长度。
后门从服务器接收命令,并在受感染的系统上执行它们。然后它将结果/错误/状态消息返回到服务器。
从服务器执行命令后,恶意软件将“ END”消息(以空终止)发送到服务器,如图24所示。
::: hljs-center
图24.发送到服务器的“ END”消息
:::
AgfSpy支持的命令
AgfSpy希望这些命令采用JSON格式。它实现以下属性和命令:
::: hljs-center
表2.由agfSpy实现的命令列表
:::
表2中的命令表明该后门主要用于窃听文件,因为它实现了各种文件搜索和上传功能。
接收到的命令示例如图25所示。
::: hljs-center
图25:从C&C服务器收到的命令
:::
当agfSpy从服务器收到“ cmd”命令时,它会从JSON消息(例如“ systeminfo”,“ net share”,“ netstat –an”,“ arp –a”和“ ipconfig”)中检索shell命令列表。 -all”)。对于每个shell命令,恶意软件都会创建一个具有两个管道的进程来执行shell命令。创建一个管道来读取进程的标准输出(stdout),以获得shell命令的输出。另一个管道用于读取进程的标准错误(stderr),以获取错误消息。执行完shell命令(例如systeminfo)后,它将包含该命令的消息发送回服务器,如图26所示。
::: hljs-center
图26. Systeminfo命令消息
:::
然后,它将已执行命令的输出发送回服务器,如图27所示。
::: hljs-center
图27. systeminfo命令的输出消息
:::
dneSpy和agfSpy都是用C ++编写的,并使用标准的std库。字符串通常以加密形式存储在局部变量中,然后通过使用应用于每个字节的XOR或SUB指令在简单循环中解密。
::: hljs-center
图28.以加密形式存储的C&C URL地址(DO WHILE循环用于字符串解密)
:::
结论
DneSpy和agfSpy是功能齐全的间谍后门,尽管它们使用不同的C&C服务器机制,但它们有许多共同点。实施了多种策略和过程,以使基础结构具有通用性和行为灵活性。
Earth Kitsune行动由于其使用的各种组件以及它们之间的相互作用而变得复杂。该活动使用新样本来避免被安全产品检测到的现象也非常值得注意。从Chrome漏洞利用程序的Shellcode到agfSpy,该操作中的元素都是自定义编码的,表明此操作背后有一个团队。该团队今年似乎非常活跃,我们预计他们将继续朝这个方向发展一段时间。
我们建议使用多层安全方法,该方法可以检测并阻止复杂的威胁通过端点,服务器,网络和电子邮件渗透到系统中。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论