防病毒技术:无文件攻击

现在,无文件攻击已常常态化了。虽然一些攻击和恶意软件家族在其攻击的各个方面都企图实现无文件化,但只有一些功能才能实现无文件化。对于攻击者来讲,无文件化只是试图绕过攻击的一种手段,至因而否有文件,都只是表象。

无文件攻击简介html

“无文件攻击”这一术语每每会让人产生歧义,好比无文件攻击就表明真的没有攻击文件吗?没有文件又如何实施攻击?如何检测?如何防护……,其实“无文件攻击”只是一种攻击策略,其出发点就是避免将恶意文件放在磁盘上,以逃避安全检测。有一点须要明确,就是无文件恶意软件也要使用文件。

最初,“无文件攻击”是指没有持久驻留在内存中的恶意代码的攻击,不过随着攻击技术的迭代,该术语的指代面愈来愈广了,如今安全行业已将那些依赖文件系统,以实现恶意代码激活和驻留的恶意软件也成为“无文件恶意软件”。因为在无文件恶意软件攻击中,系统变得相对干净,传统的杀毒软件很难或根本没法识别这种感染并及时通知技术人员进行防护,因此这种攻击愈来愈广泛。git

其实,“无文件”这一术语也在不一样的时间点是有不一样含义的,早在2012年,有文章最初就使用了“无文件恶意软件”这一词汇。可是,为了应对无文件攻击的挑战,就须要消除这一术语的歧义,以了解它涵盖的各类技术。所以识别它如何影响特定的环境和防护策略就变得很是重要。github

据GoogleTrends的监测结果显示,“无文件恶意软件”此前有过不少不一样的称呼,好比: “无形恶意软件”、“零足迹攻击”或“无/宏恶意软件攻击”。这些词早在2012年到2014年之间就零星的出现过。不过随着这一技术的使用频率增长,网络安全人员对这一术语的集中讨论却发生在2015年,直至2017年随着网络安全的概念深刻人心,无文件恶意软件”这个词也被定了下来并被大众所熟知。shell

无文件攻击

尽管存在杀毒软件和应用程序白名单等反恶意软件的控制措施,但无文件攻击也包含各类应对策略,容许攻击者进行有针对性的攻击。下面概述了无文件攻击所涉及的方法,旨在为无文件攻击的防护提供明确的概念和理论指导。如今,就让咱们来看看无文件攻击所包含的具体技术,以及它们为何经常能利用这些技术逃避现有的检测。数据库

技术1:恶意文件所发挥的做用windows

许多专业安全分析人员经过长期的跟踪分析,确认无文件的攻击实际上是包含各类文件的。在这种状况下,攻击者提供恶意文件一般会做为电子邮件附件,用于如下其中一种目的:api

  • 恶意文件能够充当其余文件的灵活容器:例如,攻击者能够在Microsoft Office文件中嵌入JavaScript文件,并对收件人进行社交工程攻击,当受害者打开嵌入的文件时,恶意文件就开始执行所带的脚本了。另外,能够携带恶意文件的其余文件类型包括PDF和RTF。因为此功能是特定应用程序才包含的一项功能,所以杀毒软件的技术一般不会干扰这些文件的使用。
  • 恶意文件能够携带执行恶意代码的漏洞:现在的文件功能愈来愈复杂,不过功能多的同时所包含的攻击面也就增大,好比攻击者能够利用诸如解析漏洞之类的漏洞。在这种状况下,攻击者就能够在受损应用程序的内存中触发捆绑的shellcode,执行攻击,即便不将代码保存到文件系统,攻击者也能够在发起攻击。
  • 文件能够执行传播过程当中的恶意逻辑,现在的文件都支持强大的脚本功能,例如Microsoft Office执行VBA宏的功能。这些功能容许攻击者在没有编译可执行文件的状况下实现恶意逻辑,这就是利用了许多杀毒工具在区分恶意脚本和良性脚本方面的弱点。文件脚本功能包括启动程序和下载恶意代码。

虽然文件驻留在攻击端的文件系统上,但攻击者能够不将这些传统恶意可执行文件放置在磁盘上。在许多状况下,这些文件会直接在攻击目标的内存中执行恶意代码,这也是无文件攻击的重要组成环节。有关攻击者如何使用这些文件发起攻击的详细案例,请参阅Omri Moyal关于滥用Microsoft Office支持DDE的文章。还有一篇文章是关于“攻击者如何将本身插入对话以传播恶意软件”,请点此查看。浏览器

技术2:恶意脚本所发挥的做用安全

