引言
Google威胁情报小组(GTIG)发现了一个针对苹果iPhone的全新强大漏洞利用工具包。这个被开发者内部命名为"Coruna"的工具包,覆盖了从iOS 13.0(2019年9月发布)到iOS 17.2.1(2023年12月发布)的广泛版本,内含5条完整的iOS漏洞利用链和总计23个漏洞。
真正令人惊艳的,是这个工具包的技术含金量——它不仅集大成地整合了iOS漏洞,更令人警惕的是,其中最先进的漏洞利用了非公开的攻击技术和缓解措施绕过手段。
从商业监控到网络犯罪:一场"二手零日漏洞"的流转
Coruna的传播轨迹,为我们揭示了高级攻击能力如何在不同威胁行为者之间扩散的惊人现象。
2025年,GTIG追踪到这个工具包经历了三次截然不同的"转手":
1. 起点:商业监控——最初由某监控厂商的客户在高度定向的行动中使用 2. 升级:国家级间谍活动——随后被 UNC6353(疑似俄罗斯间谍组织)部署在针对乌克兰用户的水坑攻击中3. 失控:大规模金融诈骗——最终落入 UNC6691手中,在大规模诈骗活动中泛滥
这种扩散路径如何发生,目前尚不清楚,但无疑指向了一个活跃的"二手零日漏洞"黑市。更危险的是,多个威胁行为者现在已经掌握了这些先进的攻击技术,可以将其与新发现的漏洞重新组合使用。
防护建议:升级是唯一出路
值得庆幸的是,Coruna工具包对最新版本的iOS已经失效。我们强烈建议:
• 立即将iPhone更新到最新iOS版本 • 如果无法更新,请启用锁定模式[1]以增强安全防护
所有相关网站和域名已被添加到Google安全浏览[2]黑名单,保护用户免受进一步攻击。
发现时间线

图1:Coruna iOS漏洞利用工具包发现时间线
第一幕:商业监控的影子
2025年2月,我们捕获了一个iOS漏洞利用链的部分代码,使用者是某监控公司的客户。这些漏洞被整合进一个此前从未见过的JavaScript框架中,采用了简单但独特的混淆技术:
[16, 22, 0, 69, 22, 17, 23, 12, 6, 17].map(x => {return String.fromCharCode(x ^ 101);}).join("")这个框架会先进行设备指纹识别,收集各种数据点来判断设备是否真实,以及具体的iPhone型号和iOS版本。然后根据收集到的信息,加载相应的WebKit远程代码执行(RCE)漏洞,接着是指针认证码(PAC)绕过。

图2:Coruna漏洞利用工具包的反混淆JavaScript代码
当时我们恢复了针对iOS 17.2设备的WebKit RCE,确认其为CVE-2024-23222——这是一个此前被识别的零日漏洞,苹果在2024年1月22日的iOS 17.3更新中修复,但没有致谢任何外部研究人员。

图3:利用CVE-2024-23222的RCE漏洞在野外的实际投放方式
第二幕:针对乌克兰的水坑攻击
2025年夏季,我们在cdn.uacounter[.]com上发现了相同的JavaScript框架。这个网站以隐藏iframe的形式被加载到许多被入侵的乌克兰网站上——从工业设备、零售工具到本地服务和电商网站,无所不包。
框架只针对特定地理位置的iPhone用户投放。我们收集到的WebKit RCE包括CVE-2024-23222、CVE-2022-48503和CVE-2023-43000,随后服务器被关闭。我们与乌克兰计算机应急响应小组(CERT-UA)合作,清理了所有被入侵的网站。
第三幕:诈骗网站的全链条收集
2025年底,我们在大量虚假网站上发现了这个JavaScript框架,大多与金融相关,投放的正是同一个iOS漏洞利用工具包。
这些网站试图诱导用户使用iOS设备访问,如图4所示,这是从一个假冒的WEEX加密货币交易所网站截取的画面:

图4:假冒加密货币交易所网站上的弹窗,试图引导用户访问漏洞利用页面
用户通过iOS设备访问这些网站时,无论地理位置如何,都会被注入一个隐藏的iframe,投放漏洞利用工具包。

图5:从诈骗网站恢复的CVE-2024-23222漏洞利用代码截图
我们恢复了所有混淆的漏洞利用代码,包括最终载荷。在进一步分析中,我们发现攻击者部署了工具包的调试版本,以明文形式留下了所有漏洞利用代码,包括它们的内部代号。正是在这时,我们得知这个工具包很可能在内部被命名为"Coruna"。
总共收集了数百个样本,覆盖5条完整的iOS漏洞利用链,能够针对运行iOS 13.0(2019年9月发布)到iOS 17.2.1(2023年12月发布)的各种iPhone型号。
Coruna工具包:工程化的艺术
这个框架的工程化水平极高,各个漏洞利用组件自然衔接,使用通用的工具和框架组合在一起。该工具包执行以下独特操作:
• 智能规避:如果设备处于锁定模式或用户在隐私浏览模式,立即退出 • 资源加密:使用独特的硬编码cookie生成资源URL • 哈希寻址:资源通过哈希引用,需要使用独特cookie通过 sha256(COOKIE + ID)[:40]推导其URL• 分段加密:RCE和PAC绕过未加密投放,但二进制载荷使用ChaCha20加密,每个blob都有唯一密钥 • 自定义格式:载荷打包在以 0xf00dbeef为头的自定义文件格式中,使用LZW算法压缩
图6展示了从网络角度看,一台运行iOS 15.8.5的iPhone XR被感染的完整过程:

