条条大路通手机:一条统计脚本+三条现成利用链条,获取iPhone里的全部秘密

导语:法国 Sekoia 的研究员最初只是在乌克兰一家天然气公司网站上看到一段多余的脚本注入。顺着这条线往下扒,他们发现的不是一次网站被黑,而是一条从统计服务直通手机的数据通道——APT29 只用早就修好的老漏洞,在上万个网站埋了整整一周。

Poisoned Source 行动示意图

图:The Hacker News 配图,Poisoned Source 行动中投毒的统计脚本与受害者终端

APT29 水坑行动攻击链总览

图:Sekoia TDR 报告中的攻击链总览

三条路,一个出口

法国 Sekoia 的威胁检测与研究团队在 2026 年 10 月中旬发现这批活动。顺着最初那段注入代码往下挖,攻击者的三条入口逐渐清晰:直接改合法网站的模板、注册仿冒域名做中间人反代、以及最狠的一手——投毒第三方服务。

第三条路是乌克兰的网页统计服务 Plerdy SEO Tracker。8 月 27 日到 9 月 3 日,整整一周,攻击者在 a.plerdy[.]com/public/js/click/main.js 里塞进自己的脚本,这个脚本被成千上万家乌克兰网站加载,其中就包括军队、特种部队、弹道与无人机相关机构的站点。

第二条路更有意思:america250[.]holiday 反代美国独立 250 周年官方项目 america250.org;theowo[.]club 反代伦敦老战争大臣大楼里的 Raffles London at The OWO 酒店——选这家酒店,是因为它紧挨着英国国防部和唐宁街 10 号,而泽连斯基 10 月 14 日访英时正住在那里。

2.3MB 的障眼法

三条路最终都指向同一个加载器,攻击者管它叫 UltimateFingerprinter。

这个脚本干的第一件事是藏:文件名 5b4c8fea5cbcee273e8d830f52-temfp.js 看着像随机串,文件里 98% 是压缩过的 AngularJS 库,真正的逻辑只占 2.3MB 里的零头。Sekoia 研究员在报告里把这个手法说得很直白——其中一个目的,可能是把大模型的上下文窗口撑爆,让自动化分析读不动;另一个目的是让这段代码看起来像正经的前端库。

它确实在收集指纹:61 个采集器、394 个字段,canvas、webgl、字体、传感器、电池、USB、NFC 一样不落。但这些指纹几乎不影响利用投递——真正能挡住投递的只有三个字段:屏幕宽高不靠谱、触点数为 0。剩下的判断全看系统版本。

指纹 POST 到带随机 nonce 的接口,服务端判断完就把对应的利用代码当脚本直接下发执行,全程不需要用户点击任何东西。

Plerdy 脚本投毒与利用链投递流程

图:Sekoia TDR 报告中的投递与利用链流程

三条链,零个 0day

最扎眼的一点:三条链用的全是已修补的老漏洞,没有一个能打全补丁的机器。系统是干净更新的,这套攻击对你无效。

iOS 16.7 那条(Class A)用 CVE-2025-43529 拿渲染进程 RCE,再用 CVE-2024-27834 绕过 PAC——苹果 Silicon 上控制流指针带签名,没这一步,伪造函数指针只会让进程崩。拿到读写后它去各个 App 的沙盒容器里捞 Cookies.binarycookies,Safari 之外的 App Cookie 也能偷。攻击者还留了个重放保护 cookie VDGH_TOKEN_REF,写的是 1 天过期,实际算出来 1 分钟就失效,形同虚设。

iOS 18.5 那条(Class B)就是完整的 DarkSword 链:CVE-2025-43529 拿 RCE,CVE-2026-20700 破 PAC,CVE-2025-14174 与 CVE-2025-43510 逃沙箱,CVE-2025-43520 拿内核读写提权。

Android 那条(Class C)打 Chrome 139 到 145,唯独跳过 143,原因不明。CVE-2026-3910 打渲染进程,CVE-2025-27038 打 Adreno 显卡驱动逃沙箱。最后的 AndroSnitch 专收 Chrome 的 Cookies、Login Data、History 和 WifiConfigStore.xml 里的 Wi-Fi 密码。有意思的是,利用脚本里埋了个设备检查:一旦识别出三星 Galaxy S25 Ultra(SM-S938B)就直接停手。

还原出的 Coruna 与 DarkSword 利用链

图:Sekoia TDR 还原出的 Coruna 与 DarkSword 利用链及覆盖版本

搬空一台 iPhone 要什么

Class B 的后渗透载荷基本等于把手机翻一遍:短信与 iMessage(sms.db)、邮件索引、语音信箱、WhatsApp 和 Telegram 的数据库、钥匙串里的密码与令牌、Accounts3.sqlite 里的账号凭据、wifi_passwords.txt 里的 Wi-Fi 密码,外加通讯录、通话记录、日历、备忘录、Safari 历史与 Cookie、照片、Apple 健康数据、iCloud Drive,以及 locationd 和 routined 里的位置缓存。

三条链的数据最后都 POST 到 ad.starx-net[.]com:8881/telemetry/v12。全程不建立持久化——这一次拿走就撤,不留在盘上。

为什么是 APT29

Sekoia 的判断是中等偏高置信度:受牵连国家的 CERT 反馈,某被投毒网站后端还留着 2025 年一次 APT29 归因活动的痕迹;与 Google TAG 核对后发现,这次的框架与 2024 年 APT29 打蒙古政府网站的那次高度相似,连目标(Cookie)都一样,而 2024 那次用的就是 NSO Group、Intellexa 这类商业监控厂商的同款 n-day。

最有意思的破绽在版本过滤:Class A 的投递主机只认 iOS 16.7/16.7.10,但同一条链实际能打 16.0 到 17.4。攻击者是直接把买来的利用链塞进投递流程,连版本判断都没改。

报告结论里那句判断值得抄下来:商业监控厂商的打包利用链被国家级行为体反复白嫖,门槛和成本都在往下掉。

现在该做什么

  • 打补丁,这是唯一的硬道理。三条链全是 n-day,厂商补丁一到你就是安全的;受影响面是 iOS 16.0-17.4、18.4-18.7 与 Chrome 139-145(143 除外)。
  • 把老统计标签当成投毒面。DeadTag 网络有 660 多个过期重注册域名藏在老广告与统计标签里,Zimperium 统计到 2026 年 10 月仍有 608 个域名在投递 Coruna 家族代码——你的网站自己可能没被黑,但第三方脚本会被。
  • 在终端侧布控:static.flux-telemetry[.]com、edge-ord.clouds-stacks[.]com、ad.starx-net[.]com:8881、ads-it-assets[.]com、cdn.adv-static[.]com、wpvortex-mod[.]com、assets-int[.]com 这些投递与外传域名值得进黑名单;Sekoia 正与各国 CERT 协同处置水坑基础设施。
  • 别把”页面正常打开”当安全。这套利用不跳转、不弹窗、不下载 App,页面照常显示,数据已经在回传。

结语

Poisoned Source 没有 0day,没有新漏洞,手法全是公开的老套路。但它把水坑攻击做成了工业级:三条入口、一个加载器、三条现成利用链、一个统一的回收端点。而它真正暴露的问题不是苹果或谷歌的补丁速度,是别人的漏洞可以拿来直接用,用完就走。

版权声明:本文由华盟网原创发布,保留所有权利。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容