原副标题:辜卢密检视——链上门牌号下毒 让你不寒而栗
Abstract:
近两周,0U 提款的链上门牌号下毒反击四起,截止12月2日,早已有少于37W门牌号被下毒,共计92个被害门牌号,被盗取数额少于164W USD。
第一集该文,X-explore 对反击势头展开了全面分析,对反击者展开了链上追根溯源,与此同时也剖析了反击的与此同时实现形式。
他们敦促手提包APP强化信用风险提示信息,普通使用者在提款时严防这类反击。因为他们注意到UTC时间11月2日10点38分,有一名链上使用者伤亡惨重,近100亿美金因下毒而被转至骇客门牌号。
责任编辑由 X-explore 与吴说区块链联手正式发布。
1. 大背景
上周,他们的链上信用风险监视辨认出ETH、BSC链上频繁出现 0u 提款现像,下列图bsc链的买卖统计数据为例,被害者A收到一大笔恒定买卖将452 BSC-USD发送给B后,会接到C布季谢的0 BSC-USD,与此同时,在同一大笔买卖hash内使用者A他们也会倍受掌控的给C转0 BSC-USD(与此同时实现了“二来正中下怀”的0 BSC-USD提款操作形式)
在街道社区中,许多使用者无人知晓补出,害怕他们的手提包公钥早已外泄,反击者已经开始盗取金融资产。
2. 反击企图
只不过碰到这种情况的使用者不必亢奋,我们的金融资产是安全可靠的,公钥并没有外泄,只需要细细证实门牌号留神别转错账就没事儿,骇客的表现手法很简单:
在链上监视几个稳定币的提款信息,捕获被害者门牌号A恒定发送给使用者B的提款信息。 精心构造与使用者门牌号B首尾一致的骇客门牌号C,使被害者A与骇客门牌号C互相转帐0U。(这里反击者可以使用靓号生成工具 Profanity,在几秒内生成与使用者门牌号前后7位相同的门牌号) 被害者A下次提款时粗心大意直接复制历史买卖的门牌号时,很容易错误复制到骇客准备的门牌号C,从而将资金转错账他们认为这种反击是链上门牌号下毒反击:
首先,骇客让他们的门牌号出现在使用者买卖历史中,诱导使用者误认为是可信的交互门牌号。 此外,骇客构造出的门牌号与使用者可信门牌号首尾相同,被使用者当作下次买卖的对象。 链上下毒很容易使使用者产生资损,链上使用者需共同警惕!3. 反击势头
截止12月2日,在BSC与ETH链上的反击次数分别少于32万次和5万次,受反击影响的独立门牌号数分别少于16万个以及4万个。
从趋势上看,BSC链自从11月22日开始爆发,ETH链则从11月27日开始爆发,两条链的反击规模均四起。
此外,可以看到反击发生时间有显著规律性,在每天UTC时间17点到0点反击量级显著减少。疑似反击者处于亚洲时区。
截止12月2日,总共有 92 个独立门牌号受骗,累计被骗数额达到 164万USD。伴随着反击者反击目标的增加,可以预见,上周还会不断有大量使用者被骗。
此外,他们对反击者的反击成本展开了分析,目前总成本接近2.9W USD(50 BNB + 11 ETH),反击者对BSC-USD和USDT非常偏爱,与稳定币的币种流通量和使用者持有量有关
反击者追根溯源
他们对其中一个反击者展开了链上追根溯源追踪,与两个主流中心化买卖所关联,其完整过程如下图所示:
从TRON链转移到BSC链上。 其盗取资金最终归集到Huobi.com,反击者依然使用Transit.Finance跨链桥将盗取资金转移到TRON链上。让他们进一步展开,针对盗取资金的流向展开追根溯源。
首先,被害者门牌号0xe17c2b2b40574d229a251fe3776e6da2cc46aa5e向反击者门牌号0x720c1cfe1bfc38b3b21c20961262ad1e095a6867分两次,共提款1300U。
接着,反击者门牌号将资金归集到门牌号0x89e692c1b31e7f03b7b9cbb1c7ab7872ddeadd49
反击者在0x89e692c1b31e7f03b7b9cbb1c7ab7872ddeadd49门牌号上展开了资金的跨链转移,在txhash为0x72905bd839f682f795946d285500143ee7606e9690df2ad32968e878ad290d9f的买卖中,如下图所示,将10561 USDT通过Transit.Finance的合约(0xb45a2dda996c32e93b8c47098e90ed0e7ab18e39)展开了Cross操作形式。在这笔买卖的Event Logs中,可以看到资金去向了TRON链的USDT,对应门牌号是TLUKBw37BVWDZdhbGco2ZEfdMd5Cit8TMD,对应TRON链上的买卖hash是:716507136ad28717ffd5f2f437af753ff96d344d2bcbe83f24d801db49f5a884
最终,反击者将 TLUKBw37BVWDZdhbGco2ZEfdMd5Cit8TMD 门牌号上的充值进了Huobi买卖所。充值的入金门牌号分别是:TPtzsrCAG61QMwig3jZV8Px7Rd1WZVnRXG, TDp7r3S1hJeiNfH1CvCVXeY8notY47nagJ
反击原理分析
反击者案例1:
EOA: 0xBAA1451bE8C33998CD43F375c2e67E79c1a104AD CA: 0x7ceBeb6035B231A73CB5Fb4119c2FbBC04Ec6fD1反击者案例2:
EOA: 0x616384a80f32aDb65243522971aE2ba7664B62E3 CA: 0x6f00Ed594A6AceEf0E1A6FE023Ecd5Eb96c8665a针对bsc链上的token反击主要包含BSC-USD、BUSD、USDC、ETH等,大部分是通过反击合约批量调用transferFrom()函数,也有手动调用transfer()函数的情况和针对主币的情况,原理基本一致。下列用 BSC-USD 的一个反击合约举例
transferFrom()
在反击者调用反击合约的一大笔买卖中,反击合约只调用了 BSC-USD 的 transferFrom() 函数,通过对参数填充sender、recipient、amount可以与此同时实现操控任意门牌号间的0 USD转帐,与此同时产生授权Approval()与提款Transfer()的事件
Blocksec phalcon买卖信息
BSC-USD 的合约源码显示transferFrom()函数顺序调用了提款_transfer()与授权_approve()函数
_transfer()函数的作用很简单,首先排除买卖中的全零门牌号,然后给发送方减钱,接受者加钱,最后记录提款事件。这里用到的加减函数add()/sub()是OpenZeppelin的safemath库,溢出会报错回退
_approve()函数同样排除全零门牌号,修改授权值,这个函数的重点在transferFrom中调用approve的参数计算里,用到了_allowances[sender][_msgSender()].sub(amount, “BEP20: transfer amount exceeds allowance”) ,将已有的授权token数量减去提款数量,剩余的授权数量放入approve重新授权。这里用到的减函数sub是OpenZeppelin的safemath库,溢出会报错回退;但是如果整个流程的amount参数为零,没有任何检测机制能拒绝这笔买卖,也就导致了链上大量的 0U 提款能恒定发送,而骇客只需要付出手续费即可收获不菲的回报。
transfer()
调用transfer()函数的反击形式原理一致,整个流程只有加减的溢出检测,没有对零提款的过滤。
BNB
在token的反击追溯过程中,他们还辨认出了通过0 BNB提款的首尾相同钓鱼反击,原理与token钓鱼类似,构造首尾相同的门牌号展开钓鱼
反击买卖:https://bscscan.com/tx/0x5ae6a7b8e3ee1f342153c1992ef9170788e024c4142941590857d773c63ceeb3
构造门牌号后迷惑性非常高,一不留神就转错到骇客门牌号上
恒定使用者门牌号:0x69cb60065ddd0197e0837fac61f8de8e186c2a73
骇客构造门牌号:0x69c22da7a26a322ace4098cba637b39fa0a42a73
6. X-explore 反击检测
目前X-explore可针对这类反击行为展开实时的链上监测,为了避免危害进一步加剧,他们建议:
手提包App通过颜色或其他提示信息帮助使用者区分门牌号,并做好使用者提醒; 使用者在提款前细细区分历史买卖门牌号,逐字证实,最好他们存一份门牌号簿。与此与此同时,我们在 Dune 中开源了此次反击事件的势头感知大图。
https://dune.com/opang/first-and-last-address-construction