内存马

内存马(Memory Webshell) —— 不落地文件、直接驻留 JVM 内存的持久化后门。本知识库从原理到实战、从攻击到检测,系统覆盖 Java 内存马的全部技术栈。


知识全景图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
                    ┌──────────────┐
│ 前置知识 │
│ Servlet·反射 │
│ Tomcat·类加载 │
└──────┬───────┘

┌──────┴───────┐
│ 内存马概述 │
│ 分类·对比 │
└──────┬───────┘

┌───────────────┬───────┴────────┬────────────────┐
↓ ↓ ↓ ↓
┌────────────┐ ┌────────────┐ ┌─────────────┐ ┌────────────┐
│ Servlet 型 │ │ Valve/WS型 │ │ Spring 型 │ │ Agent 型 │
│Filter/Srvlt│ │Valve/WebSkt│ │Ctrl/Intrcpt │ │字节码修改 │
/Listener │ │ /Upgrade │ │ │ │ │
└─────┬──────┘ └─────┬──────┘ └──────┬──────┘ └──────┬─────┘
└───────────────┴────────────────┴────────────────┘

┌────────────┼─────────────┐
↓ ↓ ↓
┌────────────┐ ┌─────────┐ ┌──────────────┐
│反序列化组合 │ │通信加密 │ │ 工具类/调试 │
│CC/Shiro/ │ │冰蝎/哥斯│ │ 工具方法集 │
│Fastjson │ │拉/隧道 │ │ │
└─────┬──────┘ └────┬────┘ └──────┬───────┘
└─────────────┼─────────────┘
┌────────────┼────────────┐
↓ ↓ ↓
┌────────────┐ ┌──────────┐ ┌──────────────┐
│ 检测与防御 │ │中间件适配│ │持久化与实战 │
│RASP/Arthas │ │Jetty/WL │ │ 全流程串联 │
│攻防对抗 │ │JDK高版本 │ │ │
└────────────┘ └──────────┘ └──────────────┘

章节导航

基础篇

00-前置知识 — Servlet 规范三大组件、Tomcat 内部架构、Java 反射与类加载机制

01-内存马概述 — 6 大分类体系、各类型对比矩阵、注入前提条件与生命周期

注入技术篇

02-Servlet型内存马核心章节 Filter/Servlet/Listener 型,5 步注入详解,无 request 获取 Context

02.5-Valve与WebSocket型 — Tomcat Valve 管道、WebSocket 长连接马、Upgrade 自定义协议

03-Spring型内存马 — Controller 动态路由注册、Interceptor 拦截器注入、Spring 环境选型

04-Agent型内存马 — Instrumentation API、Javassist/ASM 字节码修改、Attach 与无文件加载

实战组合篇

05-反序列化与内存马 — TemplatesImpl 加载、CC/CB 利用链、Shiro/Fastjson/Log4j 场景

07-通信加密与隧道 — 冰蝎 AES 协议、哥斯拉定制加密、suo5 全双工隧道、流量伪装

进阶篇

08-中间件差异与高版本JDK — Jetty/Undertow/WebLogic 适配、JDK 9-17 模块系统绕过、Jakarta 命名空间

09-持久化与实战串联 — premain/SPI/WAR 持久化、Shiro/Fastjson/Log4j 全流程、卸载与清理

附录A-工具方法与调试 — getFieldValue 等通用工具方法、完整 AES 加解密实现、调试排错指南

防御篇

06-检测与防御 — 四维检测体系、Arthas 实战、RASP 原理、攻防对抗矩阵


靶场环境

位置/Users/lucy/Desktop/AI/内存马/lab/vulnerable-app/

启动cd lab/vulnerable-app && mvn spring-boot:run

依赖:JDK 8 + Maven 3.6+(建议同时装 JDK 17 用于第8章实验)

接口速查

接口 用途
POST /api/inject/filter 注入 Filter 型内存马
POST /api/inject/servlet 注入 Servlet 型内存马
POST /api/inject/listener 注入 Listener 型内存马
POST /api/inject/spring/controller 注入 Controller 型内存马
POST /api/inject/spring/interceptor 注入 Interceptor 型内存马
GET /api/status 查看所有已注册组件(检测用)
POST /api/deserialize/java Java 反序列化入口
POST /api/deserialize/fastjson Fastjson 解析入口

学习建议

入门路线(1-2 周):第0章 → 第1章 → 第2章 → 靶场实验

进阶路线(2-4 周):+ 第2.5章 → 第3章 → 第4章 → 第5章

实战路线(4-6 周):+ 第7章 → 第8章 → 第9章 → 附录A

防御路线(贯穿始终):第6章配合每个攻击章节对照学习


下一章
00-前置知识