摘要:攻擊者通過端口掃描等方式發(fā)現(xiàn)受害者打開JSON-rpc端口后,查詢當(dāng)前節(jié)點(diǎn)的最新塊高度和該節(jié)點(diǎn)上已存在的帳戶。

查詢賬戶余額并發(fā)起轉(zhuǎn)賬申請。當(dāng)受害者解鎖賬戶時(shí),被攻擊者就完成攻擊。

古人的盜亦有道,在虛擬貨幣領(lǐng)域也有著它獨(dú)特的定義。只有對區(qū)塊鏈技術(shù)足夠了解,才能在這場盛宴中獲取足夠多的金錢。他們似那黑暗中獨(dú)行的狼,無論是否得手都會在被發(fā)現(xiàn)前抽身而去。

黑暗中的盜幣方式:偷渡時(shí)代

攻擊流程復(fù)現(xiàn)

攻擊復(fù)現(xiàn)環(huán)境位于ropsten測試網(wǎng)絡(luò)。

被攻擊者 IP: 10.0.0.2,啟動客戶端命令為:geth –testnet –rpc –rpcapi eth –rpcaddr 0.0.0.0 console賬戶地址為:

0x6c047d734ee0c0a11d04e12adf5cce4b31da3921, 剩余余額為5 ether;

攻擊者 IP: 10.0.0.3 , 賬戶地址為:

0xda0b72478ed8abd676c603364f3105233068bdad;

攻擊者步驟如下:

1. 攻擊者通過端口掃描等方式發(fā)現(xiàn)被攻擊者開放了JSON-RPC端口后,調(diào)用eth_getBlockByNumbereth_accounts接口查詢當(dāng)前節(jié)點(diǎn)最新的區(qū)塊高度以及該節(jié)點(diǎn)上已有的賬戶。

2. 攻擊者調(diào)用eth_getBalance接口查詢當(dāng)前節(jié)點(diǎn)上所有賬戶的余額。

3. 攻擊者對存在余額的賬戶持續(xù)發(fā)起轉(zhuǎn)賬請求。

一段時(shí)間后,被攻擊者需要進(jìn)行交易:按照之前的知識點(diǎn),用戶需要先解鎖賬戶然后才能轉(zhuǎn)賬。當(dāng)我們使用 和密碼解鎖賬戶后,就可以在終端看到惡意攻擊者已經(jīng)成功發(fā)起交易。

惡意攻擊者的交易信息:

攻擊的流程圖如下所示:

攻擊成功的關(guān)鍵點(diǎn)解析

看完前面的偷渡漏洞攻擊流程,你可能會有這樣的疑問:

1)攻擊者為什么可以轉(zhuǎn)賬成功?

2)如例子中所示,該地址只有 5 ether,一次被轉(zhuǎn)走了 4.79 ether,如果我們解鎖賬戶后在被攻擊前發(fā)起轉(zhuǎn)賬,轉(zhuǎn)走 1 ether,是否攻擊者就不會攻擊成功?

下文將詳細(xì)分析這兩個(gè)問題并給出答案。

攻擊者可以通過 rpc 接口轉(zhuǎn)賬的原因:

首先,分析一下關(guān)鍵的unlockAccount函數(shù):

在判斷傳入的解鎖時(shí)間是否為空、是否大于最大值后,調(diào)用 TimedUnlock 進(jìn)行解鎖賬戶的操作,而 TimedUnlock 的代碼如下:

首先通過getDecryptedKey從keystore文件夾下的文件中解密出私鑰,再判斷該賬戶是否已經(jīng)被解鎖,如果沒有被解鎖,則將解密出的私鑰存入名為unlocked的map中。如果設(shè)置了解鎖時(shí)間,則啟動一個(gè)協(xié)程進(jìn)行超時(shí)處理go ks.expire。

再看向?qū)崿F(xiàn)轉(zhuǎn)賬的函數(shù)的實(shí)現(xiàn)過程SendTransaction-> wallet.SignTx -> w.key:

