999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Chrome DevTools Protocol的網頁挖礦劫持攻擊特征分析方法

2023-01-02 12:07:00傅繼晗
軟件導刊 2022年11期
關鍵詞:分析檢測

傅繼晗,沈 煒

(浙江理工大學信息學院,浙江杭州 310018)

0 引言

發改運行〔2021〕1283 號文件指出虛擬貨幣挖礦活動是通過專用“礦機”計算生產虛擬貨幣的過程,該活動能源消耗與碳排放量大,對國民經濟貢獻度低[1]。比特幣[2]發明以來,使用各類挖礦算法的加密貨幣層出不窮,至今已經超過了8 600 種,總市值超過了2.21 萬億美元[3]。在如此高的挖礦熱度下,挖礦已經從礦場擴散到零星設備,更有甚者,通過惡意挖礦網頁等非法方式占用用戶資源牟取非法利益[4]。自從2017 年誕生第一個網頁挖礦程序coinhive[5]以來,越來越多惡意挖礦網頁采用內嵌挖礦腳本的形式,在用戶登錄網頁期間,利用網頁代碼實施挖礦劫持攻擊(cryptojacking),嚴重耗費了計算機資源,影響了人們正常的生產生活。因此,通過科學可信的檢測手段對挖礦網頁進行準確檢測、判斷是當今網絡安全研究中一個重要課題。

1 相關研究

隨著網頁內置挖礦程序越來越多,不少網頁挖礦網站黑名單被曝光,如Nocoin[6]和MinerBlock[7]將含有挖礦木馬的URL、域名、IP 地址等信息保存在黑名單庫中,通過檢索判斷是否為惡意網頁。然而,隨著惡意挖礦網頁變種增多,不少網站都使用DGA 域名生成算法等手段生成無規律隨機的域名來繞過一般的檢測機制,因此對惡意挖礦網站進行行為特征分析十分重要。在國內外相關研究中,主要分為惡意挖礦網站的靜態分析和動態分析,國內辛毅等[8]對挖礦木馬進行檢測分析,應宗浩等[9]對木馬攻擊手段進行研究。國外如Romano 等[10]提出MinerRay 技術,通過語義分析網頁代碼分析挖礦行為;Domhnall Carlin 等[11]通過ollydbg 調試運行惡意網頁的Chrome 瀏覽器,從機器指令集角度分析惡意網頁特征;Papadopoulos 等[12]通過網頁運行時的CPU、內存使用情況以及系統溫度識別挖礦網頁。

但上述惡意挖礦網頁分析方法存在以下3個問題:

(1)由于惡意代碼在Chrome 瀏覽器的JavaScript 虛擬機中運行,因此通過ollydbg 等調試器進行機器指令級分析效率不高,且在不同架構CPU 的機器上通用性差。

(2)惡意代碼存在嚴重混淆,導致如上文提到的minerray 等一些JavaScript 分析框架容易出錯,在實驗中難以對付越來越多的惡意挖礦變種。

(3)通過網頁運行時的CPU、內存使用情況以及系統溫度識別挖礦網頁容易造成誤報,錯誤地將一些網頁游戲識別成挖礦程序,而且檢測環境必須是在只運行瀏覽器的情況下,實際生產環境中難以做到,并且受外界溫濕度的影響較大。

針對以上問題,本文提出基于Chrome 瀏覽器自帶的開發人員工具檢測網頁挖礦的方法,能有效提升檢測效率與準確度。通過FOFA 引擎搜索authedmine.com 接口,獲取有代表性的挖礦網頁http://218.29.203.186:7788,并以該網站為例,使用Chrome 自帶的開發人員工具分析其挖礦期間的各種特征,從而提高對網頁惡意挖礦行為的檢測及防范水平。

2 惡意樣本靜態特征

2.1 惡意代碼標簽引入點

一個HTML 格式的網頁主要由head、body 組成,其中head 和body 里可以插入script 標簽或者iframe 以引入其他外部js 腳本。在本例惡意挖礦網頁中發現了兩處惡意挖礦代碼的引入點。其中,位于head中的script標簽如下:

2.2 惡意代碼具體特征

從上述script 標簽引入的惡意代碼中,可以看見設置了API_KEY(見圖1),惡意代碼植入者通過設置API_KEY來連接挖礦服務提供者,從而將挖礦收益記錄到自己的賬戶。同時,該惡意代碼還創建了新的iframe 標簽(見圖2),iframe 也被稱為HTML 內聯框架元素,能將另一個HTML頁面嵌入到當前頁面中[13],惡意代碼通過創建iframe 進一步引入新的惡意代碼并執行。由于iframe 的代碼執行虛擬環境獨立于主網頁,因此通過iframe 執行惡意代碼也能一定程度上繞開相關檢測機制。

