而本次会引用资安团队慢雾的概念,和读者说明 Discord Token 的漏洞,并且揭露骇客如何利用浏览器的恶意书签中盗取用户的 Discord Token。
使用浏览器的恶意书签钓鱼,盗取Discord Token
时间倒转到 2022 年,一则在 X 关于 NFT 专案 Wizard Pass 的 Discord 群组被骇客入侵,造成 BAYC、Doodles、Clone X 等 NFT 被盗取。
而贴文出来后,底下有人回复
回复里说到:「Bookmark 是浏览器(如 Google Chrome)中的书签,书签内容可以包含 JavaScript 程式码。当 Discord 用户点击后,恶意程式会在 Discord 上执行,盗取 Token。骇客取得 Token 后,便能轻易控制专案的 Discord 帐户及权限。」
慢雾实际拆解案例
实现这个功能只需要建立一个 a 标签。以下是范例程式码:
点击书签时可以像在网页后台程式码一样执行,还会绕过内容安全策略(Content Security Policy)。
利用 Google 和 FireFox 浏览器进行对比
左边是拖曳正常的 URL 网址变成书签时,浏览器不会跳出任何编辑提醒。
而右边是拖曳恶意网址也同样不会提醒。
那 FireFox 呢?
左边是拖曳正常的 URL 网址和 Google 浏览器相同,也不会跳出任何编辑提醒。
反倒右边,是拖曳恶意网址时,FireFox竟会跳出提醒,让用户确认。
代表 FireFox 针对添加书签这方面安全性较高。
慢雾使用 Google 浏览器示范,假设使用者已登入网页版 Discord,并在钓鱼网站引导下加入恶意书签。
当他点击书签后,就会触发恶意程式码,使用者的 Token 等个资会透过骇客设定的 Discord webhook ,再传送到骇客的频道。
补充可能让人产生疑问的攻击细节
- 为什么受害者点一下就中招?
综合上述可得知,书签可以插入一段 JavaScript 程式码,这几乎可以做任何事情,包括透过 Discord 的 webpackChunkdiscord_app 前端程式码模组来获取资讯。不过,为了避免恶意行为,详细的攻击程式码团队不会提供。 - 为什么攻击者会选择用 Discord webhook 接收资料?因为 Discord webhook 的格式为https://discord.com/api/webhooks/xxxxxx,直接使用 Discord 的主域名,这样可以绕过同源政策等问题。读者可以自行建立一个 Discord webhook 测试看看。
- 拿到 Token 之后能做什么?
拿到 Token 就等于登入了 Discord 帐号,也就是能以登入状态做任何事,像是建立 Discord webhook 机器人,在频道里发布公告或假消息进行钓鱼攻击。
建议受害者应立刻采取以下行动补救
- 立刻重设 Discord 帐号密码。
- 重设密码后,重新登入 Discord 并刷新 Token,这样骇客手上的 Token 才会失效。
- 删除并更换原有的 webhook 连结,因为旧的 webhook 已经外泄。
- 提高安全意识,检查可疑书签并删除已加入的恶意书签。
而如果对慢雾针对区块链钓鱼诈骗等资安问题感到有兴趣,并且想从技术出发的读者,可以参考慢雾的「区块链黑暗森林自救手册。」
我们也必须保持警觉,谨慎使用或添加任何的程式码,以及来路不明的连结。网路上有许多看起来很方便且实用的扩充功能,但书签无法拦截恶意行为,因此每次手动执行时,都应该保持谨慎,以免遭到骇客入侵。