无文件攻击近年来发展迅速,成为网络攻击的重要力量。然而,对于“无文件攻击”这个概念,很多人并不是很了解。虽然之前我们已经介绍了很多关于“无文件攻击”的攻击事件和案例,但是有些东西还是没有讲透。今天我们就来聊一聊无文件攻击的四种基本技术。“无文件攻击”一词经常引起歧义。例如,无文件攻击是否意味着没有攻击文件?如何在没有文件的情况下实施攻击?如何检测?如何防御...事实上,“无文件攻击”只是一种攻击策略,其出发点是避免将恶意文件放置在磁盘上以逃避安全检测。需要明确的是,无文件恶意软件也使用文件。最初,“无文件攻击”是指没有恶意代码持久驻留在内存中的攻击,但随着攻击技术的发展,该术语已经扩大,安全行业现在指的是那些依赖于需要恶意代码激活和驻留的文件恶意软件在系统上也被称为“无文件恶意软件”。由于在无文件恶意软件攻击中,系统变得相对干净,传统杀毒软件很难或不可能识别此类感染并及时通知技术人员进行防御。此类攻击正变得越来越普遍。事实上,“无文件”一词在不同的时间点有不同的含义。早在2012年,就有一篇文章首次使用了“无文件恶意软件”一词??。然而,为了应对无文件攻击的挑战,有必要消除术语的歧义以理解它包含的各种技术。因此,重要的是要确定它如何影响特定的环境和防御策略。根据GoogleTrends的监测结果,“无文件恶意软件”之前曾被冠以许多不同的名称,例如:“隐形恶意软件”、“零足迹攻击”或“无/宏恶意软件攻击”。这些词在2012年到2014年间零星出现,但随着这项技术使用频率的增加,2015年开始网络安全人员对这个词的密集讨论,直到2017年,随着网络安全概念的流行,“无文件恶意软件”也被定义。下来为群众所熟知。尽管存在杀毒软件、应用程序白名单等反恶意软件控件,但无文件攻击还涉及各种反制措施,使攻击者可以进行有针对性的攻击。下面概述无文件攻击涉及的方法,旨在为防御无文件攻击提供清晰的概念和理论指导。现在,让我们来看看无文件攻击涉及的具体技术,以及为什么他们经常使用这些技术来逃避现有检测。技术一:恶意文件所起的作用许多专业的安全分析师通过长期的跟踪分析证实,无文件攻击实际上包含了各种文件。在这种情况下,攻击者提供恶意文件(通常作为电子邮件附件)用于以下目的之一:恶意文件可以充当其他文件的灵活容器:例如,攻击者可以将JavaScript文件嵌入MicrosoftOffice文件,并对收件人进行社会工程攻击。当受害者打开嵌入文件时,恶意文件开始执行其携带的脚本。此外,其他可能携带恶意文件的文件类型包括PDF和RTF。由于此功能是特定于应用程序的功能,因此防病毒软件的技术通常不会干扰这些文件的使用。恶意文件可以携带执行恶意代码的漏洞:如今的文件功能越来越复杂,但功能越多,其所包含的攻击面也越大。例如,攻击者可以利用解析漏洞等漏洞。在这种情况下,攻击者可以触发被感染应用程序内存中绑定的shellcode,执行攻击,即使不将代码保存到文件系统,攻击者仍然可以发起攻击。文件在传播过程中可以执行恶意逻辑,如今的文件支持强大的脚本编写能力,例如MicrosoftOffice能够执行VBA宏。这些功能允许攻击者在不编译可执行文件的情况下实施恶意逻辑,这利用了许多防病毒工具在区分恶意脚本和良性脚本方面的弱点。文件脚本功能包括启动程序和下载恶意代码。尽管文件驻留在攻击方的文件系统中,但攻击者可以避免将这些传统的恶意可执行文件放置在磁盘上。在很多情况下,这些文件直接在目标内存中执行恶意代码,这是无文件攻击的重要组成部分。有关攻击者如何使用这些文件发起攻击的详细示例,请参阅OmriMoyal关于滥用MicrosoftOffice对DDE的支持的文章。还有一篇关于“攻击者如何将自己插入对话以传播恶意软件”的文章,请在此处查看。技术二:恶意脚本的作用为了避免将恶意代码编译成传统可执行文件的目标,无文件攻击的开发者在利用无文件属性时需要依赖恶意脚本。除了文件本身支持的脚本,如上所述,攻击者可以直接在MicrosoftWindows上运行的脚本提供以下攻击优势:这些恶意脚本可以与操作系统交互,而不受某些应用程序(如Web浏览器)的影响)可能会对脚本施加限制。与编译的恶意可执行文件相比,这些恶意脚本更难被防病毒软件检测和包含。这些脚本提供了许多灵活的攻击机会,可以跨多个进程传播恶意逻辑以逃避检测。这些足迹经过混淆处理后,会降低安全分析人员的分析速度,为进一步规避检测提供时间。MicrosoftWindows包含用于PowerShell、VBScript、批处理文件和JavaScript的脚本解释器,攻击者用来调用和运行这些脚本的工具包括powershell.exe、cscript.exe、cmd.exe和mshta.exe。通过为Linux添加Windows子系统,微软可以在攻击端提供更多的脚本技术。有关企业在限制滥用这些工具方面面临的挑战的示例,请参阅GalBitensky讨论Invoke-NoShell实用程序的文章。攻击者可以使用现成的混淆脚本框架,而不是自己实施这种复杂的规避策略。其中包括PowerShell的Invoke-Obfuscation和DanielBohannon开发的Invoke-DOSfuscation框架。具体案例可以参考Minerva对Emotet脚本混淆的分析。技术3:与本地程序交互无文件攻击的讨论通常涉及滥用MicrosoftWindows中内置的大量实用程序,这些实用程序允许对手从攻击的一个阶段转移到另一阶段,而无需依赖编译的恶意可执行文件。这种经商方式有时被戏称为“以地为本”。一旦攻击者的恶意代码可以与本地程序交互,文件感染程序开始启动,攻击者就可以开始滥用操作系统内置的实用程序下载其他恶意控件,启动程序和脚本,进而窃取数据并造成严重破坏感染、持续攻击等。为了与本地程序交互,攻击者调用了许多工具,包括regsvr32.exe、rundll32.exe、certutil.exe和schtasks.exe。有关攻击者如何以这种方式滥用内置二进制文件、库和脚本的描述,请参阅OddvarMoe的LOLBAS项目。操作系统内置的WindowsManagementInstrumentation(WMI)为攻击者提供了更多与本地程序交互的机会。WMI允许攻击者在wmic.exe可执行文件(和其他一些)的帮助下使用脚本(例如PowerShell)并与攻击端的大多数程序功能进行交互。由于这些操作仅涉及受信任的内置Windows功能,因此防病毒技术很难检测和限制它们。有关WMI如何协助进行无文件攻击的说明,请参阅MattGraeber撰写的滥用WMI构建持久、异步和无文件后门。攻击者通过利用这种良性且值得信赖的实用程序大大增加了逃避检测的机会。有关此类技术的其他示例,请参阅MatthewDunwoody对APT29使用WMI和PowerShell构建无文件后门的概述。技巧四:内存中的恶意代码虽然检查磁盘上的文件是很多杀毒软件产品的优势,但往往会被只驻留在内存中的恶意代码捕获,内存不稳定,动态变化。这使恶意软件有机会改变其攻击模式或以其他方式逃避防病毒检测。一旦攻击者开始在攻击端执行恶意代码,攻击者就可以将恶意软件解压到内存中,而无需将恶意控件保存到文件系统中,这可能涉及到将代码提取到进程本身内存中的空间技术。在其他情况下,恶意软件会将代码注入到受信任的或良性的进程中。内存攻击技术的示例包括:内存注入利用MicrosoftWindows的功能在不利用漏洞的情况下与操作系统交互。例如,经常被注入恶意软件滥用的API调用包括VirtualAllocEx和WriteProcessMemory,它们允许一个进程将代码写入另一个进程。要了解这些技术的实际应用,请阅读GalBitensky对AZORult攻击的概述,AZORult是一种强大的信息窃取和下载程序。攻击者可以将编译后的可执行文件包装成脚本,从而在运行时将恶意负载提取到内存中,PowerSploit就是此类工具包的一个示例,您可以通过阅读AsafAprozper和GalBitensky对GhostMiner的分析来了解其运行情况,而ChrisTruncer的Veil框架是另外一个案例,有兴趣的可以去看看。ProcessDoppelg?nging是一种绕过防病毒检测的新技术。这种新的攻击方式对所有windows平台都有效,可以攻击目前大部分可见的安全产品。Doppelg?nging利用两个功能来屏蔽加载修改后的可执行文件的过程。通过使用NTFS,攻击者可以在不写入磁盘的情况下修改可执行文件。这意味着攻击可以为可执行文件的修改版本建立进程,而防病毒软件的安全机制无法检测到。这种方法很像中间镂空技术,但更先进。攻击者可以使恶意软件在良性软件的进程中执行任意代码,而无需进程和内存操作,例如SuspendProcess和NtUnmapViewOfSection。SynAck恶意软件使用这种规避技术来尝试终止与虚拟机、办公应用程序、脚本解释器、数据库应用程序、备份系统和游戏应用程序相关的程序。研究人员认为,SynAc这样做是为了让自己能够访问这些进程使用的有价值的文件。与其他勒索软件一样,SynAck也会收集被感染主机的一些基本信息,如计算机名和用户名、操作系统版本信息等,然后使用随机生成的256位AES密钥对目标文件进行加密。文件加密后,将附加一个随机生成的扩展名。除此之外,SynAck清除系统存储的事件日志,并可以通过修改注册表中的LegalNoticeCaption和LegalNoticeText键将自定义文本添加到Windows登录屏幕。内存攻击技术允许攻击者绕过许多防病毒检测技术,包括应用程序白名单。虽然许多防病毒工具都试图捕获内存注入,但攻击者的攻击技术显然更胜一筹,AsafAprozper的CoffeeShot工具通过在Java中实现注入方法来证明这种检测尝试的漏洞。总结如今,无文件攻击已成为常态。虽然一些攻击和恶意软件家族试图在其攻击的各个方面都实现无文件化,但只有一些功能使其成为无文件化。对于攻击者来说,取消记录只是一种试图绕过攻击的手段。至于有没有档案,那只是表象而已。未来,攻击者可能会结合所有攻击技术,包括使用恶意文件、恶意脚本、与本地程序交互、内存注入等。具有无文件属性的攻击基于应用程序和操作系统功能,在尝试检测和防止各种滥用时利用防病毒工具中的盲点。本文翻译自:https://blog.minerva-labs.com/deconstructing-fileless-attacks-into-4-underlying-techniques
