反恶意软件扫描接口 (AMSI) 与 Microsoft Defender 防病毒集成

适用于

  • Microsoft Defender XDR
  • Microsoft Defender 防病毒
  • Microsoft Defender for Endpoint P1 & P2
  • Microsoft Defender 商业版
  • 个人Microsoft Defender

平台

  • Windows 10 及更高版本
  • Windows Server 2016及更新

Microsoft Defender for Endpoint利用反恶意软件扫描接口 (AMSI) 来增强针对无文件恶意软件、基于动态脚本的攻击和其他非传统网络威胁的保护。 本文介绍 AMSI 集成的优点、它支持的脚本语言类型以及如何启用 AMSI 以提高安全性。

什么是无文件恶意软件?

无文件恶意软件在现代网络攻击中起着关键作用,它使用隐身技术来避免检测。 一些主要的勒索软件爆发使用无文件方法作为其杀伤链的一部分。

无文件恶意软件使用已存在于受入侵设备上的现有工具,例如 PowerShell.exe 或 wmic.exe。 恶意软件可以渗透到进程,在其内存空间中执行代码,并调用这些内置工具。 攻击者可显著减少其占用空间并逃避传统的检测机制。

由于内存是易失性的,并且无文件恶意软件不会将文件放在磁盘上,因此使用无文件恶意软件建立持久性可能很棘手。 无文件恶意软件如何实现持久性的一个示例是创建启动“单行”PowerShell cmdlet 的注册表项。 此命令启动存储在注册表 BLOB 中的模糊 PowerShell 脚本。 模糊处理的 PowerShell 脚本包含一个反射式可移植可执行文件 (PE) 加载程序,该加载程序从注册表加载 Base64 编码的 PE。 存储在注册表中的脚本可确保恶意软件持久保存。

攻击者使用多种无文件技术,使恶意软件植入变得隐秘和逃避。 这些技术包括:

  • 反射 DLL 注入:反射 DLL 注入涉及将恶意 DLL 手动加载到进程内存中,而无需将上述 DLL 放在磁盘上。 恶意 DLL 可以托管在远程攻击者控制的计算机上,并通过暂存网络通道传递, (例如传输层安全性 (TLS) 协议) ,或者以模糊形式嵌入感染途径(如宏和脚本)中。 此配置会导致逃避监视和跟踪加载可执行模块的 OS 机制。 使用反射 DLL 注入的恶意软件的一个示例是 HackTool:Win32/Mikatz!dha

  • 内存攻击:攻击者使用无文件内存攻击在受攻击计算机上远程运行任意代码。 例如,UIWIX 威胁使用 Petya 和 WannaCry 使用的TernalBlue 攻击来安装 DoublePulsar 后门,并且完全位于内核的内存中, (SMB 调度表) 。 与 Petya 和 Wannacry 不同,UIWIX 不会删除磁盘上的任何文件。

  • 基于脚本的技术:脚本语言提供了用于传递仅内存可执行有效负载的强大方法。 脚本文件可以嵌入编码的 shell 代码或二进制文件,它们可以在运行时动态解密,并通过 .NET 对象或直接使用 API 执行,而无需将它们写入磁盘。 脚本本身可以隐藏在注册表中、从网络流中读取,或由攻击者在命令行中手动运行,而无需触摸磁盘。

    注意

    不要禁用 PowerShell 以阻止无文件恶意软件。 PowerShell 是一种功能强大且安全的管理工具,对于许多系统和 IT 功能都很重要。 攻击者使用恶意 PowerShell 脚本作为攻击后技术,这种技术只能在发生初始入侵后发生。 其滥用是攻击的症状,该攻击始于其他恶意操作,例如软件利用、社会工程或凭据盗窃。 关键是防止攻击者进入他们可能滥用 PowerShell 的位置。

    提示

    减少环境中未签名的 Powershell 脚本数有助于提高安全状况。 下面是有关如何将签名添加到环境中使用的 Powershell 脚本的说明,你好,脚本人员!如何使用企业 Windows PKI 对Windows PowerShell脚本进行签名? (第 2 部分(共 2 部分)) |脚本博客

  • WMI 持久性:某些攻击者使用 Windows Management Instrumentation (WMI) 存储库来存储恶意脚本,然后使用 WMI 绑定定期调用这些脚本。 Microsoft Defender防病毒使用通用、启发式和基于行为的检测以及本地和基于云的机器学习模型来阻止大多数恶意软件。 Microsoft Defender防病毒通过以下功能防范无文件恶意软件:

    • 使用 AMSI 检测基于脚本的技术,即使存在多个模糊处理层,也能够检查 PowerShell 和其他脚本类型
    • 通过定期和每当观察到异常行为时扫描 WMI 存储库来检测和修正 WMI 持久性技术
    • 通过增强的内存扫描技术和行为监视来检测反射 DLL 注入

为什么选择 AMSI?

AMSI 为在 Windows 内置脚本主机上采用模糊处理和规避技术的恶意软件提供更深层次的检查。 通过集成 AMSI,Microsoft Defender for Endpoint提供了针对高级威胁的额外保护层。

支持的脚本语言

  • PowerShell
  • Jscript
  • VBScript
  • Windows 脚本主机 (wscript.exe 和 cscript.exe)
  • .NET Framework 4.8 或更高版本 (扫描所有程序集)
  • Windows Management Instrumentation (WMI)

如果使用 Microsoft 365 应用版,AMSI 还支持 JavaScript、VBA 和 XLM。

AMSI 目前不支持 Python 或 Perl。

启用 AMSI

若要启用 AMSI,需要启用脚本扫描。 请参阅配置Microsoft Defender防病毒的扫描选项

另请参阅 Defender Policy CSP - Windows 客户端管理

AMSI 资源

反恶意软件扫描接口 (AMSI) API 可供开发人员和防病毒供应商实现。

Exchange Sharepoint 等其他Microsoft产品也使用 AMSI 集成。

用于防范无文件攻击的更多资源

  • Windows Defender 应用程序控制和 AppLocker。 强制实施强代码完整性策略,仅允许受信任的应用程序运行。 在无文件恶意软件的上下文中,WDAC 将 PowerShell 锁定为约束语言模式,这限制了可能导致代码执行无法验证的扩展语言功能,例如直接 .NET 脚本、通过 Add-Type cmdlet 调用 Win32 API,以及与 COM 对象的交互。 这实质上缓解了基于 PowerShell 的反射 DLL 注入攻击。

  • 攻击面减少 可帮助管理员防范常见攻击途径。

  • 启用基于虚拟化的代码完整性保护。 通过虚拟机监控程序代码完整性 (HVCI) 缓解内核内存攻击,这使得使用内核模式软件漏洞注入恶意代码变得困难。