【网安】內存马
概述:什么是内存马?
简述
webshell 技术历程
在 Web 安全领域,WebShell 一直是一个非常重要且热门的话题。在目前传统安全领域, WebShell 根据功能的不同分为三种类型,分别是:一句话木马、小马,大马。二根据现在防火墙技术的更新迭代,随后出现了加密的木马技术,比如:加密一句话。最新的技术是使用无文件的 WebShell 类型:内存马。
一句话木马:通常指的是一段简短的代码,可以嵌入到网页或脚本中,用户一旦访问或执行,就会触发恶意行为,如远程控制、数据窃取等。
- 代码短,只有一行代码
- 使用场景大,可单独生成文件可插入文件
- 安全性高,隐匿性强,可变形免杀
- 框架不便,数据执行(数据传递)
小马:指的是较小的恶意程序,通常用于初步入侵系统,执行简单的命令,如创建后门、收集信息等,为后续的大马植入做准备。
- 体积小,功能少
- 只有一个上传功能
大马:指的是功能更全面、复杂的恶意程序,能够进行高级的恶意操作,如完全控制受害系统、进行数据破坏、横向移动等。
- 体积大,功能全
- 会调用系统的关键函数
- 以代码加密进行隐藏
为什么会使用内存马
传统 WebShell 的连接方式,都是先通过某种漏洞将恶意的脚本木马文件上传,然后通过 WebShell 管理软件(中国猜到、蚁剑、冰蝎)进行链接。
这种方式目前仍然流行,但是由于近几年防火墙,IDS、IPS、流量分析等各种安全设备的普及和更新,这种连接方式非常容易被设备捕获拦截,而且由于文件是明文存放在服务器端,所以又很容易被杀毒软件所查杀。在今天看来这种传统连接方式已经过时,于是乎,进化了一系列的加密一句话木马,但是这种方式还是不能绕过有类似文件监控的杀毒软件,于是乎又进化了新一代的 WebShell——内存马。
内存马
内存马,也被称为无文件马,是一种无文件攻击的技术手段。
**表现:**它主要通过在系统内存中远程加载执行、驻留在注册表中或滥用常用的白名单工具来实现攻击,从而躲避传统安全软件的检测。
**行为:**内存马允许攻击者访问系统,进而启用后续的恶意活动,如破坏系统、提升特权或在网络上横向传播恶意代码。
**特征:**执行后不会留下任何痕迹,这使得内存马难以被检测和清楚。
内存马的类型
内存马的类型主要有以下几种:
Servlet-API 型
通过动态注册新的 listener、filter 或 servlet 来实现命令执行等功能。特定框架、容器的内存马原理与此类似,例如 Spring 的 Controller 内存马,Tomcat 的 valve 内存马。
字节码增强型
通过 Java 的 Instrumenmentation 动态修改已有代码,实现命令执行等功能。
内存马的主要特点
无逻辑结构边界,难以被发现
内存马仅存在于进程的内存空间中,通常与正常的代码、数据混淆。
缺乏稳定的静态特征,难以被识别
内存马缺乏结构化的静态形式,它依附于进程运行期间的输入数据,数据可能被加密混淆,因此无法通过内存马本身的特征识别。
种类多,检测机制复杂而多样
内存马有二进制代码片段(Shellcode)、PowerShell脚本、Web中间件等类型,每种类型又可细分,不同类型内存马的执行方式、恶意代码触发机制各不相同,导致检测方式多样。