对近日所见一种新型以太坊诈骗的分析

最近看见了一个“免费”送 NFT ,而且支付的 gas fee 会退还的宣传,我心想天底下哪有这样的好事,结果果然是诈骗,不过这位骗子技巧较为高超,利用了钱包显示的一点缺陷。

诈骗操作

进入骗子的网站 (superrank[dot]org) 后,显示了一个滚动排名的界面,上面是一个滚动屏幕(静态脚本随机摇的,F12 可以看见没有网络通信),旁边有一看就是从网上下载的人头图片,底下还有一个大大的击剑的 logo。

显然,大大的击剑 logo 就是参与对战,我们点一下,让它连接钱包,看看它要干啥。

哦,这骗子有点技术不到家,忘了先读下网络编号,被我一个不讲武德的拿测试网给诈骗了。然后发现这笔交易并没有支出 eth,那么它到底怎么骗到的呢?我们点一下交易细节。

开始分析

Metamask 告诉我们这是一笔授权交易,我们复制一下地址(0x6b3595068778dd592e39a122f4f5a5cf09c90fe2),去主网看看这到底是个啥交易。

  1. 首先我们去 etherscan 看看这个地址是啥。哦,是 SUSHISwap
  2. 然后我们复制一下交易的abi(0x095ea7b3000000000000000000000000aee50786508c90f1543b8724029efc6f735dc8e10000000000000000000000000000000000000001431e0fae6d7217caa0000000),首先截取前 4byte,看一下是调用的啥合约函数。(由于这里已知合约是个 ERC20,我们可以直接查到它调用的是 approve(address,uint256),如果是未知合约,可以用指纹数据库搜索指纹。)
  3. 有了函数指纹,我们可以解码 ABI,得到函数呼叫内容为 approve(000000000000000000000000aee50786508c90f1543b8724029efc6f735dc8e1, 0000000000000000000000000000000000000001431e0fae6d7217caa0000000),我们可以理解这个函数调用为:向 aee50786508c90f1543b8724029efc6f735dc8e1 批准转出 1431e0fae6d7217caa0000000 的这种 ERC20。
  4. 得到目标之后,我们看看这个孙子骗到了多少。打开 etherscan ,看一看。哦大哥你这成果不太行。但是所有转账的大哥给自己埋下了一个长期的隐患,就是一旦充值了他那几种代币,就有可能被他转走

网页内容分析

  1. 首先,我们打开浏览器 dev console,发现这位大割调试用的日志么的删干净,直接在控制台里打出来了检查 Web3,按顺序检查 sushi, usdt, usdc, uni 的 log。
  2. 我们还发现,这位大割忘了换掉原先脚本里的测试用 Infura API key.
  3. 他甚至没删注释
  4. 甚至 approve 目标地址是硬编码在嵌入在首页的 js 里的。

内容总结

这种诈骗利用钱包操作者只关注交易金额而不关心交易具体内容的特点,降低操作者警惕。同时因为 NFT 玩家大概率有大量多种代币,这操作潜在收益相对较高。可惜对方忘了检测钱包使用的网络,被我测试网给骗了。