跳转到主要内容

无文件恶意软件

本文约需 2 分钟阅读

无文件恶意软件是指不在磁盘上写入文件、直接在内存中执行的恶意软件的统称。传统的杀毒软件通过扫描文件的特征码 (模式) 来检测威胁,但由于无文件恶意软件没有可供扫描的文件,因此能够绕过这种检测手法。它从 2017 年前后开始激增,如今许多高级定向攻击都已采用无文件手法。

Living off the Land (LOL) 手法

无文件恶意软件的核心是一种被称为「Living off the Land (寄生于环境)」的手法。由于它滥用操作系统中自带的正规工具,安全产品难以区分「正常的管理操作」与「攻击」。

PowerShell

在内存中执行脚本。用 Base64 编码混淆命令,并从 C2 服务器下载并执行载荷

WMI

使用 Windows Management Instrumentation 远程启动进程,并通过事件订阅实现持久化

.NET / MSBuild

滥用 .NET 的内联任务功能,编译并执行嵌入在 XML 文件中的 C# 代码

mshta / certutil

被滥用于执行 HTA 文件,以及利用 certutil 的 Base64 解码功能还原载荷

LOLBAS (Living Off The Land Binaries, Scripts and Libraries) 项目系统地编录了可能被滥用于攻击的 Windows 标准二进制文件。安全团队参照该列表来确定应监控进程的优先级。

传统杀毒软件无法检测的原因

传统 AV
文件扫描
检测失败
不存在文件
EDR
行为监控
检测成功
检测异常的 API 调用

传统杀毒软件的工作方式是将磁盘上的文件与特征码数据库进行比对。由于无文件恶意软件仅在内存中运行,因此没有可供扫描的对象。此外,PowerShell 和 WMI 是操作系统的正规组件,若直接屏蔽这些进程会影响业务运行。这种「滥用正规工具」正是导致无文件恶意软件难以检测的根本原因。

基于 EDR 的行为检测

EDR (Endpoint Detection and Response) 监控的是进程的行为,而非文件是否存在。它会检测诸如 PowerShell 执行了 Base64 编码的命令、通过 WMI 启动了可疑进程、通常不通信的进程连接到了外部 IP 等异常模式,并发出告警。通过结合基于机器学习的行为分析,它还能应对未知的无文件攻击。

潜伏于注册表与计划任务

尽管无文件恶意软件「不写入文件」,但它仍可能拥有在重启后存活下来的持久化机制。具有代表性的手法包括:在 Windows 注册表的 Run 键中写入编码后的 PowerShell 命令,或将恶意脚本注册为计划任务。利用 WMI 事件订阅,可以以特定条件 (登录、时刻等) 为触发器在内存中执行代码。还发现了通过与Rootkit相结合来隐藏这些持久化条目本身的高级手法。

内存取证的重要性

在调查无文件恶意软件时,数字取证中的内存取证起着决定性的重要作用。由于磁盘上不会留下痕迹,因此不获取并分析 RAM 的转储就无法掌握攻击的全貌。借助 Volatility Framework 等工具,可以识别出内存中的可疑进程、被注入的代码以及网络连接目标。

在事件发生时重启终端,会使内存中的证据全部消失。务必将「先获取内存转储,然后再处置」这一步骤作为事件响应的初动彻底贯彻。横向移动的痕迹也往往只残留在内存中,因此从勒索软件防护的角度来看,也需要建立完善的内存取证体系。

浏览器扩展程序的安全作为与无文件手法相关的攻击向量,也需要加以注意。恶意软件分析的专业书籍 (Amazon)也可以在此查找。

相关术语

这篇文章对您有帮助吗?

XHatena