Earth Lusca采用新的Linux后门,使用Cobalt Strike 进行传播
2023-9-26 11:50:0 Author: www.4hou.com(查看原文) 阅读量:19 收藏

导语:本文介绍了Earth Lusca使用的新后门SprySOCKS,它扩展了该组织的Linux武器库。最近,攻击者通过利用已知漏洞,攻击了受害者面向公众的服务器。

在跟踪分析Earth Lusca时,研究人员在攻击者的服务器上发现了一个有趣的加密文件,即一个基于Linux的恶意程序,它似乎源于开源的Windows后门Trochilus,由于其快速的活动和SOCKS的实现,研究人员称之为SprySOCKS。

早在2021年初,研究人员就发表了一篇研究论文,讨论了一个与已有攻击组织有关的运作,当时,研究人员追踪到该组织名为Earth Lusca。自研究人员进行初步研究以来,该组织一直保持活跃,甚至在2023年上半年还扩大了其攻击范围,目标是对世界各国都发起攻击。

为此,研究人员还设法获得了一个有趣的加密文件,该文件托管在攻击者的传播服务器上。研究人员在VirusTotal上找到了该文件的原始加载程序,并成功解密了它。有趣的是,解密后的有效负载是一个研究人员从未见过的以Linux为目标的后门。主执行例程及其字符串表明,它源于开源的Windows后门Trochilus,其中一些功能正在Linux系统中重新实现。研究人员将这个新的Linux变体命名为SprySOCKS,指的是Trochilus的快速行为和后门内的新套接字安全(SOCKS)实现。

对SprySOCKS后门的分析揭示了一些有趣的发现。后门包含一个引用后门版本号的标记。研究人员已经确定了两个包含两个不同版本号的SprySOCKS有效负载,这表明后门仍在开发中。此外,研究人员注意到交互式shell的实现可能受到了Derusbi恶意程序的Linux变体的启发。

同时,SprySOCKS的命令和控制(C&C)协议的结构与RedLeaves后门使用的协议类似,RedLeaves是一种远程访问木马(RAT),针对Windows设备发起攻击。它由两个组件组成,加载程序和加密的主负载。加载程序负责读取、解密和运行主负载。

与Windows版本类似,本文中分析的Linux变体也由这两个组件组成。根据分析,RedLeaves也是基于Trochilus的公开源代码构建的。

到目前为止,研究人员只观察到了Earth Lusca使用的SprySOCKS。我们将在本文介绍更多关于Earth Lusca恶意程序的背景,以及对其组件和功能的全面分析。

最近的Earth Lusca活动

Earth Lusca在2023年上半年仍然活跃,其攻击主要集中在东南亚、中亚和巴尔干半岛的国家(对拉丁美洲和非洲国家的一些零星攻击)。该组织的主要目标是涉及外交、技术和电信的政府部门。

Earth Lusca现在又将受害者面向公众的服务器作为攻击对象。此外,研究人员看到他们经常利用基于服务器的N天漏洞,包括(但不限于)以下漏洞:

CVE-2022-40684, Fortinet FortiOS、FortiProxy和FortiSwitchManager中存在身份验证绕过漏洞;

CVE-2022-39952 ,Fortinet FortiNAC中存在未经验证的远程代码执行(RCE)漏洞;

CVE-2021-22205 ,GitLab CE/EE中存在未经验证的RCE漏洞;

CVE-2019-18935 ,ASP的Progress Telerik UI中存在未经验证的远程代码执行漏洞.NET AJAX;

CVE-2019-9670/CVE-2019-9621 ,Zimbra协作套件中未经验证的RCE的两个漏洞;

ProxyShell(CVE-2021-34473、CVE-2021-3 4523v、CVE-202 1-31207),在Microsoft Exchange中执行未经身份验证的RCE的一组三个漏洞。

Earth Lusca利用服务器漏洞渗透到受害者的网络中,之后它将部署一个webshell并安装Cobalt Strike进行横向移动。该组织将泄露文件和电子邮件帐户凭据,并进一步部署ShadowPad和Linux版本的Winnti等高级后门,对其目标进行长期间谍活动。

“mandibule”加载程序组件

