Earth Alux的间谍工具包:深入解析其先进技术
Trend Research通过持续监控和调查工作,揭露了Earth Alux的隐秘活动和先进技术。该高级持续性威胁(APT)组织的主要工具之一是其主后门VARGEIT。如果未被检测到,攻击可以在系统中维持立足点并进行网络间谍活动。数据的长期收集和外泄可能导致深远后果,如运营中断和财务损失。
攻击主要针对亚太(APAC)和拉丁美洲地区,涉及政府、科技、物流、制造、电信、IT服务和零售等关键行业。
Earth Alux攻击概述
为了进入系统,Earth Alux主要利用暴露服务器中的漏洞服务。然后植入Web shell(如GODZILLA)以方便其后门的传递。它主要使用VARGEIT作为其主要后门和控制工具,以及COBEACON。VARGEIT用作第一、第二和/或后期后门,而COBEACON用作第一后门。
这在VARGEIT的加载方式上有所区别:第一阶段通过使用cdb.exe的调试器脚本加载,而后期阶段使用DLL侧加载,可以包括通过RAILLOAD(加载器组件)和RAILSETTER(安装和时间戳工具)的执行防护和时间戳技术。
VARGEIT也是Earth Alux操作补充工具的主要方法,用于各种任务,如横向移动和网络发现,以无文件方式进行。
Earth Alux TTPs
Earth Alux采用各种先进的战术、技术和程序(TTPs)来促进其计划。以下是攻击每个阶段的详细视图:
初始访问
Earth Alux主要利用暴露服务器中的漏洞服务来获得初始访问,并植入Web shell(如GODZILLA)以允许传递其第一后门。
执行、持久性和防御规避
通过植入的Web shell获得控制后,Earth Alux通过不同的加载方法安装第一后门(COBEACON或VARGEIT)。
COBEACON
COBEACON是许多威胁行为者常用的工具,也是Earth Alux使用的工具之一。它主要用作第一后门,并作为DLL侧加载的MASQLOADER的加密有效负载加载,或作为使用RSBINJECT的shellcode加载。
COBEACON加载器 – MASQLOADER
第一个观察到的用于执行COBEACON有效负载的加载方法是通过MASQLOADER,一个DLL侧加载的加载器。该加载器组件使用替换密码解密其有效负载,其中加密有效负载包含1-3个字符的字符串,具有基于MASQLOADER替换表的十六进制值等效值。
后来的MASQLOADER版本还添加了反API钩子技术。它通过用直接从文件中获取的ntdll.dll的代码部分覆盖其内存空间中的ntdll.dll的代码部分来实现这一点,有效地用原始代码覆盖了监控工具和安全工具插入的任何API钩子。
此功能允许MASQLOADER和注入的有效负载逃避基于安全软件拦截的API调用的检测。
我们的遥测数据表明,除了Earth Alux之外,其他组织也在使用MASQLOADER。此外,MASQLOADER的代码结构与其他工具(如RAILSETTER和RAILLOAD)的差异表明,MASQLOADER的开发与这些工具集是分开的。
COBEACON加载器 – RSBINJECT
Earth Alux使用的另一个加载COBEACON的工具是RSBINJECT,一个基于Rust的命令行shellcode加载器。
它没有解密例程,直接加载shellcode。相反,它具有其他功能,帮助使用可选标志和子命令测试shellcode。
虽然RSBINJECT在攻击中被观察到,但其功能表明它也可以作为shellcode的测试工具。与MASQLOADER一样,此工具可能不是Earth Alux独有的。
第一VARGEIT执行 – CDB
第一VARGEIT通过使用调试器脚本的shellcode注入执行。此方法使用cdb.exe(在由Web shell丢弃时重命名为fontdrvhost.exe)作为调试器和主机,运行基于LOLBAS方法的脚本。
调试器脚本config.ini包含加载器shellcode和VARGEIT的代码。这产生以下命令行:
|
|
此加载方法通常用作第一后门安装,通过通常涉及利用外部暴露服务器的初始访问方法传递,并且经常观察到安装第二和后期VARGEIT。
此加载方法的一个变体使用一个shellcode,从单独的文件组件加载加密的VARGEIT有效负载。
第二VARGEIT执行 – DLL侧加载
第二VARGEIT通过涉及RAILLOAD加载器工具的DLL侧加载执行。此方法通常用于第二或后期安装,并且可以通过所述工具实现执行防护,以及通过RAILSETTER的规避措施。
RAILLOAD作为第二VARGEIT加载器
RAILLOAD是一个通过DLL侧加载执行的加载器工具,用于第二加载。
此工具带有自己的配置,并且已经看到具有来自加密文件或注册表位置的各种有效负载组件。
RAILLOAD配置是base64编码的,并包含由“||”分隔的信息:
- 基于文件的配置:
<加密有效负载的路径和文件名>||<AES密钥>||<主机路径和文件名>
- 基于注册表的配置:
<注册表键>||<注册表数据>||<AES密钥>||<特定主机路径和文件名>
RAILLOAD解密和执行防护
RAILLOAD的解密例程使用base64解码,然后是AES-128 CBC模式解密。这在某些变体中可以有执行防护。
例如,如果配置不包含AES密钥(可以留空),RAILLOAD使用感染机器的注册表中的信息作为解密密钥。
在旧变体中,使用HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid的前16字节,而在新变体中,应用HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProductID的前16字节。
RAILSETTER用于持久性和时间戳
RAILLOAD是一个持久性安装程序组件,设计用于与RAILLOAD一起工作。其主要功能包括:
- 将RAILLOAD的预期主机从c:\windows\system32复制并重命名到目标目录
- 时间戳RAILLOAD及其主机的创建、访问和修改时间
- 创建计划任务以持久性
RAILLOAD还有一个base64编码的配置,其中包含执行其功能所需的信息。配置结构如下:
||<来自系统的目标主机>||<时间戳日期>||<主机目的地和新文件名>||<RAILLOAD文件>||<计划任务>||<计划任务描述>||<计划任务触发时间>||
该组件的执行流程如下所示。
RAILLOAD设计为通过regsvr32.exe加载。RAILLOAD的主机也以类似的方式部署,就像RAILLOAD的主机是系统中已存在文件的重新定位和重命名副本一样。在涉及Earth Alux的后期事件中,RAILLOAD不再作为文件落地,而是通过VARGEIT的mspaint注入方法执行。
后门和命令与控制
Earth Alux在这些阶段的大部分活动使用VARGEIT的功能处理,其中一个带来杂项工具。
作为一个多通道可配置后门,以下是其可用通道,主要用于通信,可以在配置中设置:
ID | 通道 |
---|---|
0x00 | HTTP |
0x01 | 反向TCP |
0x02 | 反向UDP |
0x03 | 绑定TCP |
0x04 | 绑定HTTP |
0x05 | Outlook |
0x06 | ICMP |
0x07 | DNS |
0x08 | Web |
0x09 | 绑定SMB |
表1. VARGEIT通道
Outlook通道,利用Graph API,在所有观察到的攻击中主要使用。后来的变体也包括Outlook通道是唯一选项的版本。
Graph API允许授权访问用户的Outlook邮件数据,允许电子邮件相关操作,如阅读、发送和管理电子邮件,以及从主要和共享邮箱访问日历事件和联系人。
VARGEIT的配置也可以根据使用的通道而变化。Outlook通道类型配置包含以下信息:
偏移 | 大小 | 值 |
---|---|---|
0x00 | ~(最多0x1388) | MS Auth的刷新令牌 |
0x1388 | ~(最多0xC8) | 备份刷新令牌的URL |
0x1450 | 0x10 | 用作存储(auth)令牌的注册表数据的GUID |
0x1478 | 0x02 | 添加到通信消息的未知ID + 0x2B |
0x147a | 0x04 | 未知DW值 |
0x147e | 0x01 | 通道字节;决定将使用哪个通信通道 |
0x147f | 0x10 | 用于消息解密/加密的AES-128密钥 |
0x148f | 0x01 | 获取外部IP的标志 |
0x1490 | 0x01 | 未知字节 |
0x1491 | 0x01 | 退出字节 |
0x1492 | 0x04 | 未知DW值 |
表2. VARGEIT Outlook通道类型配置
在后门的最新版本中,备份刷新令牌的URL和用作auth令牌存储的注册表数据的GUID已从配置中删除,调整了其余信息的偏移位置。
使用Graph API,Outlook通信通道利用草稿文件夹进行后门和控制器之间的消息交换。后门消息以p_前缀,而来自控制器的消息以r_前缀。
后门处理的消息也被删除以去除痕迹,根据观察,控制器也可能具有相同的功能。
服务器消息
来自C&C服务器的消息以r_前缀。消息ID允许控制器跟踪被控制的后门实例,并使后门的实例识别它应该读取哪个消息。
消息ID使用随机生成的GUID的fnv-1a x64哈希 per后门实例生成。fnv-1a x64哈希的十进制等效用于消息标题,而十六进制等效也嵌入在通信数据包中。
服务器消息体包含实际通信数据,使用AES-128 CBC模式加密,并使用zlib压缩。然后作为base64编码字符串存储在消息体中。
base64解码层具有头部结构,实际加密数据在偏移0x2a:
偏移 | 大小 | 值 |
---|---|---|
0x00 | 0x1e | (第一个未框序列)随机生成的填充字节 |
0x1e | 0x04 | (红框)ByteArray的大小 |
0x22 | 0x08 | (黄框)消息ID(十六进制) |
0x2a | ~ | (黑框)加密数据的开始 |
表3. 通信头部结构
加密数据解密和解压缩后,消息遵循特定结构。
偏移 | 大小 | 数据 |
---|---|---|
0x00 | 0x04 | (第一个未框序列)未压缩消息的大小 |
0x04 | 0x04 | (红框)剩余数据的大小,作为相应命令函数调用的参数传递 |
0x08 | 0x01 | (黄框)命令ID |
0x09 | 0x08 | (黑框)未知 |
0x11 | ~ | (白框)附加参数的开始(随命令ID变化) |
表4. 解密通信数据结构
它与服务器消息共享类似的结构,在消息头部块中有一些附加数据:
偏移 | 大小 | 数据 |
---|---|---|
0x00 | 0x1e | 随机生成的填充字节 |
0x1e | 0x04 | ByteArray的总大小 |
0x22 | 0x01 | 未知通信标志 |
空内容的消息值为0x00 | ||
响应收集消息ID的消息值为0x01 | ||
0x23 | 0x08 | 消息ID(十六进制) |
0x2b | 0x08 | 来自config+0x1478的ID |
config中的ID只有WORD的大小,但当向服务器发送通信时,为此ID分配的大小是QW | ||
0x33 | ~ | 要发送的加密数据的开始 |
表5. 解码通信头部结构
加密数据的结构根据后门响应的命令而变化。
上面的示例是对系统信息收集命令的响应,它显示信息,如用户名、计算机名、外部IP地址、内部IP地址、OS版本、用户管理员标志、主机进程名和主机进程ID。
VARGEIT功能
VARGEIT的后门功能如下:
- 收集系统信息
- 使用不同通道通信
- 与Windows Defender防火墙交互
- 收集驱动器信息
- 收集运行进程信息
- 获取、设置、搜索、创建和删除目录
- 读取和写入文件
- 执行命令行
- 将杂项工具注入到受控的mspaint或conhost实例
攻击者使用mspaint注入直接从C&C服务器执行附加工具到目标机器,而无需文件落地。VARGEIT打开一个mspaint实例,其中要注入来自C&C服务器的shellcode。
代码注入和执行使用RtlCreateUserThread、VirtualAllocEx和WriteProcessMemory。对于命令行工具,VARGEIT创建一个管道,可以读取输出并发送回控制器。对于需要交互的注入工具,后门使用命名管道。
发现、收集和外泄
值得注意的是,VARGEIT可以启动多个MSPaint实例来托管工具。在攻击的各个阶段可以执行各种活动:
安装
在最近的攻击中,Earth Alux改变了其持久性安装工具之一RAILSETTER的部署方法。在作为要通过regsvr32.exe加载的DLL文件部署后,此工具通过mspaint方法执行。
尽管mspaint进程中没有可区分的参数,但可以观察到RAILSETTER的安装和时间戳行为来自它。
发现
Earth Alux部署似乎执行安全事件日志和组策略发现以及网络/LDAP侦察的工具。
执行安全事件日志和组策略发现的mspaint进程可以显示以下命令行参数:
|
|
执行网络/LDAP侦察的mspaint进程可以看到以下参数:
|
|
网络/LDAP侦察进程也可以生成包含网络信息的文件。这些创建在格式为<数据路径>\<ad域名>_<收集日期和时间>\
的文件夹内(例如,c:\programdata\data\ad.domain.name_20241111062500\)。以下文件可以在此路径下创建:
- adcs.txt
- admin.keyword.users.txt
- all.dc.host.txt
- all.dns.record.txt
- all.exchange.host.txt
- all.gpo.txt
- all.group.user.txt
- all.host.txt
- all.mssql.host.txt
- all.old.host.txt
- all.ou.txt
- all.spn.txt
- all.trusted.domain.txt
- all.trusted.txt
- all.user.workstations.host.txt
- all.users.txt
- as-rep_roasting.txt
- delegation.host.txt
- delegation.users.txt
- disabled.users.txt
- domain.admin.groups.txt
- domain.adminsdholder.users.txt
- locked.users.txt
- neverexpire.users.txt
- password_policy.txt
- unconstrained_delegation.host.txt
- unconstrained_delegation.users.txt
这些文件然后在数据路径下归档(示例中的c:\programdata\data),文件名为ad.domain.name_20241111062500.zip。
收集
Earth Alux加载一个可能的自定义压缩工具到mspaint用于收集目的。该进程具有以下参数和压缩文件(文件扩展名为.tar.gz)的输出:
|
|
收集的文件包括在发现阶段产生的文件。
外泄
Earth Alux还通过此方法部署一个外泄工具,以外泄在收集阶段创建的压缩文件。这里,它显示以下参数:
|
|
有趣的是,外泄的数据发送到攻击者控制的云存储桶。根据我们的遥测数据,Earth Alux使用相同的云存储桶从不同的目标外泄。
测试和开发
Earth Alux使用RAILLOAD和RAILSETTER进行几次测试。这些包括检测测试和尝试找到新的DLL侧加载主机。
DLL侧加载测试涉及ZeroEye,一个在中文社区流行的开源工具,用于扫描EXE文件的导入表以查找可以被滥用用于侧加载的导入DLL。
Earth Alux将ZeroEye与CloneExportTable配对,一个用于将指定DLL的导出表克隆到用于侧加载的DLL的导出表中的工具。使用此工具通常涉及将所需DLL的导出表克隆到RAILLOAD样本中。
Earth Alux还使用VirTest,另一个在中文社区流行的测试工具,用于检测测试目的和增强其工具集的规避功能。
VirTest允许用户 pinpoint 其工具中导致安全软件基于文件的检测的代码,并修改 pinpointed 代码以绕过基于文件的检测。
目标行业
Earth Alux主要针对各种行业,即政府、科技、物流、制造、电信、IT服务和零售,反映了其