背景
区块链的世界遵循黑暗森林法则,在这个世界我们随时可能遭受到来自不明的外部攻击,作为普通用户不进行作恶,但是了解黑客的作恶的方式是十分必要的。
慢雾安全团队此前发布了区块链黑暗森林自救手册
,其中提到了不少关于针对NFT项目方的Discord进行攻击的手法,为了帮助读者对相关钓鱼方式有更清晰的认知,本文将揭露其中一种钓鱼方法,即通过恶意的书签来盗取项目方Discord账号的Token,用来发布虚假信息等诱导用户访问钓鱼网站,从而盗取用户的数字资产。
钓鱼事件
先来回顾一起Discord钓鱼事件:2022年3月14日,一则推特称NFT项目WizardPass的Discord社区被者入侵,目前已造成BAYC、Doodles、CloneX等NFT被盗,详情如下:
慢雾:发现BNB Chain上一恶意合约地址,建议用户快速验证并撤销异常授权:8月20日消息,慢雾在推特发文提醒:请用户检查是否已将资产授权到BNB Chain上的一恶意合约地址:0x75117c9158f53998ce8689B64509EFf4FA10AD80。
该恶意合约尚未通过开源进行验证,但反编译显示其存在针对授权资产的任意转账后门。这种类型的后门让用户钱包在很长一段时间内保持正常使用,但当某天转移一笔金额稍大的资产时,它会突然被盗,而链上不会显示任何最近的异常授权。
用户可使用Revoke.cash和Rabby Wallet进行快速验证并撤销异常授权。以下是与上述合约相关的恶意地址:0xE2A178C2C5C4920C1b2B947A35edDb4f8EcBb7dD、0xB88457b62491CBcEc42203672cFcb4269d64c7e。请用户保持警惕。[2023/8/20 18:11:40]
牵出其中一个解读:
慢雾:Uwerx遭受攻击因为接收地址会多销毁掉from地址转账金额1%的代币:金色财经报道,Uwerx遭到攻击,损失约174.78枚ETH,据慢雾分析,根本原因是当接收地址为 uniswapPoolAddress(0x01)时,将会多burn掉from地址的转账金额1%的代币,因此攻击者利用uniswapv2池的skim功能消耗大量WERX代币,然后调用sync函数恶意抬高代币价格,最后反向兑换手中剩余的WERX为ETH以获得利润。据MistTrack分析,黑客初始资金来自Tornadocash转入的10 BNB,接着将10 BNB换成1.3 ETH,并通过Socket跨链到以太坊。目前,被盗资金仍停留在黑客地址0x605...Ce4。[2023/8/2 16:14:10]
该解读里说的bookmark就是浏览器书签,这个书签里的内容可以是一段JavaScript恶意代码,当Discord用户点击时,恶意JavaScript代码就会在用户所在的Discord域内执行,盗取DiscordToken,攻击者获得项目方的DiscordToken后就可以直接自动化接管项目方的Discord账户相关权限。
慢雾:BXH 第一次被盗资金再次转移,BTC 网络余额超 2700 BTC:金色财经报道,10月8日凌晨(UTC+8),慢雾监控到 BXH 第一次被盗资金再次出现异动,经慢雾 MistTrack 分析,异动详情如下:
黑客地址 0x48c9...7d79 将部分资金(213.77 BTCB,5 BNB 和 1 ETH)转移至新地址 0xc01f...2aef,接着将资金兑换为 renBTC 跨链到 BTC 网络,跨链后地址为 1JwQ...u9oU。1JwQ...u9oU 在此次转移中接收到的总资金为 204.12 BTC。截止目前,BXH 第一次被盗事件在 BTC 网络共有 4 个黑客地址,总计余额为 2701.3 BTC,暂未进一步转移。慢雾 MistTrack 将持续监控被盗资金的转移。[2022/10/8 12:49:28]
背景知识
慢雾:ERC721R示例合约存在缺陷,本质上是由于owner权限过大问题:4月12日消息,据@BenWAGMI消息,ERC721R示例合约存在缺陷可导致项目方利用此问题进行RugPull。据慢雾安全团队初步分析,此缺陷本质上是由于owner权限过大问题,在ERC721R示例合约中owner可以通过setRefund Address函数任意设置接收用户退回的NFT地址。
当此退回地址持有目标NFT时,其可以通过调用refund函数不断的进行退款操作从而耗尽用户在合约中锁定的购买资金。且示例合约中存在owner Mint函数,owner可在NFT mint未达总供应量的情况下进行mint。因此ERC721R的实现仍是防君子不防小人。慢雾安全团队建议用户在参与NFTmint时不管项目方是否使用ERC721R都需做好风险评估。[2022/4/12 14:19:58]
要理解该事件需要读者有一定的背景知识,现在的浏览器都有自带的书签管理器,在提供便利的同时却也容易被攻击者利用。通过精心构造恶意的钓鱼页面可以让你收藏的书签中插入一段JavaScript代码,当受害者点击书签时会以当前浏览器标签页的域进行执行。
以上图为例,受害者打开了discord
)();">2Hello,World!3</a>
书签在点击时可以像在开发者工具控制台中的代码一样执行,并且会绕过CSP(ContentSecurityPolicy)策略。
读者可能会有疑问,类似「javascript:()」这样的链接,在添加进入到浏览器书签栏,浏览器竟然会没有任何的提醒?
笔者这里以谷歌和火狐两款浏览器来进行对比。
使用谷歌浏览器,拖拽添加正常的URL链接不会有任何的编辑提醒。
使用谷歌浏览器,拖拽添加恶意链接同样不会有任何的编辑提醒。
使用火狐浏览器如果添加正常链接不会有提醒。
使用火狐浏览器,如果添加恶意链接则会出现一个窗口提醒编辑确认保存。
由此可见在书签添加这方面火狐浏览器的处理安全性更高。
场景演示
演示采用的谷歌浏览器,在用户登录Web端Discord的前提下,假设受害者在钓鱼页面的指引下添加了恶意书签,在DiscordWeb端登录时,点击了该书签,触发恶意代码,受害者的Token等个人信息便会通过攻击者设置好的Discordwebhook发送到攻击者的频道上。
下面是演示受害者点击了钓鱼的书签:
下面是演示攻击者编写的JavaScript代码获取Token等个人信息后,通过DiscordServer的webhook接收到。
笔者补充几点可能会产生疑问的攻击细节:
1.为什么受害者点了一下就获取了?
通过背景知识我们知道,书签可以插入一段JavaScript脚本,有了这个几乎可以做任何事情,包括通过Discord封装好的webpackChunkdiscord_app前端包进行信息获取,但是为了防止作恶的发生,详细的攻击代码笔者不会给出。
2.为什么攻击者会选择Discordwebhook进行接收?
因为Discordwebhook的格式为
「https://discord.com/api/webhooks/xxxxxx」,直接是Discord的主域名,绕过了同源策略等问题,读者可以自行新建一个Discordwebhook进行测试。
3.拿到了Token又能怎么样?
拿到了Token等同于登录了Discord账号,可以做登录Discord的任何同等操作,比如建立一个Discordwebhook机器人,在频道里发布公告等虚假消息进行钓鱼。
总结
攻击时刻在发生,针对已经遭受到恶意攻击的用户,建议立刻采取如下行动进行补救:
1.立刻重置Discord账号密码。
2.重置密码后重新登录该Discord账号来刷新Token,才能让攻击者拿到的Token失效。
3.删除并更换原有的webhook链接,因为原有的webhook已经泄露。
4.提高安全意识,检查并删除已添加的恶意书签。
作为用户,重要的是要注意任何添加操作和代码都可能是恶意的,Web上会有很多的扩展看起来非常友好和灵活。书签不能阻止网络请求,在用户手动触发执行的那一刻,还是需要保持一颗怀疑的心。
本文到这边就结束了,慢雾安全团队将会揭露更多关于黑暗森林的攻击事件,希望能够帮助到更多加密世界的人。?
美国网络安全与基础设施安全局(CISA)和美国联邦调查局(FBI)发布了一份关于朝鲜政府支持的针对区块链公司的网络威胁的警告,以回应上个月发生的RoninBridge黑客事件.
撰文:KyleSamani,MulticoinCapital合伙人 编译:Amber 本文将探讨在投资过程中几乎是最重要的那个环节——「决策」.
作为以太坊升级的关键一环,Layer2扩展解决方案一直备受关注。在近几个月加密市场整体疲软的环境下,Layer2龙头Arbitrum的TVL却逆势增长,根据DefiLlama数据,截至4月28日.
作者|?JackieSingh 编译|白泽研究院 JackieSingh是非营利性技术监督项目的主管,也是Web3.0社区的活跃成员.
点击上方“蓝色字”可关注我们!暴走时评:根据AidforUkraine的通告,以太坊联合创始人VitalikButerin在4月初默默向乌克兰捐赠了价值500万美元的ETH.
随着比特币、以太坊等第一代加密货币网络出现性能、可用性、能源效率方面的问题,开放去中心化网络的愿景蒙上了一层阴霾.