以太坊清掃機器人肆虐,一文瞭解三種解決方案

火幣網(huobi.com)最新可用網址(點擊下圖直達註冊!)



註:你是否遇到過這樣的情況,當你發送一筆以太坊資金,然後就發現錢包裡的錢立即被清空瞭,你可能被清掃器(sweeper)盯上瞭,這篇文章旨在幫你解決這個問題,原文作者是MyCrypto安全&反釣魚工程師Harry Denley。

當你的秘密遭到泄露時,惡意方通常會給你的賬戶設置一個清掃器(sweeper),以利用將來該地址上所發生的任何事情,比如當用戶存入ETH以嘗試提取一些代幣,發生空投或其它情況時。

本文概述瞭用戶的資金是如何被清掃走的,以及三種獨特的方法來挽救任何未被清掃的資金(例如質押資金)。

1用戶是如何被釣魚的

近期,我們看到有大量用戶在冒充Telegram群管理員,這些假的管理員會向在主頻道中請求幫助的用戶提供幫助(盡管他們不是真正的管理員,他們復制瞭管理員簡介信息,但用戶名有一些小的差異)。這些冒名頂替者經常會說很多行話來迷惑用戶,並分享一個看似合法網站的鏈接,但它最終會要求你輸入助記詞或私鑰。

然後,你的加密資產就不見瞭,上面有一個清掃器。

這是這些假網站之一的示例:

2清掃器的工作方式

清掃器是一些監控區塊鏈(包括txpool,從技術上講,它沒有在鏈上)的代碼,其以編程方式對一組規則的特定事務進行簽名的反應,要比人類更快。

這意味著,對於你在區塊鏈瀏覽器上查看你的地址或將其“連接”到dapp的UI,清掃器(sweeper)是看不見的。隻有在你簽名並向網絡廣播交易後,清掃器(sweeper)才能看到你的活動。

隨著時間的推移,我們看到瞭清掃器(sweeper)和利用它們的活動的演變。

3清掃器的演變

2017年期間,有相當一部分活動利用瞭具有鎖定功能(即,你無法成功調用transfer())但包含喂價的代幣。Dave Appleton發表瞭一篇關於這些活動的文章。

惡意方利用這種騙局的方式是,他們會將私鑰發佈到這個地址(以某種看起來無辜或錯誤的方式),並等待人們將ETH存入該地址(以轉移地址中的代幣)。然後惡意方會有一個該賬戶的清掃器程序,以將存入該地址的ETH快速轉移到他自己的賬戶。從理論上來說,鎖定的代幣被認為是毫無價值的,因此他們試圖從那些毫無戒心的“貪婪”用戶那裡獲取利潤。

如今,遭泄露的的地址基本被部署瞭ETH清掃器程序,一些組織則使用更高級的清掃器程序邏輯來清掃基於喂價的ERC20代幣。

今年早些時候,我對一個泄露地址做瞭一些偵察研究,發現清掃器在不斷進化:

清掃器偏愛美元價值最高的資產,即使這意味著需要花費更多的交易費用來清掃;

清掃器將使用所有可用的ETH最大化清掃價值,同時也有很高的百分比是nonce的“獲勝”交易。

清掃器有一個匹配引擎,將質押代幣(即:xKNCa=KNC)與其原生代幣匹配,以便喂價反映在質押代幣上。

清掃器有自己的內部nonce計數器,如果其最高nonce隨機數未在一個時間范圍內得到確認(或被另一個丟棄/替換),則定期將nonce隨機數重置為eth.getTransactionCount()輸出。

如果存在清掃器所針對的高價值資產,則有一些活動會建議運行者通過資助地址來“犧牲”一些ETH,以嘗試從賬戶中快速清掃高價值資產。

如果美元價值低於某個閾值,則某些清掃器就不會清掃資產,這意味著你可能並不知道自己的賬戶被清掃器盯上瞭,這是很可怕的。

描述清掃器的文章,第一次出現是在2017年,而現在我們觀察到的清掃器已變得更加先進,它們的設計目的是最大化運行者的利潤,同時對受害者造成最大的損失。

4如何擊敗清掃器?

首先,作為人類,我們是無法比代碼更快的,所以我們的解決方案隻能涉及編碼。你可以選擇幾條不同的路線,它們均無法提供100%的保證,但對我們而言是有利的。

你需要創建一個想要嘗試搶救的代幣列表,按優先級排序,這樣你就可以輕松地確定你的計劃,你需要列出:

代幣合約地址;

