为了监控针对容器的恶意活动,研究人员搭建了一个模拟暴露API的Docker主机作为蜜罐系统,而暴露的API是基于容器的威胁的最常见目标。研究人员的目标是监控蜜罐系统以检测是否有攻击者发现该系统并用它来应用不想要的容器,然后可以追踪溯源。研究人员通过检查蜜罐系统的状态发现容器的单独镜像已经在环境中应用了。
通过分析进出蜜罐的日志和流量数据,研究人员发现容器来自于一个名为zoolu2的Docker Hub库。检查和下载库中的内容,研究人员发现其中含有9个包含定制shell、python脚本、配置文件、Shodan和加密货币挖矿软件二进制文件的9个镜像文件。
zoolu2库的所有的镜像文件都含有Monero (XMR)加密货币挖矿机的二进制文件。研究人员之前也见过将容器用作挖矿机的情况,除此之外,一些镜像中还还有Shodan脚本,可以列出暴露了API的Docker主机,研究人员认为这是用来识别适合的目标。
图1. zoolu2 Docker Hub repository
攻击路径
图2. 感染链
研究人员决定分析这9个镜像来详细了解。分析发现这些镜像首先用一个脚本ubu.sh来检查暴露了API的主机。然后使用Docker命令(POST /containers/create)来远程创建恶意容器。脚本还会在容器内开启SSH daemon来进行远程认证。
然后脚本会调用Monero加密货币挖矿二进制文件在后台运行。和其他所有的加密货币挖矿机一样,它使用主机系统的资源在用户毫不知情的情况下进行挖矿。天空彩
图3. Docker镜像记录调用加密货币挖矿二进制文件(darwin),然后调用脚本找出其他错误配置的Docker主机(rip)
图4. 加密货币挖矿二进制文件详情
二进制文件也还有一个shell脚本使用Shodan API来搜索其他暴露了API的Docker主机,使用port:2375+product:Docker作为主查询。研究人员怀疑这是一种编译新主机来感染的方法。
图5.用来登陆Shodan和搜索开放默认端口的Docker主机的函数
图6. 暴力破解通过Shodan搜索得到的开端端口的用户名和密码
一旦定位到暴露的Docker主机,就添加到到一个列表中(iplist.txt),然后进行特殊IP的排序。也会检查目标主机是否含有正在运行的容器,如果发现就删除。
然后用C2服务器来应用其他容器到暴露的主机中。中国菜刀
图7. 将镜像远程应用于容器的函数
图 8, 9, 10. 备份了脚本和之前搜索记录的C2
zoolu2镜像的元数据表明组件是在2019年5月加入的,因为镜像并不是持续更新的,所以时间可能并不准确,但镜像背后的攻击者仍在不断地加入新的攻击方法和能力。
图11. Deep Discovery™ Smart Check告警消息
总结和建议
容器的不断应用使其称为攻击者的目标。由于容器软件漏洞的成功利用和错误配置,这些攻击一般都是成功的,也使其称为企业的持续威胁。暴露API的主机不仅仅是加密货币挖矿活动的受害者,也可能被用于受感染容器的分发活动。
加密货币挖矿活动还会导致目标的其他资源负载。在本案例中,如果Docker主机运行在内部基础设施上,其他主机就可能成为受害者;如果Docker主机使用云服务,因为资源使用用率变高,因此企业可能会面临更多的费用。
为了预防影响开发环境的容器和主机的成功攻击,研究人员建议:
· 对容器和API进行合理配置以确保可利用的攻击最小。其中包括确保只有内部网络或可信源才可以访问。除此之外,Docker还对用户如何加强安全有专门的指南。
· Docker推荐使用官方或认证的镜像来确保环境中运行的只有可信的内容。
· 运行的容器并不应该以root权限运行,而应该以应用用户权限使用。