Cetus:攻击docker的加密货币挖矿蠕虫
2020-09-08 12:20:00 Author: www.4hou.com(查看原文) 阅读量:301 收藏

本文介绍unit 42研究人员在Docker daemon蜜罐中发现的一个进行门罗币加密货币挖矿的蠕虫——Cetus。

蜜罐

研究人员搭建了一个隔离的、受限的Docker daemons,并记录了5月所有的流量。在这段时间,研究人员发现有很多种不同类型的攻击,从僵尸网络到蠕虫,其中大多数的目的是进行加密货币挖矿,尤其是门罗币。

Cetus工作原理

恶意软件的目标就是Docker demon,并尝试将自己伪装为合法的二进制文件,研究人员将其命名为Cetus。Cetus将自己伪装成一个Docker中常用的合法的二进制文件——Portainer。Portainer 是一个提供管理多Docker 环境的用户接口管理工具。在接管机器后,Cetus 会复制自己到受害者机器中,并部署一个XMRig 加密货币挖矿机payload。Cetus 还会将这些加密货币挖矿机伪装成其他合法的二进制文件——docker-cache。这看起来是一个合法的名字,但事实上并不是一个真实的二进制文件的名字。

Cetus的生命周期从2个函数开始:miner_start 和 scan_start。最后一步是引发受害者创建一个Ubuntu 容器、更新库、安装Masscan 和 Docker、复制Cetus 和 XMRig、通过.bash_aliases 实现驻留、然后重启容器并运行Cetus。

The Cetus life cycle starts with two functions: miner_start and scan_start, which follow the flow illustrated here. The final step is to cause the victim to create an Ubuntu container, update repositories, install Masscan and Docker, copy Cetus and XMRig, add persistence through .bash_aliases, and then restart the container and run Cetus.

图1. Cetus的攻击流(生命周期)

Cetus的感染机制非常简单和有效。Cetus使用Masscan 来随机扫描Docker daemon 的子网,一旦找到就通过发送请求到daemon的 REST API来进行传播。此外,Cetus还会通过Docker 命令行工具来伪造这些请求。

Cetus 的攻击流如图1所示/Cetus运行的命令有:

检查daemon是否可利用,以及是否被感染:

docker -H  ps -a

从Docker Hub 运行一个ubuntu:18.04 的新容器:

docker -H  run -dt --name  --restart always ubuntu:18.04 /bin/bash

更新包管理器列表:

docker -H  exec  apt-get -yq update

通过包管理器安装Masscan和Docker:

docker -H  exec  apt-get install masscan docker.io

复制恶意portainr和docker-cache 二进制文件到容器中:

docker -H  cp -L docker-cache :/usr/bin/
docker -H  cp -L portainer /usr/bin/

将Cetus加入到/root/.bash_aliases中。这样,cetus就会在容器每次重启或root开启bash会话时运行:

docker -H  exec  bash --norc -c `echo /usr/bin/portainer  >/dev/null` 2>/dev/null &

重启容器来运行Cetus:

docker -H  restart

逆向Cetus

Cetus并没有使用任何的反调试或混淆技术,因此逆向Cetus非常简单。而XMRig挖矿机是加密货币挖矿攻击中最常用的加密货币挖矿机,因此安全工具可以检测到。为了在攻击中进行欺骗,挖矿机是完全混淆的,使得逆向的过程非常复杂。

此外,研究人员断定这款恶意软件是很新的,因为其使用的是XMRig 5.5.3,发布时间为2020年2月2日,因此恶意软件的开发时间比如晚于2月。

Cetus的架构非常简单,其中含有2个主要的函数:miner_start 和 scan_start。

word-image-31.png

图 2. Cetus 主函数

函数 miner_start 非常直接。会打开/var/log/stmp.log 来记录Cetus的动作,之后,运行XMRig加密货币挖矿机,使用机器的CPU来进行门罗币挖矿。

函数scan_start 更加有意思,可以执行核心的恶意软件功能。会随机选择一个16位的子网,运行Masscan 来扫描2375端口上的Docker daemon子网。当找到daemon时,就会使用之前下载的Docker命令行工具来开始感染过程。

有意思的是恶意软件每次感染一个Docker daemon,都会给容器起一个不同的名字。恶意软件中有2个含有8个名字的列表,每次从中随机选择一个名字。

This figure contains examples of the names used by Cetus, including boorish_peristeronic, verdant_quire and limpid_oxter. 

图 3. 恶意容器名

然后,Cetus会用名字作为参数来运行挖矿机。挖矿机用名字识别自己到矿池,并发送关于挖矿的信息。这样攻击者就可以对每个挖矿机进行分类,并创建关于矿工和攻击活动的数据。

因此,可以断定,蠕虫的日志机制是为了更好地监控攻击活动的进展。

结论

随着攻击者对云的理解越来越深入,攻击容器的恶意软件越来越复杂。这是既Graboid之后,Unit 42研究人员发现的第二个Docker 加密货币挖矿蠕虫。因为,Cetus使用的门罗币钱包地址与另一个攻击AWS和Docker daemon的加密货币蠕虫相同,因此研究人员断定这两期攻击活动属于同一攻击者。而且,针对云的复杂攻击将会成为一个新的攻击趋势。

本文翻译自:https://unit42.paloaltonetworks.com/cetus-cryptojacking-worm/如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/44n6
如有侵权请联系:admin#unsafe.sh