微服務架構的簡易性與彈性,已使得越來越多企業機構開始採用微服務。事實上,根據一份 2019 年調查指出,89% 的技術領導人認為,微服務是企業在不斷演變的數位世界維持競爭力的必要關鍵。隨著越來越多開發人員在企業內及雲端服務內部署容器,一些關鍵資料一不小心就可能因為資安控管不良而暴露在外,成為歹徒覬覦的目標。我們持續發現各種針對微服務組態設定錯誤的攻擊,例如:在暴露在外的 Redis 執行個體當中發現虛擬加密貨幣挖礦惡意程式,以及歹徒經由 Docker Hub 社群提供容器映像來散布惡意容器。
我們曾在某起攻擊當中發現虛擬加密貨幣挖礦程式會搜尋受害的 Linux 系統上是否有其他現有的挖礦程式並將它們清除,藉此獨占所有系統運算資源。從這起攻擊就能看出歹徒對於 Docker 和 Redis 的熟悉度,他們專門蒐尋這些平台所暴露的應用程式開發介面 (API)。不過接下來我們要探討的是一個截然不同的案例,駭客精心製作了一個專門用來跳脫特權容器 (privileged container) 的惡意程式,跳脫成功之後就能取得主機電腦的所有系統管理 (root) 權限。有一點很重要且須注意的是,Docker 在預設情況下並不會自動配置特權容器,而絕大多數的 Docker 使用者所用的都不是特權容器,這也證明使用特權容器卻不知如何正確加以保護是不智之舉。
技術層面分析
2019 年 7 月,Google Security Team 研究員 Felix Wilhelm 在 Twitter 上發文公布了一種概念驗證 (PoC) 攻擊展示如何利用 cgroups release_agent 功能就能輕而易舉跳脫一個 Docker 特權容器,或 Kubernetes Pod。
同樣的,趨勢科技團隊最近也遇到一種可跳脫我們架設的誘捕環境容器的攻擊手法。
根據趨勢科技的分析顯示,駭客的來源 IP位於英國和法國,其在一台 Docker 主機上部署並執行一個惡意容器,利用一個名為「calm.sh」的指令列腳本來入侵,這個腳本接著再植入另一個名為「cmd」的指令列腳本。calm.sh 會呼叫一個偽裝成 nginx 的應用程式,但它其實是一個 ELF 格式 的虛擬加密貨幣挖礦程式。駭客只是利用「nginx」這個名字來讓人以為它是 HTTP 伺服器,藉此避人耳目。
我們的誘捕環境最近被一些網路掃描工具找到,目前這類掃描工具在一些針對容器的攻擊中非常盛行。這個名為「zgrab」的掃描程式會尋找暴露在外的容器 API,駭客透過以下連線在系統上部署惡意容器。
駭客使用 API 的「 create」指令從容器登錄拉取 (pull) 一個名為「gin」的容器映像。部署時更指定「Privileged」這個參數,以便容器跳脫技巧發揮作用。
就算沒跳脫成功,駭客也會趁機在受害的伺服器上執行一個虛擬加密貨幣挖礦程式,這類程式不需特權容器就能執行。
這個挖礦程式是一個 ELF 格式的檔案,檔名「nginx」,它同時也會暗藏在某個惡意容器映像當中。挖礦程式會偽裝成正常的系統服務在背後偷偷耗光容器的所有資源來挖礦。
漏洞掃描是否足以確保容器映像安全?
確保容器映像安全無虞的一個重要步驟就是掃描容器是否含有漏洞。然而,容器安全卻不能單靠漏洞掃描,資安團隊還是要定期掃描容器映像內是否含有惡意程式或惡意檔案。
上述案例中的「nginx」檔案早已是趨勢科技威脅情報與產品都已能掌握的惡意程式,所以我們的防護引擎能迅速偵測。一般人常以為 Linux 作業系統應該不會出現這類威脅和風險,但由於許多企業機構都開始移轉到雲端,並在一些關鍵營運作業當中採用 Linux 系統,所以駭客已經將目光轉向 Linux 系統。
結論
駭客已開始鎖定熱門的 DevOps 技術並試圖尋找新的方法來攻擊容器和雲端環境。
我們之前分析的案例絕多數都不會做任何安全檢查,然而駭客似乎正在嘗試任何可能的辦法來驗證哪條路行得通、哪些行不通。現在,我們發現駭客的技巧已經逐漸純熟,他們現在會嘗試透過一些安全掃描來找出容器實作上的漏洞,看看能不能跳脫容器到主機層次,或者植入挖礦程式來利用受害主機的資源為自己賺錢。
入侵指標 (IoC):
SHA-256 | 檔案名稱 | 趨勢科技命名 |
6f2825856a5ae87face1c68ccb7f56f726073b8639a0897de77da25c8ecbeb19 | nginx | Coinminer.Linux.MALXMR.SMDSL64 |
548236b18ae6c6b588f1180ac70561f20c1bce33b98ef15e385b5c060921b871 | calm.sh | Trojan.SH.DOKI.A |
原文出處:Threat Actors Now Target Docker via Container Escape Features