暴露在外的 Docker 伺服器遭駭客植入挖礦程式與 DDoS 殭屍病毒

駭客持續鎖定 Docker 容器環境,趨勢科技最近發現了一起網路攻擊會在使用Alpine Linux 建立的映像產生的 Docker 容器內植入虛擬加密貨幣挖礦程式與 DDoS 殭屍病毒。

暴露在外的 Docker 伺服器遭駭客植入挖礦程式與 DDoS 殭屍病毒

駭客持續鎖定 Docker 容器環境,我們最近發現了一起網路攻擊會在使用Alpine Linux 建立的映像產生的 Docker 容器內植入虛擬加密貨幣挖礦程式與分散式阻斷服務 (DDoS) 殭屍病毒。趨勢科技今年五月也曾經通報過類似的攻擊案例,在上次的攻擊案例中,駭客建立了一個 惡意的 Alpine Linux 容器,然後在裡面暗藏惡意挖礦程式與 DDoS 殭屍病毒。

感染程序分析


最近這一次攻擊,駭客會先連線至暴露在網路上的 Docker 伺服器,然後在伺服器上建立並執行一個 Docker 容器,接著在 Docker 容器內執行圖 1 當中的指令。

A code snippet of the command that is executed on the Docker container
圖 1:駭客在 Docker 容器內執行的指令。

駭客下載的 XMI 檔案 (趨勢科技命名為  Trojan.Linux.MALXMR.USNELH820) 是一個 Bash 腳本 (參見圖 2),此腳本可讓駭客橫向入侵同一容器網路內的其他主機 (從「/.ssh/known_hosts」檔案取得主機資訊)。

A code snippet of the Bash script used in the attack
圖 2:攻擊中使用的 Bash 腳本。
A code snippet of the commands sent to targets
圖 3 顯示的指令會下載該 XMI Bash 腳本與一個 Python 腳本 (d.py) 來執行 (Trojan.Python.MALXMR.D)。

XMI 腳本經常使用 Base64 編碼來躲避偵測,圖 3 當中的編碼字串解開之後會變成圖 4 中的指令,也就是去下載一個名為「d.py」的檔案。

A code snippet of the decoded command that downloads and executes the component named “d.py”
圖 4:解碼之後的指令會下載並執行一個名為「d.py」的腳本。

另外,值得注意的是腳本內有一段已標示成註解的程式碼 (如圖 5) 似乎可經由  SSH 暴力登入方式散布惡意程式。所以,有可能駭客過去曾經攻擊或者也有能力攻擊  SSH 伺服器。

 A code snippet of the commented-out code found in the XMI Bash script
圖 5:XMI Bash 腳本中一些被標示成註解的程式碼。

此攻擊使用了多種常駐系統的技巧,除了建立 cron 排程工作 (如圖 6) 之外,也會自己建立系統服務來讓惡意檔案自動執行。

 A code snippet of the attack setting up persistence using cron jobs
圖 6:惡意程式利用 cron 排程工作來常駐於系統內。

用來建立系統服務的程式碼也已經過 Base64 編碼。解開之後的腳本如圖 7 所示,並放在「/etc/init.d」目錄當中。

 A code snippet of the decoded form of the script, which is placed in the /etc/init.d directory
圖 7:解開後的腳本內容會放在「/etc/init.d」目錄當中。

我們將偵測到的挖礦程式 (其下載腳本如圖 8 所示) 命名為:Coinminer.Linux.MALXMR.UWELD。有趣的是,駭客所用的虛擬加密貨幣錢包與之前攻擊 CVE-2019-3396 (Confluence 漏洞) 以及 CVE-2017-5638 (Apache Struts 漏洞) 的行動所使用的錢包是同一個。根據 Tencent Security 的一份報告,攻擊 CVE-2017-5638 漏洞的駭客是中國一個名為「8220」的挖礦集團。

 A code snippet of the cryptocurrency-mining payload download
圖 8:下載挖礦程式的程式碼。

