挖矿病毒入侵"/>
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代码节选(),使用了暴露在公网的docker api,http 2375端口
总结:
1、挖矿容器可以直接删除,但不保证宿主机还存在其他恶意文件,由于是测试机所以直接重装了系统。
2、未正确使用 swarm,使Docker Remote API暴露在外网(2375端口)。禁止外访问或者设置白名单。如果只在内网访问,对于已经渗透进内网的攻击者,端口仍然处可以直接访问的状态,因此内网使用需设置严格的访问规则(白名单),甚至配TLSTLS 。
3、利用漏洞部署挖矿程序或DDoS木马,其中有挖矿木马未尝试逃出docker容器,而是直接在新建容器里挖矿。
关于Docker Remote API未授权访问漏洞可访问绿盟的公告:
/
更多推荐
Docker Remote API 未授权访问导致挖矿病毒入侵
发布评论