调查之初,研究人员观察到一个名为libmonitor.so.2的文件托管在Earth Lusca的交付服务器上。在没有先前上下文的情况下,这似乎是一个只包含随机字节的二进制文件,这表明它很可能是一个加密的有效负载。研究人员使用唯一的文件名在VirusTotal上执行搜索,这使研究人员能够识别相关的ELF文件(SHA256:65b27e84d9f22b41949e42e8c0b1e4b88c75211cbf94d5fd66edc4ebe21b7359),并将其命名为“mkmon”。ELF文件可用于解密libmonitor.so.2文件并恢复其原始负载,从而证明“mkmon”是与libmonitor.so.2捆绑的加载程序。

加载程序并不是从零开始开发的,它的开发人员使用了一个公开的Linux ELF注入器,名为“mandible”(法语中下颚的意思)。最初的ELF注入器项目是一个命令行工具,能够将有效负载进行自注入或注入另一个项目中。作为一个典型的命令行工具,它打印列出支持参数的用法文本。原始注入器还打印各种调试消息,以通知用户有关注入的进度。

攻击者使用mandibule项目作为其恶意程序加载程序的基础。项目创建者删除了使用屏幕和注入到其他进程的能力,然后添加了一个函数来加载和解密第二阶段。研究人员认为这项工作做得很草率,因为开发人员没有完全删除调试消息,加载程序也没有被利用,也就是说,它是用调试符号传播的。事实上,攻击者似乎只为使其能够装载有效负载而对原始注入器进行了最少的修改。

1.png

传播调试信息的加载程序,请注意,存在“.debug*”部分

2.png

运行加载程序时显示的调试消息

图2中显示的调试消息有两个不同的标记。“>”标记来自原始mandibule项目,而“[+]”或“[-]”标记是由攻击者添加到加载程序的调试消息。

加载程序进程的名称由prctl命令设置为“kworker/0:22”。通常,kworker是内核工作线程的占位符进程。然而,在这种情况下,“kworker”名称与内核工作线程无关。相反,当用户通过ps或top等命令列出所有正在运行的任务时,加载程序滥用这个名称只是为了避免怀疑。

3.png

进程名称设置为“kworker/0:22”

4.png

受感染设备上的“kworker*”进程列表,突出显示的进程是分析的加载程序

加载器接受两个命令行参数,加密的第二阶段文件的路径和自删除标志。第二阶段使用AES-ECB密码进行加密,密码在加载器中进行硬编码。

5.png

用于解密第二阶段的函数

加载器还负责设置持久性。它将自己和加密的第二阶段复制到/usr/sbin/目录,请参阅调试说明“[+] rename loader ok” and “[+] rename server ok”。然后,它使用chkconfig或systemd将加载程序作为服务启动。如果自删除标志设置为“1”,则最初执行的加载程序和加密的阶段文件都将被删除。

SprySOCKS组件

在检查解密的第二阶段时,可见的字符串显示它是用HP Socket项目静态编译的,这是一个源自中国的高性能网络框架。

6.png

可见字符串中的HP Socket引用

初始化过程显示了一个硬编码的AES-ECB密码,用于加密与C&C服务器的通信。

7.png

用于C&C通信的AES密码

C&C地址和端口也在模块中进行了硬编码,但它们没有加密,并且以纯文本形式可见。

8.png

C&C服务器和端口配置

C&C通信由通过TCP(传输控制协议)发送的数据包组成。数据包的标头由0x12字节组成,后面是base64编码的AES ECB加密消息。与之前对RedLeaves恶意程序的分析中的表B-2类似,标头部分包含一些随机和硬编码的值,加上有效负载的长度(下图中用蓝色突出显示)。

9.png

从受害者的设备发送到C&C服务器的数据包示例

10.png

0xACACBCBBC的固定值,发生在偏移量为4-7的发送数据包中

原始Trochilus中使用的固定值为0xAFAFBFBF,而在RedLeaves变体中使用的是0xBFD9CBAE。

在解码和解密消息后,它会显示诸如 “__handler”, “__msgid”, “__serial”和“clientid”之类的关键字。其中一些关键字可以在Trochilus中找到,但更重要的是,这些消息与RedLeaves通信协议非常相似。

11.png