為了檢查惡意檔案是否植入成功,惡意程式會使用一個名叫「md5sum」的程式來檢查其 128 位元的 MD5 雜湊碼。之前的 Kinsing 惡意程式也採用類似的驗證手法,該程式是專門攻擊中國境內雲端伺服器的 H2Miner 挖礦殭屍網路所使用。

除此之外,此攻擊還會在系統植入一個 DDoS 殭屍病毒 (Backdoor.Linux.KAITEN.AMV),如圖 9 所示。

 A code snippet of the dropper script that downloads and executes a DDoS bot
圖 9:下載並執行 DDoS 殭屍病毒的程式碼。

這個 DDoS 殭屍病毒具備了某些後門指令 (參見圖 10) 使用 IRC (Internet Relay Chat) 通訊協定,而且它看起來似乎是 Kaiten  (亦稱為 Tsunami) 的變種。其幕後操縱 (C&C) 伺服器的位址為:c4k[.]xpl[.]pwndns[.]pw、104[.]244[.]75[.]25 與 107[.]189[.]11[.]170。

 A code snippet of strings found in the DDoS bot showing some of its backdoor commands
圖 10:DDoS 殭屍病毒的程式碼中具備某些後門指令。

正如前面所提到的,此次攻擊會在系統植入一個名為「d.py」的 Python 腳本,我們將它命名為:Trojan.Python.MALXMR.D。我們發現它的行為與 Trojan.Linux.MALXMR.USNELH820 相同,也就是會常駐於系統並且在系統植入挖礦程式與 DDoS 殭屍病毒。圖 11 顯示 d.py 的部分程式碼。

A code snippet of the d.py Python script
圖 11:Python 腳本「d.py」的部分程式碼。

以下圖 12 顯示此攻擊的感染程序:

A diagram of the infection chain of the attack
圖 12:攻擊感染程序示意圖。

資安建議



有鑑於駭客攻擊 Docker 容器的案例日益增加,應用程式開發團隊應採取一種風險導向的資安策略來減少容器暴露於威脅的情況。首先,開發團隊應避免讓 Docker daemon 的連接埠暴露在網路上。其次,最好只用 Docker 官方的映像以避免本文所提到的威脅。此外,以下幾項最佳實務原則也可進一步降低容器的資安風險:

  • 部署一套應用程式防火牆來保護容器,在威脅進入容器環境之前預先加以攔截。
  • 盡量避免使用第三方軟體,最好使用經過驗證的軟體以確保不會有惡意程式進入容器環境。
  • 採取最低授權原則,能不開放的權限就不要開放。容器映像應經過簽署和認證網路連線和重要元件 (如執行容器的 daemon 服務) 應該制定存取管制。
  • 採用自動化的執行時期與容器映像掃描來進一步掌握容器處理程序的狀況。應用程式控管一致性監控可有助於偵測伺服器、檔案及系統遭到異常修改的情況。

除此之外,企業還可採用以下雲端防護來保護 Docker 容器:

感謝 Arianne Grace Dela Cruz 提供額外的分析資訊。 

入侵指標 (IoC):

檔案名稱 

SHA-256趨勢科技命名
d.py29316f604f3c0994e8733ea43da8e0e81a559160f5c502fecbb15a71491faf64Trojan.Python.MALXMR.D
i68635e45d556443c8bf4498d8968ab2a79e751fc2d359bf9f6b4dfd86d417f17cfbCoinminer.Linux.MALXMR.UWELD
x32b9b8280f5ce25f1db676db6e79c60c07e61996b2b68efa6d53e017f34cbf9a872Backdoor.Linux.KAITEN.AMV
x64b855557e415b485cedb9dc2c6f96d524143108aff2f84497528a8fcddf2dc86a2Backdoor.Linux.KAITEN.AMV
x86_64fdc7920b09290b8dedc84c82883b7a1105c2fbad75e42aea4dc165de8e1796e3Coinminer.Linux.MALXMR.UWELD
xmi51654c52e574fd4ebda83c107bedeb0965d34581d4fc095bbb063ecefef08221Trojan.Linux.MALXMR.USNELH820


網址

  • 205[.]185[.]113[.]151

原文出處:Exposed Docker Server Abused to Drop Cryptominer, DDoS Bot作者:Augusto Remillano