社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

嘶吼专业版 • 5 年前 • 562 次点击  

概要

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/


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47694
 
562 次点击