为了不将恶意代码编译成传统可执行文件的目标,无文件攻击的开发者须要在利用无文件属性进行攻击时依赖恶意脚本。除了文件原来就支持的脚本以外,如上所述,攻击者能够直接在Microsoft Windows上运行的脚本提供了如下攻击优点:网络

  • 这些恶意脚本能够与操做系统进行交互,而不受某些应用程序(如Web浏览器)可能对脚本施加的限制。
  • 与通过编译的恶意可执行文件相比,杀毒软件更难检测和控制这些恶意脚本。
  • 这些脚步提供了许多灵活的攻击机会,能够将恶意逻辑分散到多个进程中,以逃避检测。
  • 这些脚步在被混淆处理后,减缓安全分析师的分析速度,为进一步逃避检测提供时间。Microsoft Windows包括PowerShell,VBScript,批处理文件和JavaScript的脚本解释器,攻击者调用并运行这些脚本的工具包括powershell.exe,cscript.exe,cmd.exe和mshta.exe。经过添加适用于Linux的Windows子系统,Microsoft能够在攻击端上提供更多脚本技术。有关企业在限制这些工具的滥用方面所面临的挑战的一个案例,请参阅Gal Bitensky在讨论Invoke-NoShell实用程序的文章。

攻击者可使用现成的混淆脚本的框架,而没必要本身来实现这种复杂的逃避策略。这些措施包括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:内存中的恶意代码

虽然检查磁盘上的文件是许多杀毒软件产品的优点,但它们常常会被仅驻留在内存中的恶意代码所难道,因为内存是不稳定的和动态变化的,这就使恶意软件有机会改变其攻击方式或以其余方式逃避杀毒检测。

一旦攻击者开始在攻击端上执行恶意代码,那攻击者就能够将恶意软件解压缩到内存中,而不会将恶意控件保存到文件系统中,这可能涉及到将代码提取到进程自己的内存空间中的技术。在其余状况下,恶意软件会将代码注入受信任的流程和其余良性流程中。

内存攻击技术的案例包括:

  • 内存注入利用Microsoft Windows的功能与操做系统进行交互,而不会利用漏洞。例如,常常被注入恶意软件进行滥用的API调用包括VirtualAllocEx和WriteProcessMemory,它们容许用一个进程将代码写入另外一个进程。要了解这些技术的实际应用,请阅读Gal Bitensky对AZORult攻击的概述,AZORult是一个功能强大的信息窃取程序和下载程序。
  • 攻击者能够将已编译的可执行文件包装成脚本,以便在运行时将恶意载荷提取到内存中,PowerSploit就是这样的工具包的一个例子,你能够经过阅读Asaf Aprozper和Gal Bitensky的GhostMiner分析来看到它的运行,而Chris Truncer的Veil框架又是另外一个案例,感兴趣能够读一下。
  • Process Doppelgänging是一种绕过杀软检测的新技术,这种新的攻击方式对全部windows平台都有效,而且可以攻击目前可见的大部分安全产品。Doppelgänging利用两种特性来掩盖加载修改版可执行文件的过程。经过使用NTFS,攻击者能够在不写入磁盘的状况下修改可执行文件。这意味着,攻击能够为修改版的可执行文件创建进程,而杀毒软件的安全机制检测不到。这种方法很像进程中空技术,可是更加高级。攻击者能够在没有能够进程和内存操做(如SuspendProcess和NtUnmapViewOfSection)的状况下,让恶意软件在正常软件的进程中执行任意代码。SynAck恶意软件就使用了这种逃避技术,以试图终止与虚拟机、办公应用程序、脚本解释器、数据库应用程序、备份系统以及游戏应用程序等相关的程序。研究人员认为,SynAc这样作的目的在于授予自身可以访问这些进程所使用的有价值文件的权限。如同其余勒索软件同样,SynAck也会收集一些关于受感染主机的基本信息,如计算机和用户名、操做系统版本信息等,而后使用随机生成的256位AES密钥对目标文件进行加密。在文件被加密后,将会被附加一个随机生产的扩展名。除此以外,SynAck还会清除系统存储的事件日志,而且能够经过修改注册表中的LegalNoticeCaption和LegalNoticeText键将自定义文本添加到Windows登陆屏幕。

内存攻击技术容许攻击者绕过许多杀毒检测技术,包括应用程序白名单。虽许多杀毒工具试图捕获内存注入,但攻击者的攻击技术明显技高一筹,Asaf Aprozper的CoffeeShot工具经过在Java中实现注入方法来演示这种检测尝试的脆弱性。

无文件攻击

总结

现在,无文件攻击已常常态化了。虽然一些攻击和恶意软件家族在其攻击的各个方面都企图实现无文件化,但只有一些功能才能实现无文件化。对于攻击者来讲,无文件化只是试图绕过攻击的一种手段,至因而否有文件,都只是表象。日后攻击者可能会将全部攻击技术进行组合,包括使用恶意文件、恶意脚本、与本地程序交互和内存注入。具备无文件属性的攻击是基于应用程序和操做系统功能的,利用了杀毒工具在尝试检测和防止各类滥用时的盲点。

做者:luochicun   本文翻译自:https://blog.minerva-labs.com/deconstructing-fileless-attacks-into-4-underlying-techniques

相关文章
相关标签/搜索