Cetus:针对 Docker daemons 的加密劫持蠕虫

09/01 09:23
阅读数 103

译者:知道创宇404实验室翻译组
原文链接:https://unit42.paloaltonetworks.com/

摘要

自容器诞生以来,安全专家就将不安全的Docker daemons 称为主要威胁。我们最近还撰写了有关Graboid(第一个Docker密码劫持蠕虫不安全的Docker daemons)的文章。我通过设置Docker daemons蜜罐进行了进一步的研究,以研究在野外寻找普通Docker daemons的情况,并了解由COVID-19导致的向云的转移是否增加了针对性云攻击的普及率和复杂性。

本文将详细介绍Cetus的发现,Cetus是针对Monero的一种新的和改进的Docker密码劫持蠕虫挖掘,可在我们创建的Docker daemons蜜罐中找到。

蜜罐

为了进行研究,我设置了受限的Docker daemons,并记录了5月份的所有流量。在这段时间里,我目睹了各种各样的攻击,从僵尸网络到蠕虫,一切都在进行,其中大多数是为了进行加密劫持,特别是对门罗币。

最常见的攻击之一引起了我的注意,因为它具有蠕虫的潜在特征。与其他攻击不同,蜜罐在这里受到来自许多不同的不安全Docker daemons实例的攻击。根据我的honeypot部署和其他有关容器安全性的研究项目,看到蠕虫针对不安全的Docker daemons的情况并不常见。我分析有效负载,并确定这是一个新的Docker蠕虫:恶意软件的每个实例都试图发现和感染本地网络和外部的其他Docker daemons实例。

Cetus如何运作

在希腊神话中,有一个关于鲸鱼样生物的故事,该生物看起来无害,但实际上是一个海洋怪物,无论到哪里都造成破坏。该生物的名字是塞图斯。由于该恶意软件针对Docker,并试图伪装成合法的二进制文件,因此我决定将其命名为Cetus。

Cetus通过伪装在Docker环境中经常使用的称为Portainer的合法二进制文件来伪装自己。Portainer是一个用户界面(UI)管理工具,它提供了一种方便的方法来管理多个Docker环境。在接管新机器时,Cetus将自己复制到受害者并部署XMRig cryptominer有效负载。Cetus将加密矿工伪装成另一个称为docker -cache的合法二进制文件。它看起来像合法名称,但与Portainer不同,它不是真正的二进制名称。

Cetus生命周期从两个功能开始:miner_start和scan_start,它们遵循此处所示的流程。 最后一步是使受害者创建一个Ubuntu容器,更新存储库,安装Masscan和Docker,复制Cetus和XMRig,通过.bash_aliases添加持久性,然后重新启动容器并运行Cetus。

图1. Cetus生命周期

感染机制简单有效。Cetus使用Masscan随机扫描子网以查找Docker daemons,一旦找到子网,它就会尝试通过将请求发送到守护程序的REST API进行传播。为了增加侮辱性伤害,Cetus使用Docker命令行界面(CLI)工具精心设计了这些请求。

Cetus的攻击流程如图1所示。具体地说,Cetus运行的命令是:

  • 检查守护程序是否可利用且未被感染:
docker -H <victim> ps -a  
  • 从Docker Hub 运行一个新的ubuntu:18.04容器:
docker -H <victim> run -dt --name <name> --restart always ubuntu:18.04 /bin/bash
  • 更新程序包管理器列表:
  docker -H <victim> exec <name> apt-get -yq update           
  • 通过软件包管理器安装Masscan和Docker:
docker -H <victim> exec <name> apt-get install masscan docker.io
  • 将恶意的portainer和docker-cache二进制文件复制到容器中:
docker -H <victim> cp -L docker-cache <name>:/usr/bin/docker -H <victim> cp -L portainer <name>/usr/bin/
  • 将Cetus添加到“ /root/.bash_aliases”。每当容器重新启动或root启动bash会话时,它将导致Cetus运行:
docker -H <victim> exec <name> bash --norc -c `echo /usr/bin/portainer <name> >/dev/null` 2>/dev/null &   
  • 重新启动容器以运行Cetus:
docker -H <victim> restart <name> 

逆向工程Cetus

逆向工程Cetus简便快捷,因为它不使用任何反调试或混淆技术,甚至没有符号。矿工则不是这样。XMRig矿工是用于加密劫持攻击的最广泛使用的加密矿工之一,因此安全工具将其视为病毒。因此,为了在这次攻击中欺骗他们,将其完全模糊了,使反向工程过程变得更加困难。

