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