Poly Network被盗资金流向追踪及黑客套路揭秘
据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示, 7月2日,Poly Network跨链桥项目疑似遭受私钥泄露或多签服务被攻击,黑客利用伪造的凭证向多条链的跨链桥合约进行取款操作。
这不是Poly Network第一次被攻击,早在2021年8月10日,Beosin EagleEye就监测显示,跨链协议Poly Network 遭受攻击,Ethereum、BinanceChain、Polygon3条链上近6亿美元资金被盗。
当年的这个事件,也成为2021年涉案金额最大的黑客事件,两年前的攻击者利用EthCrossChainManager合约中存在的逻辑缺陷,通过该合约调用EthCrossChainData合约中putCurEpochConPubKeyBytes函数更改Keeper为自有地址,然后使用该地址对提取代币的交易进行签名,从而将LockProxy合约中的大量代币套取出来。 不过当时的攻击者在多方压力下,最终选择归还资产,
而这一次,黑客又是如何打穿Poly Network的防线,请听我们细细讲解。同时,我们也将用Beosin KYT/AML带你解锁黑客更多套路。
攻击分析
这次Poly Network 的攻击事件有多个攻击地址,下面以0x906639ab20d12a95a8bec294758955870d0bb5cc地址为例。
第一步,攻击者首先调用LockProxy跨链桥合约中的lock函数进行锁定很小的Lever Token。
这里需要注意的是toChainid为6指的是BNB chain,可以通过https://explorer.poly.network/查看。这里只要Poly网络上查到,就表示已经通过中继链验证的。
第二步,切换到BNB链上,分析攻击者调用verifyHeaderAndExecuteTx函数进行取款操作,注意到这里的数量和原先的lock的数量完全对不上。
然而在中继链网络查询该笔交易,并未找到该笔交易记录。
第三步,现在有理由怀疑 是不是签名泄露或者keeper被修改(因为keeper是给用户提款签名的,只要控制了keeper就可以用伪造的签名提款)。2021年那一次的Poly被攻击就是黑客利用攻击修改了keeper导致的。
通过分析黑客调用verifyHeaderAndExecuteTx函数进行取款操作,发现keeper并没有被修改,目前keeper还是用的官方的keeper,现在我们有理由相信其中的三个keeper(0x4c46e1f946362547546677bfa719598385ce56f2、0x51b7529137d34002c4ebd81a2244f0ee7e95b2c0、0x3dfccb7b8a6972cde3b695d3c0c032514b0f3825) 可能私钥泄露或多签服务被攻击,导致攻击者可以利用伪造的凭证取款。
同时,我们根据Beosin KYT虚拟资产反洗钱合规和分析平台追踪发现, 黑客通过一批地址调用Poly Network的合约,利用合约中的UnlockEvent和verifyHeaderAndExecuteTx两个函数的漏洞对项目方实施攻击,将资金转移至自己的沉淀地址中。
线索来源
ETH链
调用被攻击合约的地址通过一个共同的手续费分发地址获取手续费。
图1 手续费分发地址交易
该手续费分发地址通过FixedFloat交易所获取手续费。
手续费分发地址:
0x0dfeb429166e629204aca66467484cd88cb9701c
交易哈希
0x69923ea025e7684578b9cbfd7af1c862f044f8b09398234039ce9989bd55561a
黑客归集地址共计三个手续费来源
1、使用手续费第一笔来自Tornado.Cash。
图2 归集地址0xe0afadad1d93704761c8550f21a53de3468ba599手续费来源
2、通过Bybit经过一层中转流入该地址。
手续费转账地址:
0x4FbC021742A4664D1cf8e9d2730b8519B9Dcc523
交易哈希
0xb8b0626b86ed336c9c0fff56b20761438535aa06461dcca9cdc39dc10ec1c620
3、使用被盗的虚拟货币换成ETH作为手续费
有两个黑客盗币地址将盗取的USDT/USDC在DEX中换成ETH,再用作后续地址的手续费,下面是两个地址的初始手续费转账地址及哈希。
黑客地址1:
0xdddE20a5F569DFB11F5c405751367E939ebC5886
手续费转账地址:
0xD475747a4937a66Cc7D4a2c7eA7F6e827D0f7390
交易哈希:
0x853b75b1b8a7f56c51fcba9b996af8d132b784cfa0da7162c20a48a5994d8a06
黑客地址2:
0x8E0001966e6997db3e45c5F75D4C89a610255b2E
交易哈希:
0x0f3cf1fe16052223e091e87c2a6f7a9a94e53a565dfac7b83eb0b9b79458ad8f
BSC链
图3 手续费分发地址0x1634Bf68e6b3Bb8D79388EfB3d1A5215506FBbEd手续费来源
该手续费分发地址通过Kucoin和ChangeNow两个交易所平台获取手续费并分发。
1、Kucoin
交易哈希:
0x0b0aa0d438e4f15c919e55148c87890ae0d089d036cadbdc6b87afa9e19f747b
2、ChangeNow
交易哈希:
0x6db6c128960b7268f2bf8c199b2c0c017b3bee29bbefac0bf5d31c63b6373075
黑客归集地址手续费来源为手续费分发地址。沉淀地址未转账手续费。
Polygon链
图4 黑客攻击地址0x09F92eDce2E46C399BFE7881a7619598AF8436d5手续费来源
调用被攻击合约的地址通过一个共同的手续费分发地址获取手续费。
该地址通过FixedFloat交易所获取手续费。
交易哈希:
0xc7a25eb840718028c0d8f402d1293dcb479755d77609a7dfb616c10e90176dec
黑客归集地址手续费来源为
0x09F92eDce2E46C399BFE7881a7619598AF8436d5。
沉淀地址未转账手续费。
Beosin KYT/AML带你追踪资金详情
ETH链
Beosin KYT/AML追踪发现ETH链上盗币资金简图如下:
图5 Beosin KYT追踪的盗币资金流向简图
首先黑客通过一批地址来调用被攻击合约以利用漏洞,使用共计20个地址。
这20个地址的手续费均来自地址0x0dfeb429166e629204aca66467484cd88cb9701c,该地址手续费通过Fixedfloat转入。
黑客调用过 Poly Network 合约中的LOCK,将资金锁定后,再调用UnlockEvent和verifyHeaderAndExecuteTx两个函数,来对项目方实施攻击, 案例如下:
图6盗币哈希调取函数记录
可以看到在UnlockEvent中,变量toAddress已变成了黑客归集地址,并且amount也被修改为被盗取资金数量 (此处为1,592.51818168432 ETH)。
图7盗币交易输入信息记录
从这里可以看到输入数据中Proof一项中已被替换为包含黑客归集地址的内容。
涉案黑客地址手续费部分主要从四个渠道获得:
1、通过Tronado.cash转入ETH
2、通过Bybit交易所转入ETH
3、通过KuCoin交易所转入ETH
4、通过FixedFloat交易所转入ETH
5、使用被盗取的ETH
黑客从2023年7月1日开始攻击,截止到目前,仅通过DeFi交易所将部分虚拟货币换成ETH,以及将ETH和部分其他虚拟货币转移到其他沉淀地址中,暂未对被盗资金进行销赃处理,但已准备好了交易所需手续费,在确认安全后会立刻对沉淀地址资金进行转移。
BSC链
BSC链盗币路径与ETH盗币路径类似,黑客继续使用了一部分相同的地址来进行盗币操作,并利用合约漏洞将虚拟货币转移至黑客归集地址。
图8 Beosin KYT/AML追踪的盗币资金流向简图
首先黑客通过一批地址来调用被攻击合约以利用漏洞,使用超过30个地址。
这些地址的手续费均来自地址0x1634Bf68e6b3Bb8D79388EfB3d1A5215506FBbEd,该地址手续费通过Kucoin和ChangeNow平台转入。
而后通过借助同样的漏洞攻击合约,并将被盗资金转入归集地址中,随后部分资金转入多个沉淀地址。<span yes'; mso-bidi- font-size:10.5000pt;mso-font-kerning:1.0000pt;">
Polygon链
Polygon链盗币路径与上述两条链路盗币路径类似,黑客继续使用了一部分相同的地址来进行盗币操作,并利用合约漏洞将虚拟货币转移至黑客归集地址。
图9 Beosin KYT/AML追踪的盗币资金流向简图
首先黑客通过一批地址来调用被攻击合约以利用漏洞,Polygon链只使用了一个地址0x09F92eDce2E46C399BFE7881a7619598AF8436d5,手续费通过Fixedfloat转入。
而后通过借助同样的漏洞攻击合约,并将被盗资金转入归集地址中,随后部分资金转入多个沉淀地址。