雲端
Commando Cat: 一種利用 Docker Remote API 伺服器的新型虛擬加密貨幣挖礦攻擊
本文分析一種利用暴露在外的 Docker Remote API 伺服器來植入虛擬加密貨幣挖礦程式的攻擊行動,此攻擊使用了 Commando 開放原始碼專案所產生的 Docker 映像。
摘要
- 本文分析一種利用暴露在外的 Docker Remote API 伺服器來植入虛擬加密貨幣挖礦程式的攻擊行動,此攻擊使用了 Commando 開放原始碼專案所產生的 Docker 映像。
- 駭客使用「cmd.cat/chattr」這個映像來突破防線,並利用了 chroot 與磁卷綁定技巧來逃離到容器之外,進而存取主機系統。
- 攻擊指標包括了特定的 User-Agent 字串,以及在 TCP 連接埠 3022 上使用 DropBear SSH,這些特徵有助於偵測系統上是否被植入惡意程式。
- 要防範這類攻擊,最重要的是要落實最佳資安實務原則,例如:正確的設定容器與 API 的組態設定,並使用信任的 Docker 映像。
我們觀察到一起利用暴露在外的 Docker Remote API 伺服器來植入虛擬加密貨幣挖礦程式的攻擊行動。這起攻擊行動被命名為「Commando Cat」,因為它突破企業防線的方式就是部署一個使用 GitHub 上的 Commando 開放原始碼專案所製作的良性 Docker 容器。Commando 可在網路上公開取得,並使用 cmd.cat 來部署。駭客使用「cmd.cat/chattr」這個 Docker 容器映像來從幕後操縱 (CC) 基礎架構取得惡意檔案。這起攻擊從 2024 年初便開始活躍至今。
突破防線
為了突破企業防線,駭客會在系統部署一個名為「cmd.cat/chattr」的良性 Docker 映像。部署完成之後,駭客就會以這個映像為基礎來建立 Docker 容器,然後使用 chroot 來逃離至容器外部,進而取得主機作業系統的存取權。此外,也會使用 curl/wget 來下載惡意的二進位檔案到主機上。
攻擊程序
讓我們逐一說明這起攻擊的步驟:
1. 刺探 Docker Remote API 伺服器
在攻擊行動一開始,駭客會用 ping 刺探一下 Docker Remote API 伺服器,接著便開始後續的攻擊行動。
2. 使用 cmd.cat/chattr 映像來建立容器
在確認伺服器狀態「OK」之後,駭客接著使用 cmd.cat/chattr 映像來建立一個容器執行個體。
我們可以在建立容器的請求中看到駭客運用 chroot 和磁卷綁定 (volume binding) 的方式來逃離容器。使用 chroot 可讓駭客窺探容器的外部,然後使用 Binds 參數來進入主機系統,該參數用來綁定磁卷。
此處的綁定方式 (/:/hs) 會將主機的根目錄「/」 掛載到容器的「/hs」目錄,如此駭客便可以無限制存取主機的檔案系統。此外,也會綁定 Docker 的 socket (/var/run/docker.sock:/var/run/docker.sock),讓容器直接存取主機上的 Docker 背景程式 (daemon),如此一來,駭客就能像在主機上一樣控制 Docker。
3. 建立不存在的映像
如果前述的請求傳回「No such image」(無此映像),那麼駭客就會從 cmd.cat 儲存庫拉出「chattr」這個 Docker 映像。
4. 部署容器
當映像就定位後,駭客接著建立 Docker 容器,基本上就跟先前那個步驟所做的一樣。
當 Docker 容器建立時,駭客會執行一個 base64 編碼的字串:
這字串解開之後就是以下的指令列腳本:
腳本一開始會先檢查 /usr/sbin/ 目錄底下是否有一個名為「z」的檔案存在。如果檔案不存在,腳本就會從其檔案伺服器 (hxxp[:]/leetdbs[.]anondns[.]net/z) 下載一個惡意的二進位檔案來執行,並將檔案儲存在 /usr/sbin/ 目錄中,這檔案有可能就是一個 ZiggyStarTux 惡意程式 (一個以 Kaiten 惡意程式為基礎所開發出來的開放原始碼 IRC 殭屍程式)。此二進位檔案使用了 UPX 來壓縮。
在分析的過程中,我們發現 CC 伺服器目前已經關閉。但是,二進位檔案當中含有以下 User-Agent 字串,我們可利用這個字串來監控網路上是否有這個惡意程式存在:
- User-Agent: HackZilla/1.67 [en] (X11; U; Linux 2.2.16-3 x64)
- User-Agent: Mozilla/4.75 [en] (X11; U; Linux 2.2.16-3 i686)
根據此二進位/程式碼檔案中的字串顯示,該惡意程式會在 TCP 連接埠 3022 上使用 DropBear SSH (一個相對較小的 SSH 伺服器) 以及用戶端程式。這也是另一個可用來偵測此惡意程式的線索。
植入系統的惡意程式會試圖連上它的 CC 伺服器:45[.]9[.]148[.]193,連接埠 1219。圖 6 顯示一開始的網路流量,也就是 IRC 初始通訊。
這起攻擊行動之所以值得關注,是因為它使用了 Docker 映像在受害系統上部署虛擬加密貨幣挖礦腳本。這項手法讓駭客能利用 Docker 組態設定上的漏洞,同時又能避開資安軟體的偵測。資安研究人員目前仍在觀察這起攻擊,因此企業有必要強化自己的防禦來防範這類 Docker 相關的攻擊。
建議
我們建議採取以下最佳實務原則來保護開發環境、防止駭客攻擊容器與主機:
- 務必正確設定容器和 API 的組態設定來降低駭客攻擊的機會。Docker 已提供了明確的指引來協助使用者提升自己的安全。
- 企業應僅使用官方或經過認證的映像,以確保唯有受信任的內容能在環境內執行。
- 容器不應以系統管理員 (root) 權限執行,而是應該以應用程式使用者的身分執行。
- 透過組態設定讓容器只開放給信賴的對象存取,例如內部網路。
- 企業應落實建議的最佳實務原則,例如,Docker 便提供了一份完整的最佳實務原則清單,並內建了一些安全功能來讓使用者改善其雲端環境的安全。
- 定期執行資安稽核來檢查是否有任何可疑的容器和映像。
- 結論
Commando Cat 攻擊行動突顯出 Docker Remote API 伺服器遭到濫用所帶來的威脅。駭客只要利用 Docker 組態設定的漏洞,以及像 cmd.cat 這類開放原始碼工具,就能突破企業防線並植入惡意檔案,同時還能躲過傳統的資安措施。該行動使用 Docker 映像來散播虛擬加密貨幣挖礦腳本,突顯出企業嚴格落實容器安全的重要性。
趨勢科技解決方案
以下是保護 Docker 伺服器的建議解決方案。
- Trend Vision One™ - Container Security – 可自動掃描容器映像及登錄,有助於提早偵測威脅。
- Trend Cloud One™ – Workload Security – 可保護新增及現有的工作負載,藉由像機器學習與虛擬修補這類的技術,甚至連未知威脅也能防範。
趨勢科技已透過下列防護規則來偵測前述攻擊相關的惡意活動,確保趨勢科技客戶的安全。
- 1,010,326 - Identified Docker Daemon Remote API Call
- 1,008,619 - Application – Docker
- 1,010,349 - Docker Daemon Remote API Calls
Trend Vision One 追蹤查詢
以下是您可在 Vision One 當中追蹤威脅的實用查詢:
eventId:100115 AND (remarks: POST_IMG_BLD_CRE OR remarks: POST_CON_CREATE) AND "cmd.cat"
MITRE ATT&CK
手法 | 技巧 | 技巧編號 |
---|---|---|
突破防線 | 經由漏洞攻擊企業對外的應用程式 | T1190 |
執行 | 部署容器 | T1610 |
指令與腳本解譯器:Unix 指令列介面程式 | T1059.004 | |
提升權限 | 逃離至主機 | T1611 |
幕後操縱 | 資料編碼:標準編碼 | T1132.001 |
對內傳輸工具 | T1105 |
入侵指標資料
如需本文提到的入侵指標完整清單,請至此處。