43

Graboid蠕虫分析

 4 years ago
source link: https://www.freebuf.com/articles/network/217100.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

研究人员发现了名为Graboid的新型加密劫持蠕虫,该蠕虫已传播到2,000多个不安全的Docker主机。

曾经发生过以蠕虫病毒形式传播加密劫持恶意软件的事件,但这是第一次看到使用Docker Engine中的容器传播的加密劫持蠕虫。由于大多数传统的保护软件都不检查容器内的数据和活动,因此这种恶意活动很难检测到。

攻击者通过不安全的Docker守护程序获得了最初攻击切入点。恶意软件是通过C2服务器下载,用于挖掘Monero并定期从C2查询新的易受攻击主机,随机选择下一个目标以将蠕虫进行传播。分析表明,平均每个矿工有63%的时间处于活动状态,每个采矿周期持续250秒。Docker团队目前已删除恶意映像。

bqEruqa.jpg!web

蠕虫分析

N7jee27.jpg!web

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、容器中的入口点脚本/ 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的列表。这些IP是不安全docker API的主机。 worm.sh随机选择一个IP作为目标,并使用docker客户端工具远程部署pocosow / centos容器。
 5、cleanxmr.sh从IP文件中随机选择一个易受攻击的主机,然后停止目标上的cryptojacking容器。 cleanxmr.sh不仅会停止蠕虫部署的密码劫持容(gakeaws / nginx),而且还会停止其他基于xmrig正在运行的容器。
 6、xmr.sh从IP文件中随机选择一个易受攻击的主机,然后在目标主机上部署gakeaws / nginx。 gakeaws / nginx包含被伪装为nginx的xmrig二进制文件。

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

BJJZNfQ.jpg!web

如上图所示,Docker映像pocosow / centos已被下载超过10,000次,gakeaws / nginx已被下载超过6,500次。

只有下载并执行程序脚本后,才能知道pocosow / centos的恶意意图。但是,可以很容易地从其构建历史中发现gakeaws / nginx的恶意意图。如图3所示,它仅在构建时将xmrig二进制文件重命名为nginx(第7行)。在构建期间,付款地址被硬编码到环境变量中(第6行)。

UbYbyue.jpg!web 图4显示了IP文件中列出的2,034台主机的位置,其中57.4%的IP源自中国,其次是美国的13%。在恶意软件使用的15台C2服务器中,有14台是列在IP文件中,一台主机中有50多个已知漏洞。攻击者攻击渗透了这些主机并将其用作C2服务器。

aiaaeyJ.jpg!web

蠕虫模拟

为了更好地了解蠕虫的有效性及其整体挖掘能力,我们创建了一个简单的Python程序来模拟蠕虫。

假设IP文件中有2,000台主机,其中30%的主机在运行期间发生故障,刷新间隔为100秒,并且每台受损的主机上都有一个CPU。实验模拟了一个为期30天的攻击活动来研究以下几个问题:

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

攻击者拥有多少采矿能力?

每个矿工在受感染主机上保持多长时间活动?

NRRvueu.jpg!web

图5的左侧部分显示了蠕虫传播的速度。蠕虫病毒大约需要60分钟才能到达所有1400个易受攻击的主机(2,000多个主机中的70%)。

图5的右侧部分显示了受感染主机的总体挖掘能力。平均有900名活跃矿工,攻击者拥有一个1,400个节点的挖掘集群,该集群具有至少有900个CPU的挖掘能力。由于受感染主机上的矿工可以随机启动和停止,因此每个矿工仅在65%的时间内处于活动状态,每个采矿周期平均仅持续250秒。

总结

此劫持蠕虫不涉及复杂的策略、技术、传播过程,但该蠕虫可以定期从C2中提取新脚本,因此它可以轻松地将其自身重新用于勒索软件或任何恶意软件。如果创建了更强大的蠕虫来采用类似的渗透方法,可能造成更大的破坏。

以下是相关防护策略:

 1、如果没有身份验证机制,切勿将docker守护程序暴露在互联网。默认情况下,Docker Engine(CE)不会暴露于互联网。
 2、使用Unix套接字在本地与Docker守护程序进行通信,或者使用SSH连接到远程Docker守护程序。
 3、使用防火墙白名单限制进入流量。
 4、切勿提取未知Docker镜像。
 5、经常检查系统中是否有未知的容器或镜像。

IOCs

Docker Images:

pocosow/centos:7.6.1810:
 Digest: sha256:6560ddfd4b9af2c87b48ad98d93c56fbf1d7c507763e99b3d25a4d998c3f77cf
 gakeaws/nginx:8.9:
 Digest: sha256:4827767b9383215053abe6688e82981b5fbeba5d9d40070876eb7948fb73dedb
 gakeaws/mysql:
 Digest: sha256:15319b6ca1840ec2aa69ea4f41d89cdf086029e3bcab15deaaf7a85854774881
 Monero Address: 45TwKEr1LjoEPuxnbfuPhaXCf138AoQvtSJ3jdqg1gPxNjkSNbQpzZrGDaFHGLrVT7AzM7tU9QY8NVdr4H1C3r2d3XN9Cty

C2 servers:

 120.27.32[.]15
 103.248.164[.]38
 101.161.223[.]254
 61.18.240[.]160
 182.16.102[.]97
 47.111.96[.]197
 106.53.85[.]204
 116.62.48[.]5
 114.67.68[.]52
 118.24.222[.]18
 106.13.127[.]6
 129.211.98[.]236
 101.37.245[.]200
 106.75.96[.]126
 47.107.191[.]137

*参考来源: unit42 ,由Kriston编译,转载请注明来自FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK