本文Hash (SHA1):418ea6548326a5f3b9496aa7912935fec8ca925c
编号: 链源Security Knowledge No.031
什么是区块链钓鱼攻击?
大家可能对“钓鱼”这个词不陌生,最早它指的是那些通过假冒网站或邮件,诱导人们点击链接然后骗取个人信息的网络诈骗手段。现在,随着区块链和加密货币的流行,这种“钓鱼”也演变到了区块链世界。
区块链钓鱼攻击其实本质和传统钓鱼差不多,都是攻击者假装成你信任的对象,比如某个你常用的钱包网站、交易平台,甚至是你参与过的项目方。他们会通过伪造的链接、假冒的社交媒体账号,或者看似正规但实则有漏洞的智能合约,引诱你输入私钥、助记词,或者签署一个恶意交易。结果呢?你的加密资产就这么不知不觉被转走了。
举个例子,想象一下你在某个社交平台上看到一个“官方空投”活动,里面有个链接,看起来像你熟悉的钱包网站。你点进去输入助记词,然后发现,里面的钱全都没了。这就是一个典型的区块链钓鱼攻击场景。
钓鱼攻击特别狡猾,因为它们专门瞄准那些对区块链技术不是很熟悉、对防护措施不够了解的用户。很多人都是因为一时疏忽,或贪图小便宜,中了攻击者的圈套。所以,我们必须对这些攻击方式保持警惕,时刻防范。
那如何识别钓鱼攻击呢?这就得从他的原理讲起了。
钓鱼攻击的工作原理
钓鱼攻击主要有四种方式,分别为虚假空投、诱导签名、后门工具和上供助记词。
1. 虚假空投:
攻击者利用地址生成器生成和用户钱包地址非常相似的地址(一般是前几位或后几位相同),然后往这些地址里多次转入小额的资金(如0.001 USDT),或是攻击者自己部署的假USDT。这让用户误以为这些地址是之前的正常收款地址。在用户进行新的转账时,可能会复制历史交易记录,误将资金转入攻击者的地址,导致资产丢失。
2. 诱导签名:
攻击者通过创建伪造的网页,如知名项目的仿冒网站、虚假的空投链接或购物平台,诱导用户连接钱包并执行签名操作,进而窃取资产。
常见的诱导签名攻击包括以下几种:
-
直接转账
攻击者将签名操作伪装成领取空投、钱包连接等功能,实际操作是把用户的资产转到攻击者的地址。
-
授权代币转移
用户在钓鱼网站上签署交易,如ERC20的approve调用或NFT的setApproveForAll,攻击者得到授权后可以随意转移用户的资产。
-
空白地址授权钓鱼
空白地址授权钓鱼是授权钓鱼的升级版。用户点击钓鱼链接进行授权时(通常也是approve或increaseAllowance),spender的地址是没有任何链上记录的空地址,如果受害者签署授权,空地址就会被通过create2方法部署一个合约,将受害者的资金转走。采用空白地址授权可以避免授权地址被检测工具标记的情况,从而绕过一些钱包的安全检查。
-
零元购NFT钓鱼
欺骗用户签名 NFT 的销售订单,NFT 是由用户持有的,一旦用户签名了此订单,攻击者就可以直接通过 OpenSea 购买用户的 NFT,但是购买的价格由攻击者决定,也就是说攻击者不花费任何资金就能“买”走用户的 NFT。
-
eth_sign空白支票(盲签)
eth_sign也叫盲签,使用eth_sign签署任意哈希值,等于给攻击者开了一张空白支票,因此攻击者可以构造任意自定义的交易窃取用户资产。
-
Permit 钓鱼
permit是erc20协议的一个扩展功能,它允许用户通过签名消息完成授权操作,并将签名结果发送给另外一个钱包,这可以完成资产转移操作。通过诱导用户签署ERC20的permit授权,攻击者可以获得转移用户代币的权限。
-
personal_sign签名
personal_sign通常用于签名可读的内容,但也可以将签名的内容处理成哈希值。
例如:0x62dc3e93b0f40fd8ee6bf3b9b1f15264040c3b1782a24a345b7cb93c9dafb7d8消息,是目标明文被keccak256哈希后的结果。被钓鱼的用户,看不懂签名的内容,如果进行签名的话,就会被钓鱼攻击。
3.恶意多重签名:
多重签名的本意为为了使得钱包更安全,允许多个用户共同管理和控制同一个钱包的使用权限,
以TRON为例,TRON多重签名分为了Owner(最高权限,可以管理权限和进行一切操作),Witness(参与投票管理)和Active(用于日常操作,如转账或调用合约),新建账户时,账户地址默认拥有Owner权限。
当攻击者通过钓鱼网页/应用获取到用户私钥后,攻击者可以将Owner/Active转移或授权给自己的地址,注意转移为移除用户的Owner权限而授权则是不移除用户的权限,但不论如何,用户便失去了钱包资产转出的权利。
由于用户仍能转入资金,攻击者可能会“放长线钓大鱼”,不会第一时间转走受害者资产,直到受害者发现钱包被恶意多签,不再转入资金后,攻击者再转走资金。
4.后门工具:
-
伪装成科学家工具
“科学家工具”通常是指区块链生态中的一些高级用户(即所谓的“科学家”)使用的交易辅助工具,比如用于快速批量铸造NFT,批量发送代币或是快速执行某些复杂的链上操作等。这类工具深受一级市场用户欢迎,因为它们可以极大提高操作效率。
然而,攻击者会伪装成这类工具的开发者,发布看似合法的工具,实际上在工具内部植入了后门程序。这些后门程序可能在用户使用工具时偷偷获取私钥或助记词,又或是直接操控用户钱包发送代币至攻击者指定钱包,攻击者随后就可以通过这些敏感信息控制用户的钱包。
-
虚假的浏览器插件
许多用户喜欢使用浏览器插件(如MetaMask,Token Pocket)来方便地进行区块链交易。攻击者可能会通过钓鱼网站诱导用户安装假冒的插件。这些插件一旦安装,会偷偷记录用户的交易行为,窃取私钥,进行多重签名。
-
交易加速器或优化工具
这类工具通常声称能帮助用户加速交易确认或优化链上操作,用户往往需要输入私钥或签名来使用这些功能。攻击者通过诱导用户在使用过程中输入关键信息,将其偷偷记录下来。
5. 上供私钥/助记词:
攻击者会创建一些伪造的交易网站或Telegram小程序(如伪造的Pepebot),要求用户提供私钥或助记词来绑定钱包,诱骗用户进行“土狗”交易或其他操作。实际上,攻击者通过这些手段窃取用户的私钥,然后转走钱包里的所有资产。
典型案例分析
1.假空投骗局:
项目Wormhole发布空投公告时,许多推特模仿官方账户发布假空投链接。图1项目方名称为@studioFMmilano·1h,图2假冒项目方为@studioFMmilano,而真正的项目方为@wormhole。
2.诱导钱包签名:
冒仿网站签名:
以moonbirds-exclusive.com/钓鱼网站为例,该网站为模仿www.proof.xyz/moonbirds的冒仿网站,当用户连接钱包并点击Claim后,会弹出一个签名申请框。此时,Metamask会显示一个红色警告,但由于弹窗上并未明确显示签名内容,用户很难判断这是否是一个陷阱。一旦用户进行了签名,骗子就可以使用用户的私钥签署任何交易,包括转移资产。
Permit签名:
某用户在质押期间在钓鱼网站进行了Permit签名,用户第一时间去检查了也没发现异常授权。钓鱼却在之后上链这笔 permit 离线授权签名,给目标地址的目标资产开了个授权风险敞口,但目标用户并没法知晓,直到目标用户提出相关再质押的 ETH 资产,钓鱼立即转走,因此该用户丢失了 212 万美金。
图3.账户被permit离线授权签名
3.恶意多重签名:
恶意多重签名的钓鱼方法有很多,最常见的为“攻击者故意泄漏私钥”或“虚假插件/钱包”
攻击者故意泄漏私钥:
攻击者在社交媒体或通过其他途径泄露私钥,通过各类话术诱骗受害者往钱包内转入加密资产,直到受害者发现资产无法转出后,攻击者再将钱包资产进行转移。
虚假TokenPocket钱包:
受害者在搜索引擎上搜索“TP钱包”并非官方网站下载“TP钱包”。而实际下载的并非官方钱包,而为攻击者在互联网投放的虚假钱包,用户绑定助记词后,受害者的钱包就会自动被多签,从而无法将资产转移。
4.后门工具:
受害者在推特发现了一个自称专做WEB-3“撸毛”及各类脚本开发的博主,受害者下载并运行了该博主免费赠送的脚本,结果发现钱包被洗劫一空,失去了价值700USDT的代币。
如何预防区块链钓鱼攻击
-
核实链接和网址
在访问任何与加密货币相关的网站时,务必核实链接和网址的真实性。钓鱼攻击者常常会创建与官方网站极为相似的假冒网站,仅修改几个字符,一但不小心就可能中招。因此,防范的第一步就是:
1.避免点击陌生链接:收到的任何陌生邮件、社交媒体消息或不明来历的链接都需要格外小心,尤其是那些声称来自“官方”渠道的推广信息、空投活动或账户问题提示。
2.使用书签保存常用的官方网站:访问加密货币交易所或钱包服务时,建议直接使用浏览器中保存的书签,而不是通过搜索引擎查询,以防误入钓鱼网站。
-
多重身份验证(2FA)
多重身份验证(2FA)是增加账户安全的重要措施之一。在账户登录时,除了密码外,还需要额外的验证步骤,通常是通过手机短信、身份验证器应用程序生成的动态验证码,来确认身份。
1.开启2FA:务必为所有支持2FA的加密货币账户开启这一功能,包括交易所账户、钱包应用等。即便攻击者获取了你的密码,没有2FA的验证码,他们仍然无法登录账户。
2.使用身份验证器应用:尽量选择使用Google Authenticator、Authy等身份验证器应用,而非短信验证,因为短信可能会遭遇SIM卡劫持攻击。
3.定期更新2FA设备:确保你绑定的手机或验证设备是最新的。如果手机丢失或更换,及时更新2FA设备,避免安全隐患。
-
安全意识培养
区块链钓鱼攻击的手法不断演变,因此必须持续学习和保持安全意识。
1.关注安全社区和新闻:定期关注区块链和加密货币安全的相关新闻、博客和社区论坛,获取最新的安全资讯和预警,避免掉入新的钓鱼陷阱。
2.提高警惕:养成在任何敏感操作(如授权签名、交易转账)前仔细检查操作内容的习惯,不随意在陌生网站或平台上连接钱包或进行签名操作。
-
钱包安全管理
钱包是加密货币的核心存储工具,妥善管理钱包的安全对防止钓鱼攻击起至关重要的作用。
1.不要泄露助记词或私钥:助记词和私钥是控制钱包的关键,一旦泄露,攻击者可以直接获取钱包中的资产。因此,助记词和私钥必须妥善保管,绝不能透露给任何人,也不要存储在联网设备上。
2.使用冷钱包储存大额资产:冷钱包是指未连接互联网的钱包,通常是硬件钱包,安全性较高。对于长期持有的大额资产,建议存放在冷钱包中,以防止在线攻击。
3.合理使用热钱包:热钱包是连接互联网的钱包,便于日常交易,但安全性相对较低。建议将少量的日常交易资金放在热钱包中,尽量将大部分资金存放在冷钱包里,分散风险。
4.定期备份钱包数据:确保钱包助记词、私钥或恢复密码等信息有可靠的备份。建议将备份信息存放在安全的、离线的地方,如加密的USB设备或实体纸张。
结语
在区块链的世界中,用户的每一步操作都可能直接影响资产安全。随着技术的发展,钓鱼攻击手法也在不断升级,因此我们必须时刻保持高度警惕,提升自我防护意识,避免掉入骗局。无论是核实链接、使用安全设备、开启多重身份验证,还是妥善管理钱包,这些细小的举措都能为我们的资产构筑起一道坚固的防线。
务必慎之又慎,莫操之过急!