挖礦惡意程式攻擊 Linux 系統,並利用 Rootkit 自我隱藏

隨著虛擬加密貨幣越來越熱門,網路犯罪集團不意外地正積極開發、微調各種虛擬加密貨幣挖礦惡意程式。事實上,這類威脅是趨勢科技最常一直偵測到的惡意程式,而且各種平台和裝置皆有。

最近我們發現一個新的挖礦( coinmining )惡意程式 (趨勢科技命名為 Coinminer.Linux.KORKERDS.AB) 專門攻擊 Linux 系統,而且會利用某個 Rootkit (Rootkit.Linux.KORKERDS.AA) 來隱藏其惡意執行程序,讓監控工具看不到其執行程序。這一點會讓偵測工作變得更困難,因為被感染的系統只會看到效能變差,但卻看不出是誰在消耗資源。除此之外,該惡意程式還可以更新或升級自己的程式和組態設定檔案。

值得注意的一點是,在 Unix 以及類 Unix 系統 (如 Linux) 的檔案權限設定方式下,只要是具備執行權限的檔案都能執行。我們推測,這個虛擬加密貨幣挖礦惡意程式的感染途徑是經由惡意的第三方/非官方或受感染的外掛程式 (如:媒體串流軟體)。當使用者安裝這類外掛程式時,就等於提供它系統管理權限,如果是已經被駭的應用程式,惡意程式就能以應用程式所擁有的權限來執行。這樣的感染方式並非罕見,因為其他 Linux 虛擬加密貨幣挖礦惡意程式也是利用這樣的途徑入侵。

【延伸閱讀:Unix:會徹底改變勒索病毒遊戲規則嗎?

圖 1:虛擬加密貨幣惡意程式的感染過程。

技術層面分析

最初的惡意程式 (Trojan.Linux.DLOADER.THAOOAAK) 會連線至 Pastebin 去下載某個檔案。被下載的檔案是一個指令列腳本 (shell script),下載後會儲存成「/bin/httpdns」。接著惡意程式會在系統設定一個排程工作以便每小時執行一次 /bin/httpdns,最後再執行這個被下載的指令列腳本。/bin/httpdns 當中的程式碼會對外連線並下載另一個以 base64 編碼的文字檔案。該檔案解碼之後,同樣也是一個指令列腳本,並交由 /bin/httpdns 來執行。


圖 2:下載並儲存指令列腳本的程式碼。

該腳本執行後,首先會檢查惡意程式是否有最新版本。截至本文撰稿為止,該連結仍包含「noupdate」這個字串,代表目前惡意程式並無更新。如果有更新,腳本會呼叫其「echocron 」函式來下載新版的惡意程式並設定排程工作來加以執行。

圖 3:呼叫 echocron 的腳本程式碼。

如果沒有更新,那麼指令列腳本就會繼續執行,首先會呼叫其「downloadrun」函式 (如圖 4),該函式會下載真正的惡意挖礦程式。儘管其連線的網址指向的是一個 .jpg 副檔名的檔案,但實際上卻是一個 ELF 執行檔,下載後會儲存為「/tmp/kworkerds」。

指令列腳本在下載並執行了虛擬加密貨幣挖礦惡意程式之後,就會呼叫其「init」函式來下載某個版本的初始檔案。被下載的檔案會儲存成「/usr/sbin/netdns」並安裝成系統中的一個服務。接著就會呼叫「echocron」函式。

圖 4:惡意程式的三個函式:downloadrun (上)、init (中)、downloadrunxm (下)。

指令列腳本會先休息 10 秒鐘,然後再檢查連接埠 56415 上是否已有連線在使用。如果沒有,就會執行其「downloadrunxm」函式。此函式的功能是去下載另一個虛擬加密貨幣挖礦程式 (Coinminer.Linux.KORKERDS.AA) 以免萬一「downloadrun」函式所下載的惡意程式無法順利執行。

圖 5:惡意程式的「top」函式。

安裝 Rootkit 元件

此惡意程式的新版本增加了一個「top」函式,用來下載並安裝 Rootkit 元件。它首先會檢查系統上是否已經安裝了一份 Rootkit。如果沒有,就下載並安裝其 Rootkit,下載後會儲存成「/usr/local/lib/libdns.so」。

