深入剖析以马来西亚为中心的 APT 活动中使用的先进技术

我们的 Elastic Security 研究团队专注于以马来西亚为中心的 APT 活动中使用的先进技术。了解幕后黑手、攻击如何运作、观察到的 MITRE ATTACK® 技术以及入侵指标。

阅读时长 9 分钟活动
A close look at the advanced techniques used in a Malaysian-focused APT campaign

Elastic 安全情报与分析团队研究各种类型的攻击者创新,最近专注于一个利用远程模板、VBA 代码规避和 DLL 侧加载技术的活动小组。根据代码相似性和共享的策略、技术和规程 (TTP),该团队评估认为,该活动可能与一个名为 APT40 或 Leviathan 的中国组织有关。该组织的活动似乎以马来西亚政府官员为目标,诱饵内容与 2020 年马来西亚政治危机有关。

攻击剖析

为了发起其高级持续性威胁 (APT) 活动,该组织很可能以网络钓鱼诱饵附件的形式发送了一个 Microsoft Word 文档。诱饵中使用的图像(图 2)似乎是根据马来西亚博客分享的广播公告(图 1)制作的。诱饵图像包含相同的广播时间,但日期和演讲主题被删除。打开此附件后,会显示一个诱饵文档,同时在后台执行以下操作

  • 诱饵文档下载远程模板 RemoteLoad.dotm
  • 远程模板执行 VBA 宏代码
  • VBA 宏代码解压并执行两个嵌入的 base64 编码 DLL(sl1.tmp 和 sl2.tmp)到 c:\users\public\

此技术称为模板注入,您可能在我们的《防御 Gamaredon 集团》博文中回忆起来。这是攻击者用来绕过电子邮件网关等外围控制的有效方法。

两个嵌入的 DLL(sl1.tmp 和 sl2.tmp)相似,并且导出相同的函数名称:RCT 和 RCP。第一个 DLL (sl1.tmp) 用于下载名为 LogiMailApp.exe 的良性可执行文件和一个关联的库 LogiMail.dll,第二个 DLL (sl2.tmp) 用于执行 LogiMailApp.exe,由于我们稍后将介绍的固有的 DLL 搜索顺序漏洞,它会自动尝试执行 LogiMail.dll。

文件名文件类型大小(字节)MD5编译时间
LogiMailApp.exeWin32 EXE311656850a163ce1f9cff0367854038d8cfa7e2012-09-26 22:13:13+00:00
LogiMail.dllWin32 DLL105984b5a5dc78fb392fae927e9461888f354d2020-06-03 04:08:29+00:00
sl1.tmpWin32 DLL3072ccbdda7217ba439dfb6bbc6c3bd594f82019-11-29 17:15:29+00:00
sl2.tmpWin32 DLL3072dbfa006d64f39cde78b0efda1373309c2019-11-29 21:23:44+00:00

表 1:丢弃的文件元数据

此实现因其行为上的特殊性而引起了我们研究人员的注意

  • Microsoft Office 应用程序 winword.exe 加载 sl1.tmp 和 sl2.tmp DLL 时使用 LoadLibraryA 方法,这种情况比较少见
  • 这些 DLL 使用 CallWindowProcA 方法运行显式命令或从 URL 安装有效负载,这种情况似乎非常罕见
  • 两个 DLL 在执行后都被删除

嵌入的 DLL

嵌入的 DLL sl1.tmp 和 sl2.tmp 功能非常有限 — 导出 RCP 和 RCT 函数。RCP 函数实现 WinExec 方法来执行命令,而 RCT 函数使用 URLDownloadToFileA 方法从指定的 URL 下载文件。

DLL 侧加载后门

LogiMailApp.exe 由 sl1.tmp 下载并由 sl2.tmp 执行,它容易受到一种称为侧加载的 DLL 搜索顺序劫持形式的攻击,如果 LogiMail.dll 在同一目录中找到,它会自动搜索并执行 LogiMail.dll。DLL 搜索顺序劫持的形式可以与许多第三方软件应用程序一起使用。在这种情况下,搜索顺序劫持用于加载一个后门,该后门导出以下值得注意的函数

攻击者创建的二进制文件 LogiMail.dll 导出一个 DllGetClassObject 函数,其中包含此样本执行流程的关键逻辑

  1. 将 AES 加密的第二阶段对象下载到 %TEMP%~liseces1.pcs
  2. 从硬编码字符串的 SHA256 中派生出 128 位 AES 密钥和初始化向量
  3. 使用 ReadFile 和 CryptDecrypt 函数在内存中读取和解密 %TEMP%~liseces1.pcs
  4. 从磁盘中删除 %TEMP%~liseces1.pcs

第二阶段后门

解密的第二阶段后门被映射到内存中,然后调用其原始入口点 (OEP),从而绕过基于文件系统扫描的成功检测。

