微服务的出现使我们目睹了容器的大规模部署应用,但是,这种容器-云关系的繁荣暴露出很多安全问题,同样也吸引到很多恶意软件的目光。
Juniper Threat 实验室最近在野外发现了一种感染,这种病毒在云中寻找公开的配置不当的 Docker 服务,并用运行门罗币矿工的容器感染它们。
Docker 提供用于管理其服务的REST API,包括创建和启动/停止容器的能力。默认情况下,Docker 仅启用Unix套接字以便访问REST API。必须配置 Docker 监听TCP端口,以便远程访问 Docker 服务的REST API,约定端口是2375和2376,当启用时,默认情况下它们将提供对 docker REST API 的未加密和未经身份验证的访问。
发现的感染是通过错误配置或随意配置的 Docker 服务在主机之间传播,这些服务通过网上开放的和未经身份验证的TCP端口2375和2376暴露了其REST管理API。 每个新的感染通过扫描网络上是否存在其他的错误配置的 Docker 主机,然后将感染传播到其他新主机,使其像蠕虫一样传播。
下图提供了感染的一般概述。
整个感染链主要是基于脚本的,利用众所周知、系统提供的工具来传播感染并实施活动。它使用的一些系统工具是Docker, Wget, cURL, Bash, iproute2, MASSCAN, apt-get, yum, up2date, pacman, dpkg-query, systemd等等。
下图是一个通过感染 守护进程服务的默认端口2375 上的 REST API 的 Docker 主机实例。
如上所示,Docker 守护进程被请求启动容器并执行某些命令。在容器内执行的命令包括使用 wget 下载托管在远程服务器上的名为 “auto.sh”的脚本的指令。
脚本“auto.sh”是感染的起点,它为感染启动容器执行环境,还充当运行其他脚本的基础以进一步扫描其他Docker 主机并传播感染。
下面的图表简要描述了代码流的结构。
引导
在 入口脚本-auto.sh
的第一阶段,检查是否包含下面的包: cURL, iproute2, openssh-server, openssh-clients 和 MASSCAN。如果没有的话,就用 apt-get, yum, up2date 或者pacman 下载并安装。
第二阶段,创建新用户,赋予SSH 访问权限。
挖矿
第三阶段,从 Pastebin 上下载 MoneroOcean’s Monero 矿机 的 bash 脚本 ,然后执行。下载的脚本是 从 MoneroOcean’s Github 账户下载的 stock 版本。它从 Github 账户上下载 XMRig’s 矿机,并作为系统服务运行。
发现:端口扫描,感染新的Docker主机
第四阶段,使用 masscan 端口扫描连接到受感染主机的网络子网。 它使用打开的TCP端口 2375 和 2376 扫描运行 docker 守护程序的主机,并转储到本地文件local.txt,即要感染的新主机IP地址列表。 Masscan是一种公开的端口扫描工具。
传播感染
这个阶段,先下载2个脚本, test3.sh 和 test.sh,主要是用来完成传染任务。
Auto.sh 启动 test3.sh,将其作为输入传递给local.txt(上一部分)。 “test3.sh”循环遍历local.txt中的每个IP地址,然后启动test.sh
,将每个IP地址作为参数提供。“test.sh” 利用 Docker 的客户端工具连接到远程主机的 Docker 服务(依据前面提供的IP地址), 从而扩大其感染范围。
还有更多
回到感染脚本,它们托管在由IP地址为 42.159.203.16 标识的远程服务器上。 该服务器的内容如下所示。
这个服务器的内容显示了所有脚本文件以及另外的三个文件 : xm,它的配置文件 data.cfg 和它对应的systemd 文件 xm.service.
“xm” 是一个 linux 上的 ELF 二进制文件,在 VirusTotal 中 由其他反病毒供应商标识为 CoinMiner。
xm miner 的配置文件 data.cfg 和此感染部分使用的相同钱包地址 是一样的-- 4Aotje6mGNPRcDQeqS7iUwRLGJhLLgJvfbS6Dju5peSACbVXTFhnds53xuoqif3JEcfbdjiW27xuAJiiKeiCGbuoACrutNE
请注意,上面的 ELF 二进制文件并不是作为此感染的一部分下载的,并且此感染中的 MoneroOcean 的Monero Miner 脚本直接从 Github 下载 Xmrig, 并将其运行到门罗币矿机中。
Juniper Networks Sky ATP 将其检测为加密矿机:
IOCs
42.159.203.16
d2880de55b232d26740c1ba0d0621ac44066fd4be250c05ecccf5479f972fa01
b33b66aa3e482e1a02344f7499e6a42ac9447d26efa286f16c63d8b5b5987fe0
d21d49a0fffe5d5c1446492ffb0c96b0d31286454b6092b7fb3a104b8c29b660
结论
云和容器呈指数级增长,但公共互联网上服务的暴露表明,大量的服务错误配置或随意地配置,容易受到恶意方的攻击。
在同一领域,云上错误配置的 Docker 服务正在吸引加密矿机利用云的巨大计算资源。但是,它并不一定要阻止这些恶意行为者。除了具有大量计算能力之外,容器的短暂性质意味着恶意方可以使用容器在其感染链中创建临时且有效的攻击点。设想一下,一个僵尸网络会根据需要打开运行其僵尸机器的容器,运行DDoS,然后关闭容器,从而减少其存在的痕迹。
正确配置面向网络的服务,向公开的端口注入经过身份验证的访问,并且仅在必要时打开TCP端口可以减轻一些顾虑。
原文地址:https://forums.juniper.net/t5/Threat-Research/Container-Malware-Miners-Go-Docker-Hunting-In-The-Cloud/ba-p/400587
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-1-8 14:32
被CCkicker编辑
,原因: 上传图片