黄金加密学
菜单

Fomo 恶意书签钓鱼分析:未输入私钥,登录凭证仍可能成为钱包失守入口

原文发布时间:2026 年 10 月 8 日 19:00(UTC+8)。作者:Yao、Lisa;编辑:77。以下依据慢雾安全团队当时披露的页面、脚本分析及资金追踪结果整理。

一名 Fomo 用户向慢雾反馈:他在网页端查看 MOONLET 代币详情时,点击页面展示的项目官网入口,进入 voltage.family,并按要求完成所谓“人机验证”,随后发现账户内约 4.8 万美元资产被转走。用户称,过程中没有连接钱包、进行链上授权,也没有输入助记词或私钥;他通过 Google 登录 Fomo,账号未开启二次验证。

慢雾分析认为,这次钓鱼的核心不是诱导用户交出助记词,而是让用户在已登录的 Fomo 页面执行恶意浏览器书签,读取登录令牌和钱包相关本地数据。脚本具备凭证采集与外传能力,但攻击者最终如何完成资产转移,仍需服务端日志和链上记录进一步确认。

从“识别动物”到执行恶意脚本

据用户补充的截图,钓鱼入口来自 Fomo 的 MOONLET 代币详情页所展示的外部官网链接。

进入钓鱼站点的 /app 页面后,用户会看到九个图标。页面要求找出“四条腿的动物”,将图标拖到浏览器书签栏,再连续点击该书签三次。最终添加的书签名为 Triple click to verify,保存的并非网页地址,而是以 javascript: 开头的代码,即 bookmarklet。

这种书签被点击时,会在当前页面的上下文中执行代码。攻击者的目标,是诱导用户回到已登录的 Fomo 页面运行脚本。

慢雾发现,选择哪个动物并不影响结果。fomo-track.js 会读取页面内嵌代码,替换访客标识,并将所有相关图标链接反复改写为同一段恶意书签代码。所谓“识别动物”,只是投递代码的借口。

验证后的 /app/live 页面继续模仿交易终端,但界面注明市场数据为模拟数据,连接钱包按钮也只是弹出提示。这些页面主要用于增强钓鱼站点的可信度。

信任边界在哪里被突破

恶意书签压缩后有八千多字符,先以 location.hostname.includes("fomo.family") 判断当前主机名,再决定是否继续执行。

这里是字符串包含判断,并非严格域名匹配,不能理解为脚本只会在 Fomo 的合法域名及子域中运行。同时,单纯打开钓鱼站点,不等于已经执行后续采集逻辑;脚本需要在符合条件的页面上下文中运行,才能读取该页面可访问的存储。

其采集范围包括:

  • localStorage 与 sessionStorage:按 privy、wallet、share、secret、seed、mnemon、turnkey、dynamic、fomo、mfa 等关键词筛选;键名未命中时,还会检查值的前 300 个字符。命中数据最多保留 4000 个字符。
  • IndexedDB:枚举当前上下文可访问的数据库和 object store,通过 getAll() 读取记录;这一采集流程设置了 4 秒超时。
  • 登录令牌:优先查找 privy:token 和 privy:refresh_token,并处理 JSON 中可能存在的 token 或 accessToken 字段。固定键名未找到时,再扩大搜索范围,最后尝试提取以 eyJ 开头的疑似 JWT 片段;这种兜底提取不保证结果有效。

在嵌入式钱包场景中,登录凭证与本地钱包数据可能涉及钱包访问、恢复及密钥材料。泄露后,攻击者可能借此进一步控制钱包、导出私钥或发起交易。但就本次披露而言,这些是风险路径,不能据此断定实际转账采用了哪一种方式。

TOTP 注册逻辑存在,但不能据此认定 MFA 被接管

脚本取得访问令牌后,会携带 Bearer 令牌、Privy 应用 ID 和客户端 ID,请求 Privy 的 /users/me 接口,读取 mfa_methods 或 mfaMethods。遇到 401 时,代码还包含使用刷新令牌请求 /sessions、取得新访问令牌后重试的逻辑。

一个关键细节是:只有返回的 MFA 方法数组非空,也就是账号已经绑定至少一种二次验证方式时,脚本才会执行后续 MFA 分支。

该分支会创建一个 4×4 像素、透明度为 0.01 的 iframe,加载 Privy 的嵌入式钱包页面,通过 postMessage 尝试初始化 TOTP 注册。如果响应包含 secret 或 totpSecret,脚本会按 30 秒时间步长、HMAC-SHA1 和动态截断计算六位验证码,再提交注册请求,意图使用攻击者掌握的密钥参与账户验证。

不过,初始化返回密钥不代表服务端已经完成绑定;代码将部分包含 already、exist、enrolled、duplicate 的错误视为可继续处理,也不能证明新密钥生效。