此外,我们可以断定该恶意软件是新的,因为它使用了2020年2月2日发布的XMRig 5.5.3。

Cetus的体系结构很简单。它包含两个主要功能:

miner_start和scan_start。

“这里显示的代码如下:miner_start(); while(1){random = rand();以及其他未在此处以明文形式复制的行。此代码启动了Cetus的两个主要功能。

图2. Cetus主要功能

miner_start函数很简单。它打开/var/log/stmp.log来记录Cetus的操作,然后运行XMRig cryptominer,该工具利用机器的CPU来挖掘Monero。

函数scan_start更加有趣,它执行了恶意软件的核心功能。它选择一个随机的16位子网,然后运行Masscan以便在子网中扫描端口2375上的Docker daemons。找到守护程序后,它将使用已下载的Docker CLI工具启动感染过程。

关于恶意软件的一个有趣的事情是,每次感染Docker daemons时,它都会使用不同的名称调用容器。它有两个包含八个名称的列表,并且从每个列表中随机选择一个名称并将它们链接起来。

此图包含Cetus使用的名称示例,包括boorish_peristeronic,verdant_quire和limpid_oxter。

图3.恶意容器名称

然后Cetus将以名称作为参数运行矿工。矿工将使用此名称向采矿池标识自己,并向参与者发送有关采矿的信息。这将使攻击者可以对每个矿工进行分类,并通过挖掘池API创建有关矿工和活动的统计信息。

我们可以从此和日志机制得出结论,该蠕虫的操作员希望监视所有内容。

结论

随着攻击者了解云的潜力,针对恶意软件的容器将逐渐变得更加复杂。这是继Graboid之后由Unit 42记录的第二个Docker密码劫持蠕虫。此外,我们还能够将Cetus链接到另一种攻击AWS和Docker daemons的加密劫持蠕虫这些蠕虫使用与Cetus相同的Monero钱包地址。我们得出结论,对云进行复杂攻击的趋势正在增长。

运行Prisma Cloud的 Palo Alto Networks客户可以通过Prisma Cloud Compute主机合规性保护免受此侵害,该警告会警告Docker daemons配置不足,并提出解决方案。

这显示了Prisma Cloud主机警报的示例,警告Docker daemons配置不足-这个问题可能使Docker daemons容易受到Cetus的攻击。

图4. Prisma Cloud主机警报

IOC

档案
文档名称 SHA256
docker-cache e03cf2af46ad1fe590e63f0020243c6e8ae94f074e65ace18c6d568283343dac
docker-cache b49a3f3cb4c70014e2c35c880d47bc475584b87b7dfcfa6d7341d42a16ebe443

表1.恶意软件散列

采矿信息

pool

pool.minexmr.com:443

付款地址

85X7JcgPpwQdZXaK2TKJb8baQAXc3zBsnW7JuY7MLi9VYSamf4bFwa7SEAK9Hgp2P53npV19w1zuaK5bft5m2NN71CmNLoh

容器名称

baleful_gormmet

baleful_obelus

baleful_agelast

baleful_amatorculist

baleful_peristeronic

baleful_hirquiticke

baleful_oxter

baleful_quire

boorish_gormmet

boorish_obelus

boorish_agelast

boorish_amatorculist

boorish_peristeronic

boorish_hirquiticke

boorish_oxter

boorish_quire

adroit_gormmet

adroit_obelus

adroit_agelast

adroit_amatorculist

adroit_peristeronic

adroit_hirquiticke

adroit_oxter

adroit_quire

fecund_gormmet

fecund_obelus

fecund_agelast

fecund_amatorculist

fecund_peristeronic

fecund_hirquiticke

fecund_oxter

fecund_quire

limpid_gormmet

limpid_obelus

limpid_agelast

limpid_amatorculist

limpid_peristeronic

limpid_hirquiticke

limpid_oxter

limpid_quire

risible_gormmet

risible_obelus

risible_agelast

risible_amatorculist

risible_peristeronic

risible_hirquiticke

risible_oxter

risible_quire

verdant_gormmet

verdant_obelus

verdant_agelast

verdant_amatorculist

verdant_peristeronic

verdant_hirquiticke

verdant_oxter

verdant_quire

zealous_gormmet

zealous_obelus

zealous_agelast

zealous_amatorculist

zealous_peristeronic

zealous_hirquiticke

zealous_oxter

zealous_quire


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1322/

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部