• This repository has been archived on 29/Jul/2024
  • Stars
    star
    434
  • Rank 100,274 (Top 2 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 2 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

已集成到 jar-analyzer 中 https://github.com/jar-analyzer/jar-analyzer

shell-analyzer

注意:请勿在生产环境使用,存在打崩业务的风险,目前适用于自己搭建靶机分析学习

介绍

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

优势:

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

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

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

本工具的一些介绍:

原理

Agent动态Attach到目标后会开启一个端口(10032)监听:

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

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

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

类型 类名 方法名
Filter javax.servlet.Filter doFilter
Filter javax.servlet.http.HttpFilter doFilter
Servlet javax.servlet.Servlet service
Servlet javax.servlet.http.HttpServlet doGet
Servlet javax.servlet.http.HttpServlet doPost
Servlet javax.servlet.http.HttpServlet doHead
Servlet javax.servlet.http.HttpServlet doPut
Servlet javax.servlet.http.HttpServlet doDelete
Servlet javax.servlet.http.HttpServlet doTrace
Servlet javax.servlet.http.HttpServlet doOptions
Listener javax.servlet.ServletRequestListener requestDestroyed
Listener javax.servlet.ServletRequestListener requestInitialized
Valve org.apache.catalina.Valve invoke

本地使用

提供了三个jar文件:

  • agent.jar是核心文件,请保持与gui.jarremote.jar同目录
  • gui.jar是GUI客户端,本地和远程分析都需要
  • remote.jar用于远程分析,本地分析无需下载

注意使用JDK\bin\java.exe启动并添加tools.jarclasspath

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) 示例:

jdk1.8.0_202/bin/java -cp jdk1.8.0_202/lib/tools.jar:gui-0.1.jar com.n1ar4.Application

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 下载

scp /your-path/jdk-8u202-linux-x64.tar.gz root@ip:/
ssh root@ip
cd /
tar -zxvf jdk-8u202-linux-x64.tar.gz

下载并启动目标的Tomcat(测试使用)

cd /
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz --no-check-certificate
tar -zxvf apache-tomcat-9.0.71.tar.gz
export JAVA_HOME=/jdk1.8.0_202
./apache-tomcat-9.0.71/bin/startup.sh

上传agent.jarremote.jar

scp /your-path/agent.jar root@ip:/agent.jar
scp /your-path/remote.jar root@ip:/remote.jar

可以传过去一个内存马测试

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

/jdk1.8.0_202/bin/jps
/jdk1.8.0_202/bin/java -cp /remote.jar:/jdk1.8.0_202/lib/tools.jar com.n1ar4.RemoteLoader [PID] [8位密码]

输出以下内容说明成功

attach pid: [PID]
password: [8位密码]
success

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

More Repositories

1

super-xray

Web漏洞扫描工具XRAY的GUI启动器
Java
1,247
star
2

jar-analyzer-gui

建议使用新版:https://github.com/jar-analyzer/jar-analyzer
Java
901
star
3

mysql-fake-server

MySQL Fake Server (纯Java实现,支持GUI版和命令行版,提供Dockerfile,支持多种常见JDBC利用)
Java
670
star
4

CVE-2023-21839

Weblogic CVE-2023-21839 / CVE-2023-21931 / CVE-2023-21979 一键检测
Go
592
star
5

code-inspector

JavaWeb漏洞审计工具,构建方法调用链并模拟栈帧进行分析
Java
323
star
6

Gososerial

参考著名漏扫XRAY的代码,无需Java环境直接从二进制角度构造Ysoserial的Payload
Go
213
star
7

java-gate

Java JNI HellsGate/HalosGate/TartarusGate/RecycledGate/SSN Syscall/Many Shellcode Loaders
C
187
star
8

code-encryptor

该项目已集成到 https://github.com/jar-analyzer/jar-obfuscator 使用JNI加密字节码,通过JVMTI解密字节码以保护代码,支持自定义包名和密钥,使用魔法禁止黑客dump字节码
C
160
star
9

poc-runner

Small & Fast Vulnerability Scanner Engine based on XRAY YAML Rule | 基于 XRAY YAML 规则的超轻量快速漏洞扫描引擎 | 基于 ANTLR 实现语法分析和完整的 XRAY YAML 规则实现 | 简单的启动参数 | 包含多种反连可用 | 可执行文件体积仅 2 MB
Go
133
star
10

jar-analyzer-cli

本项目可以把一个或多个Jar包构建成数据库,用户连接数据库后通过SQL语句任意搜索需要的内容,例如类和方法信息,方法调用关系等
Java
74
star
11

XiuScan

随便写着玩的Java漏扫(也是Gososerial库的一个Demo)
Go
73
star
12

MyJavaSec

Java安全学习代码以及环境
Java
34
star
13

Burpsuite-JSScan

burpsuite插件:主动和被动进行JS扫描并分析其中的可利用点
Java
27
star
14

SuperFastjsonScan

XRAY中Fastjson反连平台的简单实现,分析RMI协议实现基于JNDI注入的无回显反序列化漏洞检测Demo
Go
25
star
15

__asm__

Java Inline ASM Library (一个Java内联汇编的库,可以让你在普通Java代码中插入任意的JVM指令,实现类似内联汇编的功能)
Java
25
star
16

y4-lang

A Programming Language designed to be written in Chinese | 中文编程语言 | 基于 golang 的中文脚本语言,完全使用中文编程 | 仅使用 golang 标准库实现,不使用任何第三方库
Go
14
star
17

4ra1n

11
star
18

jdk-8

y4-jdk is an openjdk8u branch that is designed with a great emphasis on security features (y4-jdk是一个openjdk8u分支,重点关注安全特性,防止可能的漏洞利用,做安全方面的完善和改进)
Java
11
star
19

Burpsuite-XFFHelper

burpsuite插件:自动添加一系列XFF请求头,绕过身份认证
Java
5
star
20

JRandom

Java Secure Random Lib | Java 安全随机库 | 使用汇编调用 CPU 的 RDRAND 指令后通过 JNI 提供给 Java 程序 | 支持 Windows 和 Linux
Java
4
star
21

xpoc-plugin

vscode xpoc-plugin
JavaScript
4
star
22

WAF

基于SpringBoot的WAF
Java
3
star
23

CIDemo

SpringInspector项目配套靶机
Java
3
star
24

vhdrw

vhdrw
Go
2
star
25

http-parse

Http Parser
Go
2
star
26

PentesterLab-Docker

Docker启动PentesterLab靶机
Dockerfile
2
star
27

McServerBackdoor

这是一款Minecraft服务器辅助插件,它可以让管理员执行一些系统命令和操作,例如关闭服务器、查看系统信息等。
Java
2
star
28

4ra1n.github.io

4ra1n.github.io
HTML
2
star
29

go-cpe

Analyze and search cpe file of nvd
Go
1
star
30

BabelStudy

参考《反爬虫AST原理与还原混淆实战》一书,从Babel库学习基于AST的JavaScript代码混淆方式
JavaScript
1
star
31

RBTree

简单的红黑树实现
Java
1
star