慢雾:空白支票eth_sign钓鱼分析

原文作者:Lisa&Kong

近期,我们发现多起关于eth_sign签名的钓鱼事件。

钓鱼网站1:https://moonbirds-exclusive.com/

当我们连接钱包后并点击Claim后,弹出一个签名申请框,同时MetaMask显示了一个红色提醒警告,而光从这个弹窗上无法辨别要求签名的到底是什么内容。

其实这是一种非常危险的签名类型,基本上就是以太坊的「空白支票」。通过这个钓鱼,子可以使用您的私钥签署任何交易。

除此之外,还有一种钓鱼:在你拒绝上述的sign后,它会在你的MetaMask自动显示另一个签名框,趁你没注意就到你的签名。而看看签名内容,使用了SetApprovalForAll方法,同时Approvedasset?的目标显示为AllofyourNFT,也就是说,一旦你签名,子就可以毫无节制地盗走你的所有NFT。如下:

慢雾:苹果发布可导致任意代码执行的严重漏洞提醒,请及时更新:7月11日消息,慢雾首席信息安全官23pds发推称,近日苹果发布严重漏洞提醒,官方称漏洞CVE-2023-37450可以在用户访问恶意网页时导致在你的设备上任意代码执行,据信这个已经存在被利用的情况,任意代码危害严重,请及时更新。[2023/7/11 10:47:05]

钓鱼网站2:https://dooooodles.org/

我们使用MistTrack来分析下子地址:

0xa594f48e80ffc8240f2f28d375fe4ca5379babc7

通过分析,子多次调用SetApprovalForAll盗取用户资产,子地址目前已收到33个NFT,售出部分后获得超4ETH。

慢雾: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]

回到正题,我们来研究下这种钓鱼方法。首先,我们看看MetaMask官方是如何说明的:

慢雾:攻击者系通过“supply()”函数重入Lendf.Me合约 实现重入攻击:慢雾安全团队发文跟进“DeFi平台Lendf.Me被黑”一事的具体原因及防御建议。文章分析称,通过将交易放在bloxy.info上查看完整交易流程,可发现攻击者对Lendf.Me进行了两次“supply()”函数的调用,但是这两次调用都是独立的,并不是在前一笔“supply()”函数中再次调用“supply()”函数。紧接着,在第二次“supply()”函数的调用过程中,攻击者在他自己的合约中对Lendf.Me的“withdraw()”函数发起调用,最终提现。慢雾安全团队表示,不难分析出,攻击者的“withdraw()”调用是发生在transferFrom函数中,也就是在Lendf.Me通过transferFrom调用用户的“tokensToSend()”钩子函数的时候调用的。很明显,攻击者通过“supply()”函数重入了Lendf.Me合约,造成了重入攻击。[2020/4/19]

也就是说,MetaMask目前有六种签名方法,只有一种方式会出现MetaMask警告,发生在?eth_sign?的签名情况下,原因是eth_sign方法是一种开放式签名方法,它允许对任意Hash进行签名,这意味着它可用于对交易或任何其他数据进行签名,从而构成危险的网络钓鱼风险。

声音 | 慢雾:ETDP钱包连续转移近2000 ETH到Bitstamp交易所,项目方疑似跑路:据慢雾科技反(AML)系统监测显示,自北京时间 12 月 16 日凌晨 2 点开始,ETDP 项目方钱包(地址 0xE1d9C35F…19Dc1C3)连续转移近 2000 ETH 到 Bitstamp 交易所,另有 3800 ETH 分散在 3 个新地址中,未发生进一步动作。慢雾安全团队在此提醒交易所、钱包注意加强地址监控,避免相关恶意资金流入平台。[2019/12/16]

根据MetaMask官方文档说明,eth_sign方法是可以对任意哈希进行签名的,而我们在签署一笔交易时本质上也是对一串哈希进行签名,只不过这中间的编码过程都由MetaMask替我们处理了。我们可以再简单回顾下从编码到交易广播的过程:

在进行交易广播前,MetaMask会获取我们转账的对象、转账的金额、附带的数据,以及MetaMask自动帮我们获取并计算的nonce、gasPrice、gasLimit参数进行RLP编码得到原始交易内容。如果是合约调用,那么to即为合约地址,data即为调用数据。

rlp=require('rlp');

//Usenon-EIP115standard

consttransaction={

nonce:'',

gasPrice:'',

gasLimit:'',

to:'0x',

value:'',

data:'0x'

};

//RLPencode

constrawTransaction=rlp.encode();

随后再对此内容进行keccak256哈希后得到一串bytes32的数据就是所需要我们签名的数据了。

//keccak256encode

constmsgHex=rawTransaction.toString('hex');

constmsgHash=Web3.utils.keccak256('0x'msgHex);

我们使用MetaMask对这串数据签名后就会得到r,s,v值,用这三个值再与nonce/gasPrice/gasLimit/to/value/data进行一次RLP编码即可得到签名后的原始交易内容了,这时候就可以广播发出交易了。

rlp=require('rlp');

consttransaction={

nonce:'',

gasPrice:'',

gasLimit:'',

to:'',

value:'',

data:'',

v:'',

r:'',

s:''

};

//RLPencode

constsignedRawTransaction=rlp.encode();

而如上所述,eth_sign方法可以对任意哈希进行签名,那么自然可以对我们签名后的bytes32数据进行签名。因此攻击者只需要在我们连接DApp后获取我们的地址对我们账户进行分析查询,即可构造出任意数据让我们通过eth_sign进行签名。

这种钓鱼方式对用户会有很强的迷惑性,以往我们碰到的授权类钓鱼在MetaMask会给我直观的展示出攻击者所要我们签名的数据。如下所示,MetaMask展示出了此钓鱼网站诱导用户将NFT授权给恶意地址。

而当攻击者使用eth_sign方法让用户签名时,如下所示,MetaMask展示的只是一串bytes32的哈希。

总结

本文主要介绍eth_sign签名方式的钓鱼手法。虽然在签名时MetaMask会有风险提示,但若结合钓鱼话术干扰,没有技术背景的普通用户很难防范此类钓鱼。建议用户在遇到此类钓鱼时提高警惕,?认准域名,仔细检查签名数据,必要时可以安装安全插件,如:RevokeCash、ScamSniffer等,同时注意插件提醒。

原文链接

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

MEXCNFT:兔子社区近期将上线游戏和NFT盲盒

兔子社区近期将上线游戏和NFT盲盒据相关消息,随着火币的移主迎来新机遇昨日HT大涨。也带动了火币链的龙头DeFi项目。兔子社区是火币链最大的社区!社区2年多专注DeFi生态建设.

[0:15ms0-4:3ms