【撞车】加密货币矿工针对Docker容器在云端发动攻击 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

【撞车】加密货币矿工针对Docker容器在云端发动攻击

41yf1sh 业务安全 2018-11-21 10:18:44
222849
收藏

导语:近期在野外发现了一种威胁样本,该威胁会在云中搜索错误配置且公开暴露的Docker服务,并使用运行Monero挖矿工具的容器感染它们。

一、概述

随着微服务的出现,我们见证了云主机数量的迅速增长。但是,伴随着容器和云的关联,一些与恶意软件相关的安全问题也逐渐出现。

我们近期在野外发现了一种威胁样本,该威胁会在云中搜索错误配置且公开暴露的Docker服务,并使用运行Monero挖矿工具的容器感染它们。

二、感染入口

Docker使用REST API来管理其服务,具有创建容器、启动容器和停止容器的能力。默认情况下,Docker仅允许Unix套接字访问其REST API。如果要启用对Docker服务的REST API远程访问,必须将Docker配置为侦听TCP端口。Docker通常使用的端口是2375和2376,在启用后,默认情况下会提供对Docker REST API的未加密和未经身份验证的访问。

我们发现该威胁利用Docker服务的配置错误或配置不严格实现在主机上的传播,这些服务在网络上通过TCP/2375、TCP/2376端口,在未经身份验证的情况下暴露其REST Management API。在一台主机感染后,通过扫描网络上其他配置错误的Docker主机,就能够继续将感染传播到其他新主机上,从而有效地使其成为一种蠕虫病毒。

下图展示了其感染过程。

1.png

整个感染链以脚本为基础,属于“live off the land”类型,利用大家常见的提供公共事业服务的系统来传播,并实现其恶意活动。该恶意软件使用了一些系统实用程序,包括:Docker、wget、cURL、Bash、iproute2、MASSSCAN、apt-get、yum、up2date、pacman、dpkg-query、systemd等。

下图是Docker主机示例,在其守护程序服务的默认2375端口上,通过REST API实现感染的屏幕截图。

2.png

如上所示,恶意软件将会请求Docker守护程序启动容器,并执行特定命令。在容器内执行的命令包括使用“wget”下载托管在远程服务器上的名为“auto.sh”的脚本。

脚本“auto.sh”是感染的起点和平台,它引导感染的容器执行环境,并作为运行其他脚本的基础,从而进一步扫描其它Docker主机并传播恶意软件。

我们对代码流进行了分析,其结构如下图所示。

3.png

三、引导

在入口脚本的第一个阶段“auto.sh”中,恶意软件检查是否存在某些软件包,包括:cURL、iproute2、openssh-server、openssh-clients和MASSCAN。如果没有找到上述包,则会使用apt-get、yum、up2date或pacman下载并安装这些包。

4.png

在“auto.sh”脚本的第二阶段,将会创建新用户,并为这些新用户设置SSH权限。

5.png

6.png

四、挖矿

在“auto.sh”脚本的第三阶段,恶意软件下载了在Pastebin上托管的MoneroOcean的Monero挖矿Bash脚本并执行。下载的脚本几乎就是在MoneroOcean的Github帐户上发布的版本。它从Github帐户上下载XMRig的矿工程序,并将其作为systemd服务运行。

7.png

五、发现:对新Docker主机进行端口扫描以实现感染

在“auto.sh”脚本的第四阶段,它使用masscan端口扫描连接到受感染主机网络的子网。使用已经打开的TCP 2375和2376端口,扫描运行Docker守护程序的主机,并将其转储到本地文件local.txt中,该文件中存储需要感染的新主机IP地址列表。在这里,使用到的Masscan,是一个公开发布的端口扫描工具。

8.png

六、传播

在这个阶段,恶意软件首先下载另外两个脚本test3.sh和test.sh,这两个脚本的主要任务就是传播感染。

9.png

Auto.sh生成脚本test3.sh,并将local.txt(参见上一节)作为其输入来源。“test3.sh”循环遍历local.txt中的每个IP地址,并生成相应的test.sh,将每个IP地址作为提供给新脚本的参数。“test.sh”利用Docker自身的客户端工具连接到远程主机的Docker服务,试图感染作为参数传递给它的IP地址,从而扩大其感染范围。

10.png

七、更多细节

让我们回到感染脚本,它们都托管在IP地址为42[.]159[.]203.16的远程服务器上。该服务器中包含的文件如下图所示。

11.png

通过查看该服务器上的文件,我们发现了所有脚本文件,此外还发现了另外3个文件的存在:xm、配置文件data.cfg和相应的systemd文件xm.service。

其中,xm是一个ELF Linux二进制文件,在VirusTotal中被其他反病毒厂商查杀为CoinMiner威胁。

12.png

提供给xm挖矿二进制文件的配置文件data.cfg中,包含该恶意活动中使用的钱包地址:

4Aotje6mGNPRcDQeqS7iUwRLGJhLLgJvfbS6Dju5peSACbVXTFhnds53xuoqif3JEcfbdjiW27xuAJiiKeiCGbuoACrutNE

需要注意的是,上述ELF二进制文件不会作为此感染的一部分下载,并且其中使用到的Monero挖矿脚本(由MoneroOcean发布)将直接从Github下载XMRig,并将其运行到挖矿恶意软件Monero中。

Juniper Networks的Sky ATP将该威胁检测为挖矿恶意软件:

13.png

八、IoC

42.159.203.16

d2880de55b232d26740c1ba0d0621ac44066fd4be250c05ecccf5479f972fa01

b33b66aa3e482e1a02344f7499e6a42ac9447d26efa286f16c63d8b5b5987fe0

d21d49a0fffe5d5c1446492ffb0c96b0d31286454b6092b7fb3a104b8c29b660

九、总结

目前,云主机和容器的数量正在呈指数级增长,但暴露在公共互联网上的服务时常会出现配置错误或不安全配置的问题,导致它们很容易被恶意攻击者利用。

在这一领域中,云主机上错误配置的Docker服务,正在吸引越来越多的挖矿恶意软件对巨大的云计算资源进行滥用。然而,将目标瞄准它们的却不仅仅是这些要进行挖矿的攻击者。除了拥有大规模计算能力之外,由于容器还具有短暂存在的特点,所以恶意攻击者可能会利用容器,在其感染链中创建临时且有效的攻击节点。想象一下,僵尸网络会根据实际需要,随时调出容器运行其僵尸程序,发动DDoS攻击,然后关闭该容器,从而减少其存在的痕迹。

针对上述问题,应该对服务(特别是暴露在网络上的服务)进行正确配置、对暴露的端口加强访问时的身份验证,并仅在必要的时候再打开端口。

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务