(2)通过进程PID和USER查看进程信息,通过进程链定位到进程所在容器的进程PID。
(3)通过进程PID查找对应容器名称,容器名:metabase。
(4)使用docker top 查看容器中的进程信息,找到到容器内异常进程。如下图:异常进程kdevtmpfsi(PID:5613)对应的父进程为JAVA进程(PID:2301)。据此,可初步判断,java应用被入侵,导致容器被植入挖矿木马。
03、溯源分析
(1)使用docker logs查看容器日志,并通过异常信息定义到漏洞触发的位置。如下图:通过POST提交请求,使用wget和curl命令下载挖矿脚本并执行。
docker logs metabase
(2)查看运行的容器对应的镜像版本,对应的镜像为:metabase:v0.46.4
(3)通过日志信息和镜像版本,可进一步关联近段时间的威胁情报:开源BI分析工具 Metabase 中存在远程代码执行漏洞。
(4)漏洞复现,通过exp成功执行命令,确认当前使用镜像存在远程命令执行漏洞。
综上,攻击者通过利用metabase 远程命令执行漏洞对暴露在外网上的服务进行攻击并下载并执行挖矿程序。
04、解决问题
(1)保留入侵痕迹,使用docker commit保存为镜像,可作为demo,用于检测容器安全产品的能力或其他用途。
docker commit -m "CoinMiner" -a "bypass" b4536a12a341 bypass007/miner:1.0
(2)使用docker diff命令查看容器内文件状态变化,通过容器内文件的变化,可以简单地窥探攻击者入侵容器的蛛丝马迹,做了什么操作,改了哪些系统文件。
docker diff metabase
(4)在容器环境里,容器被入侵的清理比较简单,不用着急去清理容器内的挖矿或是后门,直接删除容器即可。比较重要的是,根据定位的漏洞问题进行修复,重构容器镜像。在这里,我们可以将metabase镜像升级到官方提供的最新修复版本,就可以完成本次容器应用漏洞应急的处置。