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漏洞利用工具包服务器,从而在受害者设备上安装后门。
攻击链接可以伪装成合法链接。一旦攻击完成,MOONSHINE服务器将受害者重定向回合法链接,以防止受害者注意到攻击。根据暴露的操作日志,发现在中国分发的攻击链接主要伪装为:
- 政府公告
- 与中国COVID-19相关的新闻
- 与中国宗教、西藏或维吾尔族相关的新闻
- 中国旅行信息
这些链接主要从地理位置在中国的IP地址访问。还观察到另一组攻击链接,其客户端IP地址不仅来自中国,还来自其他国家。这些攻击链接都重定向到西藏或维吾尔族音乐和舞蹈的在线视频。由于日志显示攻击链接同时从多个国家访问,怀疑这些链接可能发送到涉及多人的群聊,而不是针对单个个人。
漏洞利用(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支持的漏洞利用攻击时,它不会提供漏洞利用代码。相反,服务器返回一个钓鱼页面,通知受害者应用中使用的浏览器引擎版本过时,需要通过提供的下载链接进行升级。然而,实际下载的浏览器引擎较旧且包含漏洞。MOONSHINE漏洞利用工具包使用此技术降级内置浏览器的引擎,然后再次发起攻击。
着陆方式
当漏洞利用攻击成功时,恶意代码将执行准备好的shellcode,在目标设备上植入后门。着陆方式与之前发现的利用ELF加载器的攻击链不同。发现的shellcode已更改:它直接植入一个特洛伊化的XWalk浏览器核心,以替换微信中的原始核心(XWalk是微信的一个闭源项目,可能从Crosswalk框架扩展而来)。攻击者的服务器上准备了多个版本的XWalk 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”,并添加了后门的入口点。在后门执行之前,首先执行一个名为“stuber”的函数,为后门的执行准备环境。初始化步骤包括:
- 清除“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之前的任何活动中发现。因此,将它们归类