從流量和主機層入手,分析挖礦木馬的防禦之策。

語言: CN / TW / HK

一、前言

近年來由於虛擬貨幣區塊鏈等技術和產品的發展以及虛擬貨幣價值的持續升高,讓原本用於DDoS攻擊或者發垃圾郵件的殭屍網路又看到了另一種新的變現途徑:虛擬貨幣"挖礦"。所以一些被攻陷的主機常常也被植入挖礦木馬,開始偷偷地消耗伺服器資源來挖礦,甚至企業的內鬼也會給伺服器安裝挖礦木馬,防不勝防。

作為企業,如何檢測防範挖礦這種危害行為?其實挖礦木馬本身是一個程式,同傳統的木馬檢測思路一致,也是從流量層或主機層入手。

二、流量

2.1 挖礦協議

挖礦機器與礦池之間的通訊需要遵循特定的協議,目前主流的挖礦協議為Stratum協議,在很久之前還有GBT(getblocktemplate)協議和getwork協議,不過由於頻寬和效能的消耗較多,在7、8年前就已經被新的礦機所拋棄[1] 。

回到Stratum協議,該協議在2012年推出,是從getwork協議的基礎上演變而來的,解決了getwork協議效率低下的問題[2]。在Stratum中,挖礦機器與礦池之間採用TCP的形式傳輸資料,資料傳輸的過程基於JSON-RPC(一個無狀態且輕量級的遠端過程呼叫RPC傳送協議)。礦機向礦池可使用如下8個發放傳送資料:

礦池向礦機則可使用如下7個方法傳送資料:

礦機使用Stratum協議的總體工作流程如下:

(1)礦機任務訂閱

礦機=>礦池:mining.subscribe

礦池=>礦機:mining.notify

(2)礦機認證

礦機=>礦池:mining.authorize

礦池=>礦機:返回認證的結果,true 或者false

(3)設定難度和extranonceing.set_extranonce,並通知礦機工作

礦池=>礦機:mining.set_difficulty、mining.set_extranonce、mining.notify

(4)礦機提交結果

礦機=>礦池:mining.submit

礦池=>礦機:返回是否接受結果,true 或者false

值得注意的是,上面是標準的Stratum,由slush pool(最大的BTC礦池)提出[3],由於加密貨幣的種類繁多,不同的加密貨幣採用的通訊協議會有部分不同。比如常見的XMR(門羅幣)挖礦程式xmrig[4]、xmr-stak[5]則會將上述的協議進行修改。門羅幣簡化了上述流程,通過login方法來進行認證和訂閱。礦池端在接收到login資訊後,如果驗證通過,則會直接下發任務 —— 這樣子就將標準Stratum協議的三次通訊壓縮為一次,大大減少了通訊流量。

2.2 協議檢測

首先看下真正的挖礦流量是什麼樣子:

可以看出,BTC挖礦採用了標準的Stratum協議,其傳輸資料採用標準的json格式,有比較明顯的方法標識,如mining.subscribe、mining.authorize等。而XMR挖礦流量簡化了上述過程,資料包大概分成了兩類,一類是登入包,一類是提交包。這兩種包也有明顯的特點:

(1)首先是有jsonrpc的版本標識,這個是必須要有的。

(2)id欄位請求和響應相等,並且逐步遞增。

(3)帶有明顯的特徵欄位,例如login、submit、params、seed_hash等。

針對上述的特徵,可以通過特徵工程的方式建立規則,針對性的進行檢測。由於挖礦行為本身的特性,一天中的登入和認證包較少,而提交包和下發任務的包很多,可針對這種情況進行優化。

2.3 檢測對抗

針對礦機與礦池通訊的協議檢測僅能覆蓋到明文通訊的情況,目前絕大多數礦池都支援了加密通訊。

協議加密是未來IDS要解決問題。那麼針對加密傳輸的情況,我們能夠在握手協議和證書兩個層面來做一些事情。由於挖礦的特殊性,礦池的域名、證書是不會輕易進行變化的,並且礦池的具有聚集屬性,即越大的礦池集合到的礦機越多,越能夠保證收益的穩定性。所以也可以針對排名較為靠前的礦池進行域名和證書的收集,新增針對性的檢測策略。

三、主機

早期的挖礦木馬在感染主機後顯著的行為特徵是極大的佔用CPU及GPU資源,主要包括:高CPU 和 GPU 使用率、響應速度慢、 崩潰或頻繁重新啟動、系統過熱、異常網路活動(比如連線挖礦相關的域名或 IP)。

隨著對抗的深入和區塊鏈技術的升級,挖礦採取更加隱蔽的CPU/GPU佔用,防止被使用者發現,同時出現了一類以佔用硬碟空間和網路頻寬來進行挖礦的虛擬貨幣,CPU並沒有表現出極高的使用率,反而是硬碟被佔用了極大的空間,比較有代表性的幣種是Filecoin、Chia、Swarm和Dfinity。

雖然經過多年的演進,挖礦木馬攻擊主機的手法越來越多樣化和精細化,但從攻擊流程來說並沒有大的變化,總體上分為三個階段:

(1)攻擊者利用主機或者服務漏洞獲取上傳挖礦木馬的必要許可權。比如未授權訪問漏洞、Web服務遠端程式碼執行漏洞、伺服器系統元件漏洞等;

(2)攻擊者將挖礦木馬上傳到受害主機後,啟動木馬程式自動實現持久化執行和自身隱藏。

(3)挖礦木馬為了實現收益的最大化,使用內網探測掃描,密碼爆破等方式發現其他潛在受害目標主機,並在內網主機間進行大範圍傳播

在整個攻擊流程中,主機層面的檢測在上述三個階段中均有合適的切入點,一般會從程序特徵,網路連線,檔案特徵等多個維度進行檢測。

