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.exe | Win32 EXE | 311656 | 850a163ce1f9cff0367854038d8cfa7e | 2012-09-26 22:13:13+00:00 |
LogiMail.dll | Win32 DLL | 105984 | b5a5dc78fb392fae927e9461888f354d | 2020-06-03 04:08:29+00:00 |
sl1.tmp | Win32 DLL | 3072 | ccbdda7217ba439dfb6bbc6c3bd594f8 | 2019-11-29 17:15:29+00:00 |
sl2.tmp | Win32 DLL | 3072 | dbfa006d64f39cde78b0efda1373309c | 2019-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 函数,其中包含此样本执行流程的关键逻辑
- 将 AES 加密的第二阶段对象下载到 %TEMP%~liseces1.pcs
- 从硬编码字符串的 SHA256 中派生出 128 位 AES 密钥和初始化向量
- 使用 ReadFile 和 CryptDecrypt 函数在内存中读取和解密 %TEMP%~liseces1.pcs
- 从磁盘中删除 %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® 技术
- T1193 - 鱼叉式网络钓鱼附件
- T1221 - 模板注入
- T1060 - 注册表运行键/启动文件夹
- T1073 - DLL 侧加载
- T1129 - 通过模块加载执行
- T1055 - 进程注入
- T1107 - 文件删除
- T1140 - 解密/解码文件或信息
- T1059 - 命令行界面
入侵指标 (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
}