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