用户称其账号原先未开启二次验证,因此慢雾判断,这一分支很可能没有触发。无论该分支是否执行,本地存储和 IndexedDB 数据的采集、外传仍可独立进行。

数据外传能证明什么,不能证明什么

脚本将采集结果分为 ls、idb 和 mfa 三部分,进行 base64url 编码。编码结果超过 11000 个字符时,会先删减 IndexedDB 记录;若仍超限,再将本地存储部分缩减为三个关键字段。代码另设 20 秒兜底发送机制。

外传目标为 noisy-heart-5856[.]zmfkc29[.]workers[.]dev。发送方式包括取得 TOTP 初始化密钥后通过 fetch 提前发送,以及通过页面跳转把访问令牌、刷新令牌、采集数据和保留的 TOTP 密钥放入 URL 参数。

慢雾对该地址进行非破坏性测试时,根目录、未知路径及携带凭证参数的请求均返回 302,并跳回钓鱼站点;POST /visit 返回 204。这与“接收数据后将用户送回钓鱼页面”的设计相符,但仅凭响应,无法确认服务端实际保存了数据。

样本注释还提到 tracker、Cloudflare Worker、后台面板与 Telegram 的传递链路。慢雾明确指出,这只是样本作者留下的线索,尚无后台面板或 Telegram 侧证据支持。

资金追踪:用户估算损失与具体转出记录应分开看

用户反馈的损失约为 4.8 万美元。根据受害者提供的信息,慢雾列出的具体转出金额为 45,106.85 USDC,分三次提现至地址:

D783JqupQ2FYhkxUfGEd1gaFEoAJDXRX1NEb4aVH2hZ6

这两个数字分别是用户的概括性反馈与具体 USDC 转出记录,不宜混为同一统计口径。

据慢雾使用 MistTrack 的分析,该地址自 9 月 17 日开始活跃,在受害者资金进入前,已有较频繁的 USDC 与 SOL 兑换。慢雾据此推测可能存在其他受害者,但这仍是推测。

原文记录的该地址整体资金行为包括:

  • 多数兑换通过 Jupiter Aggregator 完成,随后向多个中间地址拆分转出 SOL 或 USDC。
  • 通过 Relay.link 跨链,例如将 0.6、0.59 和 0.29 SOL 分别转换为 0.024、0.025 和 0.012 ETH,进入同一 Ethereum 地址;另有 0.29 SOL 转换为 0.00039 BTC。
  • 接收通过 deBridge 跨链转入的资金,来源包括 Robinhood 链上的 USDG 及 BNB Chain 上的 USDC。
  • 向 Privacy Cash Pool 累计转入 1568.33 SOL,原文将其列为该地址最主要的洗钱出口。
  • 部分资金流向 Stake、Winna 相关地址,包括向 Winna deposit 地址转入 11.34 SOL 和 1,500 USDC,以及从 Winna hot wallet 接收 7,199.81 USDC。

上述记录描述的是该地址的整体资金活动,不能全部归为本次受害者资金的去向,也不能单凭这些流向确定每笔资金的来源。

用户与项目方应关注的防线

对用户而言,正常的人机验证不需要把网页图标拖入书签栏,再到钱包或交易页面点击执行。遇到这类要求,应停止操作,并检查、删除来历不明的 javascript: 书签,为重要账号开启平台支持的多因素验证。

如果已经执行可疑书签,应从可信设备访问官方渠道,优先撤销异常会话和相关授权,检查并移除陌生验证器,联系平台协助处理。通过 Google 等第三方身份登录的用户,也应检查对应身份账号的安全状态。不要只依赖修改密码:已有会话与刷新令牌是否同步失效,取决于平台实际机制。

若有证据表明助记词或私钥泄露,应使用全新生成的钱包转移剩余资产,并保留可疑页面地址、书签内容、操作时间及交易记录。

对项目方而言,MFA 新增、替换、恢复及资金转移等敏感操作,应具备独立验证与风控要求,避免仅凭已有会话完成安全设置变更。同时,应提供会话查看和撤销入口,减少客户端长期有效凭证的暴露,加强外链审查,并对异常设备、来源和 MFA 变更及时告警。

本次事件揭示的信任边界是:没有输入私钥、没有主动签署链上授权,并不等于钱包访问凭证没有暴露。 已登录页面中执行的陌生代码,同样可能危及嵌入式钱包;但凭证是否被实际重放、资产究竟通过何种操作转出,仍须进一步核实。

已披露的风险指标

以下地址已去活化,仅供排查,不应访问:

  • 钓鱼页面:hxxps://voltage[.]family/app
  • 模拟终端:hxxps://voltage[.]family/app/live
  • 数据外传:noisy-heart-5856[.]zmfkc29[.]workers[.]dev

来源:慢雾《威胁情报|针对 Fomo 用户的恶意书签钓鱼攻击分析》。

延伸阅读