可以看到,在w.key中,直接從ks.unlocked中取出對應(yīng)的私鑰。這也就意味著如果執(zhí)行了unlockAccount函數(shù)、沒有超時(shí)的話,從ipc、rpc調(diào)用SendTransaction都會成功簽名相關(guān)交易。

由于默認(rèn)參數(shù)啟動的 Go-Ethereum 設(shè)計(jì)上并沒有對 ipc、rpc 接口添加相應(yīng)的鑒權(quán)模式,也沒有在上述的代碼中對請求用戶的身份進(jìn)行判斷,最終導(dǎo)致攻擊者可以在用戶解鎖賬號的時(shí)候完成轉(zhuǎn)賬操作,偷渡漏洞利用成功。

攻擊者和用戶競爭轉(zhuǎn)賬的問題

由于用戶解鎖賬戶的目的是為了轉(zhuǎn)賬,所以存在用戶和攻擊者幾乎同時(shí)發(fā)起了交易的情況,在這種情況下,攻擊者是如何保證其攻擊的成功率呢?

在攻擊者賬號0x957cD4Ff9b3894FC78b5134A8DC72b032fFbC464的交易記錄中,交易0x8ec46c3054434fe00155bb2d7e36d59f35d0ae1527aa5da8ec6721b800ec3aa2能夠很好地解釋該問題。

相較于目前主流的gasPrice維持在1Gwei,該筆交易的gasPrice達(dá)到了驚人的1,149,246 Gwei。

也正是由于較高的gasPrice, 使得該攻擊者在與其它攻擊者的競爭中(有興趣的可以看看上圖紅框下方兩筆dropped Txns)得到這筆巨款。

蜜罐捕獲數(shù)據(jù)

蜜罐是一臺無人使用但卻被嚴(yán)密監(jiān)控的網(wǎng)絡(luò)主機(jī),它包含虛假的高價(jià)值資源和一些漏洞,以此吸引入侵者攻擊主機(jī)。并且在被入侵的討程中,實(shí)時(shí)記錄和審計(jì)攻擊者的攻擊流量、行為和數(shù)據(jù)。以此了解攻擊者的方式、手段和目的,并且完成對攻擊溯源取證等進(jìn)一步的工作。

數(shù)據(jù)捕獲:數(shù)據(jù)捕獲技術(shù)包括網(wǎng)絡(luò)流量數(shù)據(jù)捕獲以及主機(jī)上系統(tǒng)行為的捕獲。網(wǎng)絡(luò)流量數(shù)據(jù)的捕獲結(jié)合網(wǎng)絡(luò)入侵檢測系統(tǒng),配置相關(guān)敏感信息的檢測規(guī)則,觸發(fā)入侵檢測規(guī)則時(shí)立即記錄網(wǎng)絡(luò)流量。

在偷渡漏洞被曝光后,就有在已有的蜜罐數(shù)據(jù)中尋找到部分攻擊的痕跡。

下圖是2017/10/01到2018/03/21間蜜罐監(jiān)控到的相關(guān)攻擊情況:

被攻擊端口主要是8545端口,8546、10332、8555、18082、8585端口等也有少量掃描痕跡。

攻擊來源IP主要集中在46.166.148.120/196和216.158.238.178/186/226上:

46.166.148.120/196攻擊者使用的探測payload主要是:

216.158.238.178/186/226攻擊者使用的探測payload主要是:

具有團(tuán)隊(duì)在全球節(jié)點(diǎn)蜜罐監(jiān)測結(jié)果顯示,黑客針對以太坊 JSON-RPC 進(jìn)行盜幣攻擊一直在持續(xù)。

(作者:區(qū)塊鏈安全檔案,內(nèi)容來自鏈得得內(nèi)容開放平臺“得得號”;本文僅代表作者觀點(diǎn),不代表鏈得得官方立場)

1.《04f5怎么樣2017看這里!以太坊盜幣方式揭秘之“偷渡時(shí)代”》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《04f5怎么樣2017看這里!以太坊盜幣方式揭秘之“偷渡時(shí)代”》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請保留本站內(nèi)容來源地址,http://f99ss.com/gl/2084472.html