为了应对愈演愈烈的无文件攻击,我们需要明确地定义“无文件”这个词的含义,以便深入剖析此类攻击的攻击手段及其对现有环境和防御系统的影响。
在安全领域,无文件攻击意味着极其严重的威胁。“无文件”一词,是在探讨绕过恶意文件检测技术的方法时诞生的术语。
无文件攻击技术,利用一系列手段,使得攻击者可以攻陷带有反病毒和应用白名单策略防护的系统。下面,是对该攻击手段的一个概况,包括无文件攻击威胁的准确、清晰的描述。
在许多被分类为无文件攻击的案例中,大部分都有文本文件的影子。在此类攻击中,对方往往是利用恶意文本文档(最常见的是电子邮件的附件),以达到以下的目的:
文本文档可作为其他文件的灵活载体、容器。
例如,攻击者把 JavaScript 文件嵌入 Microsoft Office 文档中,利用社会工程学诱使文档接收者双击执行脚本。可内嵌文件的其它文档类型包括PDF、RTF。因为这些特性是各个应用程序的正常特性,所以通常情况下,反恶意软件技术也不会对这些功能的使用进行干扰。
文本文档可以携带执行恶意代码的漏洞利用。
当前,文档功能的复杂性,为漏洞利用提供了广阔的攻击面。通常,exploit 可以触发捆绑的 shellcode 在应用程序的内存空间执行。这样一来,攻击者无需将恶意代码存放到本地文件系统上即可取得终端设备的控制权。
文本文档可以执行恶意感染的逻辑。
现代文档支持强大的脚本能力,例如 Microsoft Office 支持 VBA 宏。此类功能特性,利用大多数反恶意软件无法区分恶意脚本与良性脚本的弱点,使得攻击者无需通过编译程序即可实施恶意感染。文档脚本拥有的能力包括了执行程序和下载恶意代码。
尽管文本文档本身还是存储在终端设备的本地文件系统中,但是,避免了传统的直接将恶意可执行文件存放于磁盘之上。在大多数情况下,文本文档引导恶意代码直接在终端设备的内存中执行。攻击者利用文本文档发起攻击的案例,见 Omri Moyal 的 write-up the misuse of Microsoft Office support for DDE 。另一种情景,可阅读文章:attackers inserting themselves into the conversation to spread malware。
按照一贯的做法,恶意软件创作者倾向于“无文件”方式的脚本运行攻击,而非传统的将代码编译成可执行二进制文件。除了上面提到的文本文档对脚本的原生支持外,直接在 Microsoft Windows 下运行脚本还有以下几条优点:
直接与系统进行交互,无需受其他应用程序的限制,比如浏览器对脚本的检查。
与编译的可执行恶意文件相比,更不容易被反恶意软件技术探测到。
为躲避应用行为检测,可以灵活地将恶意逻辑分割到数个进程中。
可以利用混淆技术,延缓和更好地避免被反恶意软件技术分析、侦测。
Microsoft Windows 自带的脚本解释器包括 PowerShell, VBScript, 批处理文件和 JavaScript。对应的应用程序为 powershell.exe,cscript.exe,cmd.exe 和 mshta.exe 。此外,Windows 提供的 Linux 子系统,使得其支持的脚本语言更加广泛了。该问题带来的众多挑战中的一个是,企业需要限制这些工具被滥用,见Gal Bitensky’的文章 https://blog.minerva-labs.com/confronting-snake-oil-sales-tactics-in-endpoint-security 。
然而,攻击者却可以利用各种框架工具轻易地混淆攻击脚本。这些混淆措施包括:Daniel Bohannon 针对 PowerShell 的 Invoke-Obfuscation 和 Invoke-DOSfuscation 框架。相应的实际操作,可参见 Minerva 关于 Emotet’s script obfuscation 的分析。
对无文件攻击的讨论,通常包括对 Microsoft Windows 众多内建工具的滥用。这些工具使得攻击者轻松地从一个阶段“跳转”到另一个阶段,无需执行任何编译的二进制可执行文件。这种操作模式有时被称为“平地起飞”。
一旦攻击者的恶意代码能与本地程序进行交互,那么攻击者就有可能利用系统的原生工具进行下一步攻击,包括下载附带的其他恶意代码,启动程序,执行脚本,窃取数据,横向扩展,维持访问等等。攻击者为达到这些目的而调用的工具包括 regsvr32.exe, rundll32.exe, certutil.exe and schtasks.exe。想更加全面地了解系统中被利用的内建程序,库和脚本,参考 Oddvar Moe 的 LOLBAS project 。
Windows 管理规范(WMI),是 Windows 系统内建工具,为攻击者提供了“平地起飞”的绝好机会。WMI 借助运行 wmic.exe 程序和执行脚本(如,PowerShell ),使得攻击者可以操作设备的绝大部分配置。这些工具都是系统自带的、受信任的,所以反恶意软件技术也难以侦测和限制。关于利用 WMI 进行无文件攻击的详细内容,请见 Matt Graeber 的文章 Abusing WMI to Build a Persistent, Asynchronous, and Fileless Backdoor (注 1)。
攻击者依靠这些系统自带的受信任工具,显著地提高了他们逃避反恶意软件工具及应用白名单限制的机率。更多此类的案件,参考 Matthew Dunwoody 的 APT29’s use of WMI and PowerShell to plant fileless backdoors 。
现今的反病毒产品,对于检测磁盘上的恶意文件,是相当在行的;然而,要想检测到只存在于内存中的恶意代码,他们往往是事倍功半。内存的易失性、动态性,使得恶意软件很容易地改变形态;同时,可以自由地运行,无需顾忌任何反恶意技术的侦测。
一旦攻击者开始在终端设备上执行恶意代码(可能是利用上面提及的方法),那么他就有可能将恶意软件解包到内存,无需在磁盘上留下丝毫痕迹。此过程可能包括解压代码到进程自身的内存空间。其他情况下,恶意程序可能将代码注入到其他受信任的进程或者其他正常进程。
内存攻击技术的例子包括以下一些:
在不利用系统脆弱性的情况下,利用系统功能的内存注入。
例如,包括 VirtualAllocEx
和 WriteProcessMemory
在内的 API 常被恶意软件滥用于内存注入。详细操作,参阅 Gal Bitensky 的 overview of the AZORult attack
攻击者可能将编译的可执行程序捆绑在脚本里面,从而在脚本运行时把恶意攻击载荷释放到内存。该攻击手段的常用(一个样例)工具为 PowerSploit, 操作过程可以阅读 Asaf Aprozper 和 Gal Bitensky 的 the GhostMiner analysis(注 2 )。 Chris Truncer 的 Veil Framework 是另一实例。
Process Doppelgänging
是另一种无文件技术,且无需涉及经典的内存注入。取而代之的是,攻击者利用 Microsoft Windows NTFS 的事物(访问)特性:临时修改受信任的内存文件而不同步更改至磁盘。Anton Ivanov, Fedor Sinitsyn 和 Orkhan Mamedov 在 SynAck malware中解析了该技术。
内存滞留技术,使得攻击者可以绕过众多的反恶意技术的控制,包括应用白名单策略。尽管反病毒工具试图追踪内存注入行为,但是攻击者的感染手段使得其防不胜防。Asaf Aprozper的 https://blog.minerva-labs.com/coffeeshot-avoid-detection-with-memory-injection 利用JAVA实现的一个注入方法说明了各种检测方法多么脆弱。
尽管只有少数攻击和恶意软件家族是全程“无文件”的形式,但是大多数恶意软件为了逃避防御系统检测会加入一些无文件的特性。相比于确定威胁是否是全程“无文件”的,我们考虑恶意攻击是采用何种策略、办法绕过防御系统的,对于日后改进防护的工作,或许会更有成效。
攻击者可能结合上面提到的包括利用恶意文本文档,脚本,“平地起飞”以及内存注入等。这些无文件攻击技术,借助应用程序和操作系统的功能特性,以及反恶意软件技术无法有效地侦测和阻止系统工具的滥用的弱点,使得“无文件”攻击成为攻击的新常态。这是越来越多企业关注 https://www.minerva-labs.com/minerva-anti-evasion-platform 的原因,这是专门设计来对抗无文件攻击策略的, https://blog.minerva-labs.com/considerations-for-augmenting-antivirus-protection-on-the-endpoint 。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-7-24 20:40
被StrokMitream编辑
,原因: