SCO:慢雾:揭露浏览器恶意书签如何盗取你的 Discord Token_DISC

背景

区块链的世界遵循黑暗森林法则,在这个世界我们随时可能遭受到来自不明的外部攻击,作为普通用户不进行作恶,但是了解黑客的作恶的方式是十分必要的。

慢雾安全团队此前发布了区块链黑暗森林自救手册

(https://github.com/slowmist/Blockchain-dark-forest-selfguard-handbook),其中提到了不少关于针对 NFT 项目方的 Discord 进行攻击的手法,为了帮助读者对相关钓鱼方式有更清晰的认知,本文将揭露其中一种钓鱼方法,即通过恶意的书签来盗取项目方 Discord 账号的 Token,用来发布虚假信息等诱导用户访问钓鱼网站,从而盗取用户的数字资产。

钓鱼事件

先来回顾一起 Discord 钓鱼事件:2022 年 3 月 14 日,一则推特称 NFT 项目 Wizard Pass 的 Discord 社区被者入侵,目前已造成 BAYC、Doodles、Clone X 等 NFT 被盗,详情如下:

慢雾:比特浏览器攻击者已将236.27枚ETH转入混币器eXch:9月3日消息,慢雾MistTrack监测显示,比特浏览器攻击者已将236.27枚ETH(约38.6万美元)转入混币器eXch,占被盗资金总额的70.6%。[2023/9/3 13:14:52]

(来源:https://twitter.com/SerpentAU/status/1503232270219431941)

牵出其中一个解读:

(来源:https://twitter.com/sentinelwtf/status/1496293768542429187)

该解读里说的 bookmark 就是浏览器书签,这个书签里的内容可以是一段 JavaScript 恶意代码,当 Discord 用户点击时,恶意 JavaScript 代码就会在用户所在的 Discord 域内执行,盗取 Discord Token,攻击者获得项目方的 Discord Token 后就可以直接自动化接管项目方的 Discord 账户相关权限。

慢雾:共享Apple ID导致资产被盗核心问题是应用没有和设备码绑定:5月19日消息,慢雾首席信息安全官23pds发推表示,针对共享Apple ID导致资产被盗现象,核心问题是应用没有和设备码绑定,目前99%的钱包、交易App等都都存在此类问题,没有绑定就导致数据被拖走或被恶意同步到其他设备导致被运行,攻击者在配合其他手法如社工、爆破等获取的密码,导致资产被盗。23pds提醒用户不要使用共享Apple ID等,同时小心相册截图被上传出现资产损失。[2023/5/19 15:13:08]

背景知识

要理解该事件需要读者有一定的背景知识,现在的浏览器都有自带的书签管理器,在提供便利的同时却也容易被攻击者利用。通过精心构造恶意的钓鱼页面可以让你收藏的书签中插入一段 JavaScript 代码,当受害者点击书签时会以当前浏览器标签页的域进行执行。

以上图为例,受害者打开了 discord.com 官网,并在这个页面点击了之前收藏的恶意的书签“Hello,World!” 从而执行了一个弹窗语句,可以发现执行的源显示的是 discord.com。

慢雾:已冻结部分BitKeep黑客转移资金:12月26日消息,慢雾安全团队在社交媒体上发文表示,正在对 BitKeep 钱包进行深入调查,并已冻结部分黑客转移资金。[2022/12/26 22:08:58]

这里有一个域的概念,浏览器是有同源策略等防护策略的,按理不属于 discord.com 做出的操作不应该在 discord.com 域的页面有响应,但书签却绕过了这个限制。

可以预见书签这么个小功能隐含的安全问题,正常添加书签的方式会明显看到书签网址:

稍微有安全意识的读者应该会直接看到网址信息明显存在问题。

当然如果是一个构造好诱导你拖拽收藏到书签栏到页面呢?可以看到 twitter 链接中的演示视频就是构造了这么个诱导页面:”Drag this to your bookmarked”。

慢雾:Inverse Finance遭遇闪电贷攻击简析:据慢雾安全团队链上情报,Inverse Finance遭遇闪电贷攻击,损失53.2445WBTC和99,976.29USDT。慢雾安全团队以简讯的形式将攻击原理分享如下:

1.攻击者先从AAVE闪电贷借出27,000WBTC,然后存225WBTC到CurveUSDT-WETH-WBTC的池子获得5,375.5个crv3crypto和4,906.7yvCurve-3Crypto,随后攻击者把获得的2个凭证存入Inverse Finance获得245,337.73个存款凭证anYvCrv3Crypto。

2.接下来攻击者在CurveUSDT-WETH-WBTC的池子进行了一次swap,用26,775个WBTC兑换出了75,403,376.18USDT,由于anYvCrv3Crypto的存款凭证使用的价格计算合约除了采用Chainlink的喂价之外还会根据CurveUSDT-WETH-WBTC的池子的WBTC,WETH,USDT的实时余额变化进行计算所以在攻击者进行swap之后anYvCrv3Crypto的价格被拉高从而导致攻击者可以从合约中借出超额的10,133,949.1个DOLA。

3.借贷完DOLA之后攻击者在把第二步获取的75,403,376.18USDT再次swap成26,626.4个WBTC,攻击者在把10,133,949.1DOLAswap成9,881,355个3crv,之后攻击者通过移除3crv的流动性获得10,099,976.2个USDT。

4.最后攻击者把去除流动性的10,000,000个USDTswap成451.0个WBT,归还闪电贷获利离场。

针对该事件,慢雾给出以下防范建议:本次攻击的原因主要在于使用了不安全的预言机来计算LP价格,慢雾安全团队建议可以参考Alpha Finance关于获取公平LP价格的方法。[2022/6/16 4:32:58]

也就是拖着某个链接即可添加到书签栏,只要钓鱼剧本写得足够真实,就很容易让安全意识不足的用户中招。

声音 | 慢雾:EOS假充值红色预警后续:慢雾安全团队今早发布了 EOS 假充值红色预警后,联合 EOSPark 的大数据分析系统持续跟踪和分析发现:从昨日开始,存在十几个帐号利用这类攻击技巧对数字货币交易所、钱包等平台进行持续性攻击,并有被真实攻击情况。慢雾安全团队在此建议各大交易所、钱包、DApp 做好相关防御措施,严格校验发送给自己的转账交易在不可逆的状态下确认交易的执行状态是否为 executed。除此之外,确保以下几点防止其他类型的“假充值”攻击: 1. 判断 action 是否为 transfer 2. 判断合约账号是否为 eosio.token 或其它 token 的官方合约 3. 判断代币名称及精度 4. 判断金额 5. 判断 to 是否是自己平台的充币账号。[2019/3/12]

要实现拖拽即可添加到书签栏只需要构造一个 a 标签,下面是示例代码:

书签在点击时可以像在开发者工具控制台中的代码一样执行,并且会绕过 CSP(Content Security Policy)策略。

读者可能会有疑问,类似 “javascript:()” 这样的链接,在添加进入到浏览器书签栏,浏览器竟然会没有任何的提醒?

笔者这里以谷歌和火狐两款浏览器来进行对比。

使用谷歌浏览器,拖拽添加正常的 URL 链接不会有任何的编辑提醒。

使用谷歌浏览器,拖拽添加恶意链接同样不会有任何的编辑提醒。

使用火狐浏览器如果添加正常链接不会有提醒。

使用火狐浏览器,如果添加恶意链接则会出现一个窗口提醒编辑确认保存。

由此可见在书签添加这方面火狐浏览器的处理安全性更高。

场景演示

演示采用的谷歌浏览器,在用户登录 Web 端 Discord 的前提下,假设受害者在钓鱼页面的指引下添加了恶意书签,在 Discord  Web 端登录时,点击了该书签,触发恶意代码,受害者的 Token 等个人信息便会通过攻击者设置好的 Discord webhook 发送到攻击者的频道上。

下面是演示受害者点击了钓鱼的书签:

下面是演示攻击者编写的 JavaScript 代码获取 Token 等个人信息后,通过 Discord Server 的 webhook 接收到。

笔者补充几点可能会产生疑问的攻击细节:

1. 为什么受害者点了一下就获取了?

通过背景知识我们知道,书签可以插入一段 JavaScript 脚本,有了这个几乎可以做任何事情,包括通过 Discord 封装好的 webpackChunkdiscord_app 前端包进行信息获取,但是为了防止作恶的发生,详细的攻击代码笔者不会给出。

2.  为什么攻击者会选择 Discord webhook 进行接收?

因为 Discord webhook 的格式为

“https://discord.com/api/webhooks/xxxxxx”,直接是 Discord 的主域名,绕过了同源策略等问题,读者可以自行新建一个 Discord webhook 进行测试。

3. 拿到了 Token 又能怎么样?

拿到了 Token 等同于登录了 Discord 账号,可以做登录 Discord 的任何同等操作,比如建立一个 Discord webhook 机器人,在频道里发布公告等虚假消息进行钓鱼。

总结

攻击时刻在发生,针对已经遭受到恶意攻击的用户,建议立刻采取如下行动进行补救:

1. 立刻重置 Discord 账号密码。

2. 重置密码后重新登录该 Discord 账号来刷新 Token,才能让攻击者拿到的 Token 失效。

3. 删除并更换原有的 webhook 链接,因为原有的 webhook 已经泄露。

4. 提高安全意识,检查并删除已添加的恶意书签。

作为用户,重要的是要注意任何添加操作和代码都可能是恶意的,Web 上会有很多的扩展看起来非常友好和灵活。书签不能阻止网络请求,在用户手动触发执行的那一刻,还是需要保持一颗怀疑的心。

本文到这边就结束了,慢雾安全团队将会揭露更多关于黑暗森林的攻击事件,希望能够帮助到更多加密世界的人。

By:耀@慢雾安全团队

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-6:424ms