哈喽,大家好,我是大咪,目前玩 NFT 大概有快 10 个月了,第一次遇到了区块链的黑暗时刻,好在,由于提前有钱包资产隔离的概念,这次损失非常少,但这次的经历,确实让我学到了很多。
作为一个开发者,没想到,也会被区块链的钓鱼手法骗到,从去年入圈开始,就一直非常注重区块链的钱包安全问题,基本上把余弦大大和慢雾团队相关的开源文章都看了一遍,但这次,依然还是中招了。
强烈推荐慢雾团队出品的《区块链黑暗森林自救手册》
这次,恰好是中招了【人性安全-来自“官方”的钓鱼】!
希望本次复盘能对一些没有经历过的朋友有所帮助,有所启发,下面正式开始。
本篇内容会从开始被骗的逐一过程写起,每个步骤,我都写了后续复盘的心得,心得也就是后来觉得不对劲,补充上去的区块链知识点或者一些需要注意的地方,这样也便于阅读。
下面跟随笔者的步伐,来看一看钱包是怎么被骗的。。。
事情发生在 2023年01月25日 。早上爬起来,日常刷刷 dc 的信息,结果刷到 dudu 的 dc 时,发现一则公告,如下(打码一下,保护下 MOD):
公告大意如下:因为是新年,所以要给 dudu 的 holder 们空投新年日历。但是,是先到先得,一共就 100 个名额。
注意,这里由于早上起来头脑还在懵逼的状态,黑客利用了“限额,先到先得”的心理,发出了这样的公告,让人没有空余的时间去思考。
因为看到时间是凌晨 4:00 多发的,我起床看到这条消息是 6:30 多,心想着,2个小时,快点去领应该还能领到,这时丝毫没有意识到这个是黑客的假链接。
复盘心得:
有了这次经历,下次发公告的时候,一定要注意,先看看域名眼熟不眼熟,如果是不眼熟的官方域名,需要注意,当然大部分第一次经历的,可能还是不会意识到这点。
黑客的网址是:https://dudulunar.com/ (大家有NFT和金钱资产的钱包,就不要轻易尝试访问了)
长这样:
看到背景是 dudu ,也没有多想,全站就一个红色的 claim 按钮,和 dc 发的公告又很贴近,于是也没有多想,点!
弹出的钱包界面也很熟悉,是平时 mint 的常用组件:
到这步为止,一切正常。
复盘心得:
基于对临时活动的前提下,或者发现新活动的网站域名长得像官方域名的情况下,可以优先留个心眼,在浏览器上,先按下 F12 (打开浏览器开发者模式),然后查看如下图操作,点【sources】,找到类似 index 这样的 html 页面,如果在开头有这【mirrored .... by HTTrack Website】的字眼,就要注意了,因为这是一款复制已有的网站免费开源软件https://www.httrack.com/,经常被黑客用于复制钓鱼网站来使用,下图所示:
如果是有上图这样的,大概率是钓鱼网站了,也不用做什么后续操作了,直接关闭就好了。不要着急操作,不要 FOMO ,不要贪图小便宜的心理,静待官方后续公告就好了。
回到我后续的操作流程。奇怪的是,点击红色按钮之后,反应并没有那么迅速,于是又点了一遍,过了一阵,小狐狸弹出来一个 opensea 的提示框让签名,大概是下面这样的:
因为是 os 的协议签名,直接让我放松了警惕,想都没想,也没细看,直接拉到最底下,点了 sign ,就签名了。
复盘心得:这步就已经很离谱了,切记,不要相信任何第三方网站的“官方”签名,正是因为有 opensea 做了信任背书,我才会选择信任签名,因为这个操作,metamask是不会给你提示危险签名的,它就是由黑客的网站用技术手段调用到了 opensea 上挂单的动作,触发了小狐狸钱包签名的动作。以后除了 opensea 上触发的签名,其他网站发出的签名动作,一定要三思而后行!
签名和授权是两个概念,签名更像是你在做认证,让程序知道是你,对于结果而言,只有是或者不是。而授权则是你将权限授权给谁,你授权给 opensea,那么 opensea 就能操作你的钱包 NFT 资产。签名不需要花钱,授权一般是和合约交互,所以需要上链,要花 gas 费用。
除此之外,可以看下 opensea 上专门写了一篇关于 seaport 前面请求长什么样子::https://support.opensea.io/hc/zh-cn/articles/4449355421075-%E9%94%AE%E5%85%A5%E7%9A%84%E7%AD%BE%E5%90%8D%E8%AF%B7%E6%B1%82%E6%98%AF%E4%BB%80%E4%B9%88%E6%A0%B7%E7%9A%84-
这里,强烈推荐,陈剑大佬2022年写过的一篇文章,很早之前就有这样的套路了,奈何我没有看到:
实际上背后的原理,就是利用了跨站,调用 opensea 的挂单方法,导致黑客可以 0 元直接转移你的资产。
签名完成后,突然崩出来一个让我授权 NFT 的操作,类似下图,只不过,当时显示的NFT是 【megami】,而不是【pop fighter】:
我此时意识到情况不对了,快速选择了拒绝。
然后接下来,更离谱的弹出来一个资产转移的链上动作,此时才清醒过来,这是上了钓鱼网站了,可以看到即使我点了,小狐狸依然没有提示危险,因为这是一个正常的和链上合约交互的动作:
点击红框的地址蓝字,我们直接复制下来,去 etherscan 上看看(https://etherscan.io/address/0xd13b093eafa3878de27183388fea7d0d2b0abf9e),左上角已经提示了,是有风险的,钓鱼黑客合约地址:
我们进合约看看,可以看到这个方法,就是一个很简单的支付方法,里面啥也没有,意味着,黑客网站通过链接你的钱包,读取了你的钱包所有资产,对这个合约的方法【SecurityUpdate】发起了请求,由于它是 payable 修饰的,相当于是可以直接接受资产:
用人话说,你的资产,全部进了这么一个简单的钓鱼合约,由前端页面发起支付,转账到它的合约地址里,然后他留了一个提现的方法,只能是部署这个合约的人操作。
我们用慢雾团队出的 mistrack 可以追踪一下:https://dashboard.misttrack.io/address/ETH/0xd13b093EAfA3878De27183388Fea7D0D2B0AbF9E
迄今为止,一共收到过 840+ ETH(太尼玛赚钱了。。。)
跳到中国时区,我们看看链上的作案时间,如下图,凌晨居多一些:
还有一个地址转账的图形,我就不放了,大家有兴趣可以自己去网站看看。
回到 NFT 正题,如果你看完了陈剑大佬那篇文章(https://jason.mirror.xyz/9z9cPEU6mLHf0vvvimEFXAcc1J7GCzbomft09XhNIWU),你应该知道,我最后的结果还是被盗走了一个 MEGAMI。因为当时手里只有 MEGAMI 在挂着单,其余只要没有授权挂单过的 NFT ,都平安无事。
来看看链上的数据吧:
上 etherscan,搜自己的钱包,然后点击到 721 这块看转移记录:
能看到详情:
由钓鱼网站钱包地址(https://etherscan.io/address/0x69420e2b4ef22d935a4e2c194bbf3a2f02f27be1):
但凡是 match orders 方法,基本上都是和我中了一样的套路,不论是哪个网站进去的,最终都是利用了 os 订单匹配的原则,比如下面这笔,损失惨重,不仅被顺走了 NFT ,还有 WETH 也被
顺走了:
对于黑客盗取 NFT 来说,他们的资金归集采用的是不同的钱包地址,比如上面这笔交易,和我被盗的交易就不是一个钱包。
总结一句话:钓鱼网站诱导你完成了对 OpenSea 挂单,并且发起了撮合(matchOrders)的签名上链操作。
注意:这里有个不能意料的风险,就是黑客通过网站让你签名,而你不知道签名是否离线保存了,中招了,还是新换个钱包吧,以防万一。
幸运的是,我这个钱包里,只有一个处于正在挂单的,其余的 NFT 都还安好,而 dudu 这次处理最终处理结果是愿意赔偿,因为是由公告发起的,而不是聊天频道。这波还是很欣慰的,格局拉起来了~
这里也要说下对于项目方的 discord 建议,黑客手段频繁发生,很多都是社工手法,而突破点往往都是 dc 管理员的身上, dc 作为社群沉淀入口的,一定要控制好权限问题,必要时,可以缩权来达到防范作用,因为拥有大权限的人越少,黑客入侵的概率相对也要低。
自欺欺人的操作,以为从小狐狸钱包断开网站的链接,就安全了,大错特错。
其实,你仔细看看小狐狸的提示,我们平时链接网站,仅仅是他们能读取到你的地址以及资产而已。这步本身就和链上交互没有太大的相关性,如果拿到了你的私钥或者签名,就算不链接你的钱包,也可以直接操作你的资产。
官网:https://www.pocketuniverse.app/
chrome:https://chrome.google.com/webstore/detail/pocket-universe/gacgndbocaddlemdiaadajmlggabdeod?hl=zh-CN
签名前,会先额外提示资产相关风险:
取消 NFT 授权,目前有两种常用的方式,一个是通过 etherscan ,一个是通过 revoke。
网址:https://etherscan.io/tokenapprovalchecker
资产重要的钱包可以采用硬件钱包,可以将自己的钱包分为几层钱包组,比如重要蓝筹 nft ,用硬件钱包隔离,平时不常操作。
中等高频交易的 nft 单独采用 metamask 。
冲土狗的小额资金,也可以单独新建钱包来使用。
陈剑大佬:
PANews:https://www.panewslab.com/zh/sqarticledetails/uzkkjx4i.html
慢雾团队:https://www.panewslab.com/zh/articledetails/e5oufrll.html
余弦老板:https://twitter.com/evilcos/status/1590289321046990849
好了,以上就是本次被盗的全部复盘,作为一个开发者都没有意识到自己一步步落入黑客的手中,直到看到 setApprove 才意识到自己危险了。更何况,没有编程基础同学的意识。。区块链的安全依然是有门槛的,大家一定要不断学习,不断进步,才能存活下来。
希望这篇内容可以对大家有所帮助,也欢迎随时来推特 @dami 与我交流。