如何在攻防演练中针对内存马做好最后的安全防线?
星期四, 二月 4, 2021
随着攻防双方的技术博弈,流量分析、EDR、蜜罐、白名单等专业的监测、防护手段被防守方广泛使用,传统的通过文件上传落地的Webshell或需以文件形式持续驻留目标服务器的恶意后门的方式逐渐失效,攻击难度逐步加大。而诸如0Day/nDAY漏洞攻击、身份仿冒、钓鱼WiFi、鱼叉邮件、水坑攻击等攻击手法也常被攻防方实战于攻防演练之中,而攻方开始了对内存webshell的研究,更是拓展了内存马的使用场景。
内存马,也被称为无文件马,是无文件攻击的一种常用手段。虽然由来已久,但是在此之前并未“大红大紫”。近年来盛行于攻防演练之中,攻防演练从2016年的几家参演单位,到2020年扩充到了几百家参演单位,内存马也越来越多的被提起,逐渐成为了攻击方的“必备武器”,针对内存马的防护也越来越被重视。
刚才讲到,内存马是无文件攻击的一种技术手段,那我们不得不先简单介绍一下无文件攻击。无文件攻击可以有效地躲避传统安全软件的检测,它们可以在系统的内存中远程加载执行、驻留在注册表中或滥用常用的白名单工具,例如PowerShell,Windows Management Instrumentation(WMI)和PsExec等。无文件攻击技术允许攻击者访问系统,从而启用后续的恶意活动。通过操纵漏洞利用程序、合法工具、宏和脚本,攻击者可以破坏系统、提升特权或在网络上横向传播恶意代码。而且,无文件威胁在执行后不会留下任何痕迹,这使其难以被检测和清除。
Webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站、应用。但传统的Webshell都是基于文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于Webshell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度。而内存攻击者正是利用软件安全漏洞,构造恶意输入导致软件在处理输入数据时出现非预期错误,将输入数据写入内存中的某些特定敏感位置,从而劫持软件控制流、执行流,转而执行外部输入的指令代码,造成目标系统被获取远程控制,让内存马的攻击得以实现。
对内存马有了概念上的认知,那么一定要知道它的攻击原理,利于找到解决措施。在介绍内存马的攻击原理之前,我们先讲一下Web服务器的工作原理。众所周知,Web服务器运行着很多中间件,如Tomcat,Weblogic等。这些中间件都由多个独立的组件组成,其中包括:Listener、Filter、Servlet。我们以JAVA为例,一个网页请求会由Servlet容器进行调用和执行,Filter程序则是一个实现了特殊接口的Java类,一般用于进行请求过滤。当某一个请求需要对内存中的数据进行读写或者执行时,就需要经过Filter的判断和过滤,由Filter来决定这些请求是否有权限进行这些操作。
而内存马正是利用了这种机制,通过动态注册一个新的Filter或者向Filter中注入恶意的shellcode,让Filter允许攻击者访问到Web服务器内存中的数据。只要拥有了可用的Filter,攻击者就能进行远程攻击,而不管是shellcode的注入过程还是对Web服务器数据进行访问的过程都会在内存中出现异常行为。另外,由于Web服务器在网络中与数据库和权限系统连接,攻击者在入侵后,可以更轻易地进行横向的渗透,拿到多个主机的权限。
而且,无文件的内存马相对通常的Webshell木马来说,有如下三点让其难以检测:
1、内存马可以注入多种shellcode和payload(冰蝎加密马、菜刀一句话木马等),较为简短,易于混淆,经过加密的数据不被WAF等安全产品检测,对攻击者而言是非常好的隐藏工具。
2、内存马仅存在于内存中,且无文件落地,局限于系统层的检测方案几乎完全无法检测。
3、Filter本身强绑定在应用系统中,属于管理和运维难度较高的部件,非企业的高级管理人员无法访问到Filter中的代码片段,所以就算察觉到Filter可能已经遭到恶意的注入,也难以查找到具体的问题。
当攻击者利用内存马对企业发起攻击时,及时检测发现是最好的防御手段。目前,有效的内存马检测方式有两种。
第一种是通过企业服务器高级管理员的手工检测,这种人为的检测是通过对内存中的Filter进行逐一的拆分检测。由于攻击者会对内存马进行混淆,其检测难度非常高。在需要安全管理员有高权限、高运维能力和对底层业务了解的同时,还会耗费不少时间和精力做分析和检测。
第二种是通过监控内存中的中间件的动作,去观察是否有恶意shellcode的注入,或者在攻击者与中间件进行交互、执行命令的过程中拦截。
尽管内存马无文件、检测难、流量经过加密,通过对内存数据访问行为细粒度的检测以及对数据状态、数据流动状态与内存中行为动作的观察,内存马依然会在内存保护系统的检测下暴露无遗。安芯网盾的安芯神甲智能内存保护系统可以帮助检测者深入到内存中检测异常行为,实现更高的检出率和更低的误报率,形成在应用层、系统层、硬件层有机结合的立体防护。避免因病毒窃取、漏洞触发而遭受攻击,切实有效的保护客户核心业务不被阻断,只按照预期的方式运行。
此外,内存马被检测识别出来之后,首要考虑的问题就是如何查杀, 从根本上解决出现的安全威胁漏洞。
方法一:清除内存马中的Filter的恶意代码。这种方式相对通用简单一些,直接适配所有中间件。
方法二:模拟中间件注销Filter。这种方式相对要复杂一些,因为每种中间件注销Filter的逻辑不尽相同,需要一一适配。
在攻防演练中,高级攻击手段不断涌现,可以更好的帮助红队有组织有针对性的展开攻击。类比现实,企业服务器与外界网络相连,面临的安全问题越来越常见。那么,预先采取有效的威胁解决方案,已成为企业防御无文件攻击、内存马攻击、漏洞攻击、APT攻击的首要任务,内存保护无疑是最好的防护手段。
国内首家基于硬件虚拟化等前沿技术保护企业主机安全的技术服务提供商,致力于研发面向未来的安全解决方案。