組態設定錯誤的問題早已不是新聞,不過對網路犯罪集團來說,這類問題卻是他們入侵企業電腦資源以從事惡意活動的一項有效管道,同時也是資安的首要問題之一。在這篇文章,我們將詳細說明 Docker Engine-Community 這套熱門的開放原始碼 DevOps 工具如何因為組態設定上的錯誤,而讓駭客滲透到容器內部並執行 Linux 殭屍網路惡意程式 AESDDoS 的某個變種 (趨勢科技命名為 Backdoor.Linux.DOFLOO.AA,我們是經由誘捕網路所發現)。
在容器主機上運作的 Docker API 可讓主機接收所有容器相關的指令,然後交由具備系統管理 (root) 權限執行的容器引擎來執行。如果這些 API 的連接埠因為蓄意或組態設定上的錯誤而提供給外部存取,就可能讓駭客有機會掌控主機,在主機上的容器內植入惡意程式,然後從遠端存取使用者的伺服器與硬體資源。先前,我們曾見過暴露在外的 Docker 主機遭歹徒植入虛擬加密貨幣挖礦惡意程式。
[延伸閱讀:Container Security: Examining Potential Threats to the Container Environment]
攻擊方式
在這項新的攻擊中,歹徒會先從外部掃瞄某個 IP 範圍的主機,發送 TCP SYN 封包到連接埠 2375,這是 Docker 引擎接收通訊的預設連接埠。一旦找到有效的連接埠,歹徒就會試圖建立連線來尋找運作中的容器。一旦找到,就會利用 docker exec 指令在容器內植入 AESDDoS 殭屍病毒,讓駭客經由指令列存取該主機上所有可存取的執行中容器。如此一來,惡意程式就能在運作中的容器內執行並隱藏蹤跡。
使用的工具與散播的惡意程式
當我們在檢查我們誘捕網路所接收到的查詢指令時,我們發現了一個連結指向某個 HTTP 檔案伺服器 (HFS) 控制台檔案。過去曾有中國的駭客利用暴露在外的 HFS 控制台來散播惡意檔案,例如:ELF Linux/BillGates.Lite 惡意程式以及 Elknot/Setag、MrBlack、Gafgyt 等殭屍網路惡意程式。
在我們發現的 HFS 控制台上,有個名叫「2375-SYNG口漏洞.zip」的檔案。經過分析之後顯示這是一個駭客用來掃瞄網路以搜尋可攻擊目標的工具。除此之外,還發現一些有趣的內容:一個預先執行 WinEggDrop 掃瞄程式 (s.exe) 的批次檔,該掃瞄程式會試圖連上「ip.txt」檔案內指定的中國 IP 位址 (連接埠 2375)。其輸出結果會儲存到名為「ips.txt」的檔案,然後再將該檔案輸入到「Docker.exe」檔案。
圖 2:「2375-SYNG口漏洞.zip」壓縮檔內容。
不僅如此,我們也觀察到歹徒使用了一個叫做「Docker 批量檢測」的工具,專門用來偵測 Docker 的漏洞。
圖中文字如下:
2375 Docker 批量檢測 急速版
2375 Docker 批量檢測 急速版 By: 煙火QQ154284301
僅供用於漏洞檢測 請勿用於非法用途
如有非法用途 使用者自行承擔法律責任 一切與作者無關
圖 3:「Docker 批量檢測工具」畫面抓圖。
圖 4:WinEggDrop 連接埠掃瞄程式。
當 Docker.exe 工具執行過後,會看到以下訊息:
圖中文字如下:
共計有:1 個 IP 待檢測,請稍候!
IP:192.168.1.1
檢測完畢,正在準備下一波掃描!
圖 5:Docker 掃瞄程式執行過程訊息。
Docker.exe 工具會試圖利用「/containers/json」查詢指令來列出指定電腦上的所有 Docker 容器。
圖 6:用來列出所有可用容器的 JSON 查詢。
接下來,對運作中的容器下達指令。以下 JSON 字串的 cmd 參數是前述壓縮檔內 Shell.txt 檔案的內容。
圖 7:用來在運作中容器內執行程式的查詢敘述。
接著,Docker.exe 會植入 AESDDoS 殭屍網路惡意程式,讓駭客發動各種分散式阻斷服務 (DDoS) 攻擊,如:SYN、LSYN、UDP、UDPS 及 TCP 等洪水攻擊。此惡意程式變種之前即曾經出現過,專門針對執行 Confluence Server 和 Confluence Data Center 未修補版本的系統發動 DDoS 攻擊、執行遠端程式、從事虛擬加密貨幣挖礦活動。
圖 8:AESDDoS 在連上其幕後操縱 (C&C) 伺服器時會顯示這段訊息。
圖 9:已實作的 DDoS 攻擊手法。
DevOps 資安建議與趨勢科技解決方案
Docker 已公開警告使用者不要設定 Docker 引擎接收連接埠 2375 的通訊,因為這樣做會讓任何人都有機會取得其主機的管理權限。其 API 和位址的存取都應受到嚴格管制。
企業可遵從以下幾項原則來防範容器相關的資安威脅:
- 檢查 API 組態設定。系統管理員與開發人員應確保 API 只能接收來自指定主機或內部網路的請求。並採用 HTTPS 通訊協定和憑證來確保 API 端點的安全。
- 採取最低授權原則,能不開放的權限就不要開放。確定容器映像皆經過簽署與認證。Docker 引擎的重要元件,如輔助容器運作的核心服務,應該受到嚴格的存取管制。此外,網路連線也應加密。
- 落實廠商建議的最佳實務原則。Docker 已提供了一份完整的最佳實務原則清單,並內建了許多資安功能讓系統管理員善加利用。
- 建立一套 自動化的執行時期與映像建構時期掃瞄,將資安融入容器生命週期內 (例如檢查是否遭到篡改或含有漏洞)。應用程式控管與一致性監控能有助於監控伺服器、檔案及系統是否遭到不當修改。
此外,趨勢科技也提供了一些解決方案來協助 DevOps 團隊建構安全、快速交付、隨處執行。趨勢科技Hybrid Cloud Security 混合雲防護解決方案可提供強大、簡化、自動化的防護,讓企業將防護融入 DevOps 流程,並藉由多重的 XGen威脅防禦技巧來保障實體、虛擬及雲端工作負載的安全。此外,更提供了容器防護,藉由 趨勢科技HYPERLINK “https://t.rend.tw/?i=Mzc4MQ”Deep Security™ 解決方案來提供執行時期防護,並透過 Deep Security Smart Check 的容器映像掃瞄,在開發流程的任何階段持續掃瞄映像內的惡意程式和漏洞,在部署之前預先防範這些威脅。
入侵指標資料
SHA-256 | 趨勢科技命名 | 檔案名稱 |
643B16F4F6228BE95736A9F37FA9B527CA831EA7AE998CFA6725ECD426C8B4E1 | Backdoor.Linux.DOFLOO.AA | 惡意檔案 |
8909895D92C4544A423C70995F9673987F791F7ACB9FE4843E0C6940D7739897 | ||
F8FB19F075831C1FCDD780C8283E751B8B4D35D3635E048CDE244F8D52C1243C | Trojan.Win32.PARITE.AC | 批次檔 |
DCE9A06646113DEC4AEC515B3C9A3C9EAB9D20CCA45BEEA015281C376C09B3D7 | PE_VIRUX.O | s.exe |
BF8BB06B694E775DCA1EB64B4EE4AFD243E4EAED0A03219A9BB175FF1DC5F280 | PE_PARITE.A | Docker.exe |
原文出處:AESDDoS Botnet Malware Infiltrates Containers via Exposed Docker APIs 作者:David Fiser、Jakub Urbanec 與 Jaromir Horejsi