應宗浩,金 海
(蘭州理工大學,甘肅 蘭州 730050)
近年來隨著數(shù)字貨幣的發(fā)行及行情發(fā)展,許多設備參與到了挖礦行為中去,數(shù)字貨幣依據(jù)特定算法,需要將計算資源投入?yún)^(qū)塊鏈的驗證。挖礦是一項CPU密集型的資源爭搶工作,不法分子將挖礦機程序植入受害者的計算機中,利用受害者計算機的運算力進行挖礦,這種用戶不知情的挖礦機程序就是挖礦木馬[1]。
挖礦木馬主要有3種形式:僵尸網(wǎng)絡挖礦、網(wǎng)頁挖礦木馬、Android設備挖礦木馬。本文就以上3種形式的挖礦木馬的攻擊原理及攻擊手段進行分析,并針對不同形式的攻擊提出相應的防護措施。
僵尸網(wǎng)絡挖礦木馬就是黑客通過入侵其他計算機建立僵尸網(wǎng)絡,在僵尸網(wǎng)絡已建立的前提下植入挖礦木馬,通過計算機集群的巨大運算能力來進行挖礦。
黑客在搭建僵尸網(wǎng)絡時會利用各種已知漏洞進行入侵控制,如struts2漏洞、永恒之藍、WebLogic WLS-wast RCE等各種RCE漏洞以及弱口令、權(quán)限認證等能夠?qū)懭雜hell進而控制計算機的漏洞。總體來說攻擊分為兩種途徑,一種是簡單快速地對暴露在公網(wǎng)的服務進行漏洞掃描,進行入侵獲取權(quán)限,進行挖礦。另一種方式在第一種的基礎上增加了內(nèi)網(wǎng)傳播,其中利用了端口掃描、口令爆破等技術(shù),許多木馬本身具備內(nèi)網(wǎng)漏洞掃描與傳播功能,并且在內(nèi)網(wǎng)的主機數(shù)量比暴露在公網(wǎng)的主機數(shù)量更多,而且?guī)缀鯖]有做安全措施。因此,第二種方式能夠控制更多主機,為挖礦提供更多的資源。
僵尸網(wǎng)絡挖礦木馬建立之后,一旦開始挖礦,便會調(diào)用計算機集群巨大的運算能力進行挖礦。
僵尸網(wǎng)絡從黑客服務器上下載執(zhí)行powershell命令行部分代碼[2]:
cmd.exe /c powershell.exe -Nop -NonI -W Hidden
if((Get-WmiObjectWin32_OperatingSystem).osarchitecture.contains (‘64’))
{
IEX(New-Object Net.WebClient).DownloadString(‘ht tp://*.*.*.*:8000/in6.ps1’)
}
為了避免爆破成功,計算機的所有者應該設置嚴謹?shù)牡卿洸呗?,如綁定登錄IP,限制登錄次數(shù)登。另一方面,應該增強口令的強度,以避免基于弱口令的攻擊。
僵尸網(wǎng)絡會在進行內(nèi)網(wǎng)的橫向滲透時進行端口的掃描,如果掃描到可能存在漏洞的端口便會執(zhí)行相應的攻擊,因此,為了降低被攻擊的風險,計算機所有者應關閉不必要端口。
大部分僵尸網(wǎng)絡在構(gòu)建初期所利用的漏洞攻擊技術(shù)均是已知的漏洞,并沒有使用到未知漏洞,因此需要及時為操作系統(tǒng)和相關服務打補丁,高危RCE漏洞要及時修復[3]。
計算機所有者應定期維護、監(jiān)測計算機狀態(tài),具體的步驟主要包括:查看進程,進行排查,并將可疑進程終結(jié);查找可疑程序路徑并刪除;排除異常會話;排查計劃任務等。
網(wǎng)頁形式的挖礦木馬,就是在網(wǎng)頁源代碼中嵌入惡意挖礦腳本,當網(wǎng)頁被瀏覽時將會進行挖礦的行為。
用戶訪問網(wǎng)頁時,瀏覽器負責解析網(wǎng)站中的資源、腳本,并將解析的結(jié)果展示在用戶面前。如果網(wǎng)頁中植入了挖礦腳本,瀏覽器將解析并執(zhí)行挖礦腳本,利用用戶計算機資源進行挖礦從而獲利。挖礦腳本的執(zhí)行會導致計算機資源利用率上升,甚至會影響用戶的正常操作,同時會增加硬件損耗。
在網(wǎng)頁挖礦木馬中,典型的手段就是在網(wǎng)頁中調(diào)用Coinhive官網(wǎng)中的js文件coinhive.min.js并指定一個唯一的標識符。它采用了一種Cryptonight挖礦算法挖門羅幣,這種算法復雜、占用資源高,常被植入普通用戶機器,占用其CPU 資源來挖礦。
以下是在網(wǎng)站中調(diào)用coinhive的js文件的代碼:
var miner = new
CoinHive.Anonymous(‘owKfejRSL0VFfudvO4G03e8d bMYKsQBH’);
miner.start();
在執(zhí)行挖礦腳本時,會消耗計算機上大量的CPU資源,因此,如果在瀏覽網(wǎng)頁時注意到操作變得遲緩,CPU使用率上升等情況,那么有可能網(wǎng)頁嵌入了挖礦腳本。此時應該關閉正在訪問的頁面,同時檢查任務管理器是否有殘余的相關進程存在[4]。
如果使用火狐或者chrome等瀏覽器,可以安裝相應的瀏覽器插件,來防止瀏覽器被挖礦。這些插件能夠幫助我們檢測和攔截網(wǎng)站的挖礦腳本,插件的原理主要是內(nèi)置黑名單,黑名單中包括挖礦腳本以及檢特定的url地址,若檢測到則直接進行攔截,這些url地址都是目前已知的礦池地址,插件通過黑名單屏蔽這些地址來進行防護。
以下是黑名單中部分內(nèi)容:
*://*.ppoi.org/lib/*
*://*.coinerra.com/lib/*
*://*.minero.pw/miner.min.js*
*://*.coinblind.com/lib/*
*://*.webmine.cz/miner*
wss://*.webmine.cz/*
*://*.inwemo.com/inwemo.min.js*
*://*.cloudcoins.co/javascript/*
Android設備挖礦木馬主要包括兩種方式:(1)同網(wǎng)頁形式挖礦木馬一樣,使用瀏覽器JavaScript腳本進行挖礦。(2)在軟件中嵌入開源的礦池代碼庫進行挖礦[5]。
在本文2.1中,已經(jīng)提及網(wǎng)頁挖礦的攻擊手段,故在本部分著重說明嵌入開源礦池代碼庫進行挖礦的木馬的攻擊手段。
木馬apk在其開發(fā)過程中,相對于正常普通APP開發(fā)流程而言,挖礦木馬主要多了以下幾個步驟:首先挖礦木馬在Android Manifest里注冊挖礦服務,接著嵌入開源的用于挖礦的文件及相應代碼,再設置后挖礦必須的信息,包括算法、地址、賬戶信息等。
開發(fā)完成后,可以通過偽裝成各類應用軟件進行分發(fā),一旦用戶安裝并啟動,則會開始挖礦。以下是開源礦池代碼庫部分關鍵代碼,該代碼用于加密運算:
static inline void HMAC_SHA256_80_init(const uint32_t *key, uint32_t *tstate, uint32_t *ostate)
{
uint32_t ihash[8];
uint32_t pad[16];
int i;
/* tstate is assumed to contain the midstate of key */
memcpy(pad, key + 16, 16);
memcpy(pad + 4, keypad, 48);
sha256_transform(tstate, pad, 0);
memcpy(ihash, tstate, 32);
sha256_init(ostate);
for (i = 0; i < 8; i++)pad[i] = ihash[i] ^ 0x5c5c5c5c;
for (; i < 16; i++)pad[i] = 0x5c5c5c5c;
sha256_transform(ostate, pad, 0);}
針對已經(jīng)root用戶,可以通過iptables設置防火墻規(guī)則,對挖礦網(wǎng)址進行攔截,原理與網(wǎng)頁挖礦防護中反挖礦插件基本相同。
而對于沒有root的用戶,可以禁用手機瀏覽器JavaScript執(zhí)行功能。另外,由于挖礦木馬apk會通過各種途徑進行分發(fā),在下載應用時,用戶應提高甄別能力,選擇正規(guī)的途徑下載。
本文在對典型挖礦木馬進行分類后,針對性地進行攻擊手段的分析,并在此基礎上提出相應的防御策略,系統(tǒng)地介紹了挖礦木馬的特性以及危害,并通過相關防御策略避免受到挖礦木馬的危害,降低設備所有者的損失。
[參考文獻]
[1]沈鑫,裴慶祺,劉雪峰.區(qū)塊鏈技術(shù)綜述[J].網(wǎng)絡與信息安全學報,2016(11):11-20.
[2]360安全衛(wèi)士.Android平臺挖礦木馬研究報告[EB/OL].(2018-02-01)[2018-03-21].http://www.freebuf.com/articles/paper/161741.html.
[3]許太安.木馬攻擊原理及防御技術(shù)[J].網(wǎng)絡安全技術(shù)與應用,2014(3):97-98.
[4]張慧琳,鄒維,韓心慧.網(wǎng)頁木馬機理與防御技術(shù)[J].軟件學報,2013(4):843-858.
[5]360安全衛(wèi)士.悶聲發(fā)大財年度之星:2017挖礦木馬的瘋狂斂財暗流[EB/OL].(2017-12-25)[2018-03-21].https://weibo.com/1645903643/FAf1tcFJ3.