小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五)

news2024/12/23 13:07:18

由于 Web 应用程序的复杂性和重要性, 导致其成为网络攻击的主要目标之一。攻击者在入侵一个网站后, 通常会植入一个 Webshell, 来持久化控制网站。但随着攻防双方的博弈, 各种检测技术、终端安全产品被广泛应用, 使得传统的以文件形式驻留的 Webshell 越来越容易被检测到, 内存型 Webshell 成为新的趋势。本文面向 Java 应用程序, 总结内存型 Webshell 的特征和原理, 构建内存型Webshell 威胁模型, 定义了高对抗内存型 Webshell, 并提出一种基于RASP(Runtime application self-protection, 运行时应用程序自我保护)的动静态结合的高对抗内存型 Webshell 检测技术。实验表明, 与其他检测工具相比, 本文方法检测内存型 Webshell 效果最佳, 准确率为 96.45%, 性能消耗为 7.74%,具有可行性, 并且根据检测结果可以准确定位到内存型Webshell 的位置。 

       

目录

5 实验与分析

5.1 实验环境与数据

 5.2 检测能力分析

5.3 案例分析

5.4 性能分析

6 总结与展望


5 实验与分析

通过内存型 Webshell 请求和正常请求对本文提出的基于 RASP 动静态结合的高对抗内存型Webshell 检测方法进行评估。从准确率、精确率、召回率、F1 值 4 个指标评估本文方法的检测能力, 并结合实际利用场景对两种类型 Webshell 的检测结果分析, 从时间开销和资源消耗两方面评估本文方法的检测性能, 最后对检测方法进行讨论。

5.1 实验环境与数据

测试环境使用 1 台服务器, 操作系统为 Ubuntu 20.04, 配置为双核处理器和 16G 内存。

实验采取的数据集来自于 GitHub 上的样本, 以及 Webshell 的管理工具, 例如冰蝎、哥斯拉等。样本覆盖组件类和Agent类的内存型Webshell, 组件类包括 Filter、Servlet、Listener、Valve、Controller、Interceptor 等。部分数据集来源如表 7 所示。

 5.2 检测能力分析

实验对正常请求和内存型 Webshell 的请求分别测试。内存型 Webshell 请求分为两部分, 分别对其注入过程和利用过程进行测试。组件类是实时检测, 能够检测注入过程, Webshell 注入成功后会被再次访问, 所以包含注入过程和利用过程两部分。Agent 类是静态检测, 只包含利用过程。注入过程包括组件类的 31个样本, 利用过程包括组件类和Agent类的全部样本,共 40 个, 目前 Agent 样本比较少, 实验数据共 9 条。内存型Webshell共71个样本; 正常请求共70个样本,如表 8 所示。本次实验对 Tomcat 容器、Spring 框架、Weblogic 容器进行了测试。

准确率表示检测正确的结果占总样本的百分比,即预测正确的概率, 计算公式如下:

精确率是检测为 Webshell 的样本中实际为Webshell 的概率, 表示对 Webshell 检测的准确程度,计算公式如下:

召回率是实际为 Webshell 的样本中被检测为Webshell 的概率, 计算公式如下:

Precision和Recall都越高越好, 但两者是一对矛盾的度量, F 1 值是 Precision 和 Recall 的一种调和平均, 同时权衡这两个指标, F 1 值越高越好。计算公式如下:

 

通过对 71 个 Webshell 和 70 个正常请求的测试 ,4 个工具的检测结果如表 9 所示。

OpenRASP 是基于 RASP 的动态检测工具 , 目前只能在程序启动时指定 Java Agent 以 premain 的方式对程序进行检测 , 在程序运行时无法嵌入检测程序 ,因此运行时如果检测需要重启服务。该工具对于 Listener 、 Valve 组件的命令执行后的利用过程也检测不到 , 准确率和召回率较低。该工具只能通过触发后门的方式拦截并报警 , 本文将该工具对内存型Webshell 攻击的拦截报警认为是检测到了内存型Webshell, 因此精确率为 100% 。该工具只收集了目标程序的运行时信息 , 无法定位到存在后门的类。 F1值也较低。

