代码编织梦想

近些年,无文件攻击技术越来越流行。本文旨在介绍无文件攻击中最为流行的一种技术——Java内存马,让企业、用户了解和重视其危害性,提高防范意识,降低安全风险。 

- 全文约1500字,预计阅读时间为4分钟 -

前言

e9d8c39cb784f13c32ed30263f93a313.gif

在Ponemon Institute给出的一份网络安全报告中显示,2018年所有的网络攻击中,35%是无文件攻击。

据Dynatrace的不完全统计,2020年成功的勒索病毒攻击事件中,有超过80%是通过无文件的方式完成的。同年新增的大部分新型勒索病毒样本也大多采用了无文件技术。

互联网始于1969年美国的阿帕网,2000年之后进入高速增长,数据增长速度远超摩尔定律,这对企业的网络、存储、应用都提出了很大的考验。Java以其成熟且稳定的技术体系,在互联网的潮流中激流勇进,成为了最主要的语言,成为了企业的最爱。

Java内存马(以下简称“内存马”)也开始逐渐进入人们的视野中。由于其无文件的特性,可以有效躲避传统安全设备的检测,所以在近年的护网行动中内存马也逐渐成为了攻击方的常备武器之一。

在2017年的《看不见的Shell》文章中就已经提出了通过动态注册servlet在tomcat中注册内存马。而在一份2019年的Java生态报告中显示,tomcat仍是Java开发者中使用最广泛的web服务器,市场占有率高达73%。

此后随着冰蝎将Java Agent技术应用在Java内存马上以后,拓宽了内存马的使用场景,对内存马的研究和使用开始越来越火,2020年出现了更多针对特定框架使用的内存马,其中包括了在Java Web中占据主导地位的Spring。(Spring框架在Github上已有超过45k stars)

Java Web内存马作为众多WebShell的一种,在了解Java Web内存马之前我们先回顾一下什么是WebShell,它有哪些危害。

什么是WebShell?

f869acca04b673195ec1795769c81845.gif

WebShell通常指攻击者所使用的一种恶意脚本,其目的是为了获取web服务器的命令执行操作权限,来达到执行系统命令,窃取服务数据等恶意目的。WebShell所使用的语言类型往往和web服务的后端环境有关。

WebShell类型变迁

5269a9c42fa6ca3aea99aea96f825a92.gif

WebShell最初是以网站或者服务器管理的形式存在的,后来逐渐演变成功能较为齐全的“大马”,能够支持在渗透过程中可能用到的各种功能,比如文件管理,命令执行,端口扫描,反弹shell等等。但是功能齐全也意味着文件体积较大容易暴露或者直接被限制大小无法完成上传。随之也就衍生出了小马(体积较小,隐蔽性强),最重要的是在与图片结合一起上传之后利用nginx或者IIS6的解析漏洞来运行,一般只包含上传文件功能,然后通过小马拉大马。随后还出现了更加短小精悍的一句话木马。

4c40122008865859b43aca2af362ddff.png

主流WebShell工具

4efa38e25131f325f2b8c82181034641.gif

冰蝎

冰蝎是一款现在较为流行的WebShell工具,原因在于其拥有着极其优秀的加密通讯的特点,可以选择通过预共享密钥机制使其通讯全程秘文进行。并且在最新的版本中支持利用Java Agent技术对多种Web容器注入内存马的功能。并且在使用冰蝎时产生的TLS流量与正常访问网页的TLS流量在行为特征上差异很小。传统的WAF,IDS等设备对其检测有较大的难度。简单设置后就可以完成shell管理。

941937b63641cb0cf142d4da61df6bf8.png

哥斯拉

哥斯拉的通讯流量和冰蝎一样也是加密过的,并且其号称其全类型的shell能够绕过市面上大部分的静态查杀。同时还能够提供各种插件配置,一键生成shell脚本等功能,在新版本中同时也支持了Java内存马的注入功能。

81e571ba3ee2784c27cfc8728eed0d5e.png

常见的检测思路

b8474ea53466a6e94e449bd0b8cece48.gif

1. 静态特征匹配

由于WebShell需要传递命令以及执行命令,所以可以针对一些危险函数的调用进行匹配来判断是否为WebShell

2. 文件完整性检测

由于大部分类型的WebShell的实现需要涉及到文件的新增与修改,可以实时监测web服务中的文件是否涉及到以上特性的变化。

3. 动态行为检测

通过监控提供Web服务的进程在系统上执行了哪些系统命令来动态监测分析该行为是否是一个正常行为。

内存马的检测难点

c66c531d0a149106453a960e5647fb3a.gif

由于内存马仅存在于进程的内存空间中,很多传统的检测防护手段对其无能为力。同时内存马的种类也十分繁多,根据不同的脚本类型,Web中间件存在各种触发机制不同的内存马,没有稳定的静态特征。在下一篇,中我们会针对Java Web内存马进行深入分析。