图6:iOS 15.8.5上投放的Coruna漏洞利用链
漏洞全景:23个漏洞的完整拼图
这个工具包的核心价值在于全面的iOS漏洞集合。这些漏洞有详尽的文档、注释和说明,均以地道的英语撰写。最先进的漏洞使用了非公开的攻击技术和缓解措施绕过。
下表总结了我们正在进行的分析,涵盖各种漏洞利用链。由于调查仍在进行,某些CVE关联可能会修订。总计23个漏洞,覆盖iOS 13到iOS 17.2.1。
| 类型 | 代号 | 目标版本 | 修复版本 | CVE |
|---|---|---|---|---|
表1:CVE与代号映射表
值得注意的是,Photon和Gallium利用的漏洞也曾被用作零日漏洞,是卡巴斯基在2023年发现的三角行动[3]的一部分。
Coruna工具包还内嵌了可重用模块,简化了上述漏洞的利用。例如,有一个名为rwx_allocator的模块,使用多种技术绕过各种缓解措施,防止在用户态分配RWX内存页。内核漏洞利用也嵌入了各种内部模块,允许绕过基于内核的缓解措施,如内核模式PAC。
最终载荷:加密货币窃取器
在漏洞利用链的最后,一个名为PlasmaLoader(GTIG追踪为PLASMAGRID)的加载器二进制文件,使用com.apple.assistd作为标识符,促进与内核组件的通信。加载器将自己注入到powerd中——一个在iOS上以root权限运行的守护进程。
注入的载荷并没有展现出我们从监控厂商那里预期看到的常规功能,而是专注于窃取金融信息:
• 解码磁盘上图像中的二维码 • 分析文本块以查找BIP39[4]助记词序列或特定关键词(如"backup phrase"或"bank account") • 如果在Apple备忘录中发现此类文本,将发送回C2服务器
更重要的是,载荷能够远程收集和运行额外模块,配置从http://<C2 URL>/details/show.html获取。配置和额外模块都被压缩为7-ZIP存档,受唯一硬编码密码保护。
大多数识别出的模块设计统一,都是通过函数钩子窃取以下应用程序的加密货币钱包或敏感信息:
• BitKeep、Bitpie、Coin98、Coinbase Wallet • Exodus、imToken、Krystal、MetaMask • MyTonWallet、Phantom、Ronin Wallet、Solflare • TokenPocket、Tonhub、Tonkeeper、TronLink • Trust Wallet、Uniswap
所有这些模块都包含用中文编写的日志:
<PlasmaLogger> %s[%d]: CorePayload 管理器初始化成功,尝试启动...一些注释甚至包含表情符号,其写作方式暗示可能是由大语言模型生成的。
网络通信通过HTTPS进行,收集的数据使用AES加密后POST提交,密钥为静态字符串的SHA256哈希。植入程序包含硬编码C2列表,但有备用机制。它嵌入了自定义域名生成算法(DGA),使用字符串"lazarus"作为种子生成可预测域名列表。域名为15个字符,使用.xyz作为顶级域名。攻击者使用Google的公共DNS解析器验证域名是否激活。
结论
Google一直是帕尔马尔进程[5]的坚定参与者,该进程旨在建立共识,限制间谍软件行业造成的危害。我们共同致力于制定国际规范和框架,限制这些强大技术的滥用,保护全球人权。
这些努力建立在早期政府行动的基础上,包括美国政府采取的措施[6]限制政府使用间谍软件,以及首个国际承诺[7]采取类似努力。
致谢
我们要感谢Google Project Zero[8]和Apple安全工程与架构团队在整个调查过程中的合作。
威胁指标(IOCs)
Implant
| bundleId | SHA-256 |
com.apple.assistd | 2a9d21ca07244932939c6c58699448f2147992c1f49cd3bc7d067bd92cb54f3a |
Modules
| bundleId | SHA-256 |
com.apple.springboard | 18394fcc096344e0730e49a0098970b1c53c137f679cff5c7ff8902e651cd8a3 |
com.bitkeep.os | 6eafd742f58db21fbaf5fd7636e6653446df04b4a5c9bca9104e5dfad34f547c |
com.bitpie.wallet | 42cc02cecd65f22a3658354c5a5efa6a6ec3d716c7fbbcd12df1d1b077d2591b |
coin98.crypto.finance.insights | 0dff17e3aa12c4928273c70a2e0a6fff25d3e43c0d1b71056abad34a22b03495 |
org.toshi.distribution | 05b5e4070b3b8a130b12ea96c5526b4615fcae121bb802b1a10c3a7a70f39901 |
exodus-movement.exodus | 10bd8f2f8bb9595664bb9160fbc4136f1d796cb5705c551f7ab8b9b1e658085c |
im.token.app | 91d44c1f62fd863556aac0190cbef3b46abc4cbe880f80c580a1d258f0484c30 |
com.kyrd.krystal.ios | 721b46b43b7084b98e51ab00606f08a6ccd30b23bef5e542088f0b5706a8f780 |
io.metamask.MetaMask | 25a9b004cf61fb251c8d4024a8c7383a86cb30f60aa7d59ca53ce9460fcfb7de |
org.mytonwallet.app | be28b40df919d3fa87ed49e51135a719bd0616c9ac346ea5f20095cb78031ed9 |
app.phantom | 3c297829353778857edfeaed3ceeeca1bf8b60534f1979f7d442a0b03c56e541 |
com.skymavis.Genesis | 499f6b1e012d9bc947eea8e23635dfe6464cd7c9d99eb11d5874bd7b613297b1 |
com.solflare.mobile | d517c3868c5e7808202f53fa78d827a308d94500ae9051db0a62e11f7852e802 |
com.global.wallet.ios | 4dfcf5a71e5a8f27f748ac7fd7760dec0099ce338722215b4a5862b60c5b2bfd |
com.tonhub.app | d371e3bed18ee355438b166bbf3bdaf2e7c6a3af8931181b9649020553b07e7a |
com.jbig.tonkeeper | 023e5fb71923cfa2088b9a48ad8566ff7ac92a99630add0629a5edf4679888de |
com.tronlink.hdwallet | f218068ea943a511b230f2a99991f6d1fbc2ac0aec7c796b261e2a26744929ac |
com.sixdays.trust | 1fb9dedf1de81d387eff4bd5e747f730dd03c440157a66f20fdb5e95f64318c0 |
com.uniswap.mobile | 4dc255504a6c3ea8714ccdc95cc04138dc6c92130887274c8582b4a96ebab4a8 |
Network Indicators
UNC6353 Indicators
| URL delivering Coruna exploit kit |
UNC6691 Indicators
| URLs delivering Coruna exploit kit |
| PLASMAGRID C2 domains |
YARA Rules
rule G_Hunting_Exploit_MapJoinEncoder_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $s1 = /\[[^\]]+\]\.map\(\w\s*=>.{0,15}String\.fromCharCode\(\w\s*\^\s*(\d+)\).{0,15}\.join\(""\)/ $fp1 = "bot|googlebot|crawler|spider|robot|crawling" condition: 1 of ($s*) and not any of ($fp*)}rule G_Backdoor_PLASMAGRID_Strings_1 { meta: author = "Google Threat Intelligence Group (GTIG)" strings: $ = "com.plasma.appruntime.appdiscovery" $ = "com.plasma.appruntime.downloadmanager" $ = "com.plasma.appruntime.hotupdatemanager" $ = "com.plasma.appruntime.modulestore" $ = "com.plasma.appruntime.netconfig" $ = "com.plasma.bundlemapper" $ = "com.plasma.event.upload.serial" $ = "com.plasma.notes.monitor" $ = "com.plasma.photomonitor" $ = "com.plasma.PLProcessStateDetector" $ = "plasma_heartbeat_monitor" $ = "plasma_injection_dispatcher" $ = "plasma_ipc_processor" $ = "plasma_%@.jpg" $ = "/var/mobile/Library/Preferences/com.plasma.photomonitor.plist" $ = "helion_ipc_handler" $ = "PLInjectionStateInfo" $ = "PLExploitationInterface" condition: 1 of them}原文:https://cloud.google.com/blog/topics/threat-intelligence/coruna-powerful-ios-exploit-kit
引用链接
[1] 锁定模式: https://support.apple.com/en-us/105120[2] Google安全浏览: https://safebrowsing.google.com/[3] 三角行动: https://securelist.com/operation-triangulation/109842/[4] BIP39: https://www.blockplate.com/pages/bip-39-wordlist[5] 帕尔马尔进程: https://www.gov.uk/government/publications/the-pall-mall-process-declaration-tackling-the-proliferation-and-irresponsible-use-of-commercial-cyber-intrusion-capabilities[6] 采取的措施: https://www.federalregister.gov/documents/2023/03/30/2023-06730/prohibition-on-use-by-the-united-states-government-of-commercial-spyware-that-poses-risks-to[7] 首个国际承诺: https://2021-2025.state.gov/joint-statement-on-efforts-to-counter-the-proliferation-and-misuse-of-commercial-spyware/[8] Google Project Zero: http://projectzero.google
夜雨聆风