解码和AES ECB解密消息

RAT实现了几个标准后门命令,包括收集系统信息、启动交互式shell、列出网络连接、创建SOCKS代理、上传和下载文件以及其他基本文件操作(列出、删除、重命名和创建目录)。下图显示了消息ID以及与消息相关的函数的大致描述。

12.png

已处理消息列表及其函数说明

获取设备信息(CollectInfo)

客户端信息结构类似于Trochilus使用的原始client_INFO结构,其中一些参数与研究人员分析的恶意程序相同。还值得注意的是参数“cpufrep”,它可能是“cpufreq”(CPU频率)的拼写错误。

13.png

“ClientInfoCallbacks.h”中的CLIENT_INFO结构,它是Trochilus RAT

在ClientInfoManager.cpp(Trochilus RAT)中,你可以看到CLIENT_INFO结构中参数的内部名称。请注意,它们中的大多数具有与上图中列出的参数相同的值。此外,“cn”、“ip”、“groups”、“vercode”、“priv”、“lang”、“mem”、”os“、”x64“和”cpufrep“是相同的。

14.png

“ClientInfoCallbacks.h”中的CLIENT_INFO结构,它是Trochilus RAT

15.png

SprySOCKS的CLIENT_INFO结构中的字段列表

交互式shell

当客户端被请求创建交互式终端时,它首先与伪终端(PTY)子系统(/dev/ptmx)的主终端进行交互。然后,在/dev/pts目录中创建一个具有唯一设备节点名称的新从属PTY。

之后,将启动一个execve命令,其中包含参数“[diskio]”、指示其不保存会话历史记录的环境变量(HISTFILE=/dev/null)以及包含当前用户名(u)、计算机主机名(h)和工作目录(w)-(PS1=\\u@\\h:\\w\\$)的提示字符串(PS1)。

16.png

交互式shell的创建

在搜索上述字符串时,可以找到与Linux版本的Derusbi匹配的YARA规则的引用。攻击者很可能是从其他恶意程序使用的技术中获得灵感,甚至可能直接访问了Derusbi源代码本身。

客户端ID生成器

环境ID(客户端ID)由两个组件组成。第一部分是第一个列出的接口的MAC地址,长度为6字节,恶意程序获得第一个列出接口,但如果该接口是“环回接口(loopback interface)”,则跳过该接口并考虑下一个接口,当转换为十六进制字符串时,其长度为12字节。第二部分对应处理器函数,由使用“CPUID_GETFEATURES”参数调用的CPUID指令返回。生成结果的长度为8个字节,当转换为十六进制字符串时,其长度为16字节。因此,生成的客户端ID具有14个字节,并且在转换为十六进制字符串之后,它具有28个字节。

幕后组织

研究人员在2023年6月初观察到托管在传播服务器207[.]148[.]75[.]122上的加密SprySOCKS有效负载。该服务器由Earth-Lusca攻击者运营,还向目标传播了Cobalt Strike和Linux版本的Winnti的可执行文件。

SprySOCKS有效负载包含版本号(1.3.6)和C&C域 lt76ux[.]confenos[.]shop。研究人员在VirusTotal上发现其他用户上传的另一个SprySOCKS有效负载,版本号为1.1,它连接到C&C域2e6veme8xs[.]bmssystemg188[.]us。值得注意的是,同级域rvxzn49eghqj[.]bmssystemg188[.]us被解析为38[.]60[.]199[.]208,与793tggz7mw91[.]itcom666[.]live重叠。itcom666[.]live域是一个已知的C&C域,由Earth Lusca开发。

总结

我们在本文介绍了Earth Lusca使用的新后门SprySOCKS,它扩展了该组织的Linux武器库。最近,攻击者通过利用已知漏洞,攻击了受害者面向公众的服务器。

所以,各类组织应主动管理其攻击面,最大限度地减少进入其系统的潜在入口点,并降低被成功突破的可能性。企业应定期应用修复程序并更新其工具、软件和系统,以确保其安全性、功能性和整体性能。

文章翻译自:https://www.trendmicro.com/en_us/research/23/i/earth-lusca-employs-new-linux-backdoor.html如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/8zlm
如有侵权请联系:admin#unsafe.sh