一般來說,系統管理員只要使用處理程序監控程式,就可以看到系統上是否有虛擬加密貨幣挖礦程式正在執行。圖 6 顯示「htop」程式 (一個 Unix 系統上的執行程序檢視/監控工具) 偵測到「/tmp/kworkerds」正在消耗大量的系統資源。如圖 6 的下圖所示,Rootkit 將消耗大量 CPU 資源的挖礦程式隱藏起來,此時系統 CPU 消耗量依然維持在最高。

圖 6: htop 工具可看到挖礦程式「/tmp/kworkerds」 (上) 正在消耗大量 CPU 資源 (100%),但當 Rootkit 安裝完成之後,該執行程序就消失了 (下)。

 

這個虛擬加密貨幣挖礦惡意程式的 Rootkit 元件其實是從網路上可公開取得的程式碼修改而來。在 Rootkit 安裝之後,執行程序監控工具將看不到所有名為「kworkerds」的執行程序。執行程序監控工具的運作方式通常都是讀取「/proc/{PID}」目錄下的檔案。所以只要讓某個執行程序的「/proc/{PID}」目錄無法讀取,使用者就無法透過正常手段偵測到該執行程序的存在。

為了達成這項目的,Rootkit 勾掛了「libc 」程式庫當中的「readdir」和「readdir64」兩個API。這些 API 通常是執行程序監控工具用來讀取資訊的介面。透過預載 (將檔案儲存在記憶體內) 的方式,Rootkit 就可取代原本程式庫的函式,將原本的「readdir」換成 Rootkit 自己的版本 (圖 7)。一旦 API 勾掛完成,監控工具就看不到名為「kworkerds」的執行程序。

圖 7:Rootkit 將虛擬加密貨幣挖礦惡意程式的執行程序隱藏起來讓監控工具無法看到。

 

最佳實務原則與趨勢科技解決方案

儘管 Rootkit 無法隱藏 CPU 用量資訊以及虛擬加密貨幣挖礦程式所建立的連線,但這已經能讓它變得更加隱匿,而且歹徒只需拿原本既有的程式碼或工具再修改幾行程式就可達成。再加上惡意程式本身具備自我更新能力,我們預料歹徒未來還會增加其他新的功能,來提升惡意程式的用途。

虛擬加密貨幣挖礦惡意程式對系統效能的影響相當巨大,尤其對 Linux 系統,因為這類系統通常用來執行企業流程,包括伺服器、工作站、應用程式開發架構、資料庫以及行動裝置。IT 系統管理員應該養成良好的資安習慣,例如:

  • 貫徹最低授權原則,停用、移除、或盡量減少未經驗證的程式庫。
  • 強化系統安全,使用通過驗證的安全延伸功能來協助解決組態設定錯誤之類的問題。
  • 縮小系統的受攻擊面,藉由存取控管政策來管理檔案與系統或是網路資源的存取,並且定期監控系統與網路是否有異常活動。
  • 定期修補系統來避免漏洞遭到攻擊,使用最新版本的伺服器應用程式來減少遭駭客入侵的風險,此外也可採用一些安全措施,例如入侵防護系統。

除此之外,使用者和企業也可考慮採用一些資安解決方案,讓跨世代融合的防禦技巧協助您防範虛擬加密貨幣挖礦惡意程式。趨勢科技XGen™ 防護提供了高準度機器學習來保護閘道 和端點,涵蓋實體、虛擬以及雲端工作負載。XGen 防護利用網站/網址過濾、行為分析、客製化沙盒模擬分析等技術來防範隨時演變且能躲避傳統資安控管並攻擊已知及未知漏洞的威脅。此外,XGen™ 防護同時也是趨勢科技 Hybrid Cloud Security 混合雲防護、User Protection 使用者防護以及 Network Defense 網路防禦等解決方案的技術基礎。

入侵指標 (IoC):

相關雜湊碼 (SHA-256):

相關惡意網址:

  • hxxps://monero[.]minerxmr[.]ru/1/1535595427x-1404817712[.]jpg

 

◎原文來源: Cryptocurrency-mining Malware Targets Linux Systems, Uses Rootkit for Stealth 作者:Augusto II Remillano、Kiyoshi Obuchi 與 Arvin Roi Macaraeg