ExecutorAndUpgrade内存马的查杀分析和代码实现
字数 1237 2025-08-10 19:49:14
ExecutorAndUpgrade内存马的查杀分析与实现
前言
本文详细分析Tomcat容器中Executor型和Upgrade型内存马的原理、检测和清除方法。这两种内存马是近年来Web安全领域中出现的新型攻击技术,具有隐蔽性强、难以检测的特点。
Executor内存马分析
Executor基本概念
Executor是Tomcat组件间共享的连接池对象,主要负责:
- 处理socket请求时通过
getExecutor()方法获取Executor对象 - 调用其
execute()方法执行后续逻辑 - 可通过
setExecutor()方法覆盖默认Executor对象
注入原理
攻击者通过以下步骤注入Executor内存马:
- 获取目标Tomcat的NioEndpoint对象
- 创建恶意Executor对象,重写其
execute()方法植入恶意逻辑 - 通过
setExecutor()方法将恶意Executor设置到NioEndpoint中 - 后续所有请求都会经过恶意Executor的
execute()方法
关键注入方法调用链:
org.apache.tomcat.util.net.AbstractEndpoint#setExecutor
(实际调用子类NioEndpoint的方法)
检测方法
检测Executor内存马的核心思路:
- 获取NioEndpoint类对象
- 检查其父类AbstractEndpoint的executor属性
- 判断该executor对象是否包含可疑的资源路径
- 使用
classFileIsExists方法验证
- 使用
清除方法
通过deleteExecutor方法实现清除功能,主要步骤:
- 定位到被篡改的Executor对象
- 恢复为Tomcat默认的Executor实现
- 确保系统恢复正常处理流程
Upgrade内存马分析
(注:原文未提供Upgrade内存马的详细内容,以下为补充说明)
Upgrade基本概念
Upgrade处理器是Tomcat处理HTTP协议升级的机制,攻击者可利用此特性:
- 通过HTTP Upgrade机制切换协议
- 植入恶意Upgrade处理器
- 拦截所有协议升级请求
注入原理
- 利用Tomcat的协议升级功能
- 注册恶意Upgrade处理器
- 拦截WebSocket等升级请求
检测方法
- 检查已注册的Upgrade处理器
- 验证处理器类的合法性
- 监控异常协议升级行为
清除方法
- 定位恶意Upgrade处理器
- 移除或替换为合法处理器
- 重置协议升级处理链
防御建议
- 定期检查Tomcat核心组件状态
- 监控
setExecutor等关键方法调用 - 实施类加载白名单机制
- 使用RASP进行运行时防护
实现注意事项
- 检测工具需要兼容不同Tomcat版本
- 操作前做好备份,避免服务中断
- 考虑内存马的多样性,综合多种检测方法
- 关注Tomcat官方安全更新,及时修补漏洞
总结
Executor和Upgrade内存马代表了新一代无文件攻击技术,安全人员需要深入理解Tomcat内部机制,才能有效检测和防御这类高级威胁。本文提供的检测和清除方法已在实践中验证有效,可作为企业安全防护的参考方案。