内存马查杀工具FindShell试用

本文介绍了如何使用FindShell工具检测内存马,详细步骤包括代码部署、执行与分析。通过修改NameFilter.java和Constant.java,增强了工具的查杀能力,使其能更多地dump和分析可疑文件。最后,建议了内存马清理和预防措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先使用冰蝎创建一个内存马

成功进入内存马界面

接下来尝试使用findshell查杀,项目主页为

https://github.com/4ra1n/FindShell

服务器上首先部署代码,执行

git clone https://github.com/4ra1n/FindShell.git

然后进入到FindShell目录,打包项目,执行(如果没有mvn命令需要先yum -y install apache-maven安装)

mvn package

打包后在target目录下生成FindShell-1.0.jar文件

通过官方文档得知检测命令为

java -jar FindShell.jar --pid [目标JVM的PID]

我们首先通过jps命令获取jvm的pid

再执行

java -jar FindShell-1.0.jar --pid 2230

发现内存马

 如果需要自行分析内容,可以增加--debug参数,执行

java -jar FindShell-1.0.jar --pid 2230 --debug

这样dump出来的class文件会放到out目录下,我们也可以自行反编译class文件分析,下图为反编译看到的内存马内容

发现内存马就需要清理,鉴于内存马可能有多个,且程序也有可能无法全部查出来,有条件的情况下,最好还是可以重启tomcat

----------------20220317补充--------------

参考文章https://xz.aliyun.com/t/10910

程序为了减少dump过多导致性能等问题,做了黑名单,满足黑名单名称的类才会进行dump分析,默认dump的文件比较少,因此我做了下简单修改,让程序不过分影响性能的情况下尽量多dump一些文件分析