Copagent 是一款基于规则匹配的静态检测工具。该工具无法对目标程序实时检测 ,无法对内存型 Webshell 的注入过程进行检测。该工具设定的字符串匹配比较单一 , 只针对 Webshell 常使用的字符串 , 所以精确率高。但设定的规则比较简单 , 无法检测到 Controller 、 Interceptor 、 Valve 类的内存型 Webshell, 并且实验可以绕过该工具匹配的字符串 , 该工具无法检测高对抗内存型 Webshell, 准确率、召回率、 F1 值都比较低。

5.3 案例分析

搭建内存型 Webshell 实际利用场景 , 分析本文检测方法对组件类和 Agent 类 Webshell 后门的检测过程案例分析。搭建反序列化漏洞的 Web 服务 , 测试对组件类内存型 Webshell 的检测过程 ; 搭建任意文件上传漏洞的 Web 服务 , 测试对 Agent 类内存型 Webshell 的检测过程。

(1) 组件类内存型 Webshell
搭建 Tomcat 环境和 Shiro 框架 , 利用 Shiro 的反序化漏洞注入组件类内存型 Webshell 。首先使用Shiro_Attack 工具 [39] 爆破密钥 , 然后使用反序列化攻击解除 Shiro 对 header 的长度限制 , 之后选择一个Filter 类内存型 Webshell, 对其进行序列化、 AES 加密、 base64 编码 , 最后将其作为 cookie 的字段值发送到目标应用程序中。

内存型 Webshell 调用的注册组件函数是 org.apache.catalina.core. Applica-tion-Context@addFilter, 注 册 的 组 件 类 名 为com.shiro.vu-ln.Controller.TomcatMemShellInject,Webshell 注入过程中的调用栈信息如图 9 所示。

(2) Agent 类内存型 WebShell
搭建 Tomcat 任意文件上传漏洞的测试环境 , 改造冰蝎中的 Agent 内存型 Webshell, 并注入混淆的高对抗代码 , 通过冰蝎上传改造后的 jar 包 , 注入Webshell 后门。注入成功后 , 可以访问到 Webshell后门 , 并且磁盘上不存在该文件。

用本文检测方法防御后 , 成功检测到被内存型Webshell 修改的系统类并发送邮件。结果显示内存型Webshell 存在的类是 org.apache.jasper.servlet.Jsp-ervlet, 高危类是 javax/servlet/Servlet 接口。如图 10所示。

5.4 性能分析

因为动态检测方法是在应用程序运行时进行检测 , 为了不影响用户的正常访问 , 性能评估尤为重要。检测方法和OpenRASP 进行性能测试分析和对比。使用 Apache公司的 JMeter性能测试工具进行测试。以 Tomcat 服务作为实验环境 , 每次请求将执行 1000 次哈希计算操作 , 使系统响应时间更加接近实际的用户体验度。在没有任何安全防护的情况下 ,测试服务的平均响应时间 , 然后在服务上部署本文检测方法和 OpenRASP 后分别测试服务的平均响应时间。

设置 JMeter 的线程数为 2000, Ramp-up period 为60s, 来模拟 2000 个用户在 60s 内随机进行访问 , 将此过程循环 10 次 , 总体请求数为 20000 个。假如运行检测工具前后的平均响应时间分别是
T 1 、 T 2 , 则性能消耗的计算公式 T 如下所示。

检测结果如表 11 所示。检测工具运行前系统的平均响应时间是 1.55s, 本文检测方法运行后的平均
响应时间是 1.67s, 平均响应时间延迟 0.12, 性能消耗是 7.74%, 在可接受范围。 OpenRASP 运行后的平均响应时间是 1.98s, 平均响应时间延迟 0.43s, 性能消耗是 27.74%, 较为明显。

由于 Copagent 工具和某工具无法检测高对抗内存型 Webshell, 为了测试其静态检测能力 , 只对部分Agent 类内存型 Webshell 改造为高对抗内存型Webshell 进行测试。受限于内存型 Webshell 样本的稀缺 , 无法达到更全面的检测效果。