Fig.1 API_KEY imported with malicious code圖1 惡意代碼引入的API_KEY

Fig.2 Impovting new malicious code by creating new iframe圖2 通過創建新的iframe引入新的惡意代碼

進一步分析新引入的iframe,發現其本質是一個表單,一旦點擊表單上藍色高亮的同意按鈕,該iframe 會加載混淆過的惡意挖礦代碼,如圖3所示。

Fig.3 Impovting new malicious code圖3 引入新的惡意代碼

對惡意代碼進行反混淆,發現惡意挖礦代碼的原理是通過隱式方式引入wasm 文件,使用WebAssembly 語言通過瀏覽器進行挖礦,如圖4 所示。WebAssembly 是一種新型編碼方式,是一種低級的類匯編語言[14],具有緊湊的二進制格式,可以接近原生的性能運行。惡意代碼使用WebAssembly 提升了挖礦效率。

Fig.4 Wasm object imported in malicious code圖4 惡意代碼中植入的wasm文件對象

3 惡意樣本動態行為特征分析方法

對上述惡意樣本進行靜態代碼分析后可以發現,惡意樣本的代碼混淆程度較高,且使用iframe 執行代碼,導致使用一般的方法難以識別挖礦代碼。本文將使用Chrome自帶的開發人員工具從網絡行為以及javascriptCPU 性能剖析器的角度對惡意樣本進行分析。

3.1 通過網絡行為特征識別惡意代碼

在惡意網站加載完所有惡意代碼之后,瀏覽器控制臺會打印一條WebSockets 連接的建立和多個worker 的創建情況,隨后另一組WebSockets 和worker 建立,通過分析日志打印的來源(Chrome JavaScript 引擎腳本VM6 與VM8)以及兩條不同的wss 連接路徑,得知這兩組WebSockets 和wocker 分別來自前一節兩處不同惡意代碼引入點的執行環境,如圖5所示。

WebSockets 是一種先進的技術,可以在用戶的瀏覽器和服務器之間打開交互式通信會話[15],與http 協議共享端口。通過分析WebSockets 網址和傳輸的json 格式消息,可以確定該WebSockets 連接用于下發挖礦任務,同時向挖礦服務器上傳挖礦結果。由于其采用了wss 即WebSockets over SSL/TLS 加密方案,導致各單位難以從網關過濾中發現此類流量,如圖6 所示。對惡意網站另一處iframe 引入的代碼(見圖1)進行比較分析后發現,該處引入的惡意代碼與圖6 處一致,且引入該代碼的url 中key 的數據一樣,均為jC8oUd3fagiDXAm,表明該處代碼與前一處script標簽的代碼為同一黑客引入。

Fig.5 Two sets of console logs圖5 兩組控制臺日志

Fig.6 Wss sessions created while malicious code executing圖6 惡意代碼建立的wss消息內容

通過分析wss 的消息內容,得知挖礦服務器下發了多個任務,同時繼續對惡意樣本進行網絡日志審計,發現該惡意網站加載了多組相同的惡意代碼,其中包括與上一節相同的wasm 代碼,如圖7所示。

Fig.7 Malicious samples loaded multiple groups of minning codes圖7 惡意樣本加載了多組挖礦代碼

由此可以推斷該惡意樣本至少同時使用8 個線程進行挖礦。雖然挖礦軟件的網絡流量經過了SSL 加密,外部網關難以獲取相關流量,但由于挖礦軟件本身是在瀏覽器中運行,因此使用Chrome 自帶的開發人員工具能夠繞開SSL 層,無需解密即可直接獲取挖礦程序運行時的網絡流量日志,為特征分析提供方便。

由于瀏覽器開發人員自帶的工具使用Chrome Dev-Tools Protocol 協議連接調試頁面,也即是說,任何一個實現了Chrome DevTools Protocol 的程序都可以用來調試頁面。據此,提出以下檢測惡意挖礦網站的方法,即使用remotedebugging-port 參數啟動Chrome 瀏覽器無頭模式,暴露出Chrome DevTools Protocol 協議端口,再使用nodejs 調用Chrome-remote-interface 庫,通過該協議與無頭模式的瀏覽器進行通訊,控制瀏覽器訪問惡意挖礦網站,最后通過記錄websocket 日志,從中提取特征信息,如“wasm”“set_job””get_job”等,與挖礦流量日志數據庫進行比對即可篩選出挖礦網站,流程如圖8所示。

