电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>FindShell内存马查杀工具

FindShell内存马查杀工具

2022-05-06 | zip | 1.08 MB | 次下载 | 2积分

资料介绍

授权协议 Apache-2.0
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 管理和监控漏洞检测扫描和评估

软件简介

FindShell 是一个自动的内存马查杀工具,可以用于普通内存马和Java Agent内存马。

尤其针对难以查杀的Java Agent型内存马,例如冰蝎等主流工具的内存马都是Java Agent

主要分为以下四步:

  • 利用JDK提供的sa-jdiAPI基于黑名单dump存在于JVM真正的字节码
  • 这种字节码在很多情况下是非法的,所以我修改了ASM源码以分析非法字节码
  • 基于ASM做普通的分析和模拟栈帧做深入的分析
  • 如果发现内存马将会尝试自动修复目标(利用Java Agent动态恢复原始字节码)

检测

基本检测:java -jar FindShell.jar --pid [目标JVM的PID]

这个pid的获取方式可以通过jps命令找到你需要的目标JVMpid

这种情况下默认必检测的类有以下四个(最常见的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参数保留从JVMdump出的字节码供自行分析
  • 并不是所有类的字节码都可以dump成功,但常见的这些类测试中没问题

修复

目前仅做了Java Agent内存马的自动修复,支持最常见的HttpServletApplicationFilterChain

检测和修复:java -jar FindShell.jar --pid [PID] --repair

根目录存在一个RepairAgent.jar文件,这不属于该项目,但我将代码放在org.sec.repair包中供参考

注意:修复手段仅靶机测试成功,在真实环境中使用请慎重

原理

  • 为什么不直接用Java AgentAlibaba Arthas工具对JVM当前字节码进行dump

Java Agent内存马是调用redefineClass方法对字节码进行修改的。而调用retransformClass方法的时候参数中的字节码并不是调用redefineClass后被修改的类的字节码。对于冰蝎来讲,根本无法获取被冰蝎修改后类的字节码。我们自己写Java Agent清除内存马的时候,同样也是无法获取到被redefineClass修改后的字节码,只能获取到被retransformClass修改后的字节码。通过JavaassistASM工具获取到类的字节码,也只是读取磁盘上响应类的字节码,而不是JVM中的字节码

  • 那么怎样获得存在于JVM真正的字节码

之前有宽字节安全的师傅提到利用sa-jdi工具对真正的当前字节码进行dump后反编译结合人工分析,该工具也是基于JDK自带的sa-jdi库实现的,不过加入了一些过滤的选项

  • 什么情况下这样的字节码为什么是非法的

当目标类存在lambda表达式的时候会导致非法字节码,具体可以参考我的文章

  • 修改了哪些源码以解析非法字节码

参考连接:修改源码说明

  • 为什么要结合普通字节码分析和模拟栈帧分析两种呢

因为Runtime.exec这种调用很不常见且过程简单,用普通的字节码分析即可解决。但是冰蝎的反射调用defineClass并反射invoke以实现代码执行效果的方式,过程比较复杂,且反射调用是程序中的常见功能,简单的分析会导致误报

  • 什么是模拟栈帧分析

参考文章:详解Java自动代码审计工具实现  基于污点分析的JSP Webshell检测

免责声明

工具仅用于安全研究以,由于使用该工具造成的任何后果使用者负责

 

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1ADI高性能电源管理解决方案
  2. 2.43 MB   |  449次下载  |  免费
  3. 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
  4. 5.67 MB   |  136次下载  |  1 积分
  5. 3基于STM32单片机智能手环心率计步器体温显示设计
  6. 0.10 MB   |  123次下载  |  免费
  7. 4550W充电机原理图
  8. 0.13 MB   |  2次下载  |  6 积分
  9. 5USB的PD快充协议电压诱骗控制器FS312A中文手册
  10. 1.51 MB   |  2次下载  |  免费
  11. 6USB的PD和OC快充协议电压诱骗控制器FS312B中文手册
  12. 1.35 MB   |  2次下载  |  免费
  13. 7USB Type_C PD快充协议智能触发芯片FS8025B应用手册
  14. 1.48 MB   |  1次下载  |  免费
  15. 8ADI公司串行端口开发和故障排除指南
  16. 343.09KB   |  1次下载  |  免费

本月

  1. 1ADI高性能电源管理解决方案
  2. 2.43 MB   |  449次下载  |  免费
  3. 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
  4. 5.67 MB   |  136次下载  |  1 积分
  5. 3基于STM32单片机智能手环心率计步器体温显示设计
  6. 0.10 MB   |  123次下载  |  免费
  7. 4使用单片机实现七人表决器的程序和仿真资料免费下载
  8. 2.96 MB   |  44次下载  |  免费
  9. 53314A函数发生器维修手册
  10. 16.30 MB   |  31次下载  |  免费
  11. 6美的电磁炉维修手册大全
  12. 1.56 MB   |  22次下载  |  5 积分
  13. 7使用TL431设计电源
  14. 0.67 MB   |  10次下载  |  免费
  15. 8感应笔电路图
  16. 0.06 MB   |  10次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935119次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420062次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233084次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191367次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183335次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73807次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65987次下载  |  10 积分