WF曲速未來:以太坊JSON-RPC接口多種盜幣揭秘之偷渡時代區塊鏈
WF曲速未來有話要說:古人的盜亦有道,在虛擬貨幣領域也有著它獨特的定義。只有對區塊鏈技術足夠了解,才能在這場盛宴中獲取足夠多的金錢。他們似那黑暗中獨行的狼,無論是否得手都會在被發現前抽身而去。
WF曲速未來有話要說:古人的盜亦有道,在虛擬貨幣領域也有著它獨特的定義。只有對區塊鏈技術足夠了解,才能在這場盛宴中獲取足夠多的金錢。他們似那黑暗中獨行的狼,無論是否得手都會在被發現前抽身而去。
前言:
WF曲速未來帶你回顧:
2018-03-21, 在《揭秘以太坊中潛伏多年的「偷渡」漏洞,全球黑客正在瘋狂偷幣》和《以太坊生態缺陷導致的一起億級代幣盜竊大案》兩文揭秘以太坊偷渡漏洞(又稱為以太坊黑色情人節事件)相關攻擊細節后,已根據已有的信息進一步完善了相關蜜罐。
2018-05-16, 再次對偷渡漏洞事件進行預警并指出該端口已存在密集的掃描行為。
2018-06-29,慢霧社區里預警了以太坊黑色情人節事件(即偷渡漏洞)新型攻擊手法,該攻擊手法在本文中亦稱之為:離線攻擊。
黑暗中的盜幣方式:偷渡時代
攻擊流程復現
攻擊復現環境位于ropsten測試網絡。
被攻擊者 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. 攻擊者通過端口掃描等方式發現被攻擊者開放了JSON-RPC端口后,調用eth_getBlockByNumbereth_accounts接口查詢當前節點最新的區塊高度以及該節點上已有的賬戶。
2. 攻擊者調用eth_getBalance接口查詢當前節點上所有賬戶的余額。
3. 攻擊者對存在余額的賬戶持續發起轉賬請求。
一段時間后,被攻擊者需要進行交易:
按照之前的知識點,用戶需要先解鎖賬戶然后才能轉賬。當我們使用 personal.unlockAccount 和密碼解鎖賬戶后,就可以在終端看到惡意攻擊者已經成功發起交易。
惡意攻擊者的交易信息:
攻擊的流程圖如下所示:
攻擊成功的關鍵點解析
看完前面的偷渡漏洞攻擊流程,你可能會有這樣的疑問:
1)攻擊者為什么可以轉賬成功?
2)如例子中所示,該地址只有 5 ether,一次被轉走了 4.79 ether,如果我們解鎖賬戶后在被攻擊前發起轉賬,轉走 1 ether,是否攻擊者就不會攻擊成功?
下文將詳細分析這兩個問題并給出答案。
攻擊者可以通過 rpc 接口轉賬的原因:
首先,分析一下關鍵的unlockAccount函數:
在判斷傳入的解鎖時間是否為空、是否大于最大值后,調用 TimedUnlock() 進行解鎖賬戶的操作,而 TimedUnlock() 的代碼如下:
首先通過getDecryptedKey()從keystore文件夾下的文件中解密出私鑰,再判斷該賬戶是否已經被解鎖,如果沒有被解鎖,則將解密出的私鑰存入名為unlocked的map中。如果設置了解鎖時間,則啟動一個協程進行超時處理go ks.expire()。
再看向實現轉賬的函數的實現過程SendTransaction()-> wallet.SignTx() -> w.keystore.SignTx():
可以看到,在w.keystore.SignTx()中,直接從ks.unlocked中取出對應的私鑰。這也就意味著如果執行了unlockAccount()函數、沒有超時的話,從ipc、rpc調用SendTransaction()都會成功簽名相關交易。
由于默認參數啟動的 Go-Ethereum 設計上并沒有對 ipc、rpc 接口添加相應的鑒權模式,也沒有在上述的代碼中對請求用戶的身份進行判斷,最終導致攻擊者可以在用戶解鎖賬號的時候完成轉賬操作,偷渡漏洞利用成功。
攻擊者和用戶競爭轉賬的問題
由于用戶解鎖賬戶的目的是為了轉賬,所以存在用戶和攻擊者幾乎同時發起了交易的情況,在這種情況下,攻擊者是如何保證其攻擊的成功率呢?
在攻擊者賬號0x957cD4Ff9b3894FC78b5134A8DC72b032fFbC464的交易記錄中,交易0x8ec46c3054434fe00155bb2d7e36d59f35d0ae1527aa5da8ec6721b800ec3aa2能夠很好地解釋該問題。
相較于目前主流的gasPrice維持在1Gwei,該筆交易的gasPrice達到了驚人的1,149,246 Gwei。
也正是由于較高的gasPrice, 使得該攻擊者在與其它攻擊者的競爭中(有興趣的可以看看上圖紅框下方兩筆dropped Txns)得到這筆巨款。
蜜罐捕獲數據
蜜罐是一臺無人使用但卻被嚴密監控的網絡主機,它包含虛假的高價值資源和一些漏洞,以此吸引入侵者攻擊主機。并且在被入侵的討程中,實時記錄和審計攻擊者的攻擊流量、行為和數據。以此了解攻擊者的方式、手段和目的,并且完成對攻擊溯源取證等進一步的工作。
數據捕獲:數據捕獲技術包括網絡流量數據捕獲以及主機上系統行為的捕獲。網絡流量數據的捕獲結合網絡入侵檢測系統,配置相關敏感信息的檢測規則,觸發入侵檢測規則時立即記錄網絡流量。
在偷渡漏洞被曝光后,就有在已有的蜜罐數據中尋找到部分攻擊的痕跡。
下圖是2017/10/01到2018/03/21間蜜罐監控到的相關攻擊情況:
被攻擊端口主要是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主要是:
具有團隊在全球節點蜜罐監測結果顯示,黑客針對以太坊 JSON-RPC 進行盜幣攻擊一直在持續。區塊鏈安全公司WF曲速未來再次建議廣大注意安全防御。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。