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/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值