Web3钓鱼是一种常见的攻击方式,攻击者通过窃取用户授权和签名,或诱导用户犯错来窃取加密资产。近年来,Web3钓鱼事件频发,带来了巨大的安全挑战。这些攻击包括链下签名钓鱼、链上签名钓鱼、授权钓鱼、地址污染钓鱼、利用CREATE2绕过安全检查等。
Drainer 即服务 (DaaS) 的发展使得攻击者能够快速创建大规模钓鱼网站和欺诈账户,大大增加了资产损失风险。在最近的一次事件中,由于授权漏洞被利用,一名用户损失了超过 60 万美元的 USDC。此类事件凸显了对钓鱼方法的了解和预防的必要性,增强安全意识,保护数字资产。
为了帮助 Web3 用户更好地识别和预防钓鱼攻击,TinTinLand 联合 SharkTeam推出了线上系列课程《Web3 安全实战指南》。5月 28 日的第二场,SharkTeam 联合创始人 Adam 分析了各种钓鱼技术。近千名观众参与了直播,与嘉宾们进行了热烈的讨论。
错过了直播?观看重播:
🕹️推特空间:https://www.bilibili.com/video/BV1sf42197qo/
SharkTeam:Web3 安全的先锋
SharkTeam 致力于保护 Web3 世界。SharkTeam由经验丰富的安全专业人员和精通区块链和智能合约理论的研究人员组成,提供风险识别和阻止、智能合约审计、KYT/AML 和链上分析等服务。他们的ChainAegis平台可有效对抗 Web3 世界中的高级持续性威胁 (APT)。
允许链下签名网络钓鱼
Adam 首先分享了 Permit 链下签名钓鱼。Permit是 ERC-20 标准的扩展,它允许用户批准另一个地址通过签名使用他们的代币,而无需进行链上交易。虽然这兼顾了便利性和安全性,但攻击者利用它来创建隐蔽的网络钓鱼技术。
Adam 解释了允许链下签名网络钓鱼的常见步骤:
- 伪造钓鱼链接或网站:攻击者伪造钓鱼链接或网站,诱导用户通过钱包进行签名,如果用户签名,攻击者将获得一个包含r、s、v值的签名,用于后续的permit函数交互。
- 调用许可函数:攻击者利用签名数据调用许可函数,完成授权。
3.调用transferFrom函数:授权后,攻击者调用transferFrom函数从受害者处转移资产,完成攻击。
Adam 补充说,了解transfer和
之间的区别至关重要:虽然transferFrom
transfer
通常用于直接 ERC20 代币转移,transferFrom
但用于授权第三方将代币从用户的钱包转移到另一个地址。当攻击者利用链下签名钓鱼时,他们会使用该transferFrom
功能在未经用户同意的情况下转移代币。
该类签名是一种无需 gas 的链下签名,攻击者获取后即可在链上执行permit
和transferFrom
交互,因此授权记录在受害者地址上不可见,但在攻击者地址上可见。一般来说,该类签名是一次性的,最大程度降低了重复或持续的钓鱼风险。
Permit2 链下签名网络钓鱼
Uniswap 于 2022 年推出的 Permit2旨在解决 DeFi 领域的高交易费用问题。与传统的 ERC-20 Permit 不同,Permit2 允许用户一次性授权 Uniswap 合约管理代币配额,从而简化操作并降低成本。
Adam 解释道,在 Permit2 之前,Uniswap 上的代币交易需要分别进行批准和交换交易,产生两笔 gas 费用。Permit2允许用户用自己的全部余额授权 Uniswap Permit2 合约,之后交易只需要链下签名即可。
然而,这种便利通过 Permit2 签名钓鱼引入了新的安全风险,类似于 Permit 链下签名钓鱼。攻击通常遵循以下步骤:
- 前提条件:用户的钱包在被钓鱼前已经在Uniswap上使用过,并且对Uniswap的Permit2合约进行了Token限额授权(Permit2默认对用户的全部Token余额进行授权)。
2. 伪造钓鱼链接或页面:攻击者创建钓鱼链接或页面,诱导用户签名,获取所需签名信息。Adam 解释称,这一步和用 Permit 进行链下签名钓鱼类似,都是通过钓鱼获取用户签名数据。
3.调用Permit2合约的permit函数:攻击者利用获取的签名数据,调用Permit2合约的permit函数,完成授权。
4.调用Permit2合约的transferFrom函数:最后攻击者调用Permit2合约的transferFrom函数将受害者的资产转出,完成攻击。
Adam 补充道,攻击者接收资产的地址通常有多个地址,其中金额最大的一个接收者通常是实施钓鱼攻击的攻击者,而其他人则向黑市地址提供钓鱼即服务 (DaaS),例如 PinkDrainer、InfernoDrainer 和 AngelDrainer。
eth_sign 链上盲签名钓鱼
链上签名钓鱼包括 eth_sign、personal_sign、signTypedData 等方法。最早的方法eth_sign是签名任意值,即盲签名。用户签名不可读的字节码,风险较高。
Adam 把盲签比喻为在不安全的地方扫描二维码,不认识对方,不了解其中的信息,相当于给了对方一张空白支票,用户在签名前一定要充分了解签名内容和操作目标,避免盲目点击确认。
MetaMask 提供了 eth_sign 签名的风险提示,但很多用户都忽略了这些提示。为了加强用户安全性,imToken、OneKey等钱包已关闭该功能或给出明确的风险提示。Adam 建议所有钱包都禁用该方式,防止因缺乏安全意识或技术知识而遭受攻击。
personal_sign/signTypedData 链上签名钓鱼
Adam 警告称,personal_sign 和 signTypedData 是常见的签名方法,但如果使用不当也会带来风险。用户必须仔细检查签名对象、协议和内容,避免随意签名。
例如,在 OpenSea 等平台上签名时,用户应验证 URL。如果请求来自 opensea.net 或 opensea.com 等可疑 URL,而不是opensea.io,则很可能是钓鱼网站。用户应与官方来源确认以确保安全。
如果使用 personal_sign 或 signTypedData 作为“盲签名”,用户无法看到明文,则网络钓鱼风险会增加。
授权钓鱼:setApprovalForAll/Approve
授权钓鱼通常涉及用户在不知情的情况下执行 setApproveForAll 或 approved 操作,从而授予攻击者转移资产的权限。Adam 引用了PREMINT 钓鱼事件,用户访问了一个真正的网站,但前端代码被攻破。用户在不知情的情况下执行了setApproveForAll 授权,导致资产被盗。
即使是官方网站也可能不安全。用户应仔细验证操作提示,以确保操作符合他们的预期。如果连接钱包时提示授权请求(setApproveForAll),则可能表示网站已被入侵或伪造。
Adam 解释了另一种方法,即批准钓鱼。与 setApprovalForAll 类似,用户确认批准操作,泄露操纵资产的授权。Adam 展示了一个例子,其中用户将代币授权给攻击者,从而允许资产转移到攻击者的地址。
这种钓鱼方式极其危险,因为一旦获得授权,攻击者就可以自由转移你的资产。Adam强调,授权操作时,需要核实对方身份,尽量避免全额或长期授权。
Adam 还提到了类似的授权钓鱼方法,例如increaseAllowance,即在用户不知情的情况下授权,从而允许攻击者访问用户资产。Adam 再次提醒大家,要仔细阅读授权请求的内容,以免成为骗局的受害者。
解决污染网络钓鱼
地址污染钓鱼是一种新兴攻击,黑客会生成与用户历史交易地址相似的恶意地址,诱骗用户将资金转移到这些地址。Adam 解释了其中涉及的三个步骤:
首先,攻击者监控链上交易,使用脚本生成与用户历史交易地址首尾几个字符相同的恶意地址。
接下来攻击者利用这些恶意伪造的地址,对目标用户的地址进行小额转账或者转移毫无价值的代币。如果目标用户在后续交易时,习惯性地从过去的交易订单中复制对方的地址,那么有很大的可能性会因为粗心而误将资产转移到恶意地址。
在 2024 年 5 月 3 日发生的一起最新事件中,地址污染钓鱼导致1155 BTC 损失,价值超过 7000 万美元。恶意地址通常具有与正确地址相同的前 4-6 个字符和后 4-6 个字符。例如:
正确地址:0x d9A1 b0B1e1aE382DbDc898Ea68012FfcB2 853a91
恶意地址:0x d9A1 C3788D81257612E2581A6ea0aDa244 853a91
关联交易:
- 正常交易:https://etherscan.io/tx/0xb18ab131d251f7429c56a2ae2b1b75ce104fe9e83315a0c71ccf2b20267683ac
- 地址污染:https://etherscan.io/tx/0x87c6e5d56fea35315ba283de8b6422ad390b6b9d8d399d9b93a9051a3e11bf73
- 错误转账:https://etherscan.io/tx/0x3374abc5a9c766ba709651399b6e6162de97ca986abc23f423a9d893c8f5f570
目前,此类攻击已经完全自动化,攻击者可以批量生成和发送这些毫无价值的代币,从而污染用户的交易记录。为了防止此类攻击,Adam 建议用户在转账时不要直接从区块链浏览器上的交易历史记录中复制地址,而是使用保存在钱包中的地址簿。此外,用户在转账时应仔细验证地址,不仅要检查前几个字符,还要检查更多字符以确保地址的准确性。
使用 CREATE2 绕过安全检查
在服务商、安全厂商不断提升防御能力的同时,主流钱包、交易所也通过链上黑名单、钓鱼检测机制保护用户资产。然而攻防之争不断演变,钓鱼手段也越来越隐蔽,需要加强警惕。近期常见的一种手段是利用 CREATE2 绕过钱包、安全插件黑名单检测进行钓鱼攻击。
Adam 解释称,CREATE2 是以太坊在君士坦丁堡升级时引入的新操作码,允许用户在以太坊上创建智能合约。传统上,用户部署智能合约后,系统会生成一个地址。而有了 CREATE2,创建者可以在部署前确定合约的地址并告知用户。这种机制带来了灵活性,但也带来了新的安全风险。
CREATE2 的本质是能够自动生成新地址,这对于某些应用非常有用,但也被恶意行为者利用进行钓鱼攻击。通过 CREATE2,攻击者可以在受害者不知情的情况下部署恶意合约,并使用预定的地址绕过黑名单和安全检查,从而执行攻击。这种攻击方式极其隐蔽,因为地址在合约实际生成之前就已经预先确定,直到合约部署执行后才会立即表现出恶意行为。Adam 强调,这使得传统的基于地址的安全机制难以防御此类攻击。
🎯 Drainer 即服务
钓鱼攻击如今的钓鱼攻击已经不再是简单的更换地址、钓鱼网站,由于非法利润较高,已经形成了完整的黑市产业链,包括Inferno、MS、Angel、Monkey、Venom、Pink、Pussy、Medusa等活跃团体。攻击者可以通过DaaS平台轻松生成和管理钓鱼活动。Adam解释,这些平台一般会提供自动生成新地址的功能来绕过黑名单检测,确保每次攻击都使用新地址,以提高成功率。
以Inferno Drainer为例,这是一个臭名昭著的钓鱼组织,其通过在不同的网站上植入恶意脚本进行钓鱼,例如将恶意脚本伪装成seaport.js、coinbase.js、wallet-connect.js等流行的Web3协议功能进行传播,引诱用户集成或点击,在用户确认后,自动将用户资产转移到攻击者的地址。
目前已发现超过14,000 个包含恶意 Seaport 脚本的网站、超过5,500 个包含恶意 WalletConnect 脚本的网站、超过 550 个包含恶意 Coinbase 脚本的网站以及超过16,000 个与 Inferno Drainer 相关的恶意域名,影响了超过100 个加密品牌。
Adam 进一步解释了 DaaS 骗局的运作流程:
1.服务推广:Inferno Drainer 通过名为 Inferno Multichain Drainer 的 Telegram 频道推广他们的服务,攻击者也可以通过 Inferno Drainer 的网站访问该服务。
2.设置钓鱼网站:攻击者利用DaaS服务功能设置和生成自己的钓鱼网站,并通过X(Twitter)、Discord等社交媒体进行推广。
3、诱导钱包连接:诱导受害者在这些钓鱼网站上扫描二维码或使用其他方式连接钱包。
4.发起恶意交易:Drainer 检查受害者最有价值且最容易转移的资产并发起恶意交易。
5.受害者确认交易:受害者确认这些交易。
6.资产转移:资产被转移给犯罪分子。被盗资产中,20% 被转移给 Inferno Drainer 开发商,80% 被转移给钓鱼攻击者。
此外,Adam 还展示了 DaaS 服务页面,Inferno Drainer 向客户展示了他们的统计数据,包括连接数(将钱包连接到钓鱼网站的受害者)、成功点击数(如果受害者确认交易)以及被盗资产的价值。每个客户都可以定制自己的 Drainer 功能,使网络钓鱼攻击更加个性化和高效。
📥 一些调查方法和安全
针对WEB3网络钓鱼的建议在活动的最后部分,Adam提出了一些具体的调查方法和安全建议,以帮助用户更好地应对和预防WEB3网络钓鱼攻击。
谨慎对待未知链接:用户切勿点击伪装成奖励、空投或其他积极信息的链接。
警惕官方社交媒体信息:官方社交媒体账号被黑客入侵的案例不断增加,甚至官方消息也可能是钓鱼信息。 Adam 强调,官方消息并不能保证绝对安全,用户需要保持警惕。
核实应用来源:使用钱包、DApp 等应用时,需注意核实,谨防假冒网站和应用。用户应从官方网站或应用商店下载应用,以确保可信度。
谨慎确认交易及签名信息:任何需要确认的交易或签名信息都应谨慎处理,核实对象、内容等细节。拒绝盲签名,保持警惕,怀疑一切,确保每一步都清晰、安全。
学习和了解钓鱼攻击特征:用户需要了解本文提到的常见钓鱼攻击手法,学会主动识别钓鱼特征。了解常见签名、授权函数及其风险、交互URL、所有者地址、付款人地址、授权金额、nonce、deadlines、转账(transfer/transferFrom)等字段内容。
Adam 最后表示,如果用户不幸遭遇钓鱼攻击,首先应该立即调查原因,确保剩余资产的安全。然后,用户应迅速寻求专业团队的帮助,尝试追回被盗资产。防范钓鱼攻击、保障资产安全,既需要用户具备足够的安全意识和技能,也需要依靠专业团队的力量。
🔍 参考资料
https://x.com/evilcos/status/1661224434651529218 https://x.com/RevokeCash/status/1648694185942450177 https://web3caff.com/zh/archives/63069 https://www.group-ib.com/blog/inferno-drainer/ https://blocksec.com/blog/how-phishing-websites-bypass-wallet-security-alerts-strategies-unveiled
原文始发于微信公众号(KK安全说):Web3 网络钓鱼技术--SharkTeam
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论