高 見,孫 懿,王潤正,袁得崳
1.中國人民公安大學(xué) 安全防范與風(fēng)險(xiǎn)評(píng)估公安部重點(diǎn)實(shí)驗(yàn)室,北京102623
2.中國人民公安大學(xué) 信息網(wǎng)絡(luò)安全學(xué)院,北京100038
2008 年11 月1 日,中本聰發(fā)布了比特幣白皮書《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》[1],提出了一種P2P形式的虛擬加密數(shù)字貨幣。比特幣是由網(wǎng)絡(luò)節(jié)點(diǎn)的計(jì)算產(chǎn)生的本質(zhì),是其與法定貨幣之間的明顯差別,是一種利用數(shù)字簽名、散列算法、共識(shí)機(jī)制、激勵(lì)機(jī)制等技術(shù)手段作為支撐,形成分布式、匿名性、完全去中心化的支付系統(tǒng)。
比特幣的獲取主要依靠算力[2],通過在一定時(shí)間內(nèi)的隨機(jī)散列運(yùn)算并求取隨機(jī)數(shù)獲得出礦獎(jiǎng)勵(lì)。這也意味著只要你擁有一臺(tái)電腦即可參與到挖礦之中。因其開采的便利性且具有一般等價(jià)物的價(jià)值,引得大批人員投入到挖礦的潮流之中。
但隨著技術(shù)的發(fā)展,也帶來了許多安全方面的問題。大量的黑客通過一定的攻擊手段,以非法的方式使用受害者的系統(tǒng)資源和網(wǎng)絡(luò)資源[3]開采貨幣,造成大量損失。根據(jù)深信服安全團(tuán)隊(duì)統(tǒng)計(jì),如圖1 所示,2019 年上半年挖礦木馬攔截次數(shù)達(dá)54 億次,安全事件的發(fā)生也致使挖礦木馬數(shù)量驟增,挖礦攻擊已然成為目前最具威脅性的攻擊類型之一。
圖1 2019年上半年惡意挖礦攔截統(tǒng)計(jì)Fig.1 Interception statistics of malicious mining in the first half of 2019
隨著Web技術(shù)WebAssembly的完善,專門用以工作量證明的Cryptonight等算法的出現(xiàn)以及云服務(wù)的普及,黑客們的攻擊手段也更加花樣倍出。通過攻擊云服務(wù)器的方式,感染用戶進(jìn)行挖礦也將成為新趨勢(shì)。這將會(huì)造成大量的資源被非法占用,受害者規(guī)模倍增,損失重大。因此對(duì)惡意挖礦的檢測(cè)也顯得尤為重要。
根據(jù)用戶經(jīng)常上網(wǎng)的方式來看,加強(qiáng)對(duì)利用瀏覽器進(jìn)行挖礦的檢測(cè)具有重要意義。目前針對(duì)瀏覽器的挖礦檢測(cè)具有單一性,通常靜態(tài)檢測(cè)網(wǎng)頁源代碼或動(dòng)態(tài)監(jiān)測(cè)瀏覽器各種事件響應(yīng),且使用的模型較為單一。
因此本文通過使用混合檢測(cè)的方法將以往學(xué)者們提取的網(wǎng)頁挖礦特征進(jìn)行融合,使用四種機(jī)器學(xué)習(xí)算法模型進(jìn)行訓(xùn)練。在找出最適合于瀏覽器挖礦檢測(cè)模型的同時(shí),也希望找出對(duì)瀏覽器挖礦檢測(cè)最具有標(biāo)識(shí)性的特征組合。
近年來國內(nèi)外對(duì)惡意挖礦攻擊檢測(cè)均較為重視,也開發(fā)了許多檢測(cè)惡意挖礦攻擊的程序軟件。涉及到的檢測(cè)主要使用機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)算法,主要包括樸素貝葉斯、隨機(jī)森林、K近鄰、支持向量機(jī)、卷積神經(jīng)網(wǎng)絡(luò)等。
Konoth等人[4]通過運(yùn)行時(shí)監(jiān)視CPU緩存事件、內(nèi)存訪問模式以及結(jié)合對(duì)代碼的靜態(tài)分析提出了Mine-Sweeper,一種基于監(jiān)視運(yùn)行時(shí)的緩存事件和代碼靜態(tài)分析的模型,具有較高的抗混淆性。Kharraz等人[5]設(shè)計(jì)了一種可以自動(dòng)檢測(cè)加密劫持的檢測(cè)系統(tǒng)Outguard,通過使用定制Web 瀏覽器提取特征,并使用SVM 分類算法構(gòu)建模型,得到了97.9%TPR和1.1%FPR的高性能檢測(cè)模型。Saad等人[6]通過對(duì)惡意加密劫持進(jìn)行動(dòng)態(tài)和靜態(tài)的分析,基于內(nèi)容、貨幣、代碼,得出加密劫持是一種針對(duì)各種網(wǎng)站類型并廣泛傳播的威脅,同時(shí)強(qiáng)調(diào)開采貨幣平臺(tái)與貨幣之間具有相似性,并以加密腳本的代碼復(fù)雜度特征設(shè)計(jì)出一個(gè)準(zhǔn)確率高達(dá)96.4%的檢測(cè)方法。
龍廷艷等人[7]將JavaScript 惡意代碼轉(zhuǎn)化為灰階圖像,并使用卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像數(shù)據(jù)進(jìn)行分類。張衛(wèi)豐等人[8]提出了基于動(dòng)態(tài)行為分析的網(wǎng)頁木馬檢測(cè)方法,通過針對(duì)攻擊腳本獲取、動(dòng)態(tài)執(zhí)行函數(shù)數(shù)量等行為,形成相關(guān)字符串操作記錄特征,得到準(zhǔn)確率96.64%的檢測(cè)模型。魏旭、成衛(wèi)青[9]基于URL 特征、網(wǎng)頁代碼特征和HTTP 請(qǐng)求特征,使用多種機(jī)器學(xué)習(xí)算法進(jìn)行惡意網(wǎng)頁識(shí)別,最終得到準(zhǔn)確率高達(dá)98%的網(wǎng)頁識(shí)別模型。秦玉海等人[10]則通過對(duì)網(wǎng)頁挖礦原理進(jìn)行分析,基于python正則表達(dá)式對(duì)網(wǎng)頁后臺(tái)代碼進(jìn)行匹配的方式進(jìn)行識(shí)別,同時(shí)介紹一些防范策略。
除去上述研究外,一些網(wǎng)站或拓展程序也可實(shí)現(xiàn)對(duì)惡意挖礦進(jìn)行檢測(cè):CoinBlockerLists 依靠開源化、用戶更新的方式獲取惡意網(wǎng)頁列表,并可用以添加黑名單來達(dá)到防護(hù)目的。谷歌瀏覽器中的Wappalyzer拓展程序,可分析Cryptominers 類別中九種技術(shù)手段,同時(shí)涵蓋12 900多個(gè)黑名單,具有較高檢測(cè)率。
本文構(gòu)建了一個(gè)基于機(jī)器學(xué)習(xí)用以檢測(cè)惡意挖礦網(wǎng)站的模型,其構(gòu)建流程如圖2 所示:根據(jù)一般機(jī)器學(xué)習(xí)模型的構(gòu)建流程,首先明確用來檢測(cè)惡意挖礦網(wǎng)站的目的,其次在了解惡意挖礦的相關(guān)內(nèi)容后選取如2.2 節(jié)所示的特征,然后通過爬蟲獲取相關(guān)數(shù)據(jù)集用來訓(xùn)練模型,接著根據(jù)評(píng)估標(biāo)準(zhǔn)對(duì)模型進(jìn)行優(yōu)化,最后將模型部署運(yùn)行。
圖2 模型構(gòu)建流程Fig.2 Model building process
同時(shí)本文通過nodejs 模塊構(gòu)建了一個(gè)基于Chrome的遠(yuǎn)程調(diào)試協(xié)議的爬蟲系統(tǒng)[5]。爬蟲系統(tǒng)設(shè)計(jì)如圖3所示:主要使用nodejs中的Chrome-launcher、Chrome-remoteinterface、request模塊[11],分別用以從node.js中啟動(dòng)Chrome瀏覽器,使用谷歌瀏覽器調(diào)試協(xié)議與網(wǎng)頁進(jìn)行交互,發(fā)送HTTP請(qǐng)求等。其次按照自己需求編寫JavaScript代碼,用以獲取特征提取中所涉及到的內(nèi)容。主要使用Chromeremote-interface 模塊中Page 域、Network 域、Profiler 域、Debugger域的方法和事件,模擬用戶瀏覽該網(wǎng)頁時(shí)的情況,并對(duì)事件進(jìn)行追蹤,同時(shí)將收集到的事件序列返回。最后使用python 從收集到的數(shù)據(jù)[12]中提取出特征及特征相應(yīng)數(shù)量,形成csv 格式的數(shù)據(jù)集。本文按照惡意挖礦網(wǎng)站與良性網(wǎng)站為1∶1的比例,獲取了一個(gè)大小為2 000的數(shù)據(jù)集用以訓(xùn)練模型。
圖3 爬蟲系統(tǒng)結(jié)構(gòu)Fig.3 Architecture of crawler system
本文主要構(gòu)建嵌入惡意JavaScript腳本的挖礦攻擊檢測(cè)模型,并從PublicWWW及Netlab360中獲取其公開發(fā)布的惡意挖礦網(wǎng)站數(shù)據(jù)集。在國內(nèi)外研究的基礎(chǔ)上,融合提取出如下特征用以訓(xùn)練模型。
(1)Websocket[5]:是一種讓通訊雙方可以在TCP 的單個(gè)連接上進(jìn)行全雙工交流的協(xié)議(通訊雙方可以相互之間主動(dòng)交換數(shù)據(jù)),同時(shí)建立連接的雙方之間只需完成一次認(rèn)證,即可建立持久性的連接,使得服務(wù)器和客戶端之間的通信變得更加便捷。且相比于HTTP 協(xié)議每次請(qǐng)求的三次握手連接,Websocket 協(xié)議的持久性連接,避免了多次建立請(qǐng)求響應(yīng)消息對(duì)而產(chǎn)生的冗余頭部信息,節(jié)省了大量帶寬資源,又保證了通訊的實(shí)時(shí)性。并且大多惡意挖礦網(wǎng)站使用Websocket協(xié)議用以受害者和攻擊者之間建立聯(lián)系,方便傳遞信息。
(2)Web Worker[5]:JavaScript語言采用單線程模式,所有任務(wù)在一個(gè)線程上完成,按照順序一步一步執(zhí)行。當(dāng)某一任務(wù)耗時(shí)較長時(shí),即便后面的任務(wù)多么簡單也會(huì)致使其延后,即造成阻塞。Web Worker 理念允許創(chuàng)建附屬于主線程的Worker 線程,這些附屬線程可以接受并處理來自主線程分配的任務(wù),這種Worker 線程獨(dú)立于其他腳本,在后臺(tái)運(yùn)行。對(duì)于一些計(jì)算復(fù)雜、時(shí)延較長的任務(wù)可通過該線程在后臺(tái)運(yùn)行,這樣通常用于交互的JavaScript主線程就不會(huì)被阻塞或拖慢。大部分惡意挖礦網(wǎng)站都會(huì)使用Worker 線程,因?yàn)槠渲饕褂檬芎φ哔Y源進(jìn)行大量數(shù)據(jù)計(jì)算,如果僅靠主線程進(jìn)行計(jì)算,一般會(huì)使網(wǎng)頁界面反應(yīng)緩慢,導(dǎo)致用戶體驗(yàn)感不佳而放棄瀏覽或引起用戶懷疑。
(3)Postmessage[5]及onmessage 事件:人們已經(jīng)知道主線程可以創(chuàng)建其附屬線程來避免阻塞,但二者之間如何進(jìn)行數(shù)據(jù)交換,Postmessage及onmessage事件解決了這個(gè)問題。主線程通過調(diào)用worker.postMessage()方法向Worker線程發(fā)送信息,并通過worker.onmessage監(jiān)聽Worker 線程接受其發(fā)送回來的信息。發(fā)現(xiàn)惡意挖礦網(wǎng)站進(jìn)行大量計(jì)算的同時(shí)還需要將結(jié)果進(jìn)行提交,因此會(huì)在子線程和主線程之間進(jìn)行頻繁數(shù)據(jù)交換,即發(fā)生較多的Postmessage、onmessage事件。
(4)Messageloop 事件[5]:瀏覽器是一種多進(jìn)程的結(jié)構(gòu)設(shè)計(jì),每個(gè)進(jìn)程內(nèi)又有許多線程,多線程之間的交互則通過Messageloop 事件進(jìn)行。人們已經(jīng)知道Web Worker 的出現(xiàn)可以使主線程創(chuàng)建多個(gè)子線程用以處理任務(wù),子線程之間可以通過共同運(yùn)算得出結(jié)果,而線程之間的交互則通過Messageloop 事件進(jìn)行,因此選取其作為識(shí)別惡意挖礦網(wǎng)站的特征之一。
(5)CPU 使用率:挖礦網(wǎng)站通常會(huì)占據(jù)用戶大量的CPU 資源進(jìn)行挖礦計(jì)算,獲取CPU 使用率的高低對(duì)識(shí)別惡意挖礦也具有分辨性。
(6)關(guān)鍵字匹配:觀察提供商所提供的挖礦腳本,可以發(fā)現(xiàn)同屬于一個(gè)提供商的腳本具有相似的代碼關(guān)鍵字。因此可以通過正則表達(dá)式匹配網(wǎng)頁代碼段中是否含有該關(guān)鍵字,來進(jìn)行識(shí)別判斷。各提供商關(guān)鍵字如表1所示。
表1 提供商關(guān)鍵字Table 1 Provider keywords
(7)計(jì)算函數(shù):比特幣系統(tǒng)中共識(shí)機(jī)制使得系統(tǒng)得以維護(hù)統(tǒng)一的賬本,其主要使用哈希函數(shù)求解隨機(jī)數(shù)運(yùn)行。隨著技術(shù)的發(fā)展,除SHA-256 算法外,CryptoNight算法也常用來實(shí)現(xiàn)共識(shí)。此外,進(jìn)行挖礦需要下載有效載荷,一般是wasm模塊。結(jié)合以上兩個(gè)特點(diǎn),本文選取“Cryptonight、SHA256、hash、wasmwrapper、WebAssembly、scrypt”這6 個(gè)關(guān)鍵字用以匹配函數(shù)名稱來標(biāo)識(shí)有無出現(xiàn)上述特點(diǎn)的函數(shù)。
(8)動(dòng)態(tài)函數(shù):動(dòng)態(tài)執(zhí)行函數(shù)及生成函數(shù)的存在,使得攻擊者可以把想要隱藏的代碼經(jīng)過處理后隱藏在一個(gè)或多個(gè)字符串中[2],在運(yùn)行期間又可恢復(fù)原狀并執(zhí)行,進(jìn)而規(guī)避一些檢測(cè)手段。因此對(duì)于該方式下的檢測(cè)也尤為重要,本文通過統(tǒng)計(jì)setTimeout()、setInterval()[8]函數(shù)的個(gè)數(shù)來識(shí)別挖礦網(wǎng)站。
可以將本文所提取的特征按照性能簡單分為兩類:Web 技術(shù)類和靜態(tài)代碼類。本文提取到的特征如表2所示。
表2 瀏覽器挖礦特征Table 2 Mining features of browser
實(shí)驗(yàn)的目的是用來驗(yàn)證本文選取的特征對(duì)于識(shí)別惡意挖礦網(wǎng)站是否有效,選出檢測(cè)效果最優(yōu)的模型以及對(duì)于檢測(cè)惡意挖礦網(wǎng)站具有標(biāo)識(shí)性的特征。
本文通過Outguard的爬蟲框架[5],以chrome瀏覽器插件的方法爬取URL 的相關(guān)特征數(shù)據(jù),并采取了部分Outguard已標(biāo)注好的惡意網(wǎng)站數(shù)據(jù)。本文爬取的數(shù)據(jù),其中惡意挖礦網(wǎng)站來自PublicWWW 和Netlab360 公開的惡意挖礦名單(其中剔除了一些無效網(wǎng)站),良性網(wǎng)站則隨機(jī)選擇在Alexa排名在前的網(wǎng)頁(其中選取了一些特征值具有特殊性的網(wǎng)站)。
實(shí)驗(yàn)使用四種分類算法,分別是邏輯回歸算法、支持向量機(jī)算法、決策樹算法和隨機(jī)森林算法[13-14],模型訓(xùn)練時(shí)均使用五折交叉驗(yàn)證。主要使用混淆矩陣、F1 度量、ROC曲線作為評(píng)估指標(biāo)。
混淆矩陣:對(duì)于二分類問題能夠最為直觀地展示出分類結(jié)果[14],矩陣組成如圖4所示。
圖4 混淆矩陣Fig.4 Confusion matrix
F1度量:精準(zhǔn)率和召回率的調(diào)和平均值,是一種比精度更好的評(píng)價(jià)指標(biāo),其公式如下:
ROC 曲線:受試者工作特征曲線,簡稱為ROC 曲線,它通過分類器給定不同的閾值來顯示假正例率和真正例率的曲線圖。假正例率公式如下:
其中正確檢測(cè)出含有挖礦腳本的網(wǎng)頁為真正例(TP),錯(cuò)誤地認(rèn)為正常網(wǎng)頁含有挖礦腳本的為假正例(FP),正確地檢測(cè)出是正常網(wǎng)頁的為真反例(TN),沒有正確檢測(cè)出含有挖礦腳本的網(wǎng)頁為假反例(FN)。
實(shí)驗(yàn)1 進(jìn)行四種檢測(cè)模型訓(xùn)練,并將各模型評(píng)價(jià)指標(biāo)數(shù)據(jù)進(jìn)行對(duì)比找出最佳結(jié)果模型。該實(shí)驗(yàn)得出的結(jié)果如表3及圖5所示。
圖5 四種模型的ROC曲線圖及混淆矩陣Fig.5 ROC curve and confusion matrix of four models
表3 四種模型的F1度量值Table 3 F1 measures of four models
通過直觀對(duì)比可以看出,隨機(jī)森林得到的結(jié)果最佳,F(xiàn)1指標(biāo)高達(dá)0.989且在混淆矩陣中錯(cuò)分分類個(gè)數(shù)最小。即隨機(jī)森林在該環(huán)境下最適宜于網(wǎng)頁挖礦檢測(cè)。
實(shí)驗(yàn)2 通過篩選特定組合后的特征數(shù)據(jù)集用以訓(xùn)練模型,比較篩選前評(píng)價(jià)指標(biāo)的變化差值,找出對(duì)瀏覽器挖礦具有較高識(shí)別性的特征組合。
首先按照2.2節(jié)特征提取中劃分的兩類進(jìn)行篩選組合,得出結(jié)果如表4及圖6、圖7所示。
圖7 去除靜態(tài)代碼特征后的模型比較Fig.7 Models after removing static code features
表4 按類去除特征后四種模型的F1度量值Table 4 F1 measures of four models after feature removal by class
圖6 去除Web技術(shù)特征后的模型比較Fig.6 Models after removing technical features of Web
結(jié)合上述數(shù)據(jù)可以直觀地看到:去除靜態(tài)代碼特征后的模型評(píng)價(jià)結(jié)果無較大差別,其中隨機(jī)森林算法模型結(jié)果有所提高,但其他三種模型結(jié)果均有所下降。去除Web技術(shù)特征后,四種模型評(píng)估指標(biāo)均較大下降且數(shù)據(jù)結(jié)果無差別。在混淆矩陣中可以看到四種模型均錯(cuò)誤地識(shí)別83個(gè)數(shù)據(jù)為良性網(wǎng)站,經(jīng)手動(dòng)查看后,該83個(gè)數(shù)據(jù)點(diǎn)均無靜態(tài)代碼特征所標(biāo)識(shí)值,因此被錯(cuò)誤地識(shí)別為良性網(wǎng)站。以上可以得出Web 技術(shù)特征對(duì)惡意挖礦網(wǎng)站的識(shí)別更具重要性。
下面將通過去除Web 技術(shù)特征類中的特征或特征組合,來找出對(duì)惡意挖礦識(shí)別最具標(biāo)識(shí)性的特征。通過去除單個(gè)特征后,ROC曲線的波動(dòng)的比較,挑選出對(duì)模型影響較大的特征,使用邏輯回歸、支持向量機(jī)、決策樹和隨機(jī)森林四種模型計(jì)算F1值,如表5所示。
表5 篩選特征組合后四種模型F1度量值Table 5 F1 measures of four models after screening feature combination
綜合每個(gè)模型混淆矩陣錯(cuò)誤分類個(gè)數(shù)、F1 值相較全特征數(shù)據(jù)集之間的差值、ROC曲線的波動(dòng),可以看出Websocket、Web Worker 及Postmessage 及onmessage 事件對(duì)模型的影響較大,采用將三者剔除后的數(shù)據(jù)集進(jìn)行模型訓(xùn)練,得到如表6 及圖8 所示數(shù)據(jù)。較之前所有結(jié)果,去除后的F1度量值浮動(dòng)最大,且混淆矩陣錯(cuò)誤分類數(shù)據(jù)個(gè)數(shù)最多,因此可以得出結(jié)論:Websocket、Web Worker和Postmessage 及onmessage 事件這三個(gè)特征結(jié)合后對(duì)識(shí)別惡意挖礦網(wǎng)站具有最高標(biāo)識(shí)性。
圖8 去除三種特征后ROC曲線圖及混淆矩陣Fig.8 ROC curve and confusion matrix after removing three features
表6 去除三種特征后F1度量值Table 6 F1 measures after removing three features
本文架構(gòu)主要基于比特幣系統(tǒng)及惡意攻擊手段。首先對(duì)虛擬貨幣系統(tǒng)支撐技術(shù)和惡意挖礦攻擊手段進(jìn)行簡單描述。然后綜合國內(nèi)外現(xiàn)有的惡意挖礦檢測(cè)技術(shù),融合八個(gè)特征進(jìn)行模型訓(xùn)練,完成了惡意挖礦檢測(cè)模型的設(shè)計(jì)。本文主要研究成果如下:實(shí)現(xiàn)了一種平均F1度量值為98.7%的瀏覽器挖礦檢測(cè)模型,并綜合評(píng)價(jià)得出Websocket、Web Worker 和Postmessage 及onmessage事件這三個(gè)特征的結(jié)合對(duì)惡意挖礦檢測(cè)具有高標(biāo)識(shí)性。
本文在研究過程中主要遇到的問題在于特征的選取。在國內(nèi)外的相關(guān)研究中大量的惡意挖礦檢測(cè)特征被提出,如何在此基礎(chǔ)上選取出更優(yōu)的特征組合或者提出新的特征成為本文的最大難題。同時(shí)本文使用監(jiān)督學(xué)習(xí)方式用以訓(xùn)練檢測(cè)模型,但這種方式過于依賴特征的選擇及分類器的選擇[15]。一旦攻擊者使用某種方式避免或隱藏了該特征,就很容易規(guī)避檢測(cè),從而造成他人權(quán)益損失。在未來工作中,將會(huì)著重于對(duì)瀏覽器挖礦特征選出更具有高效性的新特征及使用深度學(xué)習(xí)算法對(duì)模型進(jìn)行優(yōu)化。