如果觉得我的内容对你有帮助,欢迎关注我的推特账号和小红书账号:飞猪聊web3,获取更多web3的安全知识、基本技能和实用资讯
如果需要更具体、系统、有针对性的教程指导,欢迎大家私聊咨询哦
近日,os用户lazslo_btc在两次错误的操作后损失了自己的7只BAYC,价值超过540ETH,损失将近100万美元。
下面我将结合此案例给大家具体讲解一下,授权中隐含的风险以及到底哪些操作最终导致了被盗事件的发生。
失主涉及被盗的操作一共有8笔,为了方便理解,我以时间顺序从1到8进行编号
单纯从图片上能够获取的信息非常少,所以我们需要点击txn hash(编号前面0x开头的一串数字,每笔交易唯一且不重复)进行查看
交易1
从交易1中,我们可以看出来,失主(尾号39d6)的地址把操作自己持有的BAYC的权限授权给了尾号是E354的地址,使用的方法是set approval for all
接下来我们点击尾号是E354的被授权operator地址查看,发现这个地址是X2Y2市场的deployer合约,这个合约是你要在X2Y2上交易时,必须要授权的一个合约,所以这一步的操作是正常的,失主应该是希望在X2Y2上出售自己的BAYC
交易2
从交易2中,我们可以看出来,失主(尾号39d6)的地址把操作自己持有的BAYC的权限授权给了尾号是6cad的地址,使用的方法是set approval for all
接下来我们点击尾号是6cad的被授权operator地址查看,发现这个地址是0x:deployer 2合约,这个合约是要使用一些比较流行的NFT交易网站(比如sudoswap的点对点交易)要授权的合约,所以这一步的操作也是正常的,结合下文要提到的第4笔交易,失主应该是希望在sudoswap上跟别人交换自己的BAYC
交易3
交易3和交易2授权的内容完全一致,所以,交易3其实是无意义的授权,只是单纯浪费gas费用,这里不展开解释
交易4
在交易4中,出现了一种新的操作,fill order,点击交易的txn hash,进入交易详情,我们可以看到,在这部的操作中,失主用自己的1只真BAYC交换了骗子的一只名为crystal dog的NFT
为了了解这个到底是如何发生的,我们需要阅读一下该笔交易的inputdata数据,看看到底发生了什么,数据中告诉我们,该笔交易涉及两个地址,第一个是骗子地址,我们暂时忽略;
第二个是该笔交易涉及的合约地址(尾号3E44),我们点击进入查看,发现这个合约并未被以太坊标记是哪个合约,但是合约创建者是xmon.eth
这里单纯凭交易数据就无法继续推导了,需要一些相关的背景知识:最近比较火热的AMM NFT交易市场sudoswap其实还有一个V1版本,是一个点对点的NFT场外交易平台
官网地址是:https://otc.sudoswap.xyz/#/
他的创始人是oxmons,底层交易引擎使用的是0x:deployer 2
在这个平台上,买卖双方先自行商定好交易价格,然后卖家创建订单,设定买家为定向销售对象,买家支付商定的价格,就可以完成交易。由于这个平台是买家和卖家私人间的交易,所以平台不会对交换的内容进行任何审核,一切由买卖双方自行商定,这里就隐藏了一个风险,即有些骗子用伪装成蓝筹的NFT来交换他人真正的蓝筹NFT或者ETH,如下图用一文不值的假AZUKI换0.01ETH
这样一来,我们就清楚了,失主是利用sudoswap的V1版本跟骗子进行了一次场外的NFT兑换交易,用自己的真BAYC换了骗子的伪装成BAYC的赝品。那么骗子到底用什么为诱饵让失主同意进行交换呢?我们点击进入名为crystal dog collection的假BAYC合约
发现这是一个9天前创立的,只有10个NFT、3个持有人、14笔交易,以太坊标记未知的新合约
我们利用read contract的方法看一下,失主交换的编号未211的NFT到底是什么样的?
根据获取到的string数据,我们可以找到该NFT在ipfs上的图像地址,是一只特征名为trippy的BAYC,这个特质在蔡叔之前制作的BAYC hot traits图解中位列第三位,拥有该特质的BAYC在os上的地板价格为450ETH。
而失主用来交换的8274的稀有特质是cheetah,此特质在蔡叔制作的BAYC hot traits图解中位列第八位,在os上地板价格为108ETH。
至此,失主第一次被骗的原因应该已经真相大白了,骗子可能是伪装成对BAYC价值一无所知的小白,用高价值的BAYC来交换失主的低价值BAYC,利用失主想要贪便宜快速成交的心理成功完成了第一次行骗。
交易5:
接下来我们看第5笔交易,从交易4到交易5之间有12分钟的时间间隔,中间发生了什么我们不得而知,但是从交易5的txn hash中,我们可以看到,此时失主把操作自己持有的BAYC的权限给了尾号是9BAC的地址,使用的方法仍然是set approval for all
然后我们继续来看一下,9BAC这个地址到底又是何方神圣呢?
交易6、7、8与交易5完全一致,所以后面3笔交易完全没有任何意义,纯属浪费gas,因为交易5已经授权了诈骗合约全部权限,所以在授权之后,诈骗合约立刻转移了失主剩余的6个BAYC。
关于失主第二次被骗的操作,我认为有一种最可能的推测:失主发现被骗想要利用诸如revoke.cash之类取消授权网站来取消授权,但是进入了假的网站,于是本来想要挽回损失的操作反而将损失扩大化了。至于为什么会进入假的网站?很有可能是骗子的同伙埋伏在失主周围,利用失主被骗后急于挽回损失的着急心情,使用话术让失主不加甄别的盲目操作,毕竟失主在交易BAYC的时候也不注意检查对方合约心大之辈啊,结果真的正中骗子下怀,整个BAYC系列被骗子一锅端掉。
整个事件一分析,大家可以看到其实骗术本身并没有特别的技术含量,无非是常见的钓鱼域名、错误授权,完全不是顶级黑客对付不懂代码的普通人的剧本,之所以会上当大多都是由于个人安全意识单薄外加急于获利的心理,让人自动自发走进了坑里。
区块链的暗黑森林中,任何一个操作都可能涉及大额资产损失,大家一定不要忽视资产安全,及早学习、未雨绸缪、防微杜渐,方为上策。
如果觉得我的内容对你有帮助,欢迎关注我的推特账号和小红书账号:飞猪聊web3,获取更多web3的安全知识、基本技能和实用资讯