Docker容器挖礦應(yīng)急實例
01、概述
很多開源組件封裝成容器鏡像進行容器化部署在提高應(yīng)用部署效率和管理便捷性的同時,也帶來了一些安全挑戰(zhàn)。一旦開源系統(tǒng)出現(xiàn)安全漏洞,基于資產(chǎn)測繪就很容易關(guān)聯(lián)到開源組件,可能導(dǎo)致被批量利用。
在本文中,我們將分享一個真實的Docker容器應(yīng)急實例,涉及到基于開源組件漏洞披露的前后時間段內(nèi),容器遭遇挖礦程序植入的情況。我們將深入分析排查過程,還原入侵的步驟和手段,幫助讀者了解應(yīng)對挖礦程序入侵的實際應(yīng)急操作。
02、分析排查
(1)使用top命令查看,發(fā)現(xiàn)kdevtmpfsi進程異常,CPU占用率199%。
圖片
(2)通過進程PID和USER查看進程信息,通過進程鏈定位到進程所在容器的進程PID。
圖片
(3)通過進程PID查找對應(yīng)容器名稱,容器名:metabase。
(4)使用docker top 查看容器中的進程信息,找到到容器內(nèi)異常進程。如下圖:異常進程kdevtmpfsi(PID:5613)對應(yīng)的父進程為JAVA進程(PID:2301)。據(jù)此,可初步判斷,java應(yīng)用被入侵,導(dǎo)致容器被植入挖礦木馬。
圖片
03、溯源分析
(1)使用docker logs查看容器日志,并通過異常信息定義到漏洞觸發(fā)的位置。如下圖:通過POST提交請求,使用wget和curl命令下載挖礦腳本并執(zhí)行。
docker logs metabase
(2)查看運行的容器對應(yīng)的鏡像版本,對應(yīng)的鏡像為:metabase:v0.46.4
(3)通過日志信息和鏡像版本,可進一步關(guān)聯(lián)近段時間的威脅情報:開源BI分析工具 Metabase 中存在遠程代碼執(zhí)行漏洞。
圖片
(4)漏洞復(fù)現(xiàn),通過exp成功執(zhí)行命令,確認當前使用鏡像存在遠程命令執(zhí)行漏洞。
圖片
綜上,攻擊者通過利用metabase 遠程命令執(zhí)行漏洞對暴露在外網(wǎng)上的服務(wù)進行攻擊并下載并執(zhí)行挖礦程序。
04、解決問題
(1)保留入侵痕跡,使用docker commit保存為鏡像,可作為demo,用于檢測容器安全產(chǎn)品的能力或其他用途。
docker commit -m "CoinMiner" -a "bypass" b4536a12a341 bypass007/miner:1.0
(2)使用docker diff命令查看容器內(nèi)文件狀態(tài)變化,通過容器內(nèi)文件的變化,可以簡單地窺探攻擊者入侵容器的蛛絲馬跡,做了什么操作,改了哪些系統(tǒng)文件。
docker diff metabase
圖片
(3)通過對shell腳本文件和挖礦樣本進行分析,可以了解到更詳細的行為。部分截圖如下:
圖片
(4)在容器環(huán)境里,容器被入侵的清理比較簡單,不用著急去清理容器內(nèi)的挖礦或是后門,直接刪除容器即可。比較重要的是,根據(jù)定位的漏洞問題進行修復(fù),重構(gòu)容器鏡像。在這里,我們可以將metabase鏡像升級到官方提供的最新修復(fù)版本,就可以完成本次容器應(yīng)用漏洞應(yīng)急的處置。