有效负载暂存服务器和第二阶段基础设施都使用动态 DNS

此有效负载支持以下功能

  • 基本反调试检查
  • 系统和用户发现
  • 通过命令行执行
  • 文件发现、上传和下载
  • 通过运行注册表进行持久化
  • 使用相同的 AES 密钥加密 C2 流量

可能的 APT40/Leviathan 连接

今年早些时候,马来西亚计算机紧急响应小组 (MyCERT) 发布了一份与针对该国的间谍活动相关的公告。该报告列出了不同的 TTP,并包括多个样本和其他技术指标,这些指标与一个名为 APT40/Leviathan 的威胁组织相符。

从高层次来看,此样本遵循了继续使用特定 TTP(例如远程模板、使用宏、使用 DLL 侧加载技术以及利用具有动态 DNS 的内存植入进行命令和控制)针对马来西亚受害者的趋势。更具体地说,来自此诱饵的第二阶段植入共享唯一的字符串和 URL 引用,并且包含与先前针对 APT40/Leviathan 的报告相关的功能。由于这些相似之处,我们的情报与分析团队以中等程度的信心评估认为,此活动与 APT40/Leviathan 有关。

与 MyCERT 样本相似的植入字符串

  • /list_direction
  • /post_document
  • /post_login
  • 打开远程文件 %s 失败,原因:%s
  • 打开管道失败 %s
  • 下载读取路径失败 %s
  • %02X-%02X-%02X-%02X-%02X-%02X
  • Software\Microsoft\Windows\CurrentVersion\Run
  • ntkd

结论

在这篇文章中,我们重点介绍了一个最近的样本,它很可能代表了一个组织严密的攻击者的工作成果。像这样的活动小组对于每个人来说都值得关注,原因仅仅是它们代表了漏洞利用后创新的更高成熟度。他们今天的尖端 TTP 最终将成为明天每个人的日常操作;从这些事件中吸取教训非常重要。

我们希望通过分享这些见解,能够帮助提高人们的意识,并继续专注于保护世界的数据免受攻击。为了进一步帮助组织,我们在下面添加了所有观察到的 MITRE ATT&CK® 技术和入侵指标 (IoCs)。

MITRE ATT&CK® 技术

入侵指标 (IOCs)

文件名和路径

Bubar Parlimen.zip
Bubar Parlimen.docx
RemoteLoad.dotm
C:\Users\Public\sl1.tmp
C:\Users\Public\sl2.tmp
C:\Users\*\AppData\Local\Temp\~liseces1.pcs
C:\Users\*\AppData\Local\Microsoft\Office\LogiMailApp.exe
C:\Users\*\AppData\Local\Microsoft\Office\LogiMail.dll

注册表键

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\ntkd

URL

hxxps[:]//armybar[.]hopto[.]org/LogiMail.dll
hxxps[:]//armybar[.]hopto[.]org/LogiMailApp[.]exe
hxxps[:]//armybar[.]hopto[.]org/Encrypted
hxxp[:]//tomema.myddns[.]me/postlogin
hxxp[:]//tomema[.]myddns[.]me/list_direction
hxxp[:]//tomema[.]myddns[.]me/post_document

IP

104[.]248[.]148[.]156
139[.]59[.]31[.]188

HTTPS 证书

74b5e317527c93539dbaaf84d6a61da92a56012a

哈希值

523cbdaf31ddc920e5b6c873f3ab42fb791fb4c9d1f4d9e6a7f174105d4f72a1
ab541df861c6045a17006969dac074a7d300c0a8edd0a5815c8b871b62ecdda7
145daf50aefb7beec32556fd011e10c9eaa71e356649edfce4404409c1e8fa30
93810c5fd9a287d85c182d2ad13e7d30f99df76e55bb40e5bc7a486d259810c8
925f404b0207055f2a524d9825c48aa511199da95120ed7aafa52d3f7594b0c9
feca9ad5058bc8571d89c9d5a1eebce09e709cc82954f8dce1564e8cc6750a77
06a4246be400ad0347e71b3c4ecd607edda59fbf873791d3772ce001f580c1d3
77ef350639b767ce0a748f94f723a6a88609c67be485b9d8ff8401729b8003d2

YARA

rule APT_APT40_Implant_June2020 {
   meta:
       version = "1.0"
       author =  "Elastic Security"
       date_added = "2020-06-19"
       description = "APT40 second stage implant"
    strings:
        $a = "/list_direction" fullword wide
        $b = "/post_document" fullword wide
        $c = "/postlogin" fullword wide
        $d = "Download Read Path Failed %s" fullword ascii
        $e = "Open Pipe Failed %s" fullword ascii
        $f = "Open Remote File %s Failed For: %s" fullword ascii
        $g = "Download Read Path Failed %s" fullword ascii
        $h = "\\cmd.exe" fullword wide
    condition:
        all of them
}

参考