蓝队技能-应急响应篇&Web内存马查杀&Spring框架型&中间件型&JVM分析&Class提取

知识点:
1、应急响应-Web框架内存马-分析&清除
2、应急响应-Web中间件内存马-分析&清除

注:框架型内存马与中间件内存马只要网站重启后就清除了。
在这里插入图片描述

目前Java内存马具体分类:

1、传统Web应用型内存马

Servlet型内存马:动态注册Servlet及映射路由。

Filter型内存马:动态注册Filter及映射路由。

Listener型内存马:动态注册Listener中的处理逻辑。

哥斯拉是不支持植入Listener型内存马,这里可以用https://github.com/pen4uin/java-memshell-generator项目去生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、框架型内存马

SpringController型内存马:动态注册Controller及映射路由。

SpringInterceptor型内存马:动态注册Interceptor及映射路由。

Spring框架启动(Controller型内存马和Interceptor型内存马)
d:\jdk1.8.0_112\bin\java.exe -jar springinject-0.0.1-SNAPSHOT.jar(已经打包好的内存马环境,也是访问某个路径注入内存马)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用只能使用arthas监控工具排查
在这里插入图片描述

sc * | grep Controller

在这里插入图片描述

sc * | grep Interceptor

在这里插入图片描述

jad --source-only com.example.springinject.demos.web.myInjectController3

在这里插入图片描述

jad --source-only com.example.springinject.demos.web.testInjectInterceptor

在这里插入图片描述
清除:
Jar包中删除对应class文件
在这里插入图片描述
在这里插入图片描述

Spring Webflux型内存马:动态注册WebFilter及映射路由。

Spring WebFlux框架启动(Webflux型内存马)
d:\jdk1.8.0_112\bin\java.exe -jar WebFluxMem-0.0.1-SNAPSHOT.jar(已经打包好的内存马环境,直接运行这个jar文件就直接注入了,任意路由)
在这里插入图片描述
在这里插入图片描述
arthas使用语法:
关键字筛选 常规shell触发代码关键字

memshell shell os runtime
sc * | grep Memshell

在这里插入图片描述

jad --source-only com.example.webfluxmem.WebFluxFilterMemshell

在这里插入图片描述

3、中间件型内存马

Tomcat Valve型内存马:动态注册Valve。

哥斯拉不支持该类型内存马植入,只能用脚本方式植入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Tomcat其他类型(如Upgrade、Executor、Poller)的内存马

这些内存马会动态替换或添加全局组件。

4、其他中间件(如Grizzly)的内存马(未讲到)

动态注册Filter及映射路由。其他内存马:

WebSocket型内存马:动态注册WebSocket路由及处理逻辑。

Tomcat JSP型内存马:动态注册Tomcat JSP管理逻辑并实现驻留。

线程型内存马:启动一个无法被杀死的线程。

RMI型内存马:动态启动一个RMI Registry。

5、Agent型内存马(未讲到)

通过Hook并修改关键方法添加恶意逻辑。Agent型内存马在现代webshell管理工具中有广泛实现。

6、检测项目

项目1:arthas(实时监控提取方便调试,需要自行排查找到可疑类)

能排查几乎所有内存马技术
https://github.com/alibaba/arthas

d:\jdk1.8.0_112\bin\java.exe -jar arthas-boot.jar

项目2:shell-analyzer(自动提取需要自己排查)

https://github.com/4ra1n/shell-analyzer
能排查:Filter,Servlet,Listener,Valve类型

项目3:java-memshell-scanner(自动提取排查)

https://github.com/c0ny1/java-memshell-scanner
能排查:Filter,Servlet,Listener类型

7、蓝队内存马大概排查思路

1、弄清楚当前环境的组织架构:中间件 框架等
2、对应查找可能类型的内存马技术
如:框架 springboot
3、基于上述信息想到用何种项目工具便于分析
如:项目 arthas (gui 脚本其他项目不支持)

注意:
不同内存马类型查杀arthas检测:有的是基于内存马固定的后缀,名字,文件中的常见关键字去找到可疑类然后去定性

上一篇:new一个对象背后发生了什么?


下一篇:Python | Leetcode Python题解之第440题字典序的第K小数字-题解: