2024-11-04
区块链世界的隐秘威胁:钓鱼攻击全解析
区块链世界的隐秘威胁:钓鱼攻击全解析
本文 Hash (SHA 1): 418ea6548326a5f3b9496aa7912935fec8ca925c
编号: 链源科技 PandaLYSecurity Knowledge No.031
什么是区块链钓鱼攻击?
大家可能对“钓鱼”这个词不陌生,最早它指的是那些通过假冒网站或邮件,诱导人们点击链接然后骗取个人信息的网络诈骗手段。现在,随着区块链和加密货币的流行,这种“钓鱼”也演变到了区块链世界。
区块链钓鱼攻击其实本质和传统钓鱼差不多,都是攻击者假装成你信任的对象,比如某个你常用的钱包网站、交易平台,甚至是你参与过的项目方。他们会通过伪造的链接、假冒的社交媒体账号,或者看似正规但实则有漏洞的智能合约,引诱你输入私钥、助记词,或者签署一个恶意交易。结果呢?你的加密资产就这么不知不觉被转走了。
举个例子,想象一下你在某个社交平台上看到一个“官方空投”活动,里面有个链接,看起来像你熟悉的钱包网站。你点进去输入助记词,然后发现,里面的钱全都没了。这就是一个典型的区块链钓鱼攻击场景。
钓鱼攻击特别狡猾,因为它们专门瞄准那些对区块链技术不是很熟悉、对防护措施不够了解的用户。很多人都是因为一时疏忽,或贪图小便宜,中了攻击者的圈套。所以,我们必须对这些攻击方式保持警惕,时刻防范。
那如何识别钓鱼攻击呢?这就得从他的原理讲起了。
钓鱼攻击的工作原理
钓鱼攻击主要有四种方式,分别为虚假空投、诱导签名、后门工具和上供助记词。
虚假空投:
攻击者利用地址生成器生成和用户钱包地址非常相似的地址(一般是前几位或后几位相同),然后往这些地址里多次转入小额的资金(如 0.001 USDT),或是攻击者自己部署的假 USDT。这让用户误以为这些地址是之前的正常收款地址。在用户进行新的转账时,可能会复制历史交易记录,误将资金转入攻击者的地址,导致资产丢失。
诱导签名:
攻击者通过创建伪造的网页,如知名项目的仿冒网站、虚假的空投链接或购物平台,诱导用户连接钱包并执行签名操作,进而窃取资产。
常见的诱导签名攻击包括以下几种:
直接转账
攻击者将签名操作伪装成领取空投、钱包连接等功能,实际操作是把用户的资产转到攻击者的地址。
授权代币转移
用户在钓鱼网站上签署交易,如 ERC 20 的 approve 调用或 NFT 的 setApproveForAll,攻击者得到授权后可以随意转移用户的资产。
空白地址授权钓鱼
空白地址授权钓鱼是授权钓鱼的升级版。用户点击钓鱼链接进行授权时(通常也是 approve 或 increaseAllowance),spender 的地址是没有任何链上记录的空地址,如果受害者签署授权,空地址就会被通过 create 2 方法部署一个合约,将受害者的资金转走。采用空白地址授权可以避免授权地址被检测工具标记的情况,从而绕过一些钱包的安全检查。
零元购 NFT 钓鱼
欺骗用户签名 NFT 的销售订单,NFT 是由用户持有的,一旦用户签名了此订单,攻击者就可以直接通过 OpenSea 购买用户的 NFT,但是购买的价格由攻击者决定,也就是说攻击者不花费任何资金就能“买”走用户的 NFT。
eth_sign 空白支票(盲签)
eth_sign 也叫盲签,使用 eth_sign 签署任意哈希值,等于给攻击者开了一张空白支票,因此攻击者可以构造任意自定义的交易窃取用户资产。
Permit 钓鱼
permit 是 erc 20 协议的一个扩展功能,它允许用户通过签名消息完成授权操作,并将签名结果发送给另外一个钱包,这可以完成资产转移操作。通过诱导用户签署 ERC 20 的 permit 授权,攻击者可以获得转移用户代币的权限。
personal_sign 签名
personal_sign 通常用于签名可读的内容,但也可以将签名的内容处理成哈希值。
例如:0x62dc3e93b0f40fd8ee6bf3b9b1f15264040c3b1782a24a345b7cb93c9dafb7d8消息,是目标明文被 keccak 256 哈希后的结果。被钓鱼的用户,看不懂签名的内容,如果进行签名的话,就会被钓鱼攻击。
恶意多重签名:
多重签名的本意为为了使得钱包更安全,允许多个用户共同管理和控制同一个钱包的使用权限。
以 TRON 为例,TRON 多重签名分为了 Owner(最高权限,可以管理权限和进行一切操作),Witness(参与投票管理)和 Active(用于日常操作,如转账或调用合约),新建账户时,账户地址默认拥有 Owner 权限。
当攻击者通过钓鱼网页/应用获取到用户私钥后,攻击者可以将 Owner/Active 转移或授权给自己的地址,注意转移为移除用户的 Owner 权限而授权则是不移除用户的权限,但不论如何,用户便失去了钱包资产转出的权利。
由于用户仍能转入资金,攻击者可能会“放长线钓大鱼”,不会第一时间转走受害者资产,直到受害者发现钱包被恶意多签,不再转入资金后,攻击者再转走资金。
后门工具:
伪装成科学家工具
“科学家工具”通常是指区块链生态中的一些高级用户(即所谓的“科学家”)使用的交易辅助工具,比如用于快速批量铸造 NFT,批量发送代币或是快速执行某些复杂的链上操作等。这类工具深受一级市场用户欢迎,因为它们可以极大提高操作效率。
然而,攻击者会伪装成这类工具的开发者,发布看似合法的工具,实际上在工具内部植入了后门程序。这些后门程序可能在用户使用工具时偷偷获取私钥或助记词,又或是直接操控用户钱包发送代币至攻击者指定钱包,攻击者随后就可以通过这些敏感信息控制用户的钱包。
虚假的浏览器插件
许多用户喜欢使用浏览器插件(如 MetaMask,Token Pocket)来方便地进行区块链交易。攻击者可能会通过钓鱼网站诱导用户安装假冒的插件。这些插件一旦安装,会偷偷记录用户的交易行为,窃取私钥,进行多重签名。
交易加速器或优化工具
这类工具通常声称能帮助用户加速交易确认或优化链上操作,用户往往需要输入私钥或签名来使用这些功能。攻击者通过诱导用户在使用过程中输入关键信息,将其偷偷记录下来。
上供私钥/助记词:
攻击者会创建一些伪造的交易网站或 Telegram 小程序(如伪造的 Pepebot),要求用户提供私钥或助记词来绑定钱包,诱骗用户进行“土狗”交易或其他操作。实际上,攻击者通过这些手段窃取用户的私钥,然后转走钱包里的所有资产。
典型案例分析
假空投骗局:
项目 Wormhole 发布空投公告时,许多推特模仿官方账户发布假空投链接。图 1 项目方名称为@studioFMmilano· 1 h,图 2 假冒项目方为@studioFMmilano,而真正的项目方为@wormhole。
诱导钱包签名:
冒仿网站签名:
以 moonbirds-exclusive.com/钓鱼网站为例,该网站为模仿 www.proof.xyz/moonbirds 的冒仿网站,当用户连接钱包并点击 Claim 后,会弹出一个签名申请框。此时,Metamask 会显示一个红色警告,但由于弹窗上并未明确显示签名内容,用户很难判断这是否是一个陷阱。一旦用户进行了签名,骗子就可以使用用户的私钥签署任何交易,包括转移资产。
Permit 签名:
某用户在质押期间在钓鱼网站进行了 Permit 签名,用户第一时间去检查了也没发现异常授权。钓鱼却在之后上链这笔 permit 离线授权签名,给目标地址的目标资产开了个授权风险敞口,但目标用户并没法知晓,直到目标用户提出相关再质押的 ETH 资产,钓鱼立即转走,因此该用户丢失了 212 万美金。