在沙盒中运行Microsoft Defender防病毒
适用于:
- Microsoft Defender XDR
- Microsoft Defender for Endpoint 计划 2
- Microsoft Defender 商业版
- Microsoft Defender for Endpoint 计划 1
- Microsoft Defender 防病毒
平台:
- Windows
希望体验 Defender for Endpoint? 注册免费试用版。
本文介绍如何在沙盒环境中运行 Microsoft Defender 防病毒,以增强防篡改保护。
自 2018 年 10 月 26 日起,Microsoft Defender防病毒及其内置防病毒功能可在 Windows 上的沙盒中运行。 这是第一个具有此功能的完整防病毒解决方案,并继续引领行业提高安全性标准。
在开始之前,必须满足以下要求:
- Microsoft Defender防病毒 (活动模式)
- Windows 11或Windows 10版本 1703 或更高版本
- Windows Server 2022、Windows Server 2019 或 Windows Server 2016 或更高版本
Microsoft 内部和外部的安全研究人员以前都发现了攻击者利用Microsoft Defender防病毒内容分析器中漏洞的方法,这些漏洞可以实现任意代码执行。 为了检查整个系统的恶意内容和项目,防病毒以高特权 (本地系统、NT Authority\SYSTEM) 运行,使其成为攻击目标。
而从沙盒升级特权对于最新版本Windows 10或更高版本非常困难,并且,在沙盒中运行Microsoft Defender防病毒可确保在不太可能发生入侵时,恶意操作仅限于隔离的环境,从而保护系统的其余部分免受伤害。 这是 Microsoft 持续投资的一部分,旨在通过安全创新领先于攻击者。
现代反恶意软件产品会实时检查许多输入,例如磁盘上的文件、内存中的数据流和行为事件。 其中许多功能需要对有关资源的完全访问权限。 第一个主要沙盒工作与将防病毒的检查功能Microsoft Defender分层到绝对必须使用完全权限运行的组件和可以沙盒的组件中。 沙盒组件的目标是确保它们包含风险最高的功能,例如扫描不受信任的输入、扩展容器等。 同时,我们必须尽量减少两个层之间的交互次数,以避免大量的性能成本。
资源使用也是另一个需要大量投资的问题,特权进程和沙盒进程都需要访问安全智能更新、其他检测和修正元数据。 为了避免重复并保留强大的安全保障,即避免不安全的共享状态或引入在进程之间传递数据/内容的巨大运行时成本,我们使用了一种模型,其中大多数保护数据托管在内存映射文件中,这些文件在运行时是只读的。 这意味着保护数据可以托管到多个进程中,而不会有任何开销。
可以按照以下步骤通过设置计算机范围的环境变量来启用沙盒:
在 PowerShell 或 CMD 中以管理员身份运行以下命令:
setx /M MP_FORCE_USE_SANDBOX 1
重启设备。 重启后,除了以下文件夹中的 MsMpEng.exe 之外,
MsMpEngCP.exe
还会看到一个新进程:Path 流程 说明 C:\ProgramData\Microsoft\Windows Defender\Scans MsMpEngCP.exe 反恶意软件服务可执行内容进程 C:\Users\All Users\Microsoft\Windows Defender\Scans MsMpEngCP.exe 反恶意软件服务可执行内容进程 备注
中的
MsMpEngCP.exe
CP 是内容过程。
若要禁用Microsoft Defender防病毒的沙盒,请在 PowerShell 或 CMD 中以管理员身份运行以下命令:
setx /M MP_FORCE_USE_SANDBOX 0
Microsoft Defender防病毒执行进程内回退,该回退在特权/父进程中托管内容扫描,以提供保护。
以低特权运行的内容进程也积极使用所有可用的缓解策略来减少表面攻击。 它们为新式攻击缓解技术启用和防止运行时更改,例如数据执行防护 (DEP) 、地址空间布局随机化 (ASLR) ,以及控制流防护 (CFG) 。 它们还禁用 Win32K 系统调用和所有扩展点,并强制仅加载已签名和受信任的代码。
启用了沙盒的 MDAV 性能
性能通常是围绕沙盒引发的main问题,特别是考虑到反恶意软件产品处于许多关键路径中,例如同步检查文件操作以及处理、聚合或匹配大量运行时事件。 为了确保性能不会降低,我们必须尽量减少沙盒和特权进程之间的交互次数。 同时,仅在成本不高的关键时刻(例如,执行 I/O 时)执行这些交互。
Microsoft Defender防病毒经过精心策划,以避免不必要的 I/O,例如,将每个已检查文件的数据读取量降至最低对于保持良好性能至关重要,尤其是在较旧的硬件 (旋转磁盘、远程资源) 上。 因此,必须维护一个模型,使沙盒可以根据需要请求数据进行检查,而不是传递整个内容。
启用了沙盒的 MDAV 的可靠性
备注
将句柄传递到沙盒 (以避免传递实际内容) 成本不是一种选择,因为存在许多方案,例如实时检查、AMSI 等,其中没有“可共享”句柄可供沙盒在不授予重大权限的情况下使用,这会降低安全性。
有关沙盒的另一个重要问题是与进程间通信机制有关,以避免死锁和优先级反转等潜在问题。 通信不应通过限制调用方或限制可处理的并发请求数来引入任何潜在的瓶颈。 此外,沙盒进程不应单独触发检查操作。 所有检查都应在不触发更多扫描的情况下进行。 这需要完全控制沙盒的功能,并确保不会触发意外操作。 低特权 AppContainers 是实现强保证的完美方法,因为基于功能的模型将允许对指定沙盒进程可以执行的操作进行精细控制。
启用了沙盒的 MDAV 修正
最后,从安全角度来看,一个重大挑战与内容修正或消毒有关。 鉴于操作 (尝试将二进制文件还原到原始预感染内容) 的敏感性质,我们需要确保以高特权发生此情况,以缓解内容进程 (沙盒) 可能遭到入侵的情况,并且可以使用消毒以意外方式修改检测到的二进制文件。
如果在进程停止时存在关联的Windows 错误报告 (WER) 事件,请收集支持诊断日志和任何相关的转储/故障信息。