Bootstrap

无文件攻击

无文件攻击是一种高级持续性威胁(APT)的攻击方式,它不会在目标系统的磁盘上留下可执行文件,而是利用系统内置的工具或脚本执行恶意代码,从而绕过传统的安全防护措施。无文件攻击的最大特点就是恶意代码直接在内存中运行,难以被发现和清除。

在这里插入图片描述

根据受感染计算机上的指纹数量来收集三种主要类型的无文件威胁。

类型 I:未执行文件活动

完全无文件恶意软件可以视为永远不需要在磁盘上写入文件的恶意软件。 此类恶意软件首先会如何感染计算机? 例如,目标计算机接收恶意网络数据包,这些数据包会利用 EternalBlue 漏洞。 此漏洞允许安装 DoublePulsar 后门,该后门最终仅驻留在内核内存中。 在这种情况下,没有文件或文件上写入的任何数据。

受攻击的设备可能还具有隐藏在设备固件 ((如 BIOS) 、USB 外围 ((如 BadUSB 攻击) )或网络卡固件中的恶意代码。 所有这些示例不需要磁盘上的文件才能运行,理论上只能在内存中生存。 恶意代码会在重新启动、磁盘重新安装和 OS 重新安装后生存下来。

这种类型的感染可能特别难以检测,因为大多数防病毒产品都无法检查固件。 如果产品确实能够检查和检测恶意固件,则此级别的威胁修正仍存在重大挑战。 这种类型的无文件恶意软件需要高度复杂,并且通常取决于特定的硬件或软件配置。 这不是一个可以轻松可靠地利用的攻击向量。 虽然存在危险,但此类威胁并不常见,对大多数攻击并不实际。

类型 II:间接文件活动

恶意软件可以通过其他方式在计算机上实现无文件状态,而无需大量的工程工作。 此类的无文件恶意软件不会直接在文件系统上写入文件,但最终可能会间接使用文件。 例如, 使用 Poshspy 后门 攻击者在 WMI 存储库中安装了恶意 PowerShell 命令,并将 WMI 筛选器配置为定期运行该命令。

可以通过命令行执行此类安装,而无需在文件上已有后门。 可以安装恶意软件并在理论上运行,而无需接触文件系统。 但是,WMI 存储库存储在 CIM 对象管理器管理的中央存储区域中的物理文件上,通常包含合法数据。 尽管感染链在技术上确实使用物理文件,但它被视为无文件攻击,因为 WMI 存储库是一个多用途数据容器,无法检测和删除。

类型 III:操作所需的文件

某些恶意软件可以有一种无文件持久性,但不能不使用文件进行操作。 此方案的一个示例是 Kovter,它在注册表中为随机文件扩展名创建 shell 打开谓词处理程序。 打开具有此类扩展名的文件将导致通过合法工具mshta.exe执行脚本。

在这里插入图片描述
调用打开的谓词时,将启动注册表中的关联命令,从而导致执行小型脚本。 此脚本从其他注册表项中读取数据并执行它,进而导致加载最终有效负载。 但是,若要首先触发打开的谓词,Kovter 必须删除具有上述示例中谓词 (所针对的具有相同扩展名的文件,扩展名为 .bbf5590fd) 。 它还必须设置配置为在计算机启动时打开此类文件的自动运行密钥。

Kovter 被视为无文件威胁,因为文件系统没有实际用途。 具有随机扩展名的文件包含在验证威胁是否存在时不可用的垃圾数据。 存储注册表的文件是无法检测到的容器,如果存在恶意内容,则无法将其删除。

按感染主机对无文件威胁进行分类

在介绍了广泛的类别后,我们现在可以深入了解详细信息,并提供感染宿主的细目。 此综合分类涵盖通常称为无文件恶意软件的全景。 它推动我们努力研究和开发新的保护功能,以消除攻击的类,并确保恶意软件不会在军备竞赛中占上风。

利用

  • 基于文件 的 (类型 III:可执行文件、Flash、Java、文档) :初始文件可以利用操作系统、浏览器、Java 引擎、Flash 引擎等执行 shellcode 并在内存中传递有效负载。 虽然有效负载是无文件的,但初始条目向量是一个文件。
  • 基于网络的 (类型 I) :利用目标计算机中的漏洞的网络通信可以在应用程序或内核上下文中实现代码执行。 例如 WannaCry,它利用 SMB 协议中以前修复的漏洞在内核内存中传递后门。

硬件

  • 基于设备的 (类型 I:网卡、硬盘) :硬盘和网卡等设备需要芯片集和专用软件才能正常运行。 在设备的芯片集中驻留在和运行的软件称为固件。 虽然任务很复杂,但固件可能受到恶意软件的感染,就像 公式间谍组织被抓到一样。

  • 基于 CPU 的 (类型 I) :新式 CPU 很复杂,可能包括用于管理目的运行固件的子系统。 此类固件可能容易被劫持,并允许执行从 CPU 内部运行的恶意代码。 2017 年 12 月,两位研究人员报告了一个漏洞,该漏洞允许攻击者执行 管理引擎内的代码 (ME) 存在于 Intel 的任何新式 CPU 中。 同时,观察到攻击者组 PLATINUM 能够使用 Intel 的 Active Management Technology (AMT) 绕过安装的操作系统执行 不可见的网络通信。 ME 和 AMT 本质上是位于 CPU 内部且在极低级别运行的自主微计算机。 由于这些技术的目的是提供远程可管理性,因此它们可以直接访问硬件,独立于操作系统,即使计算机已关闭,也可以运行。

  • 除了在固件级别易受攻击外,CPU 还可以使用直接插入硬件线路的后门进行制造。 这种攻击在过去已经 研究并证明是可能的 。 据报道,x86 处理器的某些模型包含一个类似于 RISC 的辅助嵌入式 CPU 核心,可以 有效地提供后门 ,通过该后门,常规应用程序可以获得特权执行。

  • 基于 USB 的 (类型 I) :可以使用恶意固件重新编程各种 USB 设备,这些固件能够以邪恶的方式与操作系统交互。 例如, BadUSB 技术 允许重新编程的 USB 摇杆充当键盘,通过击键将命令发送到计算机,或作为网络卡,可以随时重定向流量。

  • 基于 BIOS 的 (类型 I) :BIOS 是在芯片集中运行的固件。 它在计算机上启用电源、初始化硬件,然后将控制权传输到启动扇区时执行。 BIOS 是一个重要组件,在低级别运行并在启动扇区之前执行。 可以使用恶意代码重新编程 BIOS 固件,就像过去使用 Mebromi rootkit 一样。

  • 基于虚拟机监控程序的 (类型 I) :新式 CPU 提供硬件虚拟机监控程序支持,使操作系统能够创建可靠的虚拟机。 虚拟机在封闭的模拟环境中运行,理论上不知道仿真。 接管计算机的恶意软件可能会实现小型虚拟机监控程序,以隐藏在正在运行的操作系统领域之外。 此类恶意软件过去已被理论化,最终 观察到真正的虚拟机监控程序根基,尽管迄今鲜为人知。

执行和注入

  • 基于文件 的 (类型 III:可执行文件、DLL、LNK 文件、计划任务) :这是标准执行向量。 可以将简单的可执行文件作为第一阶段恶意软件启动,以在内存中运行额外的有效负载,或注入其他合法运行的进程。

  • 基于宏 的 (类型 III:Office 文档) : VBA 语言 是一种灵活而强大的工具,旨在自动编辑任务并向文档添加动态功能。 因此,攻击者可能会滥用它来执行恶意操作,例如解码、运行或注入可执行有效负载,甚至实现整个勒索软件,如 qkG。 宏在 Office 进程的上下文中执行 (,例如,Winword.exe) 并使用脚本语言实现。 防病毒无法检查任何二进制可执行文件。 虽然 Office 应用需要用户的明确同意才能从文档中执行宏,但攻击者使用社交工程技术来欺骗用户允许执行宏。

  • 基于脚本 的 (类型 II:文件、服务、注册表、WMI 存储库、shell) :默认情况下,Windows 平台上提供 JavaScript、VBScript 和 PowerShell 脚本语言。 脚本与宏具有相同的优势,它们是文本文件 (不是二进制可执行文件) 并在解释器的上下文中运行 (如wscript.exe、powershell.exe) ,这是一个干净而合法的组件。 脚本是通用的,可以通过双击) 或直接在解释器的命令行上执行,从文件 (运行脚本。 在命令行上运行允许恶意软件将恶意脚本编码为 自动启动注册表项 内的服务,作为 WMI 存储库中的 WMI 事件订阅 。 此外,获得受感染计算机访问权限的攻击者可能会在命令提示符上输入脚本。

  • 基于磁盘 的 (类型 II:启动记录) :启动记录是磁盘或卷的第一个扇区,包含启动操作系统启动过程所需的可执行代码。 Petya 等威胁可以通过使用恶意代码覆盖启动记录来感染该记录。 启动计算机时,恶意软件会立即获得控制。 启动记录位于文件系统外部,但操作系统可访问它。 新式防病毒产品能够对其进行扫描和还原。

无文件攻击的原理:

  • 无文件攻击是指不向磁盘写入可执行文件的攻击方法,难以被常规方法检测出来。无文件攻击通常利用系统中内置的可信程序或工具,通过执行恶意的脚本或代码,或者利用系统的漏洞,将恶意代码注入到内存中,实现攻击的目的。
  • 无文件攻击可以分为不同的类型,根据执行代码的角度,可以分为基于文件、基于宏、基于脚本、基于磁盘等。根据攻击的持久化,可以分为一次性的无文件攻击和持久化的无文件攻击。持久化的无文件攻击通常会利用系统的计划任务、注册表、启动项等,实现恶意代码的自启动。

无文件攻击的常见手法有

  • 利用Office文档的宏功能,通过嵌入恶意脚本或下载远程代码,启动系统可信程序(如Rundll32、Powershell等),并对其进行远程线程注入,将恶意代码植入内存中。
  • 利用系统的计划任务或注册表,创建自启动项,调用系统可信程序执行恶意脚本,实现攻击的持久化。
  • 利用系统的命令行工具(如Mshta、Certutil等),执行恶意的HTML或VBScript代码,或者下载恶意文件并执行。
  • 利用.NET框架,通过托管代码注入技术,将恶意的.NET程序集加载到内存中,并执行。
  • 利用缓冲区溢出漏洞,将恶意代码注入到目标进程的内存中,并执行。

无文件攻击的检测方法有

  • 监控进程内存,利用已知的远控、Shellcode、无文件攻击框架等特征,匹配正在运行进程的内存数据,查找恶意代码。
  • 监控系统行为,利用行为检测技术,分析系统进程的启动、注入、网络通信等异常行为,发现可疑的攻击活动。
  • 监控系统日志,利用日志分析技术,收集和分析系统的事件日志、安全日志、应用日志等,发现可疑的攻击痕迹。
  • 监控系统配置,利用配置管理技术,检查系统的计划任务、注册表、服务等,发现可疑的自启动项或恶意修改。

无文件攻击的防御方法有

  • 禁用或限制系统内置的工具或脚本,如关闭Office文档的宏功能,禁用或限制Rundll32、Powershell、Mshta等程序的执行。
  • 安装和更新系统的补丁,修复已知的缓冲区溢出漏洞,防止恶意代码的注入。
  • 安装和更新系统的杀毒软件,利用杀毒软件的实时防护、行为防护、内存防护等功能,阻止恶意代码的执行。
  • 安装和更新系统的EDR软件,利用EDR软件的行为检测、日志分析、配置管理等功能,检测和清除无文件攻击;使用最新的安全软件,及时更新系统的补丁和防护规则,提高系统的安全性能和抵抗能力。
  • 应用白名单策略,限制可信程序或工具的执行权限,防止恶意代码的注入或执行。
  • 启用系统的安全设置,禁用不必要的服务或功能,如PowerShell、宏、WMI等,减少攻击的攻击面。
  • 使用行为分析技术,监测系统的异常行为,如进程注入、注册表修改、网络连接等,及时发现和阻止攻击。
  • 使用内存取证技术,分析内存中的恶意代码,提取攻击的特征和证据,追踪攻击的来源和目的。

无文件攻击是一种隐蔽而危险的攻击方式,需要我们提高警惕,加强防护,及时应对。

无文件攻击的案例:

  • 一种利用Office文档的宏功能,通过嵌入恶意脚本或下载远程代码,启动系统可信程序(如Rundll32、Powershell等),并对其进行远程线程注入,将恶意代码植入内存中的无文件勒索病毒攻击¹²。
  • 一种利用系统的计划任务或注册表,创建自启动项,调用系统可信程序执行恶意脚本,实现攻击的持久化的无文件远控攻击²³。
  • 一种利用系统的命令行工具(如Mshta、Certutil等),执行恶意的HTML或VBScript代码,或者下载恶意文件并执行的无文件下载器攻击²³。
  • 一种利用.NET框架,通过托管代码注入技术,将恶意的.NET程序集加载到内存中,并执行的无文件.NET注入攻击²³。
  • 一种利用VMware ESXi服务器的漏洞,通过一个shell脚本文件执行,该脚本文件使用各种命令删除虚拟机的快照,并将其替换为加密的文件的无文件勒索软件攻击⁴。
;