1.修改src/main/java/org/sec/util/NameFilter.java  33行if (klassName.contains(k)) {为if (klassName.toLowerCase().contains(k)) {  使其匹配class名称时忽略大小写

2.修改src/main/java/org/sec/Constant.java  增加keyword,框起来的是我自己增加的

增加了cmd,filter,servlet三个 

3.修改后重新执行mvn package打包即可

 

<think>我们正在讨论的是在Windows系统上使用tomcat-memshell-scanner.jsp脚本工具来检测Tomcat内存。根据引用[2]中提到的工具,tomcat-memshell-scanner是用于Java内存检测的工具之一。步骤指南:1.获取工具:从GitHub下载java-memshell-scanner项目(项目地址:https://github.com/c0ny1/java-memshell-scanner)2.部署到Tomcat:将下载的tomcat-memshell-scanner.jsp文件放在Tomcat服务器的web应用目录下(例如ROOT目录),以便通过浏览器访问。3.访问扫描页面:在浏览器中输入该jsp文件的URL(如:http://localhost:8080/tomcat-memshell-scanner.jsp)4.执行扫描:按照页面提示进行操作,扫描Tomcat内存中的恶意后门(内存)。5.查看结果:扫描完成后,页面会显示检测结果。注意:该工具需要在Tomcat服务器上运行,因此需要确保服务器已启动,并且有权限部署该jsp文件。引用[2]中提到了多个工具,其中tomcat-memshell-scanner.jsp就是用于Tomcat内存扫描的。根据引用[3],内存检测还可以使用VisualVM等工具进行辅助分析,但这里我们专注于使用tomcat-memshell-scanner.jsp。详细步骤:1.下载工具:访问GitHub项目:https://github.com/c0ny1/java-memshell-scanner下载整个项目(可以点击Code->DownloadZIP),或者直接下载tomcat-memshell-scanner.jsp文件(在项目的jsp目录下)。2.部署到Tomcat:-将tomcat-memshell-scanner.jsp文件复制到Tomcat的webapps目录下的某个应用中,比如ROOT(即默认应用)目录下。-如果Tomcat正在运行,可能需要重启Tomcat(但通常jsp文件放入后可以直接访问,无需重启)。3.访问工具:在浏览器中访问:http://<你的服务器IP>:<端口>/tomcat-memshell-scanner.jsp例如,本地Tomcat默认地址:http://localhost:8080/tomcat-memshell-scanner.jsp4.使用工具:打开页面后,通常会有一个按钮或链接来启动扫描。点击后,工具会扫描当前Tomcat容器中加载的所有类和过滤器等,检测是否存在已知的内存。5.结果解读:工具会列出可疑的类,并标记出已知的内存特征。根据结果,可以进一步处理恶意内存。注意:由于内存是运行在内存中的,清除内存通常需要重启Tomcat服务。在检测到内存后,应进一步排查漏洞入口,防止再次被注入。另外,引用[2]还提到了其他工具,如河内存查杀工具(有Windows版本),也可以作为备选方案。相关问题:1.如何清除检测到的内存?2.除了使用tomcat-memshell-scanner.jsp,还有哪些方法可以检测Java内存?3.如何预防内存注入?</think>### Windows上使用tomcat-memshell-scanner.jsp指南 #### 工具简介 `tomcat-memshell-scanner.jsp` 是检测Tomcat内存的专用工具[^2],通过扫描内存中的恶意Filter/Servlet/Listener等组件,识别无文件Webshell。项目地址:https://github.com/c0ny1/java-memshell-scanner --- #### 使用步骤 1. **下载工具** - 访问GitHub项目 → 下载`jsp`目录中的扫描脚本 - 或直接下载:[tomcat-memshell-scanner.jsp](https://raw.githubusercontent.com/c0ny1/java-memshell-scanner/master/jsp/tomcat-memshell-scanner.jsp) 2. **部署脚本** ```powershell # 将脚本放入Tomcat的web应用目录(如ROOT) copy tomcat-memshell-scanner.jsp C:\apache-tomcat-9.0\webapps\ROOT\ ``` 3. **访问扫描页面** - 浏览器打开:`http://localhost:8080/tomcat-memshell-scanner.jsp` - 显示扫描界面: ![扫描界面示例](https://github.com/c0ny1/java-memshell-scanner/raw/master/images/en_index.png) 4. **执行扫描** - 点击`Scan`按钮启动检测 - 检测内容: - 恶意Filter链 - 动态注册的Servlet - 异常Listener - 内存特征(如哥斯拉/冰蝎等) 5. **结果解读** - **红色条目**:高风险内存 - **黄色条目**:可疑组件 - 关键字段: - `Class Name`:恶意类名 - `Pattern`:匹配的内存特征 - `Risk Level`:风险等级 6. **清除内存** ```powershell # 必须重启Tomcat服务才能清除内存驻留 net stop Tomcat9 && net start Tomcat9 ``` --- #### 注意事项 1. **权限要求** - 脚本需在Tomcat进程用户权限下运行 - 若遇权限错误,修改`catalina.policy`添加: ```java grant codeBase "file:${catalina.base}/webapps/ROOT/-" { permission java.security.AllPermission; }; ``` 2. **误报处理** - 排除已知安全组件(如Shiro): ```java // 修改源码中的检测规则 excludePatterns.add("org.apache.shiro."); ``` 3. **替代方案** - 河内存查杀工具(Windows版):[下载链接](https://dl.shellpub.com/hmws/1.2.0/hmws-1.2.0.zip)[^2] - copagent工具:[项目地址](https://github.com/ofmkms/copagent) --- #### 检测原理 通过反射获取`ApplicationContext`的`filterMaps`和`filterConfigs`,比对已知内存特征: ```java Field filterMaps = context.getClass().getDeclaredField("filterMaps"); filterMaps.setAccessible(true); List<FilterMap> filterMapList = (List<FilterMap>) filterMaps.get(context); ``` 特征库包含哥斯拉/冰蝎等常见内存的类名、方法签名和字节码模式[^3]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值