中了内存马如何排查(不死马)

源码检测

java中,只有被JVM加载后的类才能被调用,或者在需要时通过反射通知JVM加载。所以特征 都在内存中,表现形式为被加载的class,可以通过一些工具或方法获取到JVM的运行时内存 中已加载的类, Java本身提供了Instrumentation类来实现运行时注入代码并执行,所以我么可以筛选条件组合进行检测:

①新增的或修改的;

②没有对应class文件的

③xml配置中没注册的

④冰蝎等常见工具使用的

⑤filterchain中排第一的filter类

还有一些比较弱的特征可以用来辅助检测,比如类名称中包含shell或者为随机名,使用不常 见的classloader加载的类

另外,有一些工具可以辅助检测内存马,如[java-memshell-scanner] (https://github.com/c0ny1/java-memshell-scanner)是通过jsp扫描应用中所有

的filter和servlet,然后通过名称、对应的class是否存在来判断是否是内存马

如果是jsp注入,日志中排查可疑jsp的访问请求。

如果是代码执行漏洞,排查中间件的error.log,查看是否有可疑的报错,判断注入时间和方 法

根据业务使用的组件排查是否可能存在java代码执行漏洞以及是否存在过webshell,排查框 架漏洞,反序列化漏洞。

如果是servlet或者spring的controller类型,根据上报的webshell的url查找日志

(日志可能被关闭,不一定有),根据url最早访问时间确定被注入时间

如果是filter或者listener类型,可能会有较多的404但是带有参数的请求,或者大量请求 不同url但带有相同的参数,或者页面并不存在但返回200

相关推荐
Suckerbin15 分钟前
Basic Pentesting: 1靶场渗透
笔记·安全·web安全·网络安全
草莓熊Lotso39 分钟前
PyCharm 从入门到高效:安装教程 + 快捷键速查表
开发语言·ide·经验分享·笔记·其他
一位搞嵌入式的 genius1 小时前
ES6 核心特性详解:从变量声明到函数参数优化
前端·笔记·学习
序属秋秋秋1 小时前
《C++进阶之STL》【set/map 使用介绍】
开发语言·c++·笔记·leetcode·stl·set·map
肥肠可耐的西西公主2 小时前
后端(fastAPI)学习笔记(CLASS 1):扩展基础
笔记·学习·fastapi
程序员Xu10 小时前
【LeetCode热题100道笔记】二叉树的右视图
笔记·算法·leetcode
程序员Xu11 小时前
【LeetCode热题100道笔记】二叉搜索树中第 K 小的元素
笔记·算法·leetcode
DKPT11 小时前
JVM中如何调优新生代和老生代?
java·jvm·笔记·学习·spring
我真的是大笨蛋14 小时前
K8S-基础架构
笔记·云原生·容器·kubernetes
程序员Xu17 小时前
【LeetCode热题100道笔记】腐烂的橘子
笔记·算法·leetcode