引介 | 如何打败以太坊清道夫,挽救你的资产
摘要: 私钥泄露后如何抢先挽回剩余资产
你没有过这样的经历:将一笔资金发送到某个账户后,这笔资金却不翼而飞?你可能是遭了“清道夫”的毒手。我们来帮你解除危机。
如果你的私钥被盗,作恶者通常会安排一个 “清道夫” 程序来监控你的账户,然后伺机吃掉你的账户中的资产 —— 无论你在这个账户中存入 ETH 或其它代币,还是收到了空投,或有任何类似情况。
本文概述了 “清道夫” 是如何吃掉用户资产的,并提供了三种方法来挽救还没有被吃掉的资金(如押金)。
用户私钥是如何泄漏的?
我们最近看到有很多用户冒充 Telegram 群组的管理员,然后在这些合法群组的主要频道向用户提供 “帮助”(虽然他们不是真正的管理员,他们复制了正牌管理员的简介,只是略微改动了用户名)。冒牌管理员通常会利用专业话术来迷惑用户,向用户分享看似合法的网站(因为有品牌背书)的链接。这些网站会要求用户提供私钥或助记词。
然后你的代币就没了,而且会有 “清道夫” 开始监控你的账户。
这里有一个钓鱼网站的例子:
- 感谢研究员 @dubstard 发现了很多冒充 WalletConnect 的活动!-
“清道夫” 是如何工作的?
“清道夫” 是一段用来监控区块链(包括交易池,从技术层面上来说,交易池不在链上)的代码。它有着比人类更快的反应速度,按照编好的程序为符合规则的特定交易签名。
也就是说,“清道夫”是看不到你的,它不知道你正在区块链浏览器上查看你的地址,或将你的地址 “连接” 到某个 dApp 的用户界面。仅当你签署某个交易并将其广播到网络时,它才会看到你的活动。
随着时间的推移,“清道夫” 连同利用 “清道夫” 的钓鱼骗局也在不断进化中。
“清道夫” 的演化
2017 年有一类骗局非常流行,利用了具备锁定功能【即,无法成功调用transfer()
】同时有喂价的代币。Dave Appleton 发文揭露了这类骗局。
在这类骗局中,骗子会先获取这类能够被锁定的代币,但是区块浏览器依然会提供这类代币【其中最流行的是 Minerum(MNE)】的价格。然后,骗子会(装作无意间)将存有这类代币的地址的私钥公布出去,引诱受害者来取走地址中的代币。为了取走代币,受害者会将 ETH 转到该地址上作为 gas 费。然而,骗子早就安排了 “清道夫”,以迅雷不及掩耳之势将受害者转入的 ETH 转移到自己的账户中。从理论上来说,被锁定的代币被认为是没有价值的, 因此骗子试图从没有戒心的贪婪用户那里收回一些锁仓价值。
如今,被黑的地址已经被大范围放置了基础的 ETH “清道夫”。还有一些诈骗集团采用逻辑上更高级的 “清道夫” ,会基于喂价吃掉 ERC 20 代币。
前段时间,我对一个被黑的地址进行了研究,发现这些 “清道夫” 还在继续进化:
1)“清道夫” 喜食高价值资产,即使这意味着需要花更多交易费。
2)“清道夫” 会使用所有可用的 ETH 来窃取尽可能多的价值,而且其交易在同一 nonce 上获胜的概率很高。
3)“清道夫” 有一个配对引擎,将其原生代币与质押代币进行配对(即,xKNCa = KNC),以便获得质押代币的喂价。
4)“清道夫” 有自己的内部 nonce 计数器,如果其最高 nonce 在一段时间内没有得到确认(或是被丢弃/替换),就会定期将 nonce 重置为 eth.getTransactionCount()
的输出。
5)我们可以透过一些链上活动看出,如果某个高价值资产成了 “清道夫” 眼中的猎物,“清道夫” 甚至会向相关账户转入一些 ETH 作为 gas 费,以便迅速将该资产从账户中转出。
6)一些 “清道夫” 会为资产价值设置一个最低阈值。“清道夫” 不会吃掉低于该阈值的资产。这就意味着,你可能察觉不到你的账户里有 “清道夫”。细思极恐。
鉴于我们第一次撰写关于 “清道夫” 的文章是在 2017 年,如今的 “清道夫” 早已今非昔比,可以帮助运营者实现收益最大化,同时让受害者的损失最大化。
住手吧!清道夫!
如何击败 “清道夫”?
首先,身为人类的你是快不过代码的,因此我们的解决方案将涉及代码。这里为你提供了几个不同的方案,虽然不能保证 100% 有效,但是总有一款适合你。
你需要创建一个想要挽救的代币列表(按优先级排序),以便轻松制定计划。这张列表需要包含以下内容:
-
代币合约地址 -
该代币是否已用于质押(解锁是否有时间限制) -
代币能否转移 -
代币价值(由用户主观判断或美元价值决定,以便确定优先级)
使用太极网络(Taichi Network)
eth_getBalance
(这是为了节省 CPU 循环和 RPC 调用)。也就是说,“清道夫” 是看不到通过隐私交易池发送至 “猎物” 账户的 ETH 的,也就不会吃掉它。使用带有自毁功能的智能合约
pragma solidity >=0.7.0 <0.9.0;
contract MoveETH {
constructor(address sendToAddress) payable {
address payable addr = payable(address(sendToAddress));
selfdestruct(addr);
}
}
通过部署该合约,我们可以将 ETH 和被黑地址的字符串发送至构造函数的参数。该合约会在同一笔交易中创建并自毁。其中,selfdestruct()
意味着我们会在同一笔交易中清除该合约的区块链状态(因此这个合约是一次性的),并将 ETH 发送至被黑地址。
使用 Flashbots
transfer()
调用,或 unstake()
和 transfer()
调用。!!! 如何从根本上规避 “清道夫”? !!!
-
购买 Ledger -
购买 Trezor
联系我们
-
Twitter -
Telegram -
Discord -
GitHub -
Help & Support -
Press Inquiries
原文链接:
https://blog.mycrypto.com/how-to-beat-an-ethereum-based-sweeper-and-recover-your-assets/
作者: Harry Denley
作者:以太坊爱好者;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com
评论(0)
Oh! no
您是否确认要删除该条评论吗?