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

这篇具有很好参考价值的文章主要介绍了小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

由于 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 所示。

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

 5.2 检测能力分析

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

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

准确率表示检测正确的结果占总样本的百分比,即预测正确的概率, 计算公式如下:
小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

精确率是检测为 Webshell 的样本中实际为Webshell 的概率, 表示对 Webshell 检测的准确程度,计算公式如下:
小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

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

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

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

 小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

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

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

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 所示。

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

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

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

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

5.4 性能分析

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

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

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

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

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五),# 小研报,java,开发语言,Webshell,RASP,动态检测,静态检测,内存型

由于 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 检测技术。文章来源地址https://www.toymoban.com/news/detail-596677.html

到了这里,关于小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VBAC多层防火墙技术的研究-状态检测

    黑客技术的提升和黑客工具的泛滥,造成大量的企业、机构和个人的电脑系统遭受程度不同的入侵和攻击,或面临随时被攻击的危险。迫使大家不得不加强对自身电脑网络系统的安全防护,根据系统管理者设定的安全规则把守企业网络,提供强大的、应用选通、信息过滤、流

    2024年02月15日
    浏览(54)
  • Java面向对象思想以及原理以及内存图解

    面向过程 :面向过程是将解决问题的思路转为一个个方法。 面向对象 :面向对象则是编写一个对象,将这些思路封装成一个个对象方法,后续调用这个对象解决问题,相对面向过程而言,这种思路更符合人的思维并且更易扩展、复用、维护。 面向对象和面向过程性能差距:人们

    2024年02月04日
    浏览(19)
  • 【应急响应】网站入侵篡改指南&Webshell内存马查杀&漏洞排查&时间分析

    应急响应: 1、抗拒绝服务攻击防范应对指南 2、勒索软件防范应对指南 3、钓鱼邮件攻击防范应对指南 4、网页篡改与后门攻击防范应对指南 5、网络安全漏洞防范应对指南 6、大规模数据泄露防范应对指南 7、僵尸网络感染防范应对指南 8、APT攻击入侵防范应对指南 9、各种辅

    2024年01月20日
    浏览(19)
  • 【Java基础教程】(七)面向对象篇 · 第一讲:上干货!面向对象的特性、类与对象、内存结构引用分析、垃圾收集器 GC处理、封装性详解、构造方法、匿名对象、简单 Java 类~

    程序是将数据和逻辑封装在一起的代码段。在Java中,方法是常用的代码段封装方式。然而,在Java中,方法必须存在于一个类中才能使用。因此,我们将进入本章的核心内容——面向对象编程。 利用面向对象设计的程序可以实现代码的重用,并方便开发者进行项目维护。面向

    2024年02月13日
    浏览(17)
  • 图神经网络对抗攻击的研究学习(一)

    由于深度神经网络强大的表示学习能力,近几年它在许多领域都取得了很大的成功,包括计算机视觉、自然语言处理、语音识别等。然而,在其卓越性能的背后,深度神经网络作为一个黑箱,缺乏可解释性与鲁棒性,使得它易受到对抗攻击。Szegedy等人在中首次指出了图像识别

    2024年02月02日
    浏览(17)
  • ATLAS——对抗性机器学习威胁矩阵<案例研究二>

    actic: AML.TA0007 technique: AML.T0015   突变技术可以规避几乎所有的 DGA 检测,不仅限于本例中所示的基于 CNN 的 DGA 检测。如果攻击者将其添加到现有 DGA 之上,则大多数 DGA 检测可能会失败。使用这种技术变异的 DGA 生成的域名成功地避开了目标 DGA 检测模型,允许攻击者继续与

    2024年04月14日
    浏览(20)
  • 0829【综述】面向时空数据的区块链研究综述

    摘要: 时空数据包括时间和空间2个维度,常被应用于物流、供应链等领域。传统的集中式存储方式虽然具有一定的便捷性,但不能充分满足时空数据存储及查询等要求,而区块链技术采用去中心化的分布式存储机制,并通过共识协议来保证数据的安全性。研究现有区块链1.0、2.0和以

    2024年02月10日
    浏览(13)
  • [JAVA安全webshell]冰蝎jsp木马分析

    只是分享一下对冰蝎webshell分析的一个学习过程,冰蝎webshell使用了加载字节码的方式执行恶意代码。 首先打开webshell 这么一行实在不好看,先把他分行吧。 分完行之后,就很清晰明了了。 导入了三个依赖,一个是标准库,两个估计用于加密。 然后定义了一个类U,继承自

    2024年02月09日
    浏览(18)
  • 面向对象的介绍和内存

    学习面向对象内容的三条主线 • Java 类及类的成员 :(重点)属性、方法、构造器;(熟悉)代码块、内部类 • 面向对象的特征 :封装、继承、多态、(抽象) • 其他的使用 :this、super、package、import、static、final、interface、 abstract 等 程序设计的思路 面向对象,

    2024年02月08日
    浏览(17)
  • C++面向对象丨1. 内存分区模型

    Author:AXYZdong 硕士在读 工科男 有一点思考,有一点想法,有一点理性! 定个小小目标,努力成为习惯!在最美的年华遇见更好的自己! CSDN@AXYZdong,CSDN首发,AXYZdong原创 唯一博客更新的地址为: 👉 AXYZdong的博客 👈 B站主页为: AXYZdong的个人主页 系列文章目录 C++基础入门

    2023年04月18日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包