windows 下docker运行confluence(docker 运行windows程序)
8220挖矿团伙因利用新发现的关键Confluence漏洞(CVE-2022-26134)而被人们熟知。最近,8220挖矿团伙攻击了Aqua的一个蜜罐,该攻击不断升级并将攻击目标转移到了容器上。在这场“猫捉老鼠”的游戏中,黑客运用了新技术,将脚本从单次攻击升级为多次不间断攻击,添加新的攻击方式来攻击受损的主机,并将攻击传播到其他主机。在本文中,我们将分解此攻击,回溯其技术,并使用运行时检测和预防工具进行分析。
以下是我们将涵盖的内容
初始访问
执行和持久化技术
防御规避技术
发现技术
横向移动技术
命令与控制技术
施加影响技术
恶意软件执行
检测攻击
图1:Jira?Confluence攻击流(8220 挖矿团伙)
初始访问
在上述攻击中,黑客利用配置错误的Docker程序,运行vanilla Alpine镜像和恶意命令来执行攻击。该命令是通过shell脚本jira?confluence从远程服务器下载的多个命令组成的。在整个攻击过程中,攻击者都使用这个命令与控制(C2)服务器。
这个shell脚本的名称很有趣,因为它让人想起6月份的一个事件,当时发现了一个允许在Confluence服务器上执行远程代码的新漏洞。该漏洞被添加到国家漏洞数据库(NVD)中,编号为CVE-2022-26134。它影响多个版本的Confluence服务器和数据中心,允许未经身份验证的攻击者执行任意代码并利用易受攻击的版本。
在调查期间,我们发现了利用Confluence漏洞的攻击和针对我们蜜罐的攻击之间的代码和组件的相似之处(除了指示性名称之外)。代码、二进制文件和C2基础架构中的函数都与8220挖矿团伙相关联。
在我们的蜜罐上执行的容器命令非常有趣,因为它包含一个片段,该片段将下载函数作为后备,以防目标主机上的相关应用程序无法从C2服务器下载主要的有效负载。
图2:使用命令运行vanilla容器镜像
正如您在上面的截图中看到的,攻击者正在使用命令运行alpine。他们正试图通过使用chroot /mnt命令并运行三个远程文件下载选项(curl、wget和lwp-download)将根目录更改为/mnt目录。后者很少有人会注意到,其目标是从网络上下载大文件。作为后备,该命令还在/tmp/jira中创建一个临时目录,在base64中编写编码片段,然后解码并执行它。
图3:解码base64
上面的截图是命令中出现的解码片段。如您所见,攻击者删除/var/tmp/.dat中的临时文件,并插入一个用于替换curl或wget的函数,即从网络下载文件。您可以在以下/var/tmp/.dat中看到代码:
图4:下载函数(来自jira?confluence shell脚本)
最后,您可以看到,最后一个片段是下载函数的实现,作为curl、wget和lwp下载失败时的后备。
执行和持久化技术
这次攻击的主要有效负载是jira?confluence shell脚本,在我们的案例中的容器中执行。攻击者使用cron创建计划任务,以进行恶意shell脚本的初始执行。除此之外还有后备函数,攻击者将其用作cron-job的备份,确保在泄漏的机器上执行恶意代码。
最终,黑客试图在不同位置创建几个cron任务,旨在从C2服务器下载主要有效负载并执行它。黑客使用随机函数在启动时自动启动,这可以确保在机器上执行shell脚本。而反过来又可以在检测和停止攻击的情况下持续存在。
图5:makecron函数(来自jira?confluence shell脚本)
正如您在下面的截图中看到的,黑客正在使用另一个函数cronbackup作为cron任务的备份,在目标机器中有了立足之地,从而实现攻击目的。
图6:cronbackup函数(来自jira?confluence shell脚本)
此后备函数还检查cron、crond和atd是否处于运行状态。如果前两个运行,那么函数就结束了。如果在atd处于运行时它们不运行,则代码设计为在计划的cron调用(有效负载调用)期间插入。最后,如果上述任何一项都不运行,攻击者将定义一个无限循环,每五分钟在四条路径之一中随机执行有效负载。
防御规避技术
在这种情况下,攻击者会关闭阿里云、百度云和谷歌云平台(GCP)上的安全工具。这样做可以逃避检测,并提高成功攻击的可能性。
图7:运行函数(来自jira?confluence shell脚本)
两个有趣的函数是judge和judege2,它们旨在运行恶意软件,同时检查它们是否被目标系统阻止。我们稍后会在恶意软件执行部分解释它们。
图8:judge and judge2 函数(来自jira?confluence shell脚本)
此外,攻击者还使用各种防御规避技术。这些包括禁用简单的防火墙(UFW)程序,并设置新的iptables规则,以确保进出C2服务器的入站和出站流量。此外,攻击者使用这些tenforce 0命令将SELinux工作模式更改为宽容模式,这使他能够跳过任何安全策略。SELinux是Linux中的一个安全模块,它提供了支持访问控制安全策略的机制。
图9:防御规避技术(来自jira?confluence shell脚本)
此外,攻击者从/etc/ld.so.preload文件中删除属性:
设置可以修改文件的选项
设置文件只能在附加模式下写入数据的选项
之后,攻击者还删除了/ect/ld.so.preload的内容,可能是为了阻止设置在其他任意库前加载的安全组件。
将shell脚本下载到泄漏机器后,它将保存在/tmp目录中。这样做可能是为了避免无代理解决方案进行检测-无代理解决方案对写入tmp目录和内存的文件是视而不见的。攻击者修改目录权限,以确保任何用户都有读取、写入和执行权限。
此外,攻击者会检查出站通信是否被防火墙或其他安全组件阻止——首先,尝试使用ping命令隐藏在域名后面的C2服务器(“jira[.]letmaker[.]top”)。如果域名被阻止,攻击者将直接使用IP地址。其次,通过解析带有dns的加密池,如果被阻止,恶意软件会被标签标注。
图10:检查与C2服务器和加密池的通信
(来自jira?confluence shell脚本)
最后,攻击者还会删除日志文件,以隐藏系统内的任何可疑活动:
Cron 日志
包含所有登录和注销历史记录的Wtmp文件
安全日志文件,其中包含与身份验证和授权权限相关的信息
/var/spool/mail/root,包括来自攻击泄漏机器期间运行的任务的消息,并将其输出写入此路径
图11:删除日志(从jira?confluence shell脚本)
发现技术
在这种情况下,黑客扫描检测并查找本地网络中的进一步目标,使用ssh服务暴力破解或从当前目标收集ssh密钥以进入其他主机。
在下面的截图中,您可以在扫描函数中看到一个示例,攻击者正在下载三个组件——masscan、spirit和px——以在本地环境中进行ssh暴力破解。使用强大的扫描工具masscan,黑客正在扫描10.0.0.0/8、172.6.0.0.12和192.168.0.0/16,以便在端口22上运行开放式ssh服务。
ascii文件px和pasx(不在截图中)用作二进制spirit和spirit-pro的配置文件。稍后我们将在恶意软件部分检查ssh暴力破解。
图12:扫描函数(来自jira?confluence shell脚本)
此外,攻击者正在使用命令uname-m将C2中的二进制文件与目标处理器架构匹配。
横向移动技术
之后,攻击者传播攻击,对其他主机发起攻击并滥用它们。攻击者利用早些时候下载的组件,帮助恶意代码在泄漏机器的内部环境中移动。
攻击者试图用两种方法传播他的攻击。在第一种情况下,在通过ssh开放端口发现易受攻击的主机后,攻击者可以对这些主机启动ssh暴力破解。如果成功,他将执行恶意shell脚本,并继续传播攻击。
在第二种方法中,攻击者利用之前在泄漏机器和远程主机之间建立的连接。这些数据可以在主机上的各个文件中找到。例如,之前ssh连接的已知主机文件。该连接是使用两台机器已知的密钥建立的,并用作连接合法的标识。攻击者使用保存在泄漏主机上的详细信息来建立连接——远程主机和ssh密钥的详细信息,在机器之间进行配对。
攻击者创建一个循环,生成密钥、主机和用户的所有组合。如果详细信息正确,攻击者将建立与远程主机的连接:
他提供读取权限,并删除密钥列表中的所有其他权限。
他更改了主机密钥检查方式的设置(KeyHostKeyChecking),这允许将客户端主机密钥添加到已知主机列表中,即使密钥并未定义为已知。
他更改了BatchMode的设置,可以登录远程主机并在没有密码的情况下执行命令。
最后,攻击者在远程主机上执行恶意shell脚本,传播攻击。
图13:localgo函数(来自jira?confluence shell脚本)
命令与控制技术
攻击者还可以与他的C2建立通信渠道,以扩大对泄漏机器的控制。攻击者可以使用与C2服务器的连接,并启动反向shell,以准入远程访问泄漏的机器。
此外,攻击者可以通过检查与IRC服务器(51[.]255[.]171[.]23)的连接来确定Tsunami恶意软件目前是否在机器上运行。如果没有此连接,则会下载并执行Tsunami恶意软件。IP地址51[.]255[.]171[.]23被标记为恶意,并在利用最新Confluence CVE-2022-26134的活动中被识别出来。我们将在稍后的文章中看到Tsunami恶意软件的工作原理。
图14:检查IRC协议的可用性(来自jira?confluence shell脚本)
施加影响技术
攻击者在整个攻击过程中使用的所有技术都使他们达到了最终目标——用被攻击机器的CPU来挖加密货币。
攻击者修改sysctl的设置,并启用HugePages,该函数允许操作系统支持大于默认的内存页面。这项技术可以将哈希率(挖矿速度)提高20-30%。
图15:修改系统内核的属性(来自jira?confluence shell脚本)
恶意软件执行
我们上面所提到的技术为攻击者能够执行攻击奠定了基础。在本节中,我们将检查二进制文件和文件及其在攻击中的作用。组件是函数 judge() 和 judge2() 的首次下载。攻击者根据机器的架构调整组件的下载,以确保它能正常运行。
首先,攻击者下载了一个名为dbused(md5=eb2f5e1b8f818cf6a7dafe78aea62c93和md5=780965bad574e4e7f04433431d0d8f63)的打包(upx)恶意软件。该恶意软件用于加密货币挖矿,与8220挖矿团伙有关。
接下来,攻击者下载了被称为Tsunami恶意软件的bashirc文件(md5:63a86932a5bad5da32ebd1689aa814b3和md5:0ba9e6dcfc7451e386704b2846b7e440),该文件被用作Linux后门,准入远程访问感染的机器。Tsunami恶意软件使用互联网中继聊天(IRC)协议,作为客户端控制目标系统上的分布式拒绝服务攻击(DDoS),因此被视为IRC机器人。
为了利用相关机器并感染它们,攻击者启动扫描功能,并从远程服务器下载下列工具:
Spirit二进制文件(md5:cba8efad5eda067ef9d10d372a9a9cab和md5:9a934b00a07847c66b9ddf7268b07dd3)
px文本文件
Masscan二进制文件(md5:eefc0ce93d254982fbbcd26460f3d10d)
攻击者在与受感染机器相同的网络上,继续寻找更易受攻击的机器。通过使用Masscan工具扫描内部网络,他们搜索打开的ssh端口(22)。通过相关主机的列表,Spirit二进制文件是一个备份文件,作为ssh扫描工具使用px文本文件,其中包含10,000多条用户名和密码记录。然后,它对同一网络中发现的易受攻击的主机发起暴力破解,以传播攻击并感染它们。
攻击者还将继续尝试攻击,传播到远程主机,使用之前从受感染机器执行连接的对应主机密钥。如果连接建立,攻击者会执行他的恶意shell脚本,并感染这些机器。
在过去的几天里,我们检查了攻击者对脚本所做的一些更改。他们添加了更多功能,准入他们隐藏恶意活动并成功发起攻击。
引发对泄漏机器攻击的 jira?confluence shell脚本已更新为以下新组件:
用户和密码文件-攻击者已将px文件更新为pasx(md5=3cd845610e49e11575b5c18596b38389)文件。
SSH扫描工具-攻击者已将ssh扫描工具Spirine更新为spirin-pro(md5=389437dc4db73256913b8d89fab5e7bc和md5=7d72ccaf59619d0011ca02f97ecb1170)。
SSH暴力破解工具——攻击者添加了一个名为hxx的新工具(md5=f0551696774f66ad3485445d9e3f7214),用于执行ssh暴力破解,发现与8220挖矿团伙有关。
检测攻击
这个故事背后的逻辑很简单:当检测到新的关键零日漏洞时,黑客想要马上利用漏洞,使您的生产工作负载暴露在风险中。你需要逐一检查它们,以评估它们是否易受攻击并可能被利用。然而,攻击者要做的只是调整他们的工具,并将新的漏洞添加到他们的大型僵尸网络中。因此,您在这场比赛中胜算不搞。
但运行时检测和响应工具,例如来自Aqua Security 的云原生检测和响应工具(CNDR),则可以用于检测运行时的恶意或可疑行为。
如果您正在运行的工作负载之一容易受到Confluence漏洞影响的,CNDR将让您看到以下检测:
图16:CNDR仪表板
让我们从界面开始。它表明,在过去的一个小时里,我们在环境中进行了各种检测。观看我们的事件屏幕,我们可以看到以下九个检测结果:
图17:CNDR事件视图
在检查这些检测结果时,我们发现,它们与我们刚才描述的攻击一致。
图18:CNDR检测示例
我们可以轻松地重建攻击杀伤链。在进行事件响应时,这可能是一项艰巨的任务,但CNDR帮助我们逐步检查攻击:
图19:攻击杀伤链
将这些活动映射到MITRE ATT&CK框架
在这里,我们将攻击的每个组件映射到MITRE ATT&CK框架的相应技术:
结论
这种攻击说明攻击者在不断演变,他们通过不断增加新技术来绕过安全工具,成功地将攻击扩展到其他主机,并放大影响。在短短几天内,我们一直在调查的shell脚本摇身一变,获得了新函数和二进制文件。改进后的脚本可以更有效地在本地网络和远程主机上传播攻击。
类似这种类型的攻击数量和复杂性都在不断攀升,需要新的能力和工具。为了防止此类攻击,我们建议遵循以下准则:
- 确保正确配置环境,避免暴露不必要的端口。
- 关注安全公告,并将您的系统更新到最新版本。
- 监控容器活动,以帮助快速缓解问题并最大限度地减少中断。这也适用于可能发生可疑活动的运行时环境。
在本案例中,攻击是使用vanilla镜像alpine: latest发起的,大多数企业使用并允许在他们的环境中运行。Aqua的CNDR运行时保护解决方案旨在检测运行时期间的未知威胁和可疑行为。此外,drift prevention 也会进行保护,阻止执行运行时从远程源下载的、且不是原始容器镜像部分的文件。
Indicators of Compromise (IOCs)
Name |
Type |
Md5 |
dbuser (x86_64) |
Binary |
eb2f5e1b8f818cf6a7dafe78aea62c93 |
dbuser (i686) |
Binary |
780965bad574e4e7f04433431d0d8f63 |
bashirc (x86_64) |
Binary |
63a86932a5bad5da32ebd1689aa814b3 |
bashirc (i686) |
Binary |
0ba9e6dcfc7451e386704b2846b7e440 |
spirit (upx) |
Binary |
cba8efad5eda067ef9d10d372a9a9cab |
spirit |
Binary |
9a934b00a07847c66b9ddf7268b07dd3 |
Spirit-pro (upx) |
Binary |
389437dc4db73256913b8d89fab5e7bc |
Spirit-pro |
Binary |
7d72ccaf59619d0011ca02f97ecb1170 |
hxx |
Binary |
f0551696774f66ad3485445d9e3f7214 |
masscan |
Binary |
eefc0ce93d254982fbbcd26460f3d10d |
px |
Text file |
26935a6763559c954cd247efcfa71a47 |
pasx |
Text file |
3cd845610e49e11575b5c18596b38389 |
jira?confluence |
Shell script |
ed325c84233a432e06a548c131a91a69 |
IPs and Domains |
51[.]255[.]171[.]23 |
89[.]34[.]27[.]167 |
167[.]114[.]114[.]169 |
jira[.]letmaker[.]top |
如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。