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编码并嵌入攻击链接的查询字符串中。
当受害者点击攻击链接并被重定向到漏洞利用工具包服务器时,服务器会根据嵌入的设置做出反应(图3)。攻击结束后,服务器会将受害者重定向到伪装的合法链接,以防止受害者注意到任何异常活动。时间戳记录了链接的生存期。一旦超过此时间戳,服务器将停止返回任何攻击代码,以避免研究人员进一步分析。值得注意的是,每个时间戳都附加了一个使用时间戳生成的加盐哈希。哈希用于防止生存期时间戳被篡改。最后,标签仅用于服务器在后端记录和管理攻击。
在返回漏洞利用代码之前,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权限、设备管理器启用、网络类型、客户端版本、摄像头启用、蓝牙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 | 通过解析注册表键’S |