概述
近期,Web3 钓鱼网站已导致众多用户总计损失数百万美元。在这些钓鱼网站上,用户在不知情的情况下签署了交易,授权将其代币转移到诈骗者控制的账户中。为了保护用户免受网络钓鱼攻击,许多 Web3 钱包已实施了黑名单机制,以主动拦截涉及已知钓鱼账户的交易。
然而,根据我们的观察,这种策略在拦截钓鱼账户方面已被证明是无效的。诈骗者已经开发出多种方法来绕过这种安全机制。第一种方法是利用 Create2 函数预测钓鱼合约的地址,并在成功窃取代币后再部署该钓鱼合约。第二种方法是每日部署新的钓鱼合约,其更新速度超过了黑名单的更新频率。
现有的钱包安全预警机制

钱包内部的安全预警机制包含针对网站和账户的两重检查。目前,所有此类系统都维护着网站域名和账户的黑名单。当用户访问网站时,钱包会检查该域名是否在黑名单中。如果是,则拒绝访问该网站。同样地,在用户签署交易之前,钱包会验证交易涉及的账户是否被列入黑名单。如果被列入,交易将被拦截,以防止用户继续操作。这类安全功能以 MetaMask 等系统为典型代表。
利用 Create2 绕过安全预警
以太坊中的 Create2 操作码允许在合约实际部署之前预测其地址。这是通过以下公式实现的:
address = hash(deployer address, bytecode, salt)
有了部署者的地址、合约的字节码以及指定的盐值(salt),就可以提前确定合约地址。
显然,有了部署者地址、字节码和一个盐值,我们就可以在部署前预测合约地址。在钓鱼网站上,用户会被诱导向一个外部拥有账户(EOA)发送 ETH 或批准代币。该账户是通过 Create2 预期的,且不在黑名单中。随后,在成功窃取代币后,钓鱼合约会被部署,受害者的代币将被转移到另一个账户进行后续处理。整个过程都是自动发生的。

以下是 Phalcon Explorer 展示的一个示例:
钓鱼网站最初请求用户向 0x0ddb 批准代币。然后,诈骗者发起一笔钓鱼交易,该交易由两笔内部交易组成。第一笔内部交易使用 Create2 部署钓鱼合约。第二笔内部交易调用钓鱼合约以转移受害者的代币。
频繁部署钓鱼合约以绕过安全预警
由于从钓鱼合约部署到黑名单更新之间存在时间差,诈骗者可以利用这一空窗期来规避安全预警。他们通过每日部署新的钓鱼合约来实现这一点。因此,当用户访问钓鱼网站时,这些合约尚未被列入黑名单,从而在某些钱包中避开了预警。

这是一个由 Phalcon Explorer 展示的 Pink Drainer 的案例。0x5d77 的部署函数被每日调用以部署新的钓鱼合约。
总结
钓鱼网站开发者正在不断建立新策略,以规避 Web3 钱包所采用的安全检测机制。我们始终保持警惕,持续监测他们的最新手段。我们敦促用户务必保持谨慎,并在签署交易前仔细检查交易详情。
相关阅读
关于 BlockSec
BlockSec 是一家领先的区块链安全公司,由一群全球知名的安全专家于 2021 年创立。公司致力于提升新兴 Web3 世界的安全性和易用性,以促进其大规模应用。为此,BlockSec 提供智能合约和 EVM 链的安全审计服务、用于安全开发和主动封锁威胁的 Phalcon 平台、用于资金追踪和调查的 MetaSleuth 平台,以及帮助 Web3 构建者在加密世界中高效冲浪的 MetaSuites 扩展插件。
迄今为止,公司已服务了包括 MetaMask、Uniswap Foundation、Compound、Forta 和 PancakeSwap 在内的 300 多家知名客户,并从 Matrix Partners、Vitalbridge Capital 和 Fenbushi Capital 等顶级投资者那里在两轮融资中获得了数千万美元的资金。
官方 Twitter 账户:https://twitter.com/BlockSecTeam



