Sunny He

Posted on Jan 17, 2022Read on Mirror.xyz

挽救被盗钱包资产LoL

事件回顾

几周前参加一次NFT注册过程中,误操作将主要钱包私钥泄露,导致钱包中,大部分资产被盗走。幸运的是一部份资产不在hacker盗取列表上,幸免于难。但是问题是,如果要挽救钱包里的资产,就需要先转入油费,再进行转账或者unstake等相关操作,然而担心钱包已经被bot盯上,会frontrun我们的所有操作,这样剩余资产也会被hacker转走。

挽救剩余资产

简单research,发现过去一年,这类hacking频发,但是尚未有retail端解决方案。已经很多人report自己钱包盗用,NFT资产还存留在钱包中,因此有大神提出解决方案,即:利用flashbot将多个transaction bundle到一起,保证在一个block里执行,不给hacker bot时间和机会frontrun你的交易。

借用github上大神们提供的template https://github.com/microbecode/flashbot/blob/master/src/index.ts,将相关代码(95-99行)换成对应的合约地址和函数(etherscan上可查询)。

值得注意的是,我们在Goerli上进行了简单的Flashbot bundle转账测试,能够成功执行。在真实的环境中,因为涉及到多笔transaction,多个平台交互,在Gas Fee limit这里,数字一直不对,好在Flashbot能够测算gas fee limit,数字不够不执行交易,手动修改了几次gas,终于成功的把在dex staking的资产和一些low liquidity的token资产转移到新的钱包了。

后续

链上资产的surviliance是生态中不可或缺的一环,资产丢失的追回或者报案也是近年来这些公司越发重要的业务。

在hacking发生后,我立即联系了之前cover过的一些survilliance的公司,TRM Labs, Elementus,Merkle Tree, 也算是从用户角度做了一次尽调。TRM Labs, Elementus, Merkle Tree 均立刻安排相关investigation,并且把相关交易记录在系统内,如果相关黑客钱包资产准备在交易所进行交易,合作的交易所会hold相关资产,并且预留几天时间给受害者进行报案。

这些surveillance公司现在主要支持Ethereum,暂不支持其他链,比如Polygon,所以也立即联系的polygon团队,report相关的交易和钱包地址,polygon团队也label了相关的地址。

由于此次验证链接钱包,是通过collab.land发生的,也第一时间联系了collab.land团队,24小时之内也收到了产品团队的回复,切断了相关server链接,以免更多人资产被盗。

这里犯了三个个非常严重操作和认知的错误:

1.Metamask或者任何钱包,在任何情况下都不会要你的私钥,更不会需要通过私钥进行授权。这是基本常识,不要因为导入钱包过程需要私钥就觉得钱包会跟你要私钥授权;

2.无论是新手还是资深从业者,跟资产安全无小事,不要因为操作多,怕麻烦,就不妥善保管私钥。有时候麻烦也是一种安全。过去一个星期,沟通的从业者中,大概80%+的人会把助记词直接保存在电脑里。你永远不知道Hacker可以以何种方式拿到你的信息;大额资产放冷钱包;常备一个备用冷钱包。

3.不要因为购买成本低,就忽视资产现有价值。热钱包,尤其是extension,尽量不要放资产,油费都别放,资产都放在冷钱包里,因为现在损失掉的未来某一天也许就是你暴富的机会。

最后要特别感谢:

感谢慢雾的余弦总,确认了我们解决思路;

感谢吓神,把dex里跟被盗钱包里资产相关的参数帮我们一个一个找出来,最后半夜累到眼睛睁不开写script的时候,节省了不少时间;

感谢Youbi的Enzo,一步一步带着队友体验smart contract,进行交互测试,让区块链小白能够迅速了解smart contract精髓;

感谢Chaos Labs的Omer,大半夜等在线上,随时fork 主网环境,提供simulation的测试环境;

感谢湾区的师兄,大半夜送ledger,让我们能安心睡个好觉;

当然最棒的还是我家杰克老师,区块链小白,一晚上完成了smartcontract,dex,flashbot,以及一些列以太坊工具的认知和实操,经过6个小时,成功把资产转移出来!!!