首页
社区
课程
招聘
[翻译]容器上的恶意软件:Docker 容器云端挖矿
2018-12-30 23:21 6433

[翻译]容器上的恶意软件:Docker 容器云端挖矿

2018-12-30 23:21
6433

容器上的恶意软件:Docker 容器云端挖矿

图片描述

 

微服务的出现使我们目睹了容器的大规模部署应用,但是,这种容器-云关系的繁荣暴露出很多安全问题,同样也吸引到很多恶意软件的目光。

 

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-clientsMASSCAN。如果没有的话,就用 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

 

本文由看雪翻译小组 fyb波 编译


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2019-1-8 14:32 被CCkicker编辑 ,原因: 上传图片
收藏
点赞1
打赏
分享
最新回复 (2)
雪    币: 12105
活跃值: (15519)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
pureGavin 2 2019-1-2 15:40
2
0
请问楼主,这样的外文文章在哪里能找到??我是英语专业的,且对信息安全感兴趣,我想利用闲暇时间翻译一些外国的技术文献,一来可以提高我的英语水平,二来可以给看雪论坛做些贡献(方便新手学习^_^),我需要楼主提供一些这些外文的技术文献的地址,在哪里可以找到这些文献,也欢迎大家来提供一些书籍文章链接,谢谢(插一句,用坚果VPN应该就可以浏览外网了吧??)
雪    币: 3302
活跃值: (1144)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
fyb波 1 2019-1-3 12:35
3
0
欢迎加入看雪翻译小组
游客
登录 | 注册 方可回帖
返回