应急响应-传统Web内存马查杀

admin 2025年4月20日23:03:11评论13 views字数 2363阅读7分52秒阅读模式

内存马是什么

在Web安全领域,Webshell一直是一个非常重要且热门的话题。在目前传统安全领域,Webshell根据功能的不同分为三种类型,分别是:一句话木马,小马,大马。而根据现在防火墙技术的更新迭代,随后出现了加密的木马技术,比如:加密一句话。而我们今天要说的是一种新的无文件的Webshell类型:内存马

发展由来

由于近几年防火墙,IDS,IPS,流量分析等各种安全设备的普及和更新,这种传统连接方式非常容易被设备捕获拦截,而且由于文件是明文存放在服务器端,所以又很容易被杀毒软件所查杀。在今天看来这种传统连接方式显然已经过时,于是乎,进化了一系列的加密一句话木马,但是这种方式还是不能绕过有类似文件监控的杀毒软件,于是乎进化了新一代的Webshell --->内存马

内存马原理

内存马是无文件Webshell,什么是无文件webshell呢?

简单来说,就是服务器上不会存在需要链接的webshell脚本文件。

这种方式为什么能链接呢?内存马的原理就像是MVC架构,即通过路由访问控制器

内存马的原理就是在web组件或者应用程序中,注册一层访问路由,访问者通过这层路由,来执行我们控制器中的代码

内存马类型

  1. 1. PHP
  2. 2. Java
  3. 3. Python
  4. 4. ASPX

传统Java内存马查杀

在内存马的家族中,Java内存马是目前涉及面最广技巧最多,方式最多的,所以我们这篇着重讲一下Java内存马在Tomcat中间件中的查杀,像是Spring框架有着跟Tomcat不一样的内存马,所以我们分开讲。

哥斯拉注入内存马

首先启动一个Tomcat环境,然后让哥斯拉来注入内存马

应急响应-传统Web内存马查杀

内存注入之后是不存在文件的,仅有一个路由,它是无文件落地的。

那么怎么查杀内存马呢?这时候我们可以利用一些别人写好的脚本来进行查杀

https://github.com/c0ny1/java-memshell-scanner/tree/master

将对应的scanner.jsp放到网站目录下,进行访问

应急响应-传统Web内存马查杀
应急响应-传统Web内存马查杀

可以看到当我们注入内存马之后,这边是检测到了没有对应的文件,我们去目录看下

应急响应-传统Web内存马查杀

同样也是没有对应的文件存在的,直接通过哥斯拉连接内存马

应急响应-传统Web内存马查杀

通过脚本清除内存马

脚本提示我们这个路由可能是内存马,通过脚本kill这两个路由

应急响应-传统Web内存马查杀

可以看到哥斯拉无法连接了

应急响应-传统Web内存马查杀

通过Java诊断利器 Arthas分析定性内存马

GitHub - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas[1]

Arthas为一款监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息。

可使用该工具对内存马排查和分析,如攻击者隐藏的深的话,可将所有的类都反编译导出来然后逐一排查。

java -jar arthas-boot.jar
应急响应-传统Web内存马查杀

可以看到一个是哥斯拉的进程,另一个就是Tomcat中间件在运行,我们当然选择分析Tomcat了

应急响应-传统Web内存马查杀

查看URL路由

mbean | grep "name=/"
应急响应-传统Web内存马查杀

sc查看JVM 已加载的类信息

sc *.Filter
sc *.Servlet
应急响应-传统Web内存马查杀
应急响应-传统Web内存马查杀

那这么多类我们要怎么分析出哪一个是内存马呢?

通过对这些类的搜索,可以初步判断哪些可信,哪些不可信

应急响应-传统Web内存马查杀
应急响应-传统Web内存马查杀

那么我们如何进一步定性这个类是内存马呢?

dump类反编译定性内存马

dump org.apache.coyote.ext.Java7Support
应急响应-传统Web内存马查杀

这时候就得通过dump文件来进行分析了,dump出来的是class文件,我们通过IDEA打开即可获取到反编译版本的代码,这时候如果你的代码功底比较扎实的话,你就可以进行审计判断。

应急响应-传统Web内存马查杀

那可能你的代码功底不是很扎实该咋办?

保存代码为.java文件上传微步即可

应急响应-传统Web内存马查杀

补充:jad在线反编译类

jad --source-only org.apache.coyote.ext.Java7Support
应急响应-传统Web内存马查杀

补充:通过web日志进行分析

查看中间件的日志,如果存在请求那种没有具体文件的路由,但是返回值或者返回长度过长的请求包,那么就有可能是注入内存马的路由

使用脚本或者工具清除内存马

使用我们前面提到的scanner.jsp脚本清除内存马

应急响应-传统Web内存马查杀

或者这个综合工具进行清除

GitHub - 4ra1n/shell-analyzer: 通过 JAVA AGENT 查杀内存马,提供简易方便的 GUI 界面,一键反编译目标环境内存马进行分析,支持远程查杀和本地查杀(注意:仅供本地复现分析学习,请勿用于正式和生产环境)[2]

应急响应-传统Web内存马查杀

通过选中双击即可反编译

应急响应-传统Web内存马查杀
应急响应-传统Web内存马查杀
应急响应-传统Web内存马查杀
应急响应-传统Web内存马查杀

Listener内存马

Listener内存马无法通过哥斯拉直接植入,因为哥斯拉不支持这种类型的内存马植入,所以我们得通过其他方式来植入Listener内存马。

应急响应-传统Web内存马查杀
应急响应-传统Web内存马查杀

遇到这种内存马通过上面的scanner.jsp脚本可以进行清除,同时通过GUI图形化界面也可以进行清除

应急响应-传统Web内存马查杀

还有我们的内存分析工具Arthas也可以进行定性

sc * | grep Listener
jad --source-only ch.qos.logback.ServletRequestWhnListener
应急响应-传统Web内存马查杀

引用链接

[1]GitHub - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas:https://github.com/alibaba/arthas
[2]GitHub - 4ra1n/shell-analyzer: 通过 JAVA AGENT 查杀内存马,提供简易方便的 GUI 界面,一键反编译目标环境内存马进行分析,支持远程查杀和本地查杀(注意:仅供本地复现分析学习,请勿用于正式和生产环境):https://github.com/4ra1n/shell-analyzer

原文始发于微信公众号(ElmWhite安全小记):应急响应-传统Web内存马查杀

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月20日23:03:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   应急响应-传统Web内存马查杀https://cn-sec.com/archives/3979333.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息