文/Lisa&Kong
近期,我们发现多起关于eth_sign签名的钓鱼事件。
钓鱼网站1:https://moonbirds-exclusive.com/
当我们连接钱包后并点击Claim后,弹出一个签名申请框,同时MetaMask显示了一个红色提醒警告,而光从这个弹窗上无法辨别要求签名的到底是什么内容。
其实这是一种非常危险的签名类型,基本上就是以太坊的“空白支票”。通过这个钓鱼,子可以使用您的私钥签署任何交易。
除此之外,还有一种钓鱼:在你拒绝上述的sign后,它会在你的MetaMask自动显示另一个签名框,趁你没注意就到你的签名。而看看签名内容,使用了SetApprovalForAll方法,同时Approvedasset的目标显示为AllofyourNFT,也就是说,一旦你签名,子就可以毫无节制地盗走你的所有NFT。如下:
慢雾:Transit Swap黑客攻击交易被抢跑,套利机器人获利超100万美元:10月1日消息,据慢雾安全团队情报,Transit Swap 黑客转移用户 BSC 链 BUSD 资产时被套利机器人抢跑,区块高度为21816885,获利107万BUSD。套利机器人相关地址列表如下:0xa957...70d2、0x90b5...8ff4、0xcfb0...7ac7、
截止到目前,在各方的共同努力下,黑客已将 70% 左右的被盗资产退还到Transit Swap开发者地址,建议套利机器人所属人同样通过service@transit.finance或链上地址与Transit Swap取得联系,共同将此次被盗事件的受害用户损失降低到最小。[2022/10/2 18:37:44]
钓鱼网站2:https://dooooodles.org/
慢雾:GenomesDAO被黑简析:据慢雾区hacktivist消息,MATIC上@GenomesDAO项目遭受黑客攻击,导致其LPSTAKING合约中资金被非预期的取出。慢雾安全团队进行分析有以下原因:
1.由于GenomesDAO的LPSTAKING合约的initialized函数公开可调用且无权限与不可能重复初始化限制,攻击者利用initialized函数将合约的stakingToken设置为攻击者创建的虚假LP代币。
2.随后攻击者通过stake函数进行虚假LP代币的抵押操作,以获得大量的LPSTAKING抵押凭证。
3.获得凭证后再次通过initialized函数将合约的stakingToken设置为原先真是的LP代币,随后通过withdraw函数销毁LPSTAKING凭证获取合约中真实的LP抵押物。
4.最后将LP发送至DEX中移除流动性获利。
本次事件是因为GenomesDAO的LPSTAKING合约可被任意重复初始化设置关键参数而导致合约中的抵押物被恶意耗尽。[2022/8/7 12:07:06]
慢雾:Inverse Finance遭遇闪电贷攻击简析:据慢雾安全团队链上情报,Inverse Finance遭遇闪电贷攻击,损失53.2445WBTC和99,976.29USDT。慢雾安全团队以简讯的形式将攻击原理分享如下:
1.攻击者先从AAVE闪电贷借出27,000WBTC,然后存225WBTC到CurveUSDT-WETH-WBTC的池子获得5,375.5个crv3crypto和4,906.7yvCurve-3Crypto,随后攻击者把获得的2个凭证存入Inverse Finance获得245,337.73个存款凭证anYvCrv3Crypto。
2.接下来攻击者在CurveUSDT-WETH-WBTC的池子进行了一次swap,用26,775个WBTC兑换出了75,403,376.18USDT,由于anYvCrv3Crypto的存款凭证使用的价格计算合约除了采用Chainlink的喂价之外还会根据CurveUSDT-WETH-WBTC的池子的WBTC,WETH,USDT的实时余额变化进行计算所以在攻击者进行swap之后anYvCrv3Crypto的价格被拉高从而导致攻击者可以从合约中借出超额的10,133,949.1个DOLA。
3.借贷完DOLA之后攻击者在把第二步获取的75,403,376.18USDT再次swap成26,626.4个WBTC,攻击者在把10,133,949.1DOLAswap成9,881,355个3crv,之后攻击者通过移除3crv的流动性获得10,099,976.2个USDT。
4.最后攻击者把去除流动性的10,000,000个USDTswap成451.0个WBT,归还闪电贷获利离场。
针对该事件,慢雾给出以下防范建议:本次攻击的原因主要在于使用了不安全的预言机来计算LP价格,慢雾安全团队建议可以参考Alpha Finance关于获取公平LP价格的方法。[2022/6/16 4:32:58]
我们使用MistTrack来分析下子地址:
慢雾:Multichain(AnySwap)被黑由于anySwapOutUnderlyingWithPermit函数相关问题:据Multichain(AnySwap)早前消息,2022年01月18日,一个影响6个跨链Token的关键漏洞正在被利用。慢雾安全团队进行分析后表示,此次主要是由于anySwapOutUnderlyingWithPermit函数为检查用户传入的Token的合法性,且未考虑并非所有underlying代币都有实现permit函数,导致用户资产被未授权转出。慢雾安全团队建议:应对用户传入的参数是否符合预期进行检查,且在与其他合约进行对接时应考虑好兼容性问题。[2022/1/19 8:57:49]
0xa594f48e80ffc8240f2f28d375fe4ca5379babc7
分析 | 慢雾:攻击者拿下了DragonEx尽可能多的权限 攻击持续至少1天:据慢雾安全团队的链上情报分析,从DragonEx公布的“攻击者地址”的分析来看,20 个币种都被盗取(但还有一些DragonEx可交易的知名币种并没被公布),从链上行为来看攻击这些币种的攻击手法并不完全相同,攻击持续的时间至少有1天,但能造成这种大面积盗取结果的,至少可以推论出:攻击者拿下了DragonEx尽可能多的权限,更多细节请留意后续披露。[2019/3/26]
通过分析,子多次调用SetApprovalForAll盗取用户资产,子地址目前已收到33个NFT,售出部分后获得超4ETH。
回到正题,我们来研究下这种钓鱼方法。首先,我们看看MetaMask官方是如何说明的:
也就是说,MetaMask目前有六种签名方法,只有一种方式会出现MetaMask警告,发生在eth_sign的签名情况下,原因是eth_sign方法是一种开放式签名方法,它允许对任意Hash进行签名,这意味着它可用于对交易或任何其他数据进行签名,从而构成危险的网络钓鱼风险。
根据MetaMask官方文档说明,eth_sign方法是可以对任意哈希进行签名的,而我们在签署一笔交易时本质上也是对一串哈希进行签名,只不过这中间的编码过程都由MetaMask替我们处理了。我们可以再简单回顾下从编码到交易广播的过程:
在进行交易广播前,MetaMask会获取我们转账的对象、转账的金额、附带的数据,以及MetaMask自动帮我们获取并计算的nonce、gasPrice、gasLimit参数进行RLP编码得到原始交易内容。如果是合约调用,那么to即为合约地址,data即为调用数据。
rlp=require('rlp');//Usenon-EIP115standardconsttransaction={??nonce:'',??gasPrice:'',??gasLimit:'',??to:'0x',??value:'',??data:'0x'};//RLPencodeconstrawTransaction=rlp.encode();
随后再对此内容进行keccak256哈希后得到一串bytes32的数据就是所需要我们签名的数据了。
//?keccak256?encodeconst?msgHex?=?rawTransaction.toString('hex');const?msgHash?=?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:''};//RLPencodeconstsignedRawTransaction=rlp.encode();
而如上所述,eth_sign方法可以对任意哈希进行签名,那么自然可以对我们签名后的bytes32数据进行签名。因此攻击者只需要在我们连接DApp后获取我们的地址对我们账户进行分析查询,即可构造出任意数据让我们通过eth_sign进行签名。
这种钓鱼方式对用户会有很强的迷惑性,以往我们碰到的授权类钓鱼在MetaMask会给我直观的展示出攻击者所要我们签名的数据。如下所示,MetaMask展示出了此钓鱼网站诱导用户将NFT授权给恶意地址。
而当攻击者使用eth_sign方法让用户签名时,如下所示,MetaMask展示的只是一串bytes32的哈希。
总结
本文主要介绍eth_sign签名方式的钓鱼手法。虽然在签名时MetaMask会有风险提示,但若结合钓鱼话术干扰,没有技术背景的普通用户很难防范此类钓鱼。建议用户在遇到此类钓鱼时提高警惕,?认准域名,仔细检查签名数据,必要时可以安装安全插件,如:RevokeCash、ScamSniffer等,同时注意插件提醒。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。