6 总结与展望

 对 Java 内存型 Webshell 进行了研究 , 分析两种类型的内存型 Webshell 原理 , 并提出高对抗内存型 Webshell 定义 , 设计了一种动静态相结合的方法检测高对抗内存型 Webshell 。从内存型 Webshell 的输入源、触发器、特征状态方面出发 ,利用 RASP 技术对输入源中的注册组件类函数 , 以及特权类函数进行监测 , 根据内存型 Webshell 的特性 , 针对不同的触发器场景分析 , 结合数据流分析技术进行动态检测 ; 针对攻击载荷改造的高对抗内存型 Webshell, 基于深度学习模型训练 , 进行静态文本特征的检测。对本文检测方法进行了实验评估 , 对71 个内存型 Webshell 样本和 70 正常样本进行测试 ,结果表明本文检测方法的准确率达到 96.45%, 性能消耗为 7.74%, 具有可行性。

下一步工作中 , 将完善针对 Java Web 内存型Webshell 的检测方案 , 本文检测方案中在内存型Webshell 注入过程中监测了注册组件类的函数 , 没有对内存型 Webshell 注入过程中的可利用漏洞处进行监测 , 后续将针对这部分内容进行补充 , 增加内存型 Webshell 在注入时的检测效率。另外研究其他语言 Web 服务的内存型 Webshell 检测技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/773040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【天梯赛集训】7.18习题集

目录 7-1 递归 递推 7-2 函数的递归调用 7-3 A010 递归练习1 7-4 A011 递归练习2 7-5 A012 递归练习3 7-6 PG009 循环与递归 7-7 计算Fibonacci数列—递归 7-8 整数转换为字符串 7-9 简单的归并 AC: 9 / 9 用时:1 h 4 min 递归专题。 7-1 递归 递推 #inc…

Go语言的发展历史

Go语言的Logo 作为程序员,我们每天会用到大量的编程语言,打开界面会碰到很多logo,在正式学习Go语言之前,我们先来了解一下Go语言的Logo。也就是它,下面这个动物,gopher [ˈɡoʊfər] ,囊地鼠,…

TinyKv流程梳理三

