|
本帖最后由 alyssa 于 2023-4-7 22:42 编辑
转载于:4ra1n 猪猪谈安全
项目地址
- 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 示例:
- "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 示例:
- & "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) 示例:
- <div><span style="font-size: 16px; letter-spacing: 0.544px; color: rgb(31, 35, 40); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";">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 示例:
- /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 下载
- <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(测试使用)
- <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
- <div>scp /your-path/agent.jar root@ip:/agent.jar</div><div>scp /your-path/remote.jar root@ip:/remote.jar</div>
复制代码
可以传过去一个内存马测试
- 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
- <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>
复制代码
输出以下内容说明成功
- <div>attach pid: [PID]</div><div>password: [8位密码]</div><div>success</div>
复制代码
打开本工具,输入IP和上文的8位密码后,进行分析和查杀即可
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|