关于Java内存马检测,我们将在微步安全学院进行专题直播,2022年1月6日晚19:10开播,同时也会在直播间发布河马Java内存马专杀工具,感兴趣的伙伴可以长按识别下图二维码报名。

d94bb1af0692b5c782015d1214b470c1.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chennqqi/article/details/122248443

java使用内存的程序检测_coco_as的博客-爱代码爱编程

用top检查java程序时可以看到以下的参数 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 246 root 20 0 7070m 2.5g 10m S 0.4

记一次java应用内存不断增长问题解决过程-爱代码爱编程

1、在解决问题之前,先看下jvm堆内存结构,如下图所示: 对于Java应用,虚拟机管理的内存,可以参考如下图所示: 一般对于一个应用来说,如果内存使用过大,可以从两块来分析,第一:堆内存,第二:堆外内存。下面着重从这两个方面阐述下对最近遇到的内存问题进行分析并解决的过程。 问题详情: 本人负责了一个应用,主要就是定时调度一批接口任务,同时提

java 内嵌调用_【技术分享】 | 一个JAVA内存马的源码分析-爱代码爱编程

前言 偶然接触到了这样一个JAVA内存马,其作者也是冰蝎的作者,项目地址: https://github.com/rebeyond/memShell 正好最近在接触JAVA,借此机会学习下大佬的代码,对自己的编程思路也有了一定的提升。当然笔者只是一个脚本小子,对代码接触不深,如果文中出现理解不当或是错误的情况,还望各位大佬不吝赐教

java内存shell_Tomcat 内存码检测-爱代码爱编程

随着HW、攻防对抗的强度越来越高,各大厂商对于webshell的检测技术愈发成熟,对于攻击方来说,传统的文件落地webshell的生存空间越来越小,无文件webshell已经逐步成为新的研究趋势。 三月底针对tomcat内存码的检测写了一个demo,但由于对Maven打包理解不深,整个项目结构比较糟糕。 国庆前研究了LandGrey师傅的copag

哥斯拉Godzilla webshell管理工具-爱代码爱编程

各大厂商的waf不断,在静态查杀、流量通信等方面对webshell进行拦截,众红队急需一款优秀的权限管理工具,冰蝎3.0的发布可能缓解了流量加密的困境,但是冰蝎3.0的bug众多,很多朋友甚至连不上冰蝎的shell, 于是团队的BeiChenDream师傅开发了这款“哥斯拉“  本文出自ChaBug Y4er师傅 简单使用方法 在哥斯拉安装之前,

Java Agent型内存马复现及清理-爱代码爱编程

本文是对互联网上内存马相关资源学习整理的笔记记录,参考文章如下 利用“进程注入”实现无文件复活 WebShell 基于javaAgent内存马检测查杀指南  0x01 内存马简介 ########### 0x02 java agent型内存马 这里记录 memshell 的复现 准备条件:1. Tomcat环境   2. inj

内存马涉及基础知识整理-爱代码爱编程

内存马简介 1.1 webshell变迁 web服务器管理页面——> 大马——>小马拉大马——>一句话木马——>加密一句话木马 内存马是无文件攻击的一种常用手段,随着攻防演练热度越来越高:攻防双方的博弈,流量分析、EDR等专业安全设备被蓝方广泛使用,传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,内存马

学习了解内存马,看这篇就够了!(精华版)-爱代码爱编程

目录 介绍: 一、内存马简介 1.1 webshell变迁 1.2 如何实现webshell内存马 1.3 内存马类型 二、背景知识 2.1 Java web三大件 2.2Tomcat 2.3 其他java背景知识 三、内存马实现 四、内存马检测与排查 4.1源码检测 4.2 内存马排查 介绍: 内存马,也被称为无文件马

Java安全之反序列化回显与内存码-爱代码爱编程

0x00 前言# 按照我个人的理解来说其实只要能拿到Request 和Response对象即可进行回显的构造,当然这也是众多方式的一种。也是目前用的较多的方式。比如在Tomcat 全局存储的Request 和Response对象,进行获取后则可以在tomcat这个容器下进行回显。而某些漏洞的方式会从漏洞的位置去寻找存储Request 和Response对

Java内存马检测专题直播 Q&A-爱代码爱编程

1月6日晚,我们在“微步安全学院”进行了Java内存马检测的专题直播,可以点击文末“阅读原文”回看直播、下载PPT。 以下是对于直播间内大家普遍关注的问题的解答。 目前主流修复方式都是升级,或者加参数、删class重启,是不是就没内存马问题了?除了关机,还有其他方式干掉内存马吗? 重启即可,一般来说内存马重启后就没有了。但是如果检测到了内存马则