代幣是否質押(以及解除質押是否是時間鎖定的);

代幣是否可轉讓;

代幣價值(以美元計算);

關鍵是你要有條不紊地完成這件事,這樣你才能快速有效地執行。正如一句名言:“如果你疏於計劃,那你就是計劃走向失敗”。

5使用TAICHI

清掃器的工作方式是監視txpool中轉到其清掃地址的傳入交易,而TAICHI允許你將簽名的交易直接提交給礦工(SparkPool),而無需通過公共txpool進行廣播,這意味著清掃器程序將是看不到的,並且很可能你的交易不會被清掃程序機器人搶先完成(至少以我的經驗來看)。

圖片來自TAICHI.NETWORK

這裡的方法是讓你的所有交易預先以nonce順序簽名,並以編程方式提交給TAICHI。大多數清掃器隻監視公共txpool/mempool以獲取傳入的ETH交易,並且不在每個新區塊上調用eth_getBalance(以節省CPU周期和RPC方法調用的成本),這意味著它們將對通過專用txpool路由發送到帳戶的ETH視而不見,也就不會對其進行清掃。

這需要你做一些數學工作,如果正確執行瞭數學運算,則嘗試搶先交易的清掃器程序可能會失敗!(通常,我默認gas價格比GasNow上的“快速”類別高幾個百分點,因此礦工將更有可能在下一個區塊中確認你的交易。)

你可以離線使用MyCrypto來生成已簽名的交易,並在準備就緒時將其推送到TAICHI,或者使用ethers.js(或其他庫)創建代碼來創建已簽名的交易。

方法2:使用一個自毀智能合約

就像使用TAICHI方法一樣,我們可以使用智能合約讓ETH進入賬戶,而不會在公共txpool中顯示出來。我們通過從安全地址部署智能合約來做到這一點,然後在結構上將ETH發送到被泄露的地址(這將是一筆內部交易)。

通過部署這個合約,我們可以在構造函數參數中發送ETH以及遭泄露的地址字符串。該合約通過在同一交易中創建合約並自毀來工作。使用selfdestruct()意味著我們清除瞭區塊鏈狀態(因為它是一次性使用合約),並且在一次交易中將ETH轉發到瞭泄露地址。

示例:

https://goerli.etherscan.io/tx/0x82ccb222eae55aaea73dd0efee1ea6ed7320f880889f280d4a343b8823f86692

請註意,這種方法雖然有效,但它會增加額外的成本,因為我們要做的操作不僅僅是將ETH從一個帳戶發送到另一個帳戶。這種方法的成本約為70,000 gas,在高昂的gas價背景下,使用這種方法的手續費成本就可能達到0.0112ETH。

方法3:使用Flashbots

一般而言,我們需要支付ETH才能讓一筆交易被確認(因為交易費用是由發送方支付的)。然而,由於Flashbots‌的出現,我們可以更輕松地從EOA中通過用另一個帳戶中的資金“賄賂”礦工,以0 gas價格(即0美元交易費用)確認交易,這意味著我們可以將代幣從泄露的地址中轉移出來,而無需用ETH支付gas費用,是的,就是這樣。

該策略需要用到2個賬戶,一個是泄露賬戶,以及另一個賄賂礦工的帳戶。

Flashbots小組已發佈瞭一個名為Flashbots / searcher-sponsored-tx‌的項目,其具有設置此策略以從兩個帳戶中確認你的交易的基本原理。

由於我們將使用另一個帳戶支付交易費用,因此不需要向受損害的帳戶存入ETH。

為瞭確保泄露帳戶中沒有ETH,我們強烈建議你運行一個Burner機器人。

我們通常建議在每個實例上使用不同的RPC節點,在一臺以上的計算機上運行這個burner 機器人。例如,使用Infura在本地運行burner 機器人,並在具有其他提供商(例如Quiknode)的遠程服務器上運行一個burner機器人。這樣,你就有瞭一個備案計劃,以防出現高網絡延遲或節點問題(速率限制、同步問題)。

Flashbots/searcher-sponsored-tx中的代碼需要根據你的特定需求進行修改,但這個引擎可以幫助你將代幣從泄露的地址中解救出來。這個Flashbots引擎足夠靈活,可支持單個 transfer()調用,或者unstake() 以及 transfer()調用。

如果你不太熟悉代碼,你也可以嘗試使用@kendricktan/flashbots.tools ‌網站。

作者:灑脫喜,來源:巴比特資訊



返回列表页>>> 比特幣最新新聞