Graboid:首例在Docker Hub映像中发现的加密劫持蠕虫

概要

Unit 42的研究人员发现了一种名为“Graboid”的新型加密劫持蠕虫,该病毒能通过恶意Docker镜像传播,现已感染2,000多个Docker主机。

这也是首次发现使用Docker Engine(社区版)中的容器传播的加密劫持蠕虫。由于大多数传统的端点保护软件都不检查容器内的数据和活动,因此这种恶意活动可能很难检测到。

最初的立足点由攻击者通过不安全的Docker守护进程获得,在守护进程中首先安装Docker映像以在受感染的主机上运行,用于挖掘加密货币的恶意软件从C2服务器下载,恶意软件能定期从C2查询新的易受损主机,并随机选择下一个目标传播。

分析显示,平均每个矿工的活动时间为63%,每个采矿周期持续250秒。

蠕虫病毒传播

图1. 蠕虫活动概述

通过Shodan的快速搜索显示,有2,000多个Docker引擎不安全地暴露于互联网中。无需任何身份验证或授权,恶意行为者就可以完全控制Docker Engine(CE)和主机。攻击者利用此入口点来部署和传播蠕虫。

图1说明了恶意软件的分发和传播方式。攻击者入侵了一个不安全的docker守护进程,运行了从Docker Hub中提取的恶意docker容器,从C2下载了一些脚本和易受攻击的主机列表,并反复选择了下一个目标来传播。该恶意软件(我们称为“ Graboid”)在容器内部进行蠕虫传播和加密劫持。它在每次迭代中随机选择三个目标:在第一个目标上安装蠕虫,在第二个目标上停止采矿,在第三个目标上启动采矿,此过程会导致非常随机的挖掘行为。

比如我的主机被破坏,恶意容器不会立即启动,必须等到另一位受到感染的主机选择我并开启时才会启动,其他被入侵的主机也可以随机停止我的挖掘进程。每个受感染主机上的采集器都是由所有其他受感染主机随机控制的,这种随机化设计的动机尚不清楚,既可能是一个糟糕的设计,也可能是一种逃避技术(虽然不是很有效),或是自我维持的系统等一些其他目的。

以下是更详细的分步操作:

1. 攻击者选择了一个不安全的Docker主机作为目标,向其发送远程命令来下载和部署恶意Docker映像pocosow / centos:7.6.1810,映像文件里包含用于与其他Docker主机进行通信的Docker客户端工具。

2. pocosow / centos容器中的入口点脚本/ var / sbin / bash从C2下载4个shell脚本,并一一执行。下载的脚本是live.sh,worm.sh,cleanxmr.sh,xmr.sh。

3. live.sh将受感染主机上的可用CPU数量发送到C2。

4. worm.sh下载文件“ IP”,其中包含2000多个IP的列表,都是不安全docker API端点的主机。worm.sh随机选择一个IP作为目标,并使用docker客户端工具远程拉动和部署pocosow / centos容器。

5. cleanxmr.sh从IP文件中随机选择一个易受攻击的主机,然后停止目标上的加密劫持容器。cleanxmr.sh不仅会停止蠕虫部署的密码劫持容器(gakeaws / nginx),而且还会停止其他基于xmrig的容器(如果它们正在运行)。

6. xmr.sh从IP文件中随机选择一个易受攻击的主机,然后在目标主机上部署映像gakeaws / nginx,gakeaws / nginx包含被伪装为nginx的xmrig二进制文件。

每个受感染的主机上定期重复执行步骤1至6。上一次已知的刷新间隔设置为100秒,启动pocosow / centos容器后,刷新间隔,shell脚本和IP文件都从C2下载。

在撰写本文时,如图2所示,Docker映像pocosow / centos已被下载超过10,000次,gakeaws / nginx已被下载超过6,500次,如图2所示。我们还注意到同一用户(gakeaws)发布了另一个加密映像gakeaws/mysql,它的内容与gakeaws/nginx相同。

pocosow/centos映像的恶意意图只有在下载shell脚本并在容器内执行之后才能知道。然而,gakeaws/nginx映像的恶意意图很容易从它的映像构建历史中被发现。如图3所示,它只是在构建时将xmrig二进制文件重命名为nginx(第7行),甚至在构建时将付款地址硬编码为环境变量(第6行)。

图4显示了IP文件中列出的2,034台脆弱主机的位置,其中57.4%的IP源自中国,其次是美国的13%。我们还注意到,在恶意软件使用的15台C2服务器中,有14台是列在IP文件中,另一台主机有50多个已知漏洞。这表明攻击者可能破坏了这些主机并将其用作C2服务器。通过Docker守护进程的控制,可以轻松地部署Web服务器容器(例如httpd,nginx)并将payload放置在其中。

图2. Docker Hub上的恶意Docker映像

图3. gakeaws / nginx的映像历史记录

图4. IP文件中易受攻击的主机的国家

蠕虫模拟

为了更好地了解蠕虫的有效性及其整体挖掘能力,我们创建了一个简单的Python程序来模拟蠕虫。假设IP文件中有2,000台主机,其中30%的主机在运行期间发生故障,刷新间隔为100秒,并且每台受损的主机上都有一个CPU。实验模拟了一个为期30天的活动。我们想知道:

1. 该蠕虫需要多长时间才能传播到所有易受攻击的Docker主机?

2. 这个恶意行为者拥有多少挖掘能力?

3. 每个矿机在受感染的主机上保持活动的时间是多少?

图5的左侧部分显示了蠕虫传播的速度。蠕虫病毒大约需要60分钟才能到达所有1400个易受攻击的主机(2,000多个主机中的70%);图5的右侧部分显示了受感染主机的总体挖掘能力——随时平均有900名活跃矿工。换句话说,恶意行为者拥有一个1,400个节点的挖掘集群,具有至少900个CPU的挖掘能力。由于受感染主机上的矿工可以随机启动和停止,因此每个矿工仅在65%的时间内处于活动状态,每个采矿周期平均仅持续250秒。

图5.蠕虫模拟

结论

虽然这种密码窃取蠕虫不涉及复杂的战术、技术或过程,但它可以周期性地从C2中提取新的脚本,因此它可以很容易地将自己重新定位为勒索软件或任何恶意软件,从而彻底地破坏主机。如果一个更强大的蠕虫被创造出来,采用类似的渗透方式,它可能会造成更大的破坏,所以这个问题不应被忽视。

以下是帮助组织机构防止受到损害的一些建议:

·如果没有适当的身份验证机制,切勿将docker守护程序暴露给互联网。请注意,默认情况下,Docker Engine(CE)不会暴露于互联网。

·使用Unix套接字在本地与Docker守护程序进行通信,或者使用SSH连接到远程Docker守护程序。

·使用防火墙规则限制流量白名单。

·切勿从未知注册表或未知用户空间中提取Docker映像。

·经常检查系统中是否有未知的容器或映像。

·Prisma Cloud或Twistlock等云安全解决方案可以识别。

注:本文翻译自:https://unit42.paloaltonetworks.com/graboid-first-ever-cryptojacking-worm-found-in-images-on-docker-hub/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191018A0L04T00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券