原文作者:Lisa&Kong
近期,我们发现多起关于eth_sign签名的钓鱼事件。
钓鱼网站1:https://moonbirds-exclusive.com/
当我们连接钱包后并点击Claim后,弹出一个签名申请框,同时MetaMask显示了一个红色提醒警告,而光从这个弹窗上无法辨别要求签名的到底是什么内容。
其实这是一种非常危险的签名类型,基本上就是以太坊的「空白支票」。通过这个钓鱼,子可以使用您的私钥签署任何交易。
除此之外,还有一种钓鱼:在你拒绝上述的sign后,它会在你的MetaMask自动显示另一个签名框,趁你没注意就到你的签名。而看看签名内容,使用了SetApprovalForAll方法,同时Approvedasset?的目标显示为AllofyourNFT,也就是说,一旦你签名,子就可以毫无节制地盗走你的所有NFT。如下:
慢雾:Rubic协议错将USDC添至Router白名单,导致已授权合约用户USDC遭窃取:12月25日消息,据慢雾安全团队情报,Rubic跨链聚合器项目遭到攻击,导致用户账户中的USDC被窃取。慢雾安全团队分享如下:1. Rubic是一个DEX跨链聚合器,用户可以通过RubicProxy合约中的routerCallNative函数进行Native Token兑换。在进行兑换前,会先检查用户传入的所需调用的目标 Router是否在协议的白名单中。
2. 经过白名单检查后才会对用户传入的目标Router进行调用,调用数据也由用户外部传入。
3. 不幸的是USDC也被添加到Rubic协议的Router白名单中,因此任意用户都可以通过RubicProxy合约任意调用USDC。
4. 恶意用户利用此问题通过routerCallNative函数调用USDC合约将已授权给RubicProxy合约的用户的USDC通过transferFrom接口转移至恶意用户账户中。
此次攻击的根本原因在于Rubic协议错误的将USDC添加进Router白名单中,导致已授权给RubicProxy合约的用户的USDC被窃取。[2022/12/26 22:07:00]
钓鱼网站2:https://dooooodles.org/
慢雾:Transit Swap事件中转移到Tornado Cash的资金超过600万美元:金色财经报道,慢雾 MistTrack 对 Transit Swap 事件资金转移进行跟进分析,以下将分析结论同步社区:
Hacker#1 攻击黑客(盗取最大资金黑客),获利金额:约 2410 万美元
1: 0x75F2...FFD46
2: 0xfa71...90fb
已归还超 1890 万美元的被盗资金;12,500 BNB 存款到 Tornado Cash;约 1400 万 MOONEY 代币和 67,709 DAI 代币转入 ShibaSwap: BONE Token 合约地址。
Hacker#2 套利机器人-1,获利金额:1,166,882.07 BUSD
0xcfb0...7ac7(BSC)
保留在获利地址中,未进一步转移。
Hacker#3 攻击模仿者-1,获利金额:356,690.71 USDT
0x87be...3c4c(BSC)
Hacker#4 套利机器人-2,获利金额:246,757.31 USDT
0x0000...4922(BSC)
已全部追回。
Hacker#5 套利机器人-3,获利金额:584,801.17 USDC
0xcc3d...ae7d(BSC)
USDC 全部转移至新地址 0x8960...8525,后无进一步转移。
Hacker#6 攻击模仿者-2,获利金额:2,348,967.9 USDT
0x6e60...c5ea(BSC)
Hacker#7 套利机器人-4,获利金额:5,974.52 UNI、1,667.36 MANA
0x6C6B...364e(ETH)
通过 Uniswap 兑换为 30.17 ETH,其中 0.71 支付给 Flashbots,剩余 ETH 未进一步转移。[2022/10/6 18:41:10]
我们使用MistTrack来分析下子地址:
慢雾:Ribbon Finance遭遇DNS攻击,某用户损失16.5 WBTC:6月24日消息,Ribbon Finance 发推表示遭遇 DNS 攻击,慢雾MistTrack通过链上分析发现攻击者与今天早前的Convex Finance 攻击者是同一个,地址 0xb73261481064f717a63e6f295d917c28385af9aa 是攻击者共用的用来调用恶意合约的钱包地址。同时分析发现,Ribbon Finance某用户在攻击中损失了 16.5 WBTC,具体交易为:https://etherscan.io/tx/0xd09057f1fdb3fa97d0ed7e8ebd8fd31dd9a0b5b61a29a22b46985d6217510850。[2022/6/24 1:29:35]
0xa594f48e80ffc8240f2f28d375fe4ca5379babc7
声音 | 慢雾:ETC 51%双花攻击所得的所有ETC已归还完毕:据慢雾区消息,ETC 51%攻击后续:继Gate.io宣称攻击者归还了价值10万美金的ETC后,另一家被成功攻击的交易所Yobit近日也宣称收到了攻击者归还的122735 枚 ETC。根据慢雾威胁情报系统的深度关联分析发现:攻击者于UTC时间2019年1月10日11点多完成了攻击所获的所有ETC的归还工作,至此,持续近一周的 ETC 51% 阴云已散。[2019/1/16]
通过分析,子多次调用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-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等,同时注意插件提醒。
原文链接
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。