防病毒技术:无文件攻击

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

无文件攻击简介

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

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

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

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

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

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

许多专业安全分析人员通过长期的跟踪分析,确认无文件的攻击其实是包含各种文件的。在这种情况下,攻击者提供恶意文件通常会作为电子邮件附件,用于以下其中一种目的:

  • 恶意文件可以充当其他文件的灵活容器:例如,攻击者可以在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

原文地址:https://www.cnblogs.com/meandme/p/10337267.html

时间: 2024-11-08 12:52:26

防病毒技术:无文件攻击的相关文章

利用LNK进行的无文件攻击

前言 今日揭示一项众多APT组织常用的攻击手法---lnk攻击,因为该项攻击可以创建一个新的快捷方式作为间接手段,可以伪装使其看起来像一个合法的程序. 目录 0x00 什么是“无文件攻击” 0x01 LNK攻击剖析 0x02 案例分析 0x03 样本全家桶 0x04 参考链接 0x00 什么是“无文件攻击” 安全搞了这么久,好像经常有听到过APT的一些攻击手法,例如“鱼叉钓鱼”.“水坑攻击”等等.这里着重介绍下“无文件攻击”,这里的无文件攻击,并不是不带文件的攻击,通常是用来指恶意程序没有直接落

60字节 - 无文件渗透测试实验

0x00 缘由 前几天看到文章<全球上百家银行和金融机构感染了一种"无文件"恶意程序,几乎无法检测>,希望自己能够亲手实验一下,以最大程度还原这种"无文件"攻击方式. 0x01 拓扑设计 192.168.1.0/24: 模拟公网环境 172.21.132.0/24: 模拟企业内网环境 192.168.1.108: 黑客 Kali 攻击机 192.168.1.212: 黑客 Windows 攻击机 边界 Web 服务器双网卡(公网的:192.168.1.1

JAVA之IO技术 合并文件--有bug哦

/*将三个文本文件的内容copy到一个文件中. * 基本思路:通过续写的方式. * * JAVA之IO技术中提供了一个可串联的字节输入流对象. * * 合并流对象 * SequenceInputStream: * SequenceInputStream 表示其他输入流的逻辑串联. * 它从输入流的有序集合开始,并从第一个输入流开始读取, * 直到到达文件末尾,接着从第二个输入流读取,依次类推, * 直到到达包含的最后一个输入流的文件末尾为止. * 有两个构造函数: * SequenceInput

JAVA之IO技术 分割文件

/* * 讲一个图片文件按照指定的大小切割成多个碎片文件. * 方法: * 循环读取数据到缓冲区,存放到不同的文件中就OK的啦 */ package ioTest.io3; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class SplitFileDemo { public static void main(String[] args) {

15、NFC技术:使用Android Beam技术传输文件

传输文件的API 从Android4.1开始,NfcAdapter类增加了如下两个推送数据的方法. NfcAdapter.setBeamPushUris NfcAdapter.setBeamPushUrisCallback 这两个方法的原型如下: public void setBeamPushUris(Uri[] uris, Activity activity); public void setBeamPushUrisCallback(CreateBeamUrisCallback callbac

视频开发技术之文件传输

AnyChat具有缓冲区及文件传输功能,可以实现客户端与客户端之间的缓冲区和文件传输,也可以实现客户端与服务器之间的缓冲区和文件传输功能(V4.1版本新增功能). AnyChat客户端之间的缓冲区及文件传输通道有: 1.透明通道API接口:BRAC_TransBuffer: 2.透明通道扩展API接口:BRAC_TransBufferEx: 3.文件传输API接口:BRAC_TransFile: AnyChat客户端与服务器之间的缓冲区及文件传输通道有: 1.SDK Filter Data AP

WEB攻击与防御技术 pikachu——文件上传漏洞

文件上传漏洞 一.client check 首先看到标题是客户端验证 用BURP抓包,由于是客户端的检验,直接将抓到的包的文件后缀.png改成.php 发送后发现成功绕过,上传成功 二.MIME type MIME类型还是要借助Burp工具来利用 将content type文件头改成png的文件头 别的都不需要去更改,点击发送就会发现,文件上传成功,MIME绕过成功 三.getimagesize 原文地址:https://www.cnblogs.com/p201721210024/p/12077

黑客中级技术 缓冲区溢出攻击的介绍

大家都知道缓冲区溢出是一种普遍.而且危险性极强的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运行失败.系统当机.重新启动等后果. 更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作. 缓冲区溢出攻击有多种英文名称:buffer overflow,buffer overrun,smash the stack,trash the stack,scribble the stack, mangle the stack, memory leak

《图解Http》 10,11章:构建Web的技术, Web的攻击技术

10.2动态HTML 通过调用客户端脚本语言js,实现对web页面的动态改造.利用DOM文档对象模型,指定想发生变化的元素. 10.22 更容易控制的DOM 使用DOM可以将HTML内的元素当作对象操作. 10.3 Web应用 10.31通过Web提供功能的Web应用. 10.32 与web服务器协作的CGI Common Gateway Interface 通用网关接口:指服务器收到客户端发过来的请求后,转发给程序的一组机制. 10.4 数据发布的格式,语言 10.41 XML (extens