区块链技术资源分享
追寻中本聪先生的脚步

防止nft被盗以太坊-Premint合约授权盗nft-合约交互方法@白皮袄日记@0xAA科学家@web3教学@慢雾科技

Premint 网站都能被黑,这其实是出乎我意料的,说明现在黑客的技术真是越来越强大了,所以在Web3黑暗森林里,最好还是学点基本的防身术。

首先,最最基本的,得先学会使用小狐狸,小狐狸每次操作都会显示交互的合约、交互方法、花费的Gas以及花费的eth value,你可以不会看合约代码,但是基本的交互细节,以及区块浏览器的使用,这种真的是最基本的了,假如你连这些都不愿意去学,我只是说被骗是你命中一劫,逃不过的。

时至今天,我发现还有很多玩家都不会看区块浏览器,这是很不应该的,这东西一开始不会看是很正常的,但是看久了用多了,都不需要教程,自然而然的就明白了,不能因为一开始看不懂就不去学。而且区块浏览器看多了,你会开始掌握最基本的链上分析能力,一个NFT和一个代币的筹码分布是怎样的,团队有没有作恶等等,再比如之前的Hashflow 奥德赛跨链交易量前100名奖励HFT的比赛,你要是精通浏览器,你甚至可以知道多少跨链金额可以让你稳稳进入前100,这些都是多学多用的好处。

再说回小狐狸交互这块,每次操作前,首先先看花费的eth value是不是与你预期的一致,比如有些项目说是freemint,结果要你0.1eth,这不是妥妥的骗局吗?再看交互的方法,set approve 和 set approve all 这种方法一般是授权某个NFT或者某个ERC20代币,遇到授权就要格外小心了,一般什么项目才要你的授权,需要转移你资产的项目才要授权,比如opensea你不给授权它怎么把你的NFT卖给对方,比如DEFI,你不给授权,没法Swap和借贷,那么今天这个premint,它就是个抽奖网站,逻辑上来说是不可能要你的NFT授权的,就算卖Pass卡也是要ETH而不是授权。

学会看交互方法和eth value,Dis里的众多骗局也骗不到你了,他们要么想要授权,要么想要你的eth,再不济要你输入私钥和助记词,如果这也能被骗,那只能说是买教训了。

看完交互的eth value和交互方法后,如果遇到令人感到奇怪的操作,建议去看看交互的合约,看看这个合约的transcation,合约一般都在干嘛,所以说还得先学会看区块浏览器。最后看看Gas value,Gas value因为跟项目方没啥关系,所以基本不会作恶,只要花费的Gas你觉得能接受就行,一般没啥问题。

最后说说签名,签名这块是不需要Gas操作的,在浏览器上也看不出来,有时候有人说签名会导致资产被盗,但是我不太相信,因为没有走授权这部需要Gas的操作,所以基本上的签名,我也会大概看一下签名信息,还是小心驶得万年船,如果真给我遇到了签名导致资产被盗的案例,我再来复盘一下原理。

以前我刚玩链上,因为很多东西不懂,又怕黑客偷钱,特别刚进币圈的时候还挺穷的,所以有时候主钱包都不敢连接网站,怕被盗,但是后来随着掌握的知识增加,开始明白很多操作的原理,在链上操作也不担心被盗了,至今也没有一次被盗的案例,想要不被盗,上面我说的东西务必掌握,要是实在不放心,大额放头部交易所是最安全的。

https://weibo.com/5901325826/LCJ7QymYv

回答下粉丝关于授权被盗的相关问题:
1. 只能转走这条链授权了的erc20代币,没授权的币和nft没法转走。
2. NFT(ERC721)的ApproveForAll授权(批量授权),黑客只能盗走该系列下你的NFT,没授权的其他系列NFT和ERC20代币都不会丢。
3. ETH不是erc20代币,没法骗授权。

一般要是钱包里的eth,代币,还有NFT一起丢了的情况,属于私钥丢失,不是被骗授权。

@0xAA科学家

https://weibo.com/1794561274/LCL1Dz5Jo

Premint 恶意代码注入攻击细节分析

本文来自慢雾区伙伴 Scam Sniffer 的投稿,具体分析如下:

攻击细节

