MOONSHINE漏洞利用工具包和DarkNimbus后门助力Earth Minotaur的多平台攻击
摘要
趋势科技研究人员调查了一个名为Earth Minotaur的组织,该组织在野外使用了MOONSHINE漏洞利用工具包。截至2024年,已识别出超过55台MOONSHINE服务器,与2019年报告的版本相比,该工具包已更新了更多漏洞利用和功能。MOONSHINE主要针对Android设备即时通讯应用中的漏洞,主要影响藏族和维吾尔族社区。研究人员还发现了一个未报告的Android后门DarkNimbus,该后门也被Earth Minotaur使用,并且存在Windows版本。Earth Minotaur利用MOONSHINE向Android和Windows设备投放DarkNimbus后门,针对微信,可能使其成为跨平台威胁。MOONSHINE利用了基于Chromium的浏览器和应用程序中的多个已知漏洞,需要用户定期更新软件以防止攻击。
攻击向量
Earth Minotaur通过即时通讯应用发送精心设计的消息,诱使受害者点击嵌入的恶意链接。他们在聊天中伪装成不同角色以提高社交工程攻击的成功率。恶意链接将受害者重定向到MOONSHINE漏洞利用工具包服务器,从而在受害者设备上安装后门(图1)。
攻击链接可以伪装成合法链接。攻击完成后,MOONSHINE服务器将受害者重定向回合法链接,以防止受害者注意到攻击。根据暴露的操作日志,发现在中国投放的攻击链接主要伪装为:
- 政府公告
- 与中国COVID-19相关的新闻
- 与中国宗教、藏族或维吾尔族相关的新闻
- 中国旅行信息
这些链接主要从位于中国的IP地址访问。还观察到另一组攻击链接,其客户端IP地址不仅来自中国,还来自其他国家(图2)。这些攻击链接都重定向到藏族或维吾尔族的音乐和舞蹈在线视频。由于日志显示攻击链接同时从多个国家访问,怀疑这些链接可能发送给涉及多个人的群聊,而不是针对单个个体。
漏洞利用(MOONSHINE漏洞利用工具包)
在发起攻击之前,威胁行为者必须在MOONSHINE漏洞利用工具包的服务器上生成攻击链接。在MOONSHINE的升级版本中,每个生成的链接都嵌入了预配置信息,包括伪装的合法链接、时间戳和标签。该信息经过Base64编码并嵌入攻击链接的查询字符串中。
在返回漏洞利用代码之前,MOONSHINE漏洞利用工具包还会验证HTTP请求头中的信息。仅当受害者使用目标应用且浏览器版本易受攻击时,MOONSHINE才会返回相应的漏洞利用代码。如果浏览器或应用的版本不是目标版本,服务器不会提供任何恶意代码,仅将受害者重定向到最初设置的伪装合法链接。
MOONSHINE使用多个Chromium漏洞攻击Android上的即时通讯应用。由于许多即时通讯应用使用Chromium作为其内置浏览器的引擎,当应用程序未更新其Chromium且未启用沙盒保护功能时,就会变得脆弱。这为攻击者利用这些漏洞并安装后门提供了绝佳机会。发现MOONSHINE漏洞利用工具包可以攻击多个版本的Chromium和腾讯浏览器服务(TBS),这是另一个基于Chromium的浏览器引擎。
| 漏洞 | 目标版本 |
|---|---|
| CVE-2016-1646 | Chrome 39~49 |
| CVE-2016-5198 | Chrome 50 |
| CVE-2017-5030 | Chrome 51~55 |
| CVE-2017-5070 | Chrome 56~58 |
| CVE-2018-6065 | Chrome 62~63 |
| CVE-2018-17463 | Chrome 68~69 |
| CVE-2018-17480 | Chrome 70~73, TBS 44605 |
| CVE-2020-6418 | Chrome 74~80, TBS 45114, 45116, 45118, 45120, 45122, 45124, 45126, 45128, 45130, 45132, 45134, 45136 |
表1. MOONSHINE漏洞利用工具包针对的漏洞和浏览器版本
值得注意的是,许多这些漏洞在2019年CitizenLab的第一份报告中已被发现。CVE-2020-6418是我们在观察到的MOONSHINE漏洞利用工具包版本中包含的唯一较新漏洞。
思科Talos情报组最近发布了针对微信的CVE-2023-3420漏洞的详细信息。我们认为相关的漏洞利用是MOONSHINE框架的一部分。
尽管我们只看到威胁行为者利用微信成功入侵目标,但MOONSHINE框架有代码针对多个嵌入自家版本Chrome或TBS的Android应用程序。
| 应用名称 | 描述 | 目标组件 |
|---|---|---|
| Chrome | 浏览器 | Chrome |
| 社交网络应用 | Chrome | |
| Lazada | 东南亚流行的电子商务应用 | Chrome |
| Line | 主要在印尼、台湾和泰国流行的即时通讯应用 | Chrome |
| Messenger | 即时通讯应用 | Chrome |
| Naver | 韩国流行的搜索引擎/门户 | Chrome |
| 中国流行的即时通讯应用 | Chrome TBS | |
| 中国流行的即时通讯应用 | Chrome TBS | |
| Zalo | 越南流行的即时通讯应用 | Chrome |
表2. MOONSHINE漏洞利用工具包针对的应用
还发现MOONSHINE漏洞利用工具包支持一种有趣的钓鱼技术,旨在降级应用的浏览器引擎:当服务器检测到TBS版本不易受MOONSHINE支持的漏洞利用攻击时,它不会提供漏洞利用代码。相反,服务器返回一个钓鱼页面,通知受害者应用中使用的浏览器引擎版本过时,需要通过提供的下载链接进行升级(图4)。然而,实际下载的浏览器引擎是较旧的且包含漏洞。MOONSHINE漏洞利用工具包使用此技术降级内置浏览器的引擎,然后再次发起攻击。
着陆方式
当漏洞攻击成功时,恶意代码将执行准备好的shellcode,在目标设备上植入后门。着陆方式与之前发现的利用ELF加载程序的攻击链不同。发现的shellcode(图5)已更改:它直接植入一个特洛伊化的XWalk浏览器核心以替换微信内的原始核心(XWalk是微信的一个闭源项目,可能从Crosswalk框架扩展而来)。攻击者的服务器上准备了多个版本的特洛伊化APK文件。根据不同的漏洞利用,嵌入的shellcode将下载相应的特洛伊化APK以替换微信中的原始XWalk。shellcode的行为包括:
- 从远程服务器下载特洛伊化XWalk APK并将其重命名为“base_bk.apk”
- 用下载的文件“base_bk.apk”替换原始的“base.apk”
- 清空“filelist.config”和“reslist.config”文件的内容,这些文件包含原始文件的MD5哈希值以验证文件完整性
- 修改文件夹“app_xwalkconfig”的权限
- 下载一个空文件覆盖“base_bk.apk”
被替换的XWalk核心修改了函数“startBrowserProcess”(图6),并添加了后门的入口点。在后门执行之前,首先执行一个名为“stuber”的函数以为后门的执行准备环境(图7)。初始化步骤包括:
- 清除“filelist.config”文件
- 从远程服务器下载“libwcdb.so”文件供后门使用(wcdb是一个用于移动设备的轻量级数据库)
- 检查XWalk APK的MD5哈希值是否为特洛伊化版本。如果不是,再次下载并替换。
- 执行主后门函数
后门(DarkNimbus)
Android平台
植入XWalk的主后门是一个全面的Android监视工具。我们设法找到了该后门的一个独立版本,并发现它自2018年以来一直在开发和积极更新。在某些版本中,我们注意到后门在其函数中使用字符串“DKNS”。因此,我们将该后门命名为DarkNimbus。
DarkNimbus使用XMPP协议与C&C服务器通信。后门的XMPP通信处理程序使用开源项目“Smack”实现。此外,它还通过HTTPS与另一台服务器通信;该服务器主要用于文件传输。
DarkNimbus支持的功能包括收集受感染设备的基本信息、已安装的应用和地理位置(GPS)。后门窃取个人信息,包括联系人列表、通话记录、短信、剪贴板内容、浏览器书签以及多个即时通讯应用的对话。它还支持通话录音、拍照、截图、文件操作和命令执行。每个支持的后门功能都用一个以“cmd”前缀开头、后跟五位数字的命令ID表示。
| 命令ID | 功能 |
|---|---|
| cmd_10001 | 收集移动设备信息(包括IMEI、IMSI、序列号、设备品牌、设备型号、操作系统版本、内存大小、SD卡大小、电量、MAC地址、WIFI MAC地址、root权限、IP地址、无障碍功能启用、设备管理器启用、网络类型、客户端版本、摄像头启用、蓝牙MAC地址、摄像头信息、插件版本、电话号码、操作系统ID、麦克风启用) |
| cmd_10002 | 收集已安装应用信息(包括应用名称、包名、版本、安装时间、安装路径、大小、是否为系统应用) |
| cmd_10003 | 收集联系人信息 |
| cmd_10004 | 收集短信内容 |
| cmd_10005 | 录音电话 |
| cmd_10006 | 从前置摄像头拍照 |
| cmd_10008 | 从GPS和CDMA收集地理位置信息 |
| cmd_10009 | 收集通话历史 |
| cmd_10010 | 收集WIFI信息(从本地设置或通过WIFI扫描器) |
| cmd_10011 | 收集目录信息(包括SD卡、图片、DCIM、下载文件夹) |
| cmd_10012 | 从指定文件夹收集目录信息 |
| cmd_10013 | 从设备收集文件内容 |
| cmd_10014 | 收集浏览器书签 |
| cmd_10015 | 收集指定应用数据库 |
| cmd_10016 | 收集微信资源信息 |
| cmd_10018 | 截图 |
| cmd_10019 | 在预定时间录音 |
| cmd_10021 | 集体执行cmd10005、cmd10006、cmd10008、cmd10011、cmd10015、cmd10016和cmd10018 |
| cmd_10024 | 收集剪贴板数据 |
| cmd_10025 | 收集输入法信息 |
| cmd_10026 | 通过无障碍功能收集微信消息 |
| cmd_10027 | 通过无障碍功能收集QQ消息 |
| cmd_10028 | 归档文件或文件夹 |
| cmd_10029 | 通过无障碍功能收集Skype消息 |
| cmd_10030 | 通过无障碍功能收集WhatsApp消息 |
| cmd_10031 | 通过无障碍功能收集钉钉消息 |
| cmd_10037 | 通过无障碍功能收集MOMO消息 |
| cmd_10038 | 通过无障碍功能收集TalkBox消息 |
| cmd_10039 | 通过无障碍功能收集Voxer消息 |
| cmd_10043 | 收集指定应用资源信息 |
| cmd_10044 | 通过无障碍功能收集Telegram消息 |
| cmd_20001 | 下载URL |
| cmd_20002 | 录音电话 |
| cmd_20003 | 收集微信资源信息 |
| cmd_20004 | 执行shell命令 |
| cmd_20005 | 通过本地数据库“EnMicroMsg.db”收集微信消息 |
| cmd_99999 | 卸载后门 |
表3. DarkNimbus命令列表(Android版本)
DarkNimbus滥用Android的无障碍服务(原本设计用于协助残障人士)来监视和窃取即时通讯应用的对话。当目标应用在前台运行时,它使用无障碍服务的屏幕文本识别功能读取即时通讯应用上的文本并窃取对话。针对的即时通讯应用包括:
- 钉钉
- MOMO
- Skype
- TalkBox
- Voxer
- 微信
然而,通过MOONSHINE漏洞利用工具包投放的DarkNimbus版本仅针对微信。针对其他即时通讯应用的实现在此版本中被移除。
Windows平台
我们发现了一个设计运行在Windows上的该恶意软件版本。基于硬编码字符串和编译时间戳,它似乎在2019年7月至10月期间开发。然而,根据我们的遥测和二进制文件中的另一个硬编码字符串,它可能在2020年12月被使用。
样本中的两个字符串表明该恶意软件家族的不同版本:第一个是日志文件中写入的字符串“..Start.. 0.0.9a”。第二个是JSON键“mm_version”,其硬编码值为“2.0.1”,随cmd_10001命令中关于受感染主机的信息一起发送,如表4所示。
我们找到了多个样本,但有两种不同的C&C通信协议:
- 一种“标准”连接到IP地址117.175.185[.]81端口8001,以发布检索到的数据并等待命令
- 另一种协议,恶意软件向CloudFlare IP地址1.1.1.1端口8005发送“DKGETMMHOST”,并在答案中搜索DKMMHOST和DKFESN字符串以设置C&C的最终IP地址。我们不认为威胁行为者入侵了CloudFlare,因此这第二个版本可能涉及中间人(MitM)能力来回答这些请求并将恶意软件引导到适当的C&C。
功能
该恶意软件用C++编写,并启动线程以执行多个功能。这些功能的命名约定与Android版本相似,而实现则特定于Windows平台。
命令的结果以JSON格式发送到C&C服务器。恶意软件使用CJsonObject,一个轻量级的C++ JSON实现。
| 命令ID | 功能 |
|---|---|
| cmd_10001 | 收集主机信息:操作系统、计算机名、用户名、CPU、内存大小、磁盘序列号、制造商、卷和分区、MAC地址、WIFI、IP地址、网络网关、摄像头、麦克风和“mm_version”(在我们的样本中硬编码为值“2.0.1”) |
| cmd_10002 | 通过解析注册表项“SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”收集已安装应用程序列表 |
| cmd_10011 | 收集文件和目录列表 |
| cmd_10013 | 读取并上传文件内容 |
| cmd_10014 | 收集浏览历史 |
| cmd_10018 | 截图抓取 |
| cmd_10021 | 设置策略 |
| cmd_10026 | 收集击键 |
| cmd_10050 | 收集剪贴板数据 |
| cmd_10051 | 执行shell命令 |
| cmd_10052 | 收集浏览器保存的凭据 |
| cmd_99999 | 卸载后门 |
表4. DarkNimbus命令列表(Windows版本)
大多数线程创建文件,其中它们复制要发送到服务器的内容,以Base64编码。文件名是硬编码字符串的MD5。
| 文件 | 描述 | 内容 |
|---|---|---|
| eb3816e69e6c007b96a09e2ecee968e5 | MD5(“winhook-clientLog”)的结果,恶意软件执行的日志 | |
| a461f0e556eafe386219599323c3bc7c | MD5(“register.json”),C&C配置详细信息 | |
| 38b2c93bc282cfda172f89148d576f1a | MD5计算“BrowseHistory::BrowseHistory”的结果,包含与受害者浏览历史相关的一些ID的JSON文件 | |
| bf8b3f43b18d02f7c15b3c6d4d2feb36 | MD5计算“UserAccHistory::UserAccHistory”的结果,包含与从受害者窃取的浏览器凭据相关的一些ID的JSON文件 | |
| 98ce6a50def985ec0b91bcb66d3673f1 | MD5(“CSoftInfo::CSoftInfo”),包含与已安装应用程序相关的一些ID的JSON文件 | |
| 880103ad832e14aa4bd6fb2be3591694 | MD5(“task_config.json”),包含要由恶意软件执行的任务ID的JSON文件 | |
| a3de05ec828ee0077b81ade538005443 | MD5(“do_scanfs_config”),文件浏览功能的配置 | |
| 8ff32fac8af1e67e2be678bdad1ebce8 | MD5(“policypush.json”),应包含文件提交的策略 |
表5. 创建的带有复制内容的文件示例
归因
我们认为Earth Minotaur是一个未被公开报告的入侵集。在2019年MOONSHINE漏洞利用工具包的第一份报告中,使用该工具包的威胁行为者被命名为POISON CARP。虽然两者都使用了MOONSHINE漏洞利用工具包并有相似的目标,但我们没有找到Earth Minotaur和POISON CARP之间的进一步联系。后门DarkNimbus在2018年开发,但未在POISON CARP之前的任何活动中发现。因此,我们将它们归类为两个不同的入侵集。
2020年,我们发布了一份关于Earth Empusa的研究报告,我们认为它与POISON CARP有关。Meta发布了一份报告,在其研究中将Earth Empusa区分为独立于POISON CARP;我们也没有找到任何证据将Earth Minotaur与Earth Empusa联系起来。
值得一提的是,我们注意到在2023年11月激活了一个新的MOONSHINE漏洞利用工具包服务器,其域名为info[.]symantke[.]com(图8)。有趣的是,域symantke[.]com被发现被UNC5221在2023年