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 Group”中提到的这项技术。 这是对手用来绕过电子邮件网关等边界控制的有效方法。
两个嵌入式 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 | 可执行文件 | 311656 | 850a163ce1f9cff0367854038d8cfa7e | 2012-09-26 22:13:13+00:00 |
登录邮件 | 动态链接库 | 105984 | b5a5dc78fb392fae927e9461888f354d | 2020-06-03 04:08:29+00:00 |
sl1.tmp | 动态链接库 | 3072 | ccbdda7217ba439dfb6bbc6c3bd594f8 | 2019-11-29 17:15:29+00:00 |
sl2.tmp | 动态链接库 | 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,则会自动搜索并执行该病毒。 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 样本的相似之处:
- /列表方向
- /post_document
- /post_login
- 打开远程文件 %s 失败:%s
- 打开管道失败 %s
- 下载读取路径失败 %s
- %02X-%02X-%02X-%02X-%02X-%02X
- Software\Microsoft\Windows\CurrentVersion\Run
- ntkd
结论
在这篇文章中,我们重点介绍了最近的一个样本,它很可能是一个高度组织化的对手所为。 像这样的活动小组值得大家关注,因为它们代表了漏洞利用后创新的更高成熟度水平。 他们今天的尖端 TTP 最终会在明天成为每个人的必修课;从这些事件中吸取教训很重要。
我们希望通过分享这些见解,能够帮助提高人们的认识,并继续致力于保护全球数据免受攻击。 为了进一步帮助组织,我们在下面添加了所有观察到的 MITRE ATT&CK ®技术和妥协指标 (IoC)。
MITRE ATT&CK ®技术
- T1193 - 鱼叉式钓鱼附件
- T1221 – 模板注入
- T1060 - 注册表运行项/启动文件夹
- T1073 - DLL 侧载
- T1129 - 通过模块加载执行
- T1055——工艺注入
- T1107——文件删除
- T1140 - 解密/解码文件或信息
- T1059——命令行界面
攻击指标 (IOC)
文件名和路径
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
网址
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
雅拉
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
}