在近两年的网络安全攻防演练中,无文件PowerShell被攻击者越来越多的利用到攻防实战中。攻击者可以利用PowerShell在内存中执行命令,从而绕过传统防护工具对恶意软件的哈希分析和检测,而且通过这种方法,恶意攻击者可以降低被发现的风险、增加成功实现目标的机会。
1. 为什么攻击者选用PowerShell?
攻击者使用PowerShell更容易将系统暴露于勒索软件、无文件恶意软件和恶意代码注入内存的威胁中,使得安全风险大大提高。此外,PowerShell还有以下特点:
(1) 规模和范围
PowerShell是Windows XP及更高版本Windows操作系统的内置功能。同时,它还是可以在Linux上运行的开源、跨平台框架。
(2) 合法使用性
PowerShell本身并不是恶意的,它实际上是一个合法的工具。但它的使用和滥用会模糊被用来恶意攻击或感染系统、或用来完成IT/系统管理任务之间的界限。
(3) 编写、运行容易
对于许多IT/系统管理员、信息安全专业人员、渗透测试人员和黑帽黑客来说,编写和运行PowerShell脚本相对容易。
(4) 简单混淆
PowerShell脚本不仅易于编写,PowerShell的灵活性以及第三方模块的可用性使得混淆它们相对简单。
(5) 功能特性
PowerShell可以虚拟地访问大量的应用程序接口(api)来执行重要的功能,如VirtualAlloc、VirtualProtect和CreateThread,所有这些都可能被攻击者滥用。
图 PowerShell攻击链路
通常情况下,PowerShell在默认情况下受到限制,以减少其滥用。但我们仍然可以看到一些携带PowerShell脚本的恶意软件使用技术绕过PowerShell的默认执行策略,例如将恶意代码作为命令行参数运行。正是由于以上的特性,攻击者越来越喜欢使用PowerShell进行无文件攻击,以完成威胁目的。
2. 无文件攻击注入形式
一般来讲,注入攻击不仅可以用于在不知道用户名和密码的情况下登录应用程序,还可以暴露私人、机密或敏感信息,甚至可以劫持整个服务器。而无文件攻击的注入是在内存层进行的,包括如下四种形式:
(1) 反射性自我注入
反射加载是指从内存而不是从磁盘加载可移植的可执行文件(PE)。一个精心制作的函数/脚本可以反射地加载可移植的可执行文件,而无需在流程中注册为已加载的模块,因此可以执行操作而不会留下痕迹。PowerShell是用于执行这些精心编写的脚本的最广泛使用的应用程序之一。此事件表示一种无文件攻击,其中PowerShell脚本试图将PE注入到PowerShell进程本身。
(2) 反射EXE自我注入
反射加载是指从内存而不是磁盘加载PE。一个精心制作的函数/脚本可以反射式地加载可执行文件(EXE),而无需在进程中注册为已加载的模块,因此可以执行操作而不留下痕迹。PowerShell是用于执行这些精心编写的脚本的最广泛使用的应用程序之一。此事件表示一种无文件攻击,其中PowerShell脚本试图将一个EXE注入到PowerShell进程本身。
(3) 反射DLL远程注入
反射加载是指从内存而不是磁盘加载PE。一个精心制作的函数/脚本可以反射地加载一个DLL,而无需在进程中注册为已加载的模块,因此可以执行操作而不留下痕迹。PowerShell是用于执行这些精心编写的脚本的最广泛使用的应用程序之一。此事件表示PowerShell脚本试图向远程进程注入DLL的无文件攻击。
(4) 使用DotNetToJScript技术的恶意代码执行
此事件表示尝试使用DotNetToJScript技术执行恶意Shellcode,该技术被流行的无文件攻击使用,如CACTUSTORCH。DotNetToJScript攻击向量允许加载和执行恶意的。net程序集(DLL,EXE等)直接从内存通过COM暴露net库的帮助。就像任何其他典型的无文件攻击技术一样,DotNetToJScript不会在计算机的硬盘驱动器中编写恶意的。net DLL或EXE的任何部分。
3. 无文件攻击的危害
无文件攻击这类新型威胁攻击很多时候在磁盘上不会存放文件,基于文件的检测、监测和防御自然就失去了作用,但这些攻击在攻击期间会有一些危险动作,这是可以被行为分析模块检测识别的。
另外传统的病毒木马威胁数量也还在不断的增长,基于行为分析的识别技术也是当前最重要的检测识别技术(这种技术被称为下一代杀毒技术NGAV),这种技术的实现除了依赖操作系统提供的接口外,还得在操作系统上挂大量的钩子,这样才能监控到足够多的行为,有了足够多样的行为数据后,基于行为分析的检测识别技术才能识别更多的威胁攻击,而且误报率才能足够低,但是目前操作系统越来越封闭(比如64位的Windows操作系统)已经不允许挂钩子了,这势必会大大削弱这种方法的检测效果,而这又是当前十分重要、主流的一种病毒木马威胁检测方法。
因此,无文件攻击成功的概率会变大,对众多企事业单位带来的威胁也就会增多,后果难以估量。
4. 内存保护的破解之道
PowerShell框架提供的便利使系统管理任务更加容易,但是它也为网络犯罪分子和黑客组织提供了较大的攻击面。不过,尽管使用PowerShell进行的无文件威胁可能不如传统的恶意软件和攻击那样明显,但并非无法阻止。基于内存保护技术研发设计的智能内容保护系统,目前被认为是一种有效的应对方式。
智能内存保护系统通过硬件虚拟化可以监控CPU执行的指令集,通过对部分敏感指令的监控,并结合操作系统上下文就可以知道操作系统中运行进程到底执行了什么动作,从而破解操作系统的一些限制,采集到更多的程序行为,这样可以大大提升威胁识别率,并大幅降低误报率。智能内存保护系统基于硬件虚拟化技术的端点安全技术可以很好的突破操作系统的限制,实现对程序行为的细粒度监控,并能很好的解决以往无法解决的大难题:对内存的读、写、执行行为的监控。
随着新兴技术的发展,诸如无文件攻击之类的威胁和复杂威胁逐渐兴起并被利用,应对瞬息万变的环境并防范是众多企业面临的挑战。针对性的选择解决方案,可以很好的解决此类威胁问题。
【本文是51CTO专栏作者“安全牛”的原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】