安全矩阵

 找回密码
 立即注册
搜索
查看: 412|回复: 0

Java内存马查杀GUI工具

[复制链接]

215

主题

215

帖子

701

积分

高级会员

Rank: 4

积分
701
发表于 2023-4-7 22:41:05 | 显示全部楼层 |阅读模式
本帖最后由 alyssa 于 2023-4-7 22:42 编辑

转载于:4ra1n 猪猪谈安全

项目地址
  1. https://github.com/4ra1n/shell-analyzer
复制代码
注意:请勿在生产环境使用,存在打崩业务的风险,目前适用于自己搭建靶机分析学习


介绍
关于Java Web内存马查杀的文章和工具已经有不少,不过大都不够完善,各有缺点;于是我做了一款GUI版本的实时内存马查杀工具,支持本地查杀与远程查杀;仅测试了Tomcat这一种中间件,不过理论上任何实现了Servlet规范的中间件都可以查杀

优势:
实时监控目标JVM
一键反编译分析代码
一键查杀内存马

本地查杀演示视频:https://www.bilibili.com/video/BV1ZM411e7Rr

远程查杀演示视频:https://www.bilibili.com/video/BV1L24y1q7so

本工具的一些介绍:
内存马检测工具shell-analyzer(1)最初版展示与设计思路
内存马检测工具shell-analyzer(2)远程查杀实现

原理
将Agent动态Attach到目标后会开启一个端口(10032)监听:
该端口会反序列化收到的数据,然后处理,我已经给反序列化设置了白名单进行保护
启动Agent时会设置密码,如果客户端连接密码不匹配将无法获得数据
为什么选择 10032 端口,因为这个数字代表一个

该端口用于实时接受指令并处理后返回数据,图中是部分指令(不完全)


支持一键查杀的内存马类型



本地使用
提供了三个jar文件
agent.jar是核心文件,请保持与gui.jar或remote.jar同目录
gui.jar是GUI客户端,本地和远程分析都需要
remote.jar用于远程分析,本地分析无需下载
注意使用JDK\bin\java.exe启动并添加tools.jar到classpath中


Windows CMD 示例:
  1. "C:\Program Files\Java\jdk1.8.0_131\bin\java.exe" -cp "C:\Program Files\Java\jdk1.8.0_131\lib\tools.jar;gui-0.1.jar" com.n1ar4.Application
复制代码

Windows Powershell 示例:
  1. & "C:\Program Files\Java\jdk1.8.0_131\bin\java.exe" -cp "C:\Program Files\Java\jdk1.8.0_131\lib\tools.jar;gui-0.1.jar" com.n1ar4.Application
复制代码

Linux (Ubuntu) 示例:
  1. <div><span style="font-size: 16px; letter-spacing: 0.544px; color: rgb(31, 35, 40); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;Noto Sans&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;;">jdk1.8.0_202/bin/java -cp jdk1.8.0_202/lib/tools.jar:gui-0.1.jar com.n1ar4.Application</span></div>
复制代码

Mac OS 示例:
  1. /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/bin/java -cp /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/lib/tools.jar:gui-0.1.jar com.n1ar4.Application
复制代码

(1) 第一步:检测进程并Attach


为了防止目标被恶意利用,需要输入一个密码

注意:尽管使用了密码保护,但还是存在拒绝服务等风险,请勿在生产环境使用,目前适用于自己搭建靶机分析学习

(2) 第二步:勾选并分析
点击刷新即可获得实时的数据
(3) 双击任意一个类即可Dump并反编译
(4) 复制类名过去即可修复内存马


远程连接

注意:请不要在真实环境/生产环境下使用,存在打崩业务的可能,目前适用于自己搭建靶机分析学习
仅测试了JDK版本为8的情况


客户端java -jar gui.jar即可
(因为不对本地分析,仅用于发送和接收socket数据,所以可以不将tools.jar加入classpath)
服务端确保Tomcat端口和 10032 端口开放


可以手动将Oracle JDK 8传过去(没有测试过OpenJDK等版本)
可以前往 Oracle JDK 8 下载
  1. <div>scp /your-path/jdk-8u202-linux-x64.tar.gz root@ip:/</div><div>ssh root@ip</div><div>cd /</div><div>tar -zxvf jdk-8u202-linux-x64.tar.gz</div>
复制代码

下载并启动目标的Tomcat(测试使用)
  1. <div>cd /</div><div>wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz --no-check-certificate</div><div>tar -zxvf apache-tomcat-9.0.71.tar.gz</div><div>export JAVA_HOME=/jdk1.8.0_202</div><div>./apache-tomcat-9.0.71/bin/startup.sh</div>
复制代码

上传agent.jar和remote.jar
  1. <div>scp /your-path/agent.jar root@ip:/agent.jar</div><div>scp /your-path/remote.jar root@ip:/remote.jar</div>
复制代码

可以传过去一个内存马测试
  1. scp /your-path/filter.jsp root@ip:/apache-tomcat-9.0.71/webapps/ROOT/1.jsp
复制代码

访问http://ip:port/1.jsp注入并测试http://ip:port?cmd=xxx

先使用jps拿到PID然后注入Agent
  1. <div>/jdk1.8.0_202/bin/jps</div><div>/jdk1.8.0_202/bin/java -cp /remote.jar:/jdk1.8.0_202/lib/tools.jar com.n1ar4.RemoteLoader [PID] [8位密码]</div>
复制代码

输出以下内容说明成功
  1. <div>attach pid: [PID]</div><div>password: [8位密码]</div><div>success</div>
复制代码

打开本工具,输入IP和上文的8位密码后,进行分析和查杀即可


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-18 19:54 , Processed in 0.012953 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表