Docker Remote API 未授權訪問導致挖礦病毒入侵

運維同事反映一臺阿里雲測試機,反映很慢,除了跑一些docker容器,沒有其他服務。

ps -ef查看當前進程,發現存在多個cryptonight加密貨幣的挖礦進程,分別爲proc, thisxxs, xmrig:

對這些進程的所在路徑進行排查,使用lsof工具查看它們打開的文件:進程所使用的文件都已經找不到,初步判斷是被刪除。

換個思路(中間嘗試過各種假設)掃描該服務器,發現開放了2375端口,說明開放了Docker swarm編排工具WEB接口服務。外網嘗試通過瀏覽器直接訪問 API ,查看容器信息,表明存在未授權訪問漏洞。

Docker Remote API未授權訪問漏洞 :使用 docker swarm管理的  docker 節點上開放一個 TCP端口 2375 ,綁定 IP 爲: 0.0.0.0, 且暴露在公網上。導致可以遠程管理該主機的 docker 容器,啓動、停止創建下載 鏡像甚至刪除上面的容器。

未授權查看所有容器:

通過 API 拉取鏡像、開啓一個容器後,雖然 docker 執行命令只能在container內部, 與宿主機是隔離的。但 docker 運行 container的時候,可以將宿主機文件或目錄作爲 volume olumeolume掛載到 container內,並且在 container內部對這些文件進行修改。比如 /tmp/. ssh , 然後修改 /tmp/. ssh /authorized_keys 文件,把自己的 public key寫進去,修改權限爲 600 。

後面就可以通過 ssh 直借連接宿主機:

確認第二條key是惡意添加的:

挖礦容器:

查看挖礦容器內容:

這是一個簡單的xmrig礦機和相關的運行工具。查看bash歷史記錄相關內容:

注意到其中有很多看上去像是手工的刪除清理docker容器的操作,具有明顯的惡意特徵,詢問同事得知這些操作不是內部人員所爲。由monero-miner容器可以推斷docker存在API允許未授權使用且暴露在公網。以下是docker遠程代碼執行漏洞的exploit代碼節選(https://github.com/SPuerBRead/Docker-Remote-API-Exploit),使用了暴露在公網的docker api,http 2375端口

總結:

1、挖礦容器可以直接刪除,但不保證宿主機還存在其他惡意文件,由於是測試機所以直接重裝了系統。

2、未正確使用 swarm,使Docker Remote API暴露在外網(2375端口)。禁止外訪問或者設置白名單。如果只在內網訪問,對於已經滲透進內網的攻擊者,端口仍然處可以直接訪問的狀態,因此內網使用需設置嚴格的訪問規則(白名單),甚至配TLSTLS 。

3、利用漏洞部署挖礦程序或DDoS木馬,其中有挖礦木馬未嘗試逃出docker容器,而是直接在新建容器裏挖礦。

關於Docker Remote API未授權訪問漏洞可訪問綠盟的公告:

http://blog.nsfocus.net/docker-remote-api-unauthorized-access-vulnerability/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章