Fig.8 Web mining detection program based on traffic analysis圖8 基于流量分析的網頁挖礦檢測程序

3.2 使用JavaScript CPU剖析器檢測惡意代碼

虛擬貨幣挖礦需要大量計算,必定會增加CPU 負荷。劫持挖礦一般利用CPU 較多、GPU 較少,導致CPU 利用率過高,因此觀察CPU 利用率可作為判定是否被劫持挖礦的特征之一。JavaScript CPU 性能剖析器是一個Chrome 開發人員工具里自帶的JavaScript 動態分析組件,能自動記錄放入其中的JavaScript 代碼運行時每個函數調用棧消耗CPU 的特征。由于惡意網站使用了代碼混淆技術,使用JavaScript CPU 性能剖析器能夠很好地抗混淆并記錄虛擬機實例中執行的函數名稱。鑒于惡意挖礦木馬往往在視頻網站中寄生,故將普通視頻網站與惡意樣本的運行結果進行比對,分析其動態運行特征,結果如下:

由圖9、圖10 可知,在惡意網站中,存在多個JavaScript虛擬機實例,且每個實例中wasm-function 函數占用CPU 的時間最多,而在普通的視頻網站中,則是program 函數占用時間最多,如圖11所示。

火焰圖是一種基于堆棧跟蹤剖析器收集數據繪制的用于性能剖析的可視化圖表。在火焰圖中,元素以堆疊方式顯示,函數的調用堆棧從下到上顯示,其中最上面的元素代表堆棧中最新調用的函數[16],如圖12、圖13 所示,元素越寬代表該函數占用CPU 資源越多。Chrome 開發人員工具每隔一段時間(timeDeltas)進行采樣得到繪制火焰圖的原始數據,對以上函數調用情況繪制火焰圖表可以發現,挖礦網站的資源使用情況呈現一定規律,而普通網站的資源使用情況相對不規律,如圖14、圖15所示。

Fig.9 Malicious code creates multiple JS virtual machine instances for mining圖9 惡意代碼創建多個JS虛擬機實例挖礦

Fig.10 Function calls of malicious websites圖10 惡意網站中的函數調用情況

Fig.11 Function calls of ordinary video websites圖11 普通視頻網站中的函數調用情況

由于開發人員工具導出的性能分析數據為函數調用棧頂函數名的排列串,因此排除這些函數串中名稱為“(program)”或者“(idle)”的函數,從剩下的函數名子串中選擇函數名相同的連續子串s1s2s3…sk。通過Amir 等[17]提出的周期模式挖掘算法獲取其中可能的排列周期,即選定一個ε∈[0,1),存在ρ,使得s1s2s3…sk中存在最大子串序列snsn+1sn+2…sn+m,滿足其中任意子串長度的絕對誤差大于ρ且小于ρ(1 +ε),從中獲得的最大子串序列長度m即為挖礦函數周期數M,ρ為挖礦函數周期長度P,用偽代碼表示如下:

Fig.12 Code snippets and data collected by the corresponding performance profiler圖12 代碼片段與對應性能剖析器采集的數據

Fig.13 Flame diagram based on the data collected in figure 12圖13 根據圖12采集數據繪制的火焰圖

Fig.14 CPU performance flame diagram of malicious websites圖14 惡意網站的CPU性能火焰圖

Fig.15 CPU performance flame diagram of ordinary video websites圖15 普通視頻網站的CPU性能火焰圖

由此,設計一個基于JavaScript 剖析器的網頁挖礦檢測程序,其工作模式如圖16所示。

Fig.16 Web mining detection program based on performance profile圖16 基于性能剖析器的網頁挖礦檢測程序

4 實驗驗證與分析

4.1 實驗環境

硬件環境為HP probook 440 G6,軟件環境為windows10 20H4 以及python3.10,實現方式為通過python 控制基于Chrome 的無頭瀏覽器訪問樣本中的網頁。

4.2 實驗過程與結果

利用Adblock 防火墻提供的基于瀏覽器的秘密挖礦黑名單[18]和部分瀏覽器插件內置的挖礦黑名單,收集有挖礦靜態特征的20 個挖礦網頁樣本。通過網絡各收集20 個有視頻網頁樣本和無視頻一般網頁樣本,使用本文提出的網頁挖礦檢測方法通過流量分析和CPU 分析進行驗證。

