后偷渡時代的盜幣方式之爆破攻擊區塊鏈
對于暫時無法關閉對公網暴露的RPC接口的節點,在不使用personal.unlockAccount()的情況下,仍然存在被盜幣的可能。
對于暫時無法關閉對公網暴露的RPC接口的節點,在不使用personal.unlockAccount()的情況下,仍然存在被盜幣的可能。
漏洞復現
被攻擊節點啟動參數為:geth–testnet–rpc–rpcaddr 0.0.0.0–rpcapi eth,personal console
攻擊者的攻擊步驟為:
1.攻擊者探測到目標開放了RPC端口->獲取當前節點的區塊高度、節點上的賬戶列表以及各賬戶的余額。根據蜜罐捕獲的數據,部分攻擊還會通過personal_listWallets接口進行查詢,尋找當前節點上已經unlocked的賬戶。
2.調用personal_unlockAccount接口嘗試解密用戶賬戶。假如用戶使用了弱口令,攻擊者將會成功解鎖相應賬戶。
3.攻擊者可以將解鎖賬戶中的余額全部轉給自己。
攻擊流程如下圖所示:
升級的爆破方式
根據偷渡漏洞的原理可以知道該攻擊方式有一個弊端:如果有兩個攻擊者同時攻擊一個節點,當一個攻擊者爆破成功,那么這兩個攻擊者都將可以取走節點中的余額。
誰付出了更多的手續費,誰的交易將會被先打包。這也陷入了一個惡性循環,盜幣者需要將他們的利益更多地分給打包的礦工才能偷到對應的錢。也正是因為這個原因,蜜罐捕獲到的爆破轉賬請求從最初的 personal_unlockAccount 接口逐漸變成了 personal_sendTransaction 接口。
personal_sendTransaction接口是Geth官方在2018/01新增了一個解決偷渡漏洞的RPC接口。使用該接口轉賬,解密出的私鑰將會存放在內存中,所以不會引起偷渡漏洞相關的問題。攻擊者與時俱進的攻擊方式不免讓我們驚嘆。
蜜罐捕獲攻擊JSON‐RPC相關數據分析
探測的數據包
對蜜罐捕獲的攻擊流量進行統計,多個 JSON-RPC 接口被探測或利用:
其中eth_blockNumber、eth_accounts、net_version、personal_listWallets等接口具有很好的前期探測功能,net_version可以判斷是否是主鏈,personal_listWallets則可以查看所有賬戶的解鎖情況。
personal_unlockAccount、personal_sendTransaction、eth_sendTransaction等接口支持解鎖賬戶或直接進行轉賬。
可以說,相比于第一階段的攻擊,后偷渡時代針對JSON-RPC的攻擊正呈現多元化的特點。
爆破賬號密碼
蜜罐在2018/05/24第一次檢測到通過unlockAccount接口爆破賬戶密碼的行為。截止2018/07/14蜜罐一共捕獲到809個密碼在爆破中使用。
攻擊者主要使用personal_unlockAccount接口進行爆破,爆破的payload主要是:
在所有的爆破密碼中有一個比較特殊:ppppGoogle;該密碼在personal_unlockAccount和personal_sendTransaction接口均有被多次爆破的痕跡。
轉賬的地址
蜜罐捕獲到部分新增的盜幣地址有:
攻擊來源 IP
區塊鏈技術與虛擬貨幣的火熱,賦予了鏈上貨幣們巨大的經濟價值,每個人都想在區塊鏈浪潮中分得一杯羹。黑客們更是如此,他們作為盜幣者,絞盡腦汁的想著各個角度攻擊區塊鏈與合約。當黑客棲身于礦工,他們不但能挖出區塊,也能挖出漏洞。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。