split流程 处理协程启动 func (bs *Raftstore) startWorkers(peers []*peer) {ctx : bs.ctxworkers : bs.workersrouter : bs.routerbs.wg.Add(2) // raftWorker, storeWorkerrw : newRaftWorker(ctx, router)go rw.run(bs.closeCh, bs.wg)sw : newStoreWorker(ctx, bs.store…

Java解决new date出现的时区问题(差8小时)

1、设置当前时区 SimpleDateFormat format new SimpleDateFormat("yyyy/MM/dd"); format.setTimeZone(TimeZone.getTimeZone("GMT8:00")); 2、设置全局时区 创建一个全局配置类,用于配置项目全局时区。 这样就不用专门在各个地方设置时区了…

2023年下半年软考高项考试时间及安排

信息系统项目管理师一般情况下分别于上半年5月份和下半年11月份考试,2023年信息系统项目管理师上半年考试时间为2023年5月27日,下半年考试时间为2023年11月4日。 信息系统项目管理师考试报名时间: 下半年8月左右开始,各地区时间不…

【npm】基于vite制作自己的npm包+ts【超详细】

前言 头脑一热想做自己的npm包,但是又无从下手,于是我找到了度娘…看着别人做挺简单,自己上手真难受。一路的坑。注意事项也挺多的,所以我特地详细介绍如何制作自己的npm包,并附上ts类型检测。提升用户体验感。 初次踩…

如何编写高质量的测试计划

1.1目的 简述本计划的目的,旨在说明各种测试阶段任务、人员分配和时间安排、工作规范等。 测试计划在策略和方法的高度说明如何计划、组织和管理测试项目。测试计划包含足够的信息使测试人员明白项目需要做什么是如何运作的。另外,清晰的文档结构能使任…

three.js学习2(基础)

目录 前言: 参考文档(gsap使用): 目标一、使物体移动、旋转 Ⅰ、设置时钟方式 Ⅱ、使用gsap 1、安装 2、引入使用 目标二、自适应 目标三、双击全屏或者退出全屏 前言: 上面学习了three.js在页面上的简单显示…

【Java项目实战-牛客社区】--idea maven配置

第一 IDEA集成Maven插件,并配置Maven 以下步骤中,重点关注红色方框的配置 第二 IDEA 创建 Maven 项目 步骤一:创建模块,选择Maven,点击Next 步骤二:填写模块名称,坐标信息,点击finis…

vue2 实现后台管理系统左侧菜单联动实现 tab根据路由切换联动内容,并支持移动端框架

效果图: pc端 移动端 由于代码比较多,我这里就不一一介绍了,可以去我的git上把项目拉下来 git地址https://gitee.com/Flechazo7/htglck.git 后台我是用node写的有需要的可以评论联系

EDM营销过时了?不,这才是跨境电商成功的最佳工具

根据最近的一项研究,电子邮件仍然是最具说服力的营销工具和沟通形式之一。虽然即时通讯等其他渠道正在扎根,但电子邮件仍然是影响最深远的商业交流形式。到2023年,每天发送和接收的电子邮件总数可能会超过333亿封。所以,如果您希望…

Tensorflow和Keras安装流程,jupyter无法使用keras解决方案

Tensorflow和Keras安装流程,jupyter无法使用keras解决方案 1.Base: anaconda https://www.anaconda.com/download 2.安装python3.8,Tensorflow2.13.0,Keras2.13.1 –创建conda环境-在Anaconda Prompt中输入命令, conda create -n tensorfl…

安森美深力科汽车空调自动控制方案,助力推动能效、安全、节能、环保

NCV4266-2CST50T3G 安森美深力科汽车空调自动控制方案,助力推动能效、安全、节能、环保 汽车智能化、自动驾驶、电动汽车/汽车功能电子化等趋势的推进正使汽车变得更加安全、舒适、环保和节能,是创新的关键。为自动驾驶、汽车功能电子化、传统动力总成…

[JavaScript游戏开发] 2D二维地图绘制、人物移动、障碍检测

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 文章目录 系列文章目录前言一、列计划1.1、目标1.2、步骤 二、使用步骤2.1、准备素材(图片):草坪、人物(熊猫)、障碍(石头)2.2、初始化布局(表格),边距设置为0,无边框,设…

ASFF Learning Spatial Fusion for Single-Shot Object Detection 论文学习

1. 解决了什么问题? 目标检测取得了显著成绩,但是检测不同尺度的目标仍然是一个挑战。金字塔或多层级特征是解决目标检测中尺度变化的常用手段。但对于单阶段目标检测器而言,各特征尺度之间不一致性制约了算法的表现。与图像金字塔相比&…

Java版知识付费源码 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台

知识付费平台主要指的是能够通过付费来满足用户知识需求的平台,用户可以通过该平台来消费知识或者开展知识买卖等行为。 此处的平台是一个广义的概念,可以是微信小程序或者论坛,也可以是网页或者手机APP,等,就我国的情…

新东方教育收入前景良好,估值低迷,股票回购令人失望

来源:猛兽财经 作者:猛兽财经 分析师对新东方的收入预测 考虑到新东方(EDU)的销售指引和卖方分析师的预测,猛兽财经认为,新东方目前的收入增长前景非常好。 根据其财务指引的中点,新东方预计其…

Mysql——》InnoDB内存结构和磁盘存储结构

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

options 预检测请求

文章目录 产生原因简单请求复杂请求携带了 cookie 情况 优化预检测请求 产生原因 在跨域的情况下,如果浏览器发送的是复杂请求,会先发送一个 OPTIONS 预检测请求,从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实…

认识Spring(1)

hi,大家好,今天继续为大家带来Spring的相关内容 文章目录 🧁1.理解Spring和IOC🧁2.DI和DF🍸2.1什么是DI🍸2.2什么是DF🍸2.3DI和DF的区别 🧁3 Spring创建和使用🍸3.1创建Spring项目&#x1f361…