在第一階段,攻擊者利用已知漏洞對主機進行自動化攻擊,攻擊成功後,接著通過命令執行等方式下載執行挖礦木馬,同時會檢查系統有沒有其他挖礦程序執行,如果有就結束掉,確保自己獨佔挖礦資源。通過對常見挖礦木馬指令碼命令執行鏈的進行分析,可以比較容易地發現其中的異常。

在第二階段,挖礦木馬植入到受害主機,一般會寫入計劃任務實現持久化,並開始挖礦。

挖礦木馬在進行挖礦時,會對礦池進行DNS查詢和IP連線。通過對比收集的公開礦池域名和IP,在木馬進行網路連線的時候可以有效告警。當然,這樣不能檢測連線私有礦池的挖礦木馬,但是對連線公開礦池的挖礦木馬具有很好的檢測能力。如下所示,這是收集的部分公開礦池地址。

除了命令執行鏈和主機網路連線資訊的檢測,大部分挖礦木馬會在主機落地。通過收集大量的挖礦木馬樣本,提取靜態檢測規則或者使用機器學習的方式訓練檢測模型來發現潛在的挖礦木馬。比如科恩實驗室的BianryAI引擎就是類似方法[6]。

在第三階段,挖礦木馬為了實現利益最大化,開始橫向移動,感染更多的機器。高階的挖礦木馬一般會自帶密碼庫和具備掃描爆破功能,用來爆破登陸同一網段裡的主機。這部分可以通過東西向流量檢測以及HIDS來發現。

四、挖礦木馬的縱深防禦

4.1 威脅情報

無論是因為可利用的漏洞數量(且因為補丁更新會不斷收斂)的原因,還是網路資源總量的原因,甚至是殭屍網路互相競爭原因,同時期存在於網路中的殭屍網路數量其實是有限的。如果基於威脅情報共享,那麼網路和計算資源相對豐富的各大型網際網路公司,以及電信運營商所提供的情報幾乎可以覆蓋現網主要挖礦木馬網路。

TSRC在以往的博文中,也分享過不少木馬與殭屍網路的IOC資訊。從《雲端博弈 —— 木馬屠城》[7]一文可以看到,通常活躍的殭屍網路,其木馬常用的就是幾個固定版本,或者有明顯的家族特徵;從《BORG:一個快速進化的殭屍網路》[8]可以看到,殭屍網路的活躍程度與0day\1day的在網路中的存在週期是相關的,且殭屍網路雖然也在進化,但也有其家族特徵,依然是可以通過威脅情報關聯檢測與打擊。

4.2 資金鍊

雖然虛擬貨幣有其宣稱的匿名性和去中心化特點,但大量的虛擬幣需要變現,那麼還是會有與資金相關的活動痕跡可追溯。

今年初的時候,幣圈掀起一股所謂的“空投”(發行新的虛擬貨幣的資金募集行為)熱潮,其中大部分都是騙子,募集了散戶投資者資金之後,根本不會上市交易。筆者曾經追蹤過幾個“空投”事件,其募集的‘資金(代幣)’最終都流入了幾個大賬戶,並且走到了交易所。那麼走到交易所之後如何追蹤呢?我們來看看下面的案例。

2020年8月27日,某國通過訴訟,追繳黑客入侵加密數字貨幣交易所盜取的資金。

“訴訟書中表示,執法人員是通過分析區塊鏈來識別特定BTC/ETH地址的所有者。例如,黑客可能會建立多個BTC地址來接收來自不同地址的BTC,當黑客想要處理它接收到的BTC 時,這些收款地址就會發生聚集和關聯。執法部門利用幾家不同的區塊鏈分析公司提供的商業服務來調查虛擬貨幣交易,這些公司通過分析BTC虛擬貨幣交易背後的資料,建立大型資料庫,在資料庫中進行資料關聯推導,最終追蹤溯源到某國黑客的盜竊行為和資金流向。”“訴訟書中表示,執法人員是通過分析區塊鏈來識別特定BTC/ETH地址的所有者。例如,黑客可能會建立多個BTC地址來接收來自不同地址的BTC,當黑客想要處理它接收到的BTC 時,這些收款地址就會發生聚集和關聯。執法部門利用幾家不同的區塊鏈分析公司提供的商業服務來調查虛擬貨幣交易,這些公司通過分析BTC虛擬貨幣交易背後的資料,建立大型資料庫,在資料庫中進行資料關聯推導,最終追蹤溯源到某國黑客的盜竊行為和資金流向。”

五、結尾

不管是通過網路層的宙斯盾流量安全分析還是主機層的洋蔥EDR,我們在檢測挖礦木馬的檢測方面都做了大量的工作,既保護了自身業務的安全和穩定,也通過安全產品能力輸出為雲客戶提供安全保障(比如上述能力已整合到騰訊雲主機安全產品“雲鏡”),挖礦治理是需要全行業的合作,歡迎與大家一起探討合作解決。

參考

[1] https://bitcointalk.org/index.php?topic=288963.0

[2] https://zh.braiins.com/stratum-v1

[3] https://braiins.com/stratum-v1/docs

[4] https://xmrig.com/

[5] https://github.com/fireice-uk/xmr-stak

[6] 騰訊主機安全(雲鏡)兵器庫:斬殺挖礦木馬的利劍-BinaryAI引擎

[7] 雲端博弈——木馬屠城

[8] BORG :一個快速進化的殭屍網路

[9] 國家升級“挖礦”整治力度,騰訊御界NDR助力反制“挖礦”木馬

作者:[騰訊洋蔥HIDS團隊] xti9er、七夜、[騰訊宙斯盾流量檢測系統] Pav1