DeFi黑暗森林历险记 我这样追回了百万美元

星球日报 view 38424 2020-11-4 16:32
share to
Scan QR code with WeChat

最大的问题是,被黑了的钱包已经在一个 defi 智能合约上抵押了 120 万美元的 ERC20 USDC 稳定币,而且是采取流动性挖矿的模式(将资金投入到不同 DeFi 协议中来赚取最大回报)。

声明:本文是位于旧金山的 AnChain.AI 团队近期解决的“DeFi百万美元失窃案”真实案例。基于签署的用户保密协议,在此不会涉及任何有关用户的个人信息。

迷失在量子态的价值数百万美元猫咪

——薛定谔的猫(Schrodinger's Cat)

“Victor,在吗?”

旧金山,晚上 8 点 27 分,我收到了一条来自我投资者朋友的短信。

我皱了下眉。通常在晚上收到 VC 的电话,要么是有特别的好事,要么是坏消息。

我的预感告诉我应该是不好的消息:

“我朋友的 Metamask(以太坊钱包)被黑了。是投 DeFi 项目的,里面有数百万美元。”

我回复道:“让他们打给我。”

几分钟过后,一个以“650”开头的电话号码打过来。电话一头,Catherine 用颤抖焦急的声音解释了事情经过。她是一位在旧金山的 VC 投资人,她的 Metamask 钱包刚刚被黑了。

当晚 9 点,我召集了一个紧急事件处理会议,Tomo 和 Ralph 参加了会议。

一天前,Catherine 掉入了社交工程(social engineering)诈骗陷阱,导致 Metamask 以太坊钱包被盗,私匙也因此泄露。

钱包被一洗而空,4 个 ETH 被转到黑客的钱包。

最大的问题是,被黑了的钱包已经在一个 DeFi 智能合约上抵押了 120 万美元的 ERC20 USDC 稳定币,而且是采取流动性挖矿的模式(将资金投入到不同 DeFi 协议中来赚取最大回报)。

被质押的 DeFi 资产还在,但那 120 万美元随时都可能不翼而飞。

这些被抵押的资产就像薛定谔的猫(Schrodinger's Cat):正如哥本哈根量子学实验那样,迷失在量子态,被锁在密封的冰冷硬盒箱中。结果只有当打开箱子(连接被盗钱包)那一刻才知道,抵押的资产是否还在。

我们尚不清楚黑客是否知道被抵押的 DeFi 资产的存在,或者他一直就在暗中观察钱包情况:

假设1:黑客早就知道。他们可能在等有更高的 DeFi 收益再动手?

假设2:黑客不知情。但是如果我们与以太坊保持互动,迟早黑客会发现这些被抵押的资产。

我们可以试探一下,答案就会出现。

但这个方法也存在问题,很可能最后结果就是好奇害死猫。

DeFi黑暗森林历险记 我这样追回了百万美元

大多数用户找到 AnChain.AI 是因为他们的加密货币被盗,想通过区块链安全服务来尽量挽救损失。但通常这种情况已经来不及了,尽管我们做最后的补救,只能拿回一部分钱而已。

但 DeFi 的盗窃给我们带来了新的机会。如果这盘棋我们下得好,120 万美元失而复得是有可能发生的。

我在回复邮件里写道:“你钱包里的钱可能随时都会被盗,你需要请求紧急事件处理专家的帮助。以下是我们提供的建议,无论你最终是否选择我们公司的服务。”

断开网络,关掉电脑。

使用全新的电脑上网。

不要分享私匙给任何人,包括安全公司。

不要把你的钱包与任何DeFi产品连接。

当我写下最后一条建议时,“黑暗森林”一词闪过我的脑海。

早晨 7 点,我醒来就看到了一封署名的邮件,是凌晨 4 点过后发送过来的。这一晚对于 Catherine 来说肯定特别漫长。在核实资产归属于她后,紧急事件响应团队开始着手处理被盗钱包事件。

正如刘慈欣的科幻小说《三体》里描述的那样,“黑暗森林法则”认为如果一种文明非常害怕其它的文明,最终它们会不敢互相揭示对方的问题所在,因为它们都担心会马上被当做潜在的威胁而遭到毁灭。

以太坊就像一个黑暗森林。AnChain.AI 团队可以感受到我们即将探索的黑暗森林中令人生畏的绿眼睛在直直地盯着我们,仿佛任何人都可能成为它的下一个猎物。虽然没有人提出这个要求,但我们都心知肚明。能否拯救这只百万美元的薛定谔的猫才是问题的关键。

分析黑暗森林的恶魔:黑客特征

世界上最有名的紧急事故反应团队当属 FireEye Mandiant,他们遵从网络安全至上的原则,并由 CEO Kevin Mandia 和员工写了原则性手册。

我从 FireEye Mandiant 离职后,创办了 AnChain.AI,我带来了最好的网络安全实践经验和共同创造了 AnChian.AI 的区块链紧急事件响应项目团队。

DeFi黑暗森林历险记 我这样追回了百万美元

与网络或云端安全相比,区块链安全在去中心化盛行的西方展露出它独特的挑战性。

紧急事件响应主要面对两个问题:调查和处理。

其中,调查目的是要找出答案:“黑客是谁?”黑客特征是为了推断出黑客的 TTP-包括盗窃手法、技术和步骤。

黑客使用的是什么工具?

电脑监识:除了社交工程的网络钓鱼网站手段,通过恶意软件和非法途径,利用 Catherine 电脑的 Chrome 浏览器 Metamask 钱包插件也可以入侵电脑。

区块链监识:通过设置与区块链交易和流动性相关的软件来调查黑客。首席信息官(CISO)调查工具将黑客的链上活动轨迹可视化。我们并未发现智能合约上的任何变化,除了代币的交易。

我打开了 AnChain.AI 的首席信息调查官调查工具,开始研究受害者和黑客的地址。看样子目前已经有 6 个人掉入了黑客的网络钓鱼诈骗陷阱里。同样的手法发生在 2020 年推特黑客调查,那个被盗案件中被盗的资金已经转入了其它钱包中。

感谢上帝,幸好我们客户的 DeFi 抵押资产还在。

DeFi黑暗森林历险记 我这样追回了百万美元

黑客地址是哪里?

这不像网络服务器能够追踪到 IP 地址和用户代理字符串(user agent strings),以太坊区块链分类账只能匿名记录钱包地址和智能合约的状态。运行速度快的 Python 脚本计算相关钱包统计数据,然后展示黑客活跃时的机率密度函数。显示结果表明黑客可能是在东亚地区。

DeFi黑暗森林历险记 我这样追回了百万美元

概率分布图帮助我们找出在最佳的黄金时间。如果过早或过晚启动事故应急处理(过早了解黑客的情况),黑客可能已经知道紧急事件响应团队的存在。如果黑客发现了我们,那我们的计划就泡汤了。为了不引起罪犯的注意,我们的最佳时机是美东时间早上 10 点到晚上 8 点。

DeFi黑暗森林历险记 我这样追回了百万美元

根据我们所描绘的黑森林恶魔,这是一个位于东亚、擅长入侵电脑的极客。但是很有可能这个人并不懂 DeFi 和智能合约。

制定应对计划

《孙子兵法》中说过“知己知彼,百战不殆”,这为我们的应对计划奠定了基础。

我们的补救方案就是将 120 万美元的稳定币转到 Catherine 的新的硬件钱包(安全的地方)。

DeFi黑暗森林历险记 我这样追回了百万美元

我们最大的希望寄托在 DeFi 的智能合约,特别是紧急应对小组制定的方案:

计划A:能将里面的资产提取到一个不同的钱包,而且绕开被盗者的钱包吗?

Tomo 收到了 DeFi 智能合约的代码:

DeFi黑暗森林历险记 我这样追回了百万美元

然而提币没有接受方,只能将资产提取到原来的钱包里。值得一提的是,Uniswap 考虑到了这种情况,并设置了相关的应对程序。

计划B:我们能否冻结资产?这样黑客就不能把资产转移。

在 DeFi 治理中,冻结是一个很关键的的功能。

DeFi黑暗森林历险记 我这样追回了百万美元

但正如图示,对于稳定币而言,交易里并没有锁定这个功能。

计划C:大多数设计良好的 DeFi 有“暂停”的管理按钮,是为了应对紧急情况。

然而,设置“暂停”只能暂停某种代币合约的交易,并不适用于个人钱包,不适合这个盗窃案。

DeFi黑暗森林历险记 我这样追回了百万美元

很明显,这个 DeFi 产品没有考虑过这种紧急情况,真令人失望。

同时,我也联系到了这个 DeFi 产品团队的电报群、邮件、推特、领英和他们的投资者。或许是孤注一掷,但他们确实在市场上有好的名声。

然而并没有想象中那样得到回复(这也在我们意料之中)。

因为糟糕的客户服务是 DeFi 产品共同的问题。

我们回复 Catherine:“很不走运,我们刚刚总结出三个直接从 DeFi 钱包挽救你的损失的方案,最终只有计划Z 合适。但这个计划有风险,你准备好了吗?”

作为日漫《龙珠Z》的狂热粉丝,我认为这个计划Z 就跟游戏中的绝招一样是必杀技,我们试试就知道了。

计划Z:精密修复手术

我的同事 Anderson 医生是研究院的一位开刀医生,他从不在他有手术的前一天喝咖啡。因为咖啡因会影响到他的手指。他曾经挥动他的手,大笑着跟我说他才需要外科手术的精确。

紧急事件处理也需要“精密修复”,过度的紧张会导致计划失败。

计划Z是我们最后的希望,虽然充满风险,但可以简单分为下面三步:

将 ETH 作为手续费转到被盗者的钱包;

将质押的资产从 DeFi 矿池提取到被盗者钱包;

全部转到安全的地方。

DeFi黑暗森林历险记 我这样追回了百万美元

我向 Catherine 讲解了整个计划步骤,很快意识到这个计划比理论上写的更加鲁莽。听起来就像一个恐怖计划:“如果黑客比你早一步行动呢?”

“计划Z 关键就是速度,我们的自动防御机制将增大我们的胜算,先听我解释。”

我从分析中总结出了一个博弈论策略,列举了所有方案可能性。当我面对复杂又不确定的事情时,我喜欢用这样的方法分析。

黑客可能还没有意识到我们的计划或者正悄悄地将资产转到其它的钱包,或早就自动设定好。

DeFi黑暗森林历险记 我这样追回了百万美元

即使黑客使用自动设置,我们的工程师也向我保证有 80% 的胜算。博弈论显示我们有 93% 的可能性打赢这场战,这个几率很高。但是面对这么大一笔数目的钱,7% 的失败率也很令人感到紧张。

前面讲计划Z 拼的就是速度。具体来说,我们的目标就是最大程度减少赎回和交易间的时间差。这分两个关键步骤;

1. 赎回速度。对矿工的最佳手续费就是关键。2020 年,由于 DeFi 市场的大爆发,以太坊的手续费跟着水涨船高而遭受骂名。在 6 月的时候平均 Gas 费甚至达到过 700 个以太币!

DeFi黑暗森林历险记 我这样追回了百万美元

2. 在 33 秒的验证时间内,200 以太币对我们来说已经是以太坊交易池排名第一的手续费。赎回 DeFi 产品时超过 12.8 美元的手续费都让我心疼,但比起 120 万美元就显得很微不足道了。每一秒都很关键。

DeFi黑暗森林历险记 我这样追回了百万美元

3. 进攻工具:在 web3 上的 Python 脚本为了对抗性交易而在以太坊交易池里进行非法预先交易,所以我们的 ERC20 稳定币交易可以在矿池里最先进行,并转到我们设定的安全地方。关于非法预先交易的相关操作请看下文。

进攻工具已经这准备好了,我们将文件命名为:

>> FrontrunDarkForest.py

我们对 Rinkeby 测试网进行测试后,计划Z 就准备完善了。

(备注:由于工具的进攻性质,我们将技术细节一笔带过。但我们接下来可能会举办一个以太坊预先交易的主题竞赛。敬请关注 @AnChain.AI)

“拯救薛定谔的猫”

下午 2 点,百万美元的“薛定谔的猫”拯救计划在两次测试后正式开始。

Catherine 深呼吸后,打开了 DeFi 赎回网站,登入了 metamask 钱包的插件,将被盗的钱包连接到 DeFi。

很快,Catherine 开始歇斯里地地尖叫,眼泪夺眶而出。

“余额为零!?这是什么情况!?”

DeFi 网页显示钱包在抵押矿池中的余额为零!大家沉默了一会,但是刚刚显示有抵押资产。经过理性分析,可能黑客早就检查过钱包的资产。但我们在一开始时并没有看到智能合约,黑客根本没有办法盗走这些钱啊。

我看了一眼 Catherine 的 DeFi 网页,在右上角本来不是应该显示连接的以太坊地址吗?

“你能够再试试连接 Metamask 钱包吗?”

Catherine屏住呼吸,关上浏览器,重新打开了 DeFi 网页,重新连接了 Metamask。

显示 120 万的 USDC 还在矿池中。

大家松了一口气,所有人嘲笑这荒谬的一切。但是我们没有时间讨论这个锁定值高达 2 亿美元的 DeFi 产品 UI 的不合理性了。

Tomo发送了 Python 脚本 FrontrunDarkForest.py,将 ETH 交易费转到被盗者钱包,然后显示我们的工具已经准备好了。

Catherine 点击“提取”,确认 200 以太币手续费,交易在以太坊网络显示。

时间仿佛静止了,只听到我们的心跳声。

当所有筹码都摆在我们面前,信心在这时会突然消失。

遍布 SparkPool、Nanopool 和 F2Pool 矿池的全球成千上万的 CPU 矿工都在拼命地想从这次交易中分一杯羹。

DeFi黑暗森林历险记 我这样追回了百万美元

30 秒过后,智能合约的提取交易成功,200 Gwei 的保险费起了作用。

很快,脚本 FrontrunDarkForest.py 开始运行,弹出了这样的信息:

[INFO]预先交易成功。USDC 提取到安全位置。

3 秒后,以太坊浏览器确认了这笔交易。USDC 到达设定的安全钱包。

从技术上讲,到下午 2:15,紧急事件反应处理任务已经完成。从黑森林中救出 120 万美元的薛定谔的猫只用了 33 秒。世界仍然和平,“亚洲的恶魔”显然仍在美梦中。

我们挥手告别,然后走出我的办公大楼。这是旧金山另一个阳光灿烂的一天,桂花的舒缓的芬芳使我平静,只有当初秋的微风拂过我时,我才意识到我的衬衫沾满了汗。

特斯拉平静地驶在 101 号高速公路上,我开始播放最喜欢的歌曲,大卫·鲍伊(David Bowie)的《Starman》,就像电影《火星人》中一样。充满异国风情的 Dorian 调式瞬间改变了宇宙气氛,然后唱起:

星星超人在空中静候着,

他告诉我们不要搞砸了,

因为他知道一切都会是值得的。

我回想起 Catherine 在硬件钱包地址上看到的价值 120 万美元的加密货币时的灿烂笑容,她问道:“黑客看到这一点会感到什么?”

黑客很快就会看到以闪电般的速度发生的这笔异常的以太坊交易。他可能会觉得“星星超人”已将薛定谔的猫从他那片黑暗森林中救出,交给了真正的主人。

学到的经验

在《紧急情况响应圣经》 [1]的第 1 部分中,FireEye Mandiant 和 AnChain.AI 建议要“为不可避免的事件做准备”。你不会像 Catherine 那样幸运,这只是因为碰巧认识了我们的投资者。防范于未然,请确保你的联系人列表中至少有一个紧急事件响应团队的人。

当心社会工程学诈骗。Catherine 正是被一个诱骗并窃取了她的私钥的钓鱼网站导致黑客入侵。如图1所示,受害者并不是只有她一个人。不要以为你总是比黑客聪明。再次提醒,在任何情况下你都不应该泄露你的私钥或密码,那 12 或 24 个单词,还记得吗?

我对匿名的 DeFi 团队有三个问题:当亿万美元资产注入的的流动资金池中时,我们将与谁联系以获得可靠的客户支持?我们向谁建议更好的用户界面和用户体验?谁能像联邦存款保险公司这样为投资者的危急资产提供保险?我不了解 DeFi 未来的银行业务如何,除非这三点能给我令人信服的答案,你怎么看?

致谢:

我要感谢Paradigm的Daniel Robinson和丰元资本(Amino Capital)的Sue Xu的宝贵反馈。

引用:

[1] Jason T. Luttgens,Matthew Pepe, Kevin Mandia, “Incident Response & Computer Forensics, 3rd Edition”, ISBN:9780071798686, McGraw-Hill Education, 2014

[2] Dan Robinson,https://medium.com/@danrobinson/ethereum-is-a-dark-forest-ecc5f0505dff

[3] Sam Sun,https://samczsun.com/escaping-the-dark-forest/

原文链接:

https://www.linkedin.com/pulse/rescuing-schrodingers-cat-defi-darkforest-victor-fang-ph-d-/

原文来自 Linkined

作者:Victor Fang, AnChain.AI

btcfans公众号

Scan QR code with WeChat

Disclaimer:

Previous: 强强联合!微软运用IPFS构建去中心化身份系统 Next: 一文读懂应用| IPFS 如何做到数据安全共享和审查?

Related