资料介绍
软件简介
FindShell 是一个自动的内存马查杀工具,可以用于普通内存马和Java Agent
内存马。
尤其针对难以查杀的Java Agent
型内存马,例如冰蝎等主流工具的内存马都是Java Agent
主要分为以下四步:
-
利用
JDK
提供的sa-jdi
的API
基于黑名单dump
存在于JVM
中真正的字节码 -
这种字节码在很多情况下是非法的,所以我修改了
ASM
源码以分析非法字节码 -
基于
ASM
做普通的分析和模拟栈帧做深入的分析 -
如果发现内存马将会尝试自动修复目标(利用
Java Agent
动态恢复原始字节码)
检测
基本检测:java -jar FindShell.jar --pid [目标JVM的PID]
这个pid
的获取方式可以通过jps
命令找到你需要的目标JVM
的pid
这种情况下默认必检测的类有以下四个(最常见的Java Agent
内存马出现的地方)
类名 | 方法名 |
---|---|
javax/servlet/http/HttpServlet | service |
org/apache/catalina/core/ApplicationFilterChain | doFilter |
org/springframework/web/servlet/DispatcherServlet | doService |
org/apache/tomcat/websocket/server/WsFilter | doFilter |
并对以下的黑名单类进行检测(如果类名出现关键字则dump
并分析该类字节码)
keyword.add("shell"); keyword.add("memshell"); keyword.add("agentshell"); keyword.add("exploit"); keyword.add("payload"); keyword.add("rebeyond"); keyword.add("metasploit");
注意:
-
修改
org.sec.Constant
代码可以自定义黑名单和关键字 -
加入
--debug
参数保留从JVM
中dump
出的字节码供自行分析 -
并不是所有类的字节码都可以
dump
成功,但常见的这些类测试中没问题
修复
目前仅做了Java Agent
内存马的自动修复,支持最常见的HttpServlet
和ApplicationFilterChain
检测和修复:java -jar FindShell.jar --pid [PID] --repair
根目录存在一个RepairAgent.jar
文件,这不属于该项目,但我将代码放在org.sec.repair
包中供参考
注意:修复手段仅靶机测试成功,在真实环境中使用请慎重
原理
-
为什么不直接用
Java Agent
或Alibaba Arthas
工具对JVM
当前字节码进行dump
Java Agent
内存马是调用redefineClass
方法对字节码进行修改的。而调用retransformClass
方法的时候参数中的字节码并不是调用redefineClass
后被修改的类的字节码。对于冰蝎来讲,根本无法获取被冰蝎修改后类的字节码。我们自己写Java Agent
清除内存马的时候,同样也是无法获取到被redefineClass
修改后的字节码,只能获取到被retransformClass
修改后的字节码。通过Javaassist
等ASM
工具获取到类的字节码,也只是读取磁盘上响应类的字节码,而不是JVM
中的字节码
-
那么怎样获得存在于
JVM
中真正的字节码
之前有宽字节安全的师傅提到利用sa-jdi
工具对真正的当前字节码进行dump
后反编译结合人工分析,该工具也是基于JDK
自带的sa-jdi
库实现的,不过加入了一些过滤的选项
- 什么情况下这样的字节码为什么是非法的
当目标类存在lambda
表达式的时候会导致非法字节码,具体可以参考我的文章
- 修改了哪些源码以解析非法字节码
参考连接:修改源码说明
- 为什么要结合普通字节码分析和模拟栈帧分析两种呢
因为Runtime.exec
这种调用很不常见且过程简单,用普通的字节码分析即可解决。但是冰蝎的反射调用defineClass
并反射invoke
以实现代码执行效果的方式,过程比较复杂,且反射调用是程序中的常见功能,简单的分析会导致误报
- 什么是模拟栈帧分析
参考文章:详解Java自动代码审计工具实现 和 基于污点分析的JSP Webshell检测
免责声明
工具仅用于安全研究以,由于使用该工具造成的任何后果使用者负责
- EDA工具CADENCE原理图与PCB设计说明 55次下载
- 基于NVM和DRAN的混合内存系统设计方案 12次下载
- 基于内存关联分析的内存预拷贝迁移策略 14次下载
- 基于机器学习的内存泄漏测试脚本预测方法 29次下载
- 液晶电视升级工具mboot使用及强制升级方法 11次下载
- 基于定理证明的内存安全验证工具算法综述 5次下载
- 16位CRC验证码生成VI工具下载 54次下载
- 内存模块说明 5次下载
- 如何在虚拟环境下进行病毒的查杀详细资料概述 13次下载
- windows应用程序读取进程的内存工具免费下载 1次下载
- 腾讯内部内存泄漏分析工具简析 0次下载
- 熊猫烧香病毒怎样进行手动查杀 1次下载
- 360杀毒软件v1.2正式版_永久免费 0次下载
- ie首页修复工具
- 内存芯片测试软件工具
- 堆栈和内存的基本知识 191次阅读
- buffers内存与cached内存的区别 201次阅读
- 系统内存和运行内存的区别 2285次阅读
- 用于分析可执行程序和内存转储的命令行工具介绍 998次阅读
- 命令执行不回显利用工具解读 1034次阅读
- 一款解决大文件内存溢出的 Excel 处理工具 1543次阅读
- valgrind检测内存问题的原理 1864次阅读
- 初识内存取证-volatility与Easy_dump 2878次阅读
- 基于智能状态和源代码插桩的C程序内存安全性动态分析 1311次阅读
- shiro综合利用工具介绍 5079次阅读
- Memray工具简介及安装与使用方法 2598次阅读
- nonecc内存和ecc内存的区别 1.3w次阅读
- 电脑内存有什么作用?内存适用类型有哪些 4111次阅读
- 新规划PCI核查工具的使用方法和应用事例 2834次阅读
- Android内存管理机制与分析工具 4446次阅读
下载排行
本周
- 1ADI高性能电源管理解决方案
- 2.43 MB | 449次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 136次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 123次下载 | 免费
- 4550W充电机原理图
- 0.13 MB | 2次下载 | 6 积分
- 5USB的PD快充协议电压诱骗控制器FS312A中文手册
- 1.51 MB | 2次下载 | 免费
- 6USB的PD和OC快充协议电压诱骗控制器FS312B中文手册
- 1.35 MB | 2次下载 | 免费
- 7USB Type_C PD快充协议智能触发芯片FS8025B应用手册
- 1.48 MB | 1次下载 | 免费
- 8ADI公司串行端口开发和故障排除指南
- 343.09KB | 1次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 449次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 136次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 123次下载 | 免费
- 4使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 53314A函数发生器维修手册
- 16.30 MB | 31次下载 | 免费
- 6美的电磁炉维修手册大全
- 1.56 MB | 22次下载 | 5 积分
- 7使用TL431设计电源
- 0.67 MB | 10次下载 | 免费
- 8感应笔电路图
- 0.06 MB | 10次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420062次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多