在特征分析中,本文定義疑似存在挖礦靜態特征的網頁特征分析為真(T),否則為假(F);在流量分析中,使用remote-debugging-port 參數啟動Chrome 瀏覽器無頭模式,暴露出DevTools Protocol 協議端口,再使用nodejs 調用Chrome-remote-interface 庫,通過該協議與瀏覽器進行通訊,控制瀏覽器訪問惡意挖礦網站,從記錄websocket 日志中提取特征信息,并與挖礦流量日志數據庫比對,符合特征為真(T),否則為假(F);在CPU 分析中,利用JavaScript CPU 性能剖析器進行驗證,網頁占用CPU 資源多且占用情況呈現一定規律的為真(T),否則為假(F)。具體驗證結果如表1所示。

Table 1 Experimental verification results表1 實驗驗證結果

結果表明,挖礦網頁3 項全部為真即真陽性TP(預測為正,實際也為正)最大檢出數為18 個,最小數也有17 個,其準確率在85%~90%之間,而其他網頁假陰性FN(預測為負、實際為正)最多只有1 個。因此,該方法能有效檢測出大多數挖礦網頁,有較高準確率。

5 結論與展望

本文以一個真實的挖礦網站為例,提出兩種基于Chrome 瀏覽器自帶開發人員工具(DevTools)的自動化動態檢測分析方法,將兩種動態檢測分析方法相結合具有效率高、抗混淆和出錯率低的特點。未來開發人員可以基于Chrome DevTools Protocol 結合相關封裝好的調用庫開發相關檢測工具,以提升檢測水平。在實際中,有一些礦池采用加密通信,對于加密流量如何檢測,本文未作研究,將在下一步進行探索。

猜你喜歡
分析檢測
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
隱蔽失效適航要求符合性驗證分析
“幾何圖形”檢測題
“角”檢測題
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統及其自動化發展趨勢分析
小波變換在PCB缺陷檢測中的應用
中西醫結合治療抑郁癥100例分析
主站蜘蛛池模板: 亚洲国产高清精品线久久| 无码中字出轨中文人妻中文中| 国产区在线观看视频| 美女扒开下面流白浆在线试听| 国产精品999在线| 手机在线免费不卡一区二| 亚洲第一中文字幕| 天天综合网色中文字幕| 真实国产乱子伦视频| 国产无码在线调教| 潮喷在线无码白浆| 亚洲欧美一区二区三区图片| 欧美日韩中文国产| 国产精品福利社| 天堂在线视频精品| 欧洲av毛片| 免费看黄片一区二区三区| 97超爽成人免费视频在线播放| 不卡无码h在线观看| 亚洲天堂啪啪| 亚洲一区二区无码视频| 免费99精品国产自在现线| 国产成人综合亚洲欧美在| 久久精品亚洲热综合一区二区| 国产乱子伦一区二区=| 无码专区国产精品第一页| 中文字幕1区2区| 老色鬼欧美精品| 国产色婷婷| 免费激情网站| 亚洲综合激情另类专区| 在线看AV天堂| 国产91视频观看| 国产一区亚洲一区| 人妻出轨无码中文一区二区| a亚洲视频| 欧美特黄一免在线观看| 色香蕉网站| 国产人免费人成免费视频| 99视频精品在线观看| 久久国产热| 在线免费看片a| 一本色道久久88综合日韩精品| 97超碰精品成人国产| 免费在线国产一区二区三区精品| 亚洲第一区精品日韩在线播放| 在线欧美a| 久久黄色小视频| 欧美不卡在线视频| 一区二区三区在线不卡免费| 久久黄色影院| AV色爱天堂网| 亚洲AV无码一二区三区在线播放| 国产成人AV男人的天堂| 日本妇乱子伦视频| 国产剧情国内精品原创| 综合亚洲色图| 欧美日韩一区二区在线免费观看 | 99久久亚洲精品影院| 国产在线精品99一区不卡| 国产成人综合欧美精品久久| 亚洲国产日韩欧美在线| 九色视频一区| 国产真实乱子伦视频播放| 亚洲欧美另类专区| 91在线国内在线播放老师| 国产尤物视频网址导航| 极品国产在线| 亚洲国产综合自在线另类| аv天堂最新中文在线| 国产自在线拍| 成人在线不卡| 91久久国产综合精品女同我| 九九视频免费看| 久久精品视频亚洲| 美女被操黄色视频网站| 日本草草视频在线观看| 一区二区三区成人| 无码啪啪精品天堂浪潮av | 亚洲第一天堂无码专区| 97国产在线视频| 综1合AV在线播放|