原文来源: Buidler DAO
随着美联储不断加息缩表,加密市场流动性不断减少,市场活跃度持续低迷进入熊市。 作为市场上仅剩的这些「流动性」也就是我们这些韭菜的钱包也成为了骗子们虎视眈眈的对象。 加密世界是个黑暗森林,Crypto 带来财产所有权的同时也意味着一旦财产丢失或私钥泄露是几乎没有任何法律途径或方法可以挽回。
为什么写这篇文章呢?
因为菠菜的钱包被盗了,资产几乎被洗劫一空, 讽刺的是,作为一个写过钱包安全相关的科普文章的老韭菜也翻车了。
虽然失去了陪伴许久的钱包和内部资产,但遭遇这件事情后菠菜真真切切感受到了社区的温暖,并且得到了许多「家人们」的关心和帮助,甚至在社区一位小伙伴的帮助下在黑客手里抢救回来了近 30 个侥幸存活下来的 NFT(不是已经被盗走的 NFT)。 虽然损失的资产无法找回了,但在本次「菠菜钱包被盗事件」中,有许多经历是可以科普的,希望这篇文章可以给行业提供一个受害活案例并给其他小伙伴敲响警钟,防止「惨案」再次发生。
文章速览:
01/ 我的钱包是如何被盗的?
02/ 黑客是如何拿到我私钥的?
03/ 我是如何在黑客手里抢救 NFT 的?
04/ 如何实现同一区块完成所有操作?
05/ 什么是 MEV?MEV 给以太坊带来什么影响?
06/ 写在最后
我的钱包是如何被盗的?
某天,推特上有一个人私信我,起初我并没有提起警觉,因为骗子的 Twitter 账号看起来像是一个正常用户。开始只是进行了一些闲聊,之后他开始问我是否愿意为 cheelee 这个项目输出内容并支付我报酬,且索要了一些我的作品进行验证,于是我把我的 telegram 给到了他,之后便在 telegram 上给我发了关于如何输出内容的一些细节和两个文件。下载并点击文件后什么都没有发生便意识到不对劲,于是打开小狐狸查看,不出所料, 钱包被盗,所有的资产都被盗走,NFT 也被直接卖给 offer 换成 ETH 转移。 (只能说菠菜想赚点外快大意了,其实陌生人在 tg 上发文件的时候就应该警惕起来的)。
黑客是如何拿到我私钥的?
黑客是如何拿到我私钥的?
我的私钥加密保存在 Chrome 的小狐狸中,黑客是如何获取到我的私钥的?这得从 Chrome 这个浏览器说起: 你敢想象吗?这个占据着全球 66% 市场份额的 Chrome 浏览器居然存在一个巨大的安全漏洞! 这个漏洞是什么呢?如果你在下图路径打开你的 Chrome 浏览器的 Default 文件夹,你会发现一个叫 Login Data 的文件,这个文件存储着你在 Chrome 上保存的每一个密码,但如果你想直接打开去读它的话你会发现它是不可读的,显示的是一堆乱码, 因为这个文件被 AES 算法加密过,暴力破解需要破到天荒地老, 那么其实你在 Chrome 上保存的密码都是十分安全的,但问题出在哪?
如果你再往前翻一个目录在 User Data 中你会发现这样一个文件叫 Local State,如果你打开他之后在里面搜索「encrypted」,你会发现后面有一串密钥,这个密钥是什么? 就是需要暴力破解几百年才能破解的 Login Data AES 算法解密的密钥串! 这真是离谱他妈给离谱开门,离谱到家了!这相当于什么?
相当于你用世界上最坚固的材料做了一个牢不可破的保险柜存放密码但你却把保险柜钥匙放在保险柜旁边,贼进来就直接拿着钥匙打开保险柜了!并且这串密钥串还是通过 Windows 系统本身的密码生成工具生成的,与生成的电脑 ID 是唯一绑定关系,也就是说加密解密都只能在这台电脑上进行, Chrome 把解密的密钥串就这么明文保存在了本地,这样黑客只需要拿着密钥串进行解密就可以拿到我的所有密码。
MetaMask 的密码并不保存在 Chrome 的密码文件中,为什么我的私钥会泄露呢? 因为我的 MetaMask 用的密码跟我的习惯密码是一个密码, 黑客拿到了习惯密码后进入 MetaMask 还不是分分钟的事情,于是乎,我的私钥泄露了。不仅如此,所有存在 Chrome 浏览器上的账户都泄露了,甚至 Twitter 和 Google 账户全部遭到了冻结。
我是如何在黑客手里抢救 NFT 的?
在钱包被盗后,黑客在 OpenSea 上 卖出了所有带有 offer 的 NFT 并转移走了所有的资金, 万幸的是有一些 NFT 幸存了下来,其中除了 ENS 和一些没 offer 的 NFT 外,有一个刚 mint 不久的 DeBox 小蛇没有被卖掉,可能因为 Opensea 上存在一些 BUG,这个 NFT 是我另外一个白单地址 mint 完后转过去的,不知道什么原因没有被显示出来,这使得它逃过了一劫,于是乎当我尝试往钱包中转 gas 的时候,我发现我的钱包遭遇了「清道夫攻击」,也可以称为抢 gas 机器人,我转进去的 Gas 费被瞬间转走了!
什么是抢 Gas 机器人?就是一旦你往钱包中转 Gas 费,机器人就会立马检测到并将 gas 立马转移走,这类机器人通常活跃在被泄露私钥的钱包中。这个机器人也活跃在一种故意泄露私钥的骗局,就是骗子会故意泄露一个钱包里面有 U 的钱包私钥,但这个 U 是被合约拉黑了的无法转走,骗子盯上的就是你企图转走而往里面转的 Gas,下图就是一个案例(在 Tron 链上),感兴趣的小伙伴可以进去看看,但别往里面打 Gas 噢。
我的钱包在被抢 gas 机器人盯上之后就意味着我无法转移走我幸存的那些 NFT,因为我没办法在钱包中转入 gas 去支付我转移走 NFT 的操作,难道说我的 NFT 要永远被困在钱包里了吗?就在这一筹莫展之时,社区的力量体现出来了, Buidler DAO 社区中有一位小伙伴站了出来帮助我在抢 gas 机器人手中把幸存的 NFT 给抢回来了!
人间有真情人间有真爱!
那么这位小伙伴到底是怎么做到的呢?
首先让我们看看手动情况下需要多快时间可以在抢 Gas 机器人前面转走我的 NFT,在区块链浏览器中可以看到当我转进去 gas 费(区块高度 16387987 ),抢 gas 机器人在三个区块之后(区块高度 16387990 )将所有 gas 转移走了,在以太坊合并后 POS 权益证明机制中一个区块的出块时间固定为 12 秒一个区块,那这是不是意味着我只要在前两个区块(24 秒内)操作就可以快过机器人了呢??这样想就太天真了,如果是这么慢的速度那就都不好意思叫机器人了。
在以太坊中, 一笔交易的处理速度取决于你支付了多少 Gas 费, 如果你想交易被更快的处理就需要支付更多的 Gas 费,Gas 费的均价会随着以太坊的交易需求量而变化,如果按照正常情况下的 Gas 费用来算的话, 处理一笔交易所需要的时间大概为 30 秒,这就意味着我如果想在抢 Gas 机器人抢走 Gas 之前把 NFT 抢救走就需要在 36-30 = 6 秒之内完成我的操作,这几乎是一个不可能完成的事情, 因为我即便是在看到 Gas 到账后的第一时间就去转 NFT,Metamask 弹出界面的时间差不多就已经 6 秒了,那么要如何做到在 Gas 机器人转走 Gas 之前就把 NFT 转移走呢?
答案就是在同一个区块内完成往钱包里转 Gas 和转走 NFT 的操作,这样机器人就无法把 Gas 抢走了,因为机器人需要不停监控区块链浏览器来确认是否有 Gas 费转进钱包,如果在一个区块内完成了所有操作机器人即便检测到了区块,我也已经把 NFT 转走并且没有留下多余的 Gas 给机器人转了。
如何实现同一区块完成所有操作?
这就需要使用到 Flashbots 的 searcher-sponsored-tx 功能,这个功能大部分都被用在私钥泄露被机器人监控的钱包上。
懂技术的小伙伴可以直接在 Github 上查看:https://github.com/flashbots/searcher-sponsored-tx
Flashbots 的这个功能支持一个钱包转 Gas 给另外一个钱包的同时附带交易事务,也就是同一区块完成所有操作,在区块链浏览器中可以看到转入 Gas 和调用合约都在 16388251 这个区块中完成。
顺便提一下什么是 Flashbots,Flashbots 是一群关注区块链的研究人员、Buidler 和白帽人士组成的研究组织,致力于减轻最大可提取价值 (MEV,Maximal Extractable Value) 对有状态区块链(比如以太坊)带来的负面外部性。
什么是 MEV?MEV 给以太坊带来了什么影?
最大可提取价值 (MEV) 是指通过在区块中添加和排除交易并更改区块中的交易顺序,可以从区块生产中提取的超过标准区块奖励和燃料费用的最大值。 怎么理解呢?举个例子,首先我们要知道在以太坊中一个交易发起后,这笔交易会被放在 mempool(一个保存待执行交易的池子)中等待被矿工打包, 那么矿工就可以看到 mempool 中的所有交易,而矿工的权利是很大的,矿工掌握了交易的包含、排除和顺序。 如果有人通过支付更多的 Gas 费贿赂矿工调整了交易池中的交易顺序而获利,这就属于一种最大可提取价值 MEV。
你可能在想矿工换一个交易顺序怎么就可以获利了呢?
有一种 MEV 手段叫「三明治攻击」或「夹子攻击」,这种提取 MEV 的手段是通过在链上监控大额的 DEX 交易,比如有人想在 Uniswap 上购买价值 100 万美金的山寨币, 而这一笔交易会将这个山寨币的价格拉高很多,在这笔交易被放入 mempool 的时候,监控机器人就可以检测到这一笔交易,这时机器人就贿赂打包这个区块的矿工将一笔买入这个山寨币的操作插队在这个人前面,随后在这个人的购买操作之后进行一个卖出的操作,就像一个三明治一样把这个进行大额 DEX 交易的人夹在中间, 这样发动「三明治攻击」的人就从中获取了山寨币因为这个人大额交易拉盘的利润,而大额交易的这个人则造成了损失。
除此之外,获取 MEV 的手段还包括 DEX 的套利,清算机器人等等,MEV 的存在也一直给以太坊带来一些负面的影响,比如「三明治攻击」给用户带来的损失和更差的用户体验、抢跑者竞争导致的网络拥堵和高 Gas 费等,甚至的一定程度上威胁到了区块链的完整性,截至 2023 年 1 月,MEV 带来的利润已经达到了 6.8 亿美元。
数据来源:https://explore.flashbots.net/
Flashbots 的出现照亮了 MEV 这个黑暗森林,Flashbots 在 MEV 上做了许多的研究并开发了一些产品在一定程度上减少了 MEV 给以太坊带来的负面影响,虽然 Flashbots 无法解决 MEV 带来的问题,但在以太坊的新分片方案 Danksharding 中以太坊提出了一种新的机制来解决 MEV 问题(预告一下这也是我下一篇文章会写的内容),如果对 Flashbots 和 MEV 感兴趣的小伙伴可以查看以下链接。
以太坊官方对于 MEV 的介绍
Flashbots 的官方网址
最后有什么想说的吗?
钱包被盗后看到所有的加密资产和喜欢的 NFT 都没了之后心里十分难受的,身子最喜欢的 DeBox 一家子都没了。感谢社区的小伙伴在知道后一直陪着我帮我出谋划策,甚至抢救完 NFT 后 DeBox 项目方空投给菠菜一个 NFT 作为安慰,DeBox 真的是一个有温度的团队,疯狂打 Call。
关于钱包安全问题真的不可以大意,在此之前我也从未想过自己会成为被盗者之一。 文章临近截稿时看到一个 KOL NFT GOD 的钱包也遭遇到了黑客攻击失去了所有的资产,并且所有的社交帐户都泄露被利用发了诈骗信息,原因是下载了谷歌广告链接中的虚假软件,类似于曾经的假 TP 钱包骗局,所以, 千万不要下载任何来自陌生人的文件,下载所有软件的时候也一定要确认一遍是否是官方网址。
除此之外,加密资产一定不要都放在热钱包中,资产放在冷钱包中一定是最安全的,Metamask 的密码也最好不要使用习惯密码,因为 Chrome 上的 Metamask 插件不是绝对安全的,一定一定要去学习钱包安全的相关知识。
原文链接