从OpenSea遭钓鱼攻击浅析区块链黑客攻击手法
上月,国外知名NFT交易市场OpenSea遭遇了一场黑客攻击,攻击者窃取了大量NFT并售出套利,失窃的NFT涵盖BAYC、BAKC、MAYC、Azuki、Cool Cats、Doodles、Mfers等多种知名高价值系列。OpenSea首席执行官Devin Finzer透露,被盗NFT总计价值约170万美元(折合约1077.8万元人民币)。
OpenSea遭钓鱼攻击始末
为了改善平台上的非活跃列表问题,OpenSea于2月18日开启了一项智能合约的升级,所有用户都需要将他们在以太坊上的NFT列表迁移至新的智能合约中,迁移期持续7天。然而到了第二天需要用户操作的时候,黑客的「黑手」却伸向了OpenSea用户的钱包。
知帆安全团队分析发现,黑客地址0x3E0...8A74在一月前的01月22日9:31:12(UTC)创建了一个智能合约0xa2...45bD。
之后,在2月19日晚7点半到次日凌晨1点半的约6个小时里,黑客发起了攻击,部分攻击的链上交易如下图:
点击其中一笔交易详情:
我们可以发现,黑客通过调用自己部署的智能合约,将用户的NFT转到自己的地址上。黑客在收到NFT后,并没有全部占为己有,而是将一部分转回给用户,另一部分卖出兑现。
通过分析该地址上的交易数据,发现黑客盗取了39个地址上的254个NFT,其中140个NFT已被归还。黑客兑换和售卖了16种,共计93个NFT,其中AZUKI和NFT Worlds占了约50% ,共获利约1196个ETH,如下图所示:
之后,该黑客将获得的ETH通过不同的额度转入混币平台Tornado.cash,约为1115个ETH。交易截图如下:
事后,Devin Finzer确认了这是一起「网络钓鱼攻击」,但是“钓鱼”发生在哪里迄今无从查证,经过排查唯一可以确认的是,这起钓鱼攻击并非来自OpenSea网站的内部。
交易量下滑三成,OpenSea又现钓鱼邮件攻击
受此影响,加上全球市场形势动荡,2月OpenSea在以太坊和Polygon上的交易量大幅下滑,仅以太坊链上交易量就较一月份下降近三成。
有关数据显示,在发生钓鱼攻击事件后,OpenSea上的用户活动也迅速下降,事发三天内,平台上的用户活动至少下降了20%,七天内交易量下降了37%,并有近23万名用户在这一周离开了OpenSea。
而在2月27日,OpenSea 再次出现钓鱼邮件攻击。据OpenSea官方社交媒体账号,日前发现一些用户收到了来自openseateam.io(钓鱼链接)的电子邮件,平台提醒用户不要点击此类钓鱼邮件。
区块链黑客攻击手法
随着区块链的飞速发展,各种安全事件也愈发频繁。据知帆科技、知帆学院发布的《2021年区块链和虚拟货币犯罪趋势研究报告》显示,2018年到2021年,区块链安全事件数量整体呈上升趋势。2021年,随着DeFi、NFT、元宇宙等新概念的出现,使得区块链安全事件的数量再次猛增,相较于2020年增长67%。
黑客攻击作为一种传统且存在已久的攻击手段,近年来,也越来越多地发生在去中心化平台上,而且更新、更复杂且难防范。同时,由于区块链交易的特点导致攻击带来的资金量损失巨大,黑客所需的攻击成本也相对更低。为了让更多执法人员学习了解这类攻击方式,就此浅析一下区块链上的黑客攻击手法。
对智能合约业务逻辑漏洞和代码漏洞进行攻击
闪电贷攻击
概念:闪电贷就是在一笔链上交易中完成借款和还款,无需抵押。由于一笔链上交易可以包含多种操作,使得开发者可以在借款和还款间加入其它链上操作,使得这样的借贷多了很多想象空间,同时也导致了闪电贷攻击的兴起。黑客借出大笔闪电贷,然后利用这些资金来操控代币价格和利用各种DeFi协议以获取可观的利润,通常以牺牲普通投资者和平台用户的利益为代价。
犯罪手法:黑客通过使用闪电贷借来大额本金,利用平台代码漏洞进行攻击,同时结合套利手法,对平台资金池进行攻击获利。比如操纵平台资金池的代币价格汇率,产生套利空间,加上闪电贷提供的大额资金,利用套利空间获利。
案例:2021年5月20日,币安智能链(BSC)上的DeFi收益聚合器PancakeBunny被黑客闪电攻击损失 4,500 多万美元。攻击者利用合约漏洞,从PancakeSwap和ForTube(两个去中心化交易所)流动性池中闪电贷借到大额资金,不断加大BNB-BUNNY池中的BNB数量,之后在bunnyMinterV2合约中,铸造大约700万个BUNNY代币,部分换成BNB偿还闪电贷后,还有盈利69.7万枚BUNNY和11.4万枚BNB。
铸币攻击
概念:铸币函数是智能合约里会用到的一种常见函数,功能是被调用后可以铸造一定数量的新代币。正常情况下的铸币函数权限一般只有平台合约的Owner才拥有,当平台私钥泄露或Owner权限被黑客掌握的话,黑客就会调用铸币函数,铸造大量代币并出售获利。另一种情况就是平台的智能合约代码业务逻辑有漏洞,被黑客有机可乘,利用漏洞调用合约函数进行铸币。
犯罪手法:黑客通过利用平台漏洞(业务漏洞/私钥泄露)获取到平台智能合约内的铸币函数权限,在短时间内铸造大量(成百上千万)代币,之后在外部交易所进行抛售获利。平台不仅会有资金损失,同时黑客大量短时间内的抛售行为会让平台的代币价格产生暴跌现象。
案例:2021年6月28日,Polygon上算法稳定币项目SafeDollar遭到黑客铸币攻击。攻击者利用奖励池铸币漏洞频繁调用deposit()/withdraw() 函数操作来降低奖励池余额,从而大大提升每笔交易的奖励额。攻击者利用铸币漏洞增发了831,309,277,244,108,000 (83万万亿)SDO稳定币,共损失约20.2万枚USDC和4.6万枚USDT。
溢出漏洞攻击
概念:溢出漏洞是由于程序中的某个或某些输入函数对所接收数据的边界验证不严密而造成。区块链中的整数溢出漏洞是由于虚拟机为整数指定了固定的大小,超出数据范围会出现溢出错误,使攻击者有机会利用漏洞进行攻击。
犯罪手法:黑客利用溢出漏洞,可以通过转账的手段生成合约中不存在的、巨量的代币并将其转入正常账户,账户中收到的代币可以正常地转入交易所进行抛售。
案例:2018年4月23日,黑客利用以太坊ERC-20智能合约中BatchOverFlow函数中数据溢出的漏洞攻击与美图合作的公司美链BEC的智能合约,成功地向两个地址转出了天量级别的BEC代币,导致市场上海量BEC被抛售,该数字货币价值几近归零,给BEC市场交易带来了毁灭性打击。
重入攻击
概念:重入攻击是指合约代码在执行回退函数时被攻击者劫持,导致本该调用的回退函数被替换为恶意合约地址,使得攻击者能再次调用该函数,例如,本该进行一次转账的函数被两次调用,这就使得攻击者获得两次收益。
犯罪手法:黑客利用平台智能合约逻辑漏洞,结合自己部署的恶意合约,篡改正常函数交易的返回结果为访问黑客的恶意合约,从而能再次/多次调用此函数进行获利。
案例:2021年8月30日,抵押借贷平台CreamFinance遭闪电贷攻击,原因是AMP代币合约引入了一个可重入漏洞;2021年4月19日,DeFi贷款协议Lendf.Me遭遇黑客攻击,攻击者对Lendf.Me进行了两次“supply()”函数的调用,实现了重入攻击。
对虚拟货币进行流动性攻击
概念:原本正常的模式是用户给平台提供自己的代币添加到资金池里提供流动性,在增加资金池流动性的同时用户也能赚取交易的手续费。但是有些平台提供流动性的业务逻辑有漏洞,被黑客在交易中利用获利。
犯罪手法:黑客进行大额的流动性代币充提操作,但是由于平台有流动性业务上的漏洞,黑客在交易中能够提出更大额度的资金。
案例(流动性供给+重入攻击):2020年11月28日,Sushiswap遭遇流动性提供者攻击,共计损失约1.5万美金。黑客通过交易所业务逻辑漏洞,能够操纵资金池里所有的SLP并取出兑现,同时平台对代码逻辑审核不仔细出现了重入漏洞,黑客可以重复多次上述的取出代币行为,最终兑现获利。
恶意智能合约攻击
概念:智能合约是一种区块链特有的特殊协议,在区块链内制定合约时使用,当中内含了代码函数,同时还能与其他合约进行交互、做决策、存储资料及发送代币等功能。然而黑客也会编写不公开的恶意合约进行非法攻击,对普通用户造成资金损失。
犯罪手法:黑客编写恶意合约,该合约的目的就是为了进行诈骗盗窃等违法行为。完成合约部署后,引诱普通用户与黑客完成交易,在交易过程中引导用户授权给黑客进行转账操作,然后将用户地址中的代币转走完成攻击。
案例:黑客首先部署恶意合约骗取外部可以对用户随意转账的授权,之后制造假冒钱包(TokenPocket、imToken等)收款的二维码(与恶意合约连接),扫码后会跳转至貌似正常的转账页面,但是实际上是黑客制作的第三方网站,在黑客的诱导下用户使用了他们制作的工具发起转账并授权,用户以为只是普通的转账授权,但其实已经授权给黑客可以转走用户钱包的所有资产,最终导致资产丢失。
算力攻击
概念:在区块链中采用PoW共识机制的公链会需要矿工来进行挖矿和记账记录到区块链账本中。在这个过程中,拥有算力更高更强的矿工会更容易获得挖矿的权力。如果有恶意矿工能够占有超过全网一半以上的算力,那么他就有能力发动算力攻击,对公开的区块链账本进行篡改或发动双花攻击。
犯罪手法:在区块链领域中,黑客通过占领超过全网51%的算力(租赁/恶意攻击)来针对采用PoW共识机制的公链发动攻击。通过黑客全网超过一半算力的能力,黑客就可以篡改账本,进行双花攻击。双花攻击就是先给交易所转一笔账,然后通过算力攻击改掉这笔转账在链上的共识,此时交易所还保留了这笔转账记录,所以在交易所里会有一笔其实不存在的钱可以套现,黑客就能从交易所盗取资产。
案例:著名的交易所 gate.io 被曝出遭受了 51% 双花攻击,这次攻击造成了大概价值 20 万美元的损失。黑客在这个交易所有两笔金额较大的充值,这两笔充值又通过算力攻击后在账本上被篡改,相当于黑客可以进行四笔充值。之后黑客在网络上卖掉他们在交易所里的币,或者把充值进交易所的币换成其它币种,最后提现。
Scan QR code with WeChat