无文件攻击简介html
最初,“无文件攻击”是指没有持久驻留在内存中的恶意代码的攻击,不过随着攻击技术的迭代,该术语的指代面愈来愈广了,如今安全行业已将那些依赖文件系统,以实现恶意代码激活和驻留的恶意软件也成为“无文件恶意软件”。因为在无文件恶意软件攻击中,系统变得相对干净,传统的杀毒软件很难或根本没法识别这种感染并及时通知技术人员进行防护,因此这种攻击愈来愈广泛。git
其实,“无文件”这一术语也在不一样的时间点是有不一样含义的,早在2012年,有文章最初就使用了“无文件恶意软件”这一词汇。可是,为了应对无文件攻击的挑战,就须要消除这一术语的歧义,以了解它涵盖的各类技术。所以识别它如何影响特定的环境和防护策略就变得很是重要。github
据GoogleTrends的监测结果显示,“无文件恶意软件”此前有过不少不一样的称呼,好比: “无形恶意软件”、“零足迹攻击”或“无/宏恶意软件攻击”。这些词早在2012年到2014年之间就零星的出现过。不过随着这一技术的使用频率增长,网络安全人员对这一术语的集中讨论却发生在2015年,直至2017年随着网络安全的概念深刻人心,无文件恶意软件”这个词也被定了下来并被大众所熟知。shell
尽管存在杀毒软件和应用程序白名单等反恶意软件的控制措施,但无文件攻击也包含各类应对策略,容许攻击者进行有针对性的攻击。下面概述了无文件攻击所涉及的方法,旨在为无文件攻击的防护提供明确的概念和理论指导。如今,就让咱们来看看无文件攻击所包含的具体技术,以及它们为何经常能利用这些技术逃避现有的检测。数据库
技术1:恶意文件所发挥的做用windows
许多专业安全分析人员经过长期的跟踪分析,确认无文件的攻击实际上是包含各类文件的。在这种状况下,攻击者提供恶意文件一般会做为电子邮件附件,用于如下其中一种目的:api
虽然文件驻留在攻击端的文件系统上,但攻击者能够不将这些传统恶意可执行文件放置在磁盘上。在许多状况下,这些文件会直接在攻击目标的内存中执行恶意代码,这也是无文件攻击的重要组成环节。有关攻击者如何使用这些文件发起攻击的详细案例,请参阅Omri Moyal关于滥用Microsoft Office支持DDE的文章。还有一篇文章是关于“攻击者如何将本身插入对话以传播恶意软件”,请点此查看。浏览器
技术2:恶意脚本所发挥的做用安全
为了不将恶意代码编译成传统可执行文件的目标,无文件攻击的开发者须要在利用无文件属性进行攻击时依赖恶意脚本。除了文件原来就支持的脚本以外,如上所述,攻击者能够直接在Microsoft Windows上运行的脚本提供了如下攻击优点:网络
攻击者可使用现成的混淆脚本的框架,而没必要本身来实现这种复杂的逃避策略。这些措施包括Daniel Bohannon开发的适用于PowerShell和Invoke-DOSfuscation框架的Invoke-Obfuscation。具体案例,请参考Minerva对Emotet的脚本混淆的分析。
技术3:与本地程序交互
关于无文件攻击的讨论一般包括滥用Microsoft Windows中内置的众多实用程序,这些工具容许对手从攻击的一个阶段转移到另外一个阶段,而无需依赖编译的恶意可执行文件。这种经营方式有时被称戏称为“靠土地为生(living off the land)”。
一旦攻击者的恶意代码能够与本地程序交互,那么文件感染程序就开始启动,此时攻击者就能够开始滥用操做系统内置的实用程序来下载其余恶意控件,启动程序和脚本,进而窃取数据,大肆感染,保持持久性攻击等。攻击者为了与本地程序交互,调用了许多工具,其中包括regsvr32.exe,rundll32.exe,certutil.exe和schtasks.exe。关于攻击者如何以这种方式滥用内置二进制文件、库和脚本描述,请参阅Oddvar Moe的LOLBAS项目。
内置于操做系统中的Windows Management Instrumentation(WMI)为攻击者提供了更多与本地程序交互的机会。WMI容许攻击者在wmic.exe可执行文件(以及其余一些文件)的帮助下使用脚本(例如PowerShell)并与攻击端的大多数程序功能进行交互。因为这些操做仅涉及受信任的内置Windows功能,所以杀毒软件技术难以进行检测和限制。有关WMI如何协助无文件攻击的解释,请参阅Matt Graeber撰写的滥用WMI构建持久、异步和无文件后门的文章。
攻击者经过利用这种良性和可信赖的实用程序,大大增长了逃避检测的几率。有关此类技术的其余示例,请参阅Matthew Dunwoody对APT29使用WMI和PowerShell构建无文件后门的概述。
技术4:内存中的恶意代码
虽然检查磁盘上的文件是许多杀毒软件产品的优点,但它们常常会被仅驻留在内存中的恶意代码所难道,因为内存是不稳定的和动态变化的,这就使恶意软件有机会改变其攻击方式或以其余方式逃避杀毒检测。
一旦攻击者开始在攻击端上执行恶意代码,那攻击者就能够将恶意软件解压缩到内存中,而不会将恶意控件保存到文件系统中,这可能涉及到将代码提取到进程自己的内存空间中的技术。在其余状况下,恶意软件会将代码注入受信任的流程和其余良性流程中。
内存攻击技术的案例包括:
内存攻击技术容许攻击者绕过许多杀毒检测技术,包括应用程序白名单。虽许多杀毒工具试图捕获内存注入,但攻击者的攻击技术明显技高一筹,Asaf Aprozper的CoffeeShot工具经过在Java中实现注入方法来演示这种检测尝试的脆弱性。
总结
现在,无文件攻击已常常态化了。虽然一些攻击和恶意软件家族在其攻击的各个方面都企图实现无文件化,但只有一些功能才能实现无文件化。对于攻击者来讲,无文件化只是试图绕过攻击的一种手段,至因而否有文件,都只是表象。日后攻击者可能会将全部攻击技术进行组合,包括使用恶意文件、恶意脚本、与本地程序交互和内存注入。具备无文件属性的攻击是基于应用程序和操做系统功能的,利用了杀毒工具在尝试检测和防止各类滥用时的盲点。
做者:luochicun 本文翻译自:https://blog.minerva-labs.com/deconstructing-fileless-attacks-into-4-underlying-techniques