0
点赞
收藏
分享

微信扫一扫

Tomcat Filter 类型内存马与查杀学习(4)


原理

•  利⽤ Java Agent 技术遍历所有已经加载到内存中的 class 先判断是否是内存⻢,是则进⼊内存查杀

Tomcat Filter 类型内存马与查杀学习(4)_java

•  访问时抛异常 (或跳过调⽤),中断此次调⽤

•  从系统中移除该对象

排查方式

• 如果是 jsp 注⼊ ⽇志中排查可疑 jsp 的访问请求

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

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

洞。

•  如果是 servlet 或者 spring 的 controller 类型,根据上报的 webshell 的 url 查找⽇志(⽇志可能被关闭,不⼀定

有),根据 url 最早访问时间确定被注⼊时间。

•  如果是 filter 或者 listener 类型,可能会有较多的 404 但是带有参数的请求,或者⼤量请求不同 url 但带有相同的参

数,或者⻚⾯并不存在但返回 200

查杀方式

可以使⽤哥斯拉,冰蝎,或者上⽂提到的内存⻢进⾏⼀个⽣成,然后再进⾏查杀。

1. VisualVM(远程调试)

VisualVM 是⼀个集成多个 JDK 命令⾏⼯具的可视化⼯具。可以作为 Java 应⽤程序性能分析和运⾏监控的⼯具。开发人员可以利⽤它来监控、分析线程信息,浏览内存堆数据。系统管理员可以利⽤它来监测、控制 Java 应⽤程序横跨整个网络的情况。

Tomcat Filter 类型内存马与查杀学习(4)_java_02

通过图形化进⾏界⾯审计

2. arthas

arthas 是 Alibaba 开源的 Java 诊断⼯具 https://github.com/alibaba/arthas

Tomcat Filter 类型内存马与查杀学习(4)_java_03

是⼀个⽐较好⽤的 java 应⽤检测⼯具,了解⽂档可以从这⾥ https://arthas.aliyun.com/zh-cn/

mbean(查看 Mbean 的信息,查看异常 Filter/Servlet 节点)

mbean | grep "Servlet"

Tomcat Filter 类型内存马与查杀学习(4)_Java_04

dashboard(显示当前⾯板的实时状态)

Tomcat Filter 类型内存马与查杀学习(4)_github_05

jad(反编译指定已加载类的源码)

Tomcat Filter 类型内存马与查杀学习(4)_免杀马_06

sc 对 jvm 已经加载的类进⾏搜索

Tomcat Filter 类型内存马与查杀学习(4)_github_07

3. Copagent

这个项⽬是上⾯的改进版本,直接可以确定⻛险等级,并且将内存中的信息全部输出。项目地址:https://github.com/LandGrey/copagent 试了⼀下,只有 jdk1.8 能够运行,之后会⽣成⼀个. copagent,⾥⾯有扫描结果。

Tomcat Filter 类型内存马与查杀学习(4)_java_08

Tomcat Filter 类型内存马与查杀学习(4)_java_09

在 result ⾥⾯可以查看结果,展示详细信息

Tomcat Filter 类型内存马与查杀学习(4)_Java_10

根据⻛险等级判断

Tomcat Filter 类型内存马与查杀学习(4)_github_11

在相关 class ⽂件⾥查找这个包

Tomcat Filter 类型内存马与查杀学习(4)_Java_12

代码可以在相关 java 文件里找到

Tomcat Filter 类型内存马与查杀学习(4)_github_13

4. java-memshell-scanner

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

通过 jsp 脚本扫描并查杀各类中间件内存⻢比 Java agent 要温和⼀些

Tomcat Filter 类型内存马与查杀学习(4)_Java_14

举报

相关推荐

0 条评论