打开任意 Premint 项目页面,可以看到有个 cdn.min.js 注入到了页面中,看调用栈该 js 是由 [boomerang.min.js](https://s3-redwood-labs.premint.xyz/theme/js/boomerang.min.js) 注入,目前该 s3-redwood-labs-premint-xyz.com 域名已经停止解析,无法正常访问了。

640

查询 Whois,该域名在 2022-07-16 注册于 Tucows Domains Inc:

640-9

打开 virustotal.com 可以看到该域名之前曾解析到 CloudFlare:

640-10

打开源代码可以看到 boomerang.min.js 是 Premint 用到的一个 UI 库:tucaod.com@区块链神吐槽

640-11

该 js 是在 s3-redwood-labs.premint.xyz 域名下,猜测:

  • 上传文件接口有漏洞可以上传任意文件到任意 Path (比较常见的 Web 漏洞)
  • 黑客拿到了他们这个 Amazon S3 的权限,从而可以注入恶意代码
  • 这个第三方库被供应链攻击污染了

把 boomerang.min.js 代码下载下来,前面都是正常的代码,但是末尾有一段经过加密的代码:

640-12

这段代码负责把代码 s3-redwood-labs-premint-xyz.com/cdn.min.js 注入到页面。

恶意代码 cdn.min.js

640-13

图片

图片

根据代码内容,可以大致看到有通过调用 dappradar.com 的接口来查询用户的 NFT 资产列表(此前我们也有看到恶意网站通过 Debank,Opensea 的 API 来查询用户资产等)。

如果用户持有相关 NFT 资产:

640-14

图片

恶意代码会以 Two-step wallet 验证的借口,发起 setApprovalForAll 让用户授权给他们后端接口返回的地址(攻击者一般为了提高封禁成本,基本上会分流并且每个地址控制在 200 个交易内)。

如果用户点了 Approve,攻击者还会调用监测代码通知自己有人点击了:

640-15

如果当用户地址没有 NFT 资产时,它还会尝试直接发起转移钱包里的 ETH 的资产请求:

640-16

另外这种代码变量名加密成 _0xd289 _0x 开头的方式,我们曾经在 play-otherside.org,thesaudisnfts.xyz 这些钓鱼网站也见到过。

根据用户资产发起 setApprovalForAll 或者直接转移 ETH,并且阻止用户使用开发者工具 debug。

预防方式

640-17

那么作为普通用户如何预防?现阶段 MetaMask 对 ERC 721 的 setApprovalForAll 的风险提示,远没有 ERC20 的 Approve 做得好。

640-18

即使很多新用户无法感知到这个行为的风险,但我们作为普通用户看到带 Approve 之类的交易一定要仔细打开授权给相关地址,看看这些地址最近的交易是否异常(比如清一色的 safeTransferFrom),避免误授权!

这种攻击和上次 Etherscan 上 Coinzilla 利用广告注入恶意的攻击方式挺相似的,那么在技术上有没有可能预防?

640-19

理论上如果已知一些恶意 js 代码的行为和特征:

  • 比如说代码的加密方式
  • 恶意代码关键特征
  • 代码会反 debug
  • 会调用 opensea, debank, dappradar 等 API 查询用户资产

根据这些恶意代码的行为特征库,那么我们可以尝试在客户端网页发起交易前,检测页面有没有包含已知恶意特征的代码来探测风险,或者直接更简单一点,对常见的网站设立白名单机制,不是交易类网站发起授权,给到足够的风险提醒等。

接下来 Scam Sniffer 和慢雾安全团队也会尝试探索一下如何在客户端来预防此类的攻击发生!

Ps. 感谢作者 Scam Sniffer 的精彩分析

慢雾科技

微信号
SlowMist
功能介绍
慢雾科技是一家专注区块链生态安全的公司,成立于2018年初,总部位于厦门,主要通过“威胁发现到威胁防御一体化因地制宜的安全解决方案”服务了全球许多头部或知名的项目,已有商业客户上千家,客户分布在十几个主要国家与地区。

https://mp.weixin.qq.com/s/MCfUYiTKuOlZpMKj9jzDrQ

分享到:更多 ()

来评论吐槽 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

快手号:神吐槽shentucao

交易所地址更多手机免费挖矿APP