ROP网络3钓鱼诈骗中的应用:详细分析

在本篇博客中,我们将展示一种新型的Web3网络钓鱼,并提供如何避免被网络钓鱼的建议。

ROP网络3钓鱼诈骗中的应用:详细分析

我们发现了一种新的、日益流行的网络钓鱼方法。诈骗者不部署钓鱼合约(安全供应商可以标记它们),而是滥用一些合法的合约来执行攻击。

在本博客中,我们将向您展示诈骗者使用的方法,并提供如何避免被钓鱼的建议。

概述

通常,诈骗者会部署钓鱼合约来窃取受害者的代币。具体来说,他们的钓鱼合约包含可疑的payable和multi-call函数。访问钓鱼网站的用户会将ETH或批准代币发送到这些合约。然而,安全供应商和钱包可以检测并标记这些钓鱼合约,从而禁止针对它们的交易。

然而,我们发现诈骗者滥用信誉良好的Web3项目部署的合法合约来进行钓鱼。这些合法合约无法被标记为钓鱼合约并被阻止。我们在Web3钓鱼网站中将其命名为“ROP”,因为它们不部署新合约,而是重复使用现有的合法合约进行钓鱼。这与传统软件安全领域的ROP攻击(或代码重用攻击)类似。

具体来说,面向返回编程(ROP)是一种计算机安全漏洞利用技术,它允许攻击者利用现有库中的代码片段。在Web3钓鱼中,“ROP”是指利用合法项目部署的合约进行欺诈目的。这一现象首次由Twitter账户@MevRefund在一篇帖子中报道。

传统的Web3钓鱼合约如何工作

在Web3钓鱼的早期阶段,诈骗者会设置一个外部拥有账户(EOA),并诱骗用户将ETH或批准其他代币发送到该账户。然而,这种行为现在很容易被钱包检测到并被用户发现。因此,诈骗者转而部署钓鱼合约。对于ETH钓鱼,诈骗者通常会使用名称可疑的payable函数,如“Claim”或“Security Update”。这些诱人的函数名称会促使用户签署钓鱼交易并转移ETH。

对于ERC20和ERC721代币钓鱼,诈骗者会诱骗用户批准他们的代币给钓鱼合约。随后,钓鱼合约中的Multicall函数将被调用,以转移用户的代币。特别地,Multicall函数被设计为在单次调用中执行多个特定的内部交易。不同的钓鱼方案,例如NFT零订单购买、ERC20批准钓鱼或ERC20授权钓鱼,会使用不同的钓鱼交易。这使他们能够配置交易参数,并利用Multicall根据相应的钓鱼方案发起特定的钓鱼交易。

现在,许多流行的Web3钱包已经建立了钓鱼账户黑名单。它们会积极告知用户并阻止发往这些欺诈账户的交易。

Web3钓鱼中的“ROP”

为了绕过钓鱼账户黑名单机制,诈骗者转而利用一些无法添加到黑名单的账户。具体来说,他们滥用合法项目部署的Multicall合约,利用其执行复杂交易的功能。鉴于这些合法合约无法被标记为钓鱼账户,诈骗者会诱骗用户批准代币给这些合约。由于这些合法合约可以被任何人调用(没有访问控制),诈骗者可以立即滥用它们来转移用户的代币。下图显示了整个过程。

Figure 1: "ROP"的整个过程

例如,Angel Drainer,一个臭名昭著的钓鱼犯罪团伙,已经利用Uniswap V3: Multicall 2发起了89笔钓鱼交易。请注意,合法的multi-call合约的目的是不持有任何资产。因此,在设计上,被任何人调用是可以的。然而,诈骗者滥用了这个合约,在不部署自己的钓鱼合约的情况下执行了钓鱼攻击。

建议

我们鼓励用户在进行任何操作之前,保持谨慎并仔细审查交易详情,特别是授权交易。始终检查您的授权并撤销任何可疑的授权。

Sign up for the latest updates