简介
在渗透测试或红队活动中,反病毒和端点检测与响应 (EDR) 系统会不断追击攻击者。攻击者总是有两个选择:要么想办法躲开杀毒软件和 EDR 的镰刀,要么想办法阻止这些防御系统正常运行。(说到这里,有些人可能已经想到了 "自带漏洞驱动程序"(BYOVD)技术)。
如果有可能将代码注入到受这些程序保护的防御程序或有效载荷中,对攻击者来说就太好了。
在本文中,我将演示闯入包含 Windows Defender 可执行文件的受保护文件夹的技术。从这里,我们可以随意操纵 Defender,如侧载 DLL、破坏可执行文件以阻止服务运行等。这项技术只需使用 Windows 上的可用工具即可完成,无需任何额外的攻击性工具。
正文
1. Windows Defender 服务选择可执行文件的方式
Windows Defender 的操作文件夹位于路径
“ ProgramData\Microsoft\Windows Defender\Platform[Version-Number] ”。每当有新版本更新时,WinDefend服务都会创建一个以新下载的版本命名的新文件夹,并将其放置在“ Platform ”文件夹中。这个新文件夹将包含新版WinDefend的所有可执行文件。

那么, 当 Windows Defender 从旧版本过渡到新版本时会发生什么?
- 通过调用“ Platform ”文件夹中的QueryDirectory函数列出所有现有版本。
- 选择版本号最高的文件夹,即最新版本。
- 使用位于选定文件夹中的可执行文件创建一个新的 Defender Service 进程,并退出旧进程。
- 更新WinDefend服务配置以指向新文件夹;从现在开始,该服务将在此文件夹中执行,直到有新版本可用。

Windows Defender 始终阻止将文件写入其运行文件夹,“ Platform ”文件夹也不例外。但是,如果我创建一个新文件夹而不是写入文件,会怎么样呢?

你不惊讶吗?正如上图所示,我完全可以在“ Platform ”文件夹中创建任意名称的文件夹。
结合 Windows Defender 如何过渡到新版本的信息,如果我在“平台”中创建一个以最高版本号命名的文件夹,Defender 是否会将我的文件夹用作其执行文件夹?

2. 利用 Defender 的更新机制劫持其执行文件夹
首先,我将把 Defender 当前的可执行文件夹复制到一个完全受控的路径 ( C:\TMP\AV )。这个新路径将用于执行以下场景: DLL 劫持、删除重要的 Defender 文件等。如果漏洞利用成功,这里将成为 Defender 的新执行文件夹。我还希望 Defender 能够在这个不受保护的文件夹中继续正常运行。
之后,在“ Platform ”文件夹中创建一个指向新路径(C:\TMP\AV )的 SYMLINK 目录。确保该 SYMLINK 名称与“ Platform ”中现有文件夹的最高版本号相对应。例如,如果当前版本为“ 4.18.25070.5-0 ”,我将创建一个名为“ 5.18.25070.5-0 ”的 SYMLINK,以确保该 SYMLINK 具有最高版本号。
mklink /D "C:\ProgramData\Microsoft\Windows Defender\Platform\5.18.25070.5-0" "C:\TMP\AV"
我发现如果我可以创建一个新文件夹,那么我也可以在“ Platform ”文件夹中创建一个符号链接文件夹。

重新启动 Windows 以允许 Defender 服务再次运行。重新启动 Windows 后,Defender 现已运行,其可执行文件位于攻击者拥有读/写权限的文件夹中。

如您所见,Defender 现在正在使用位于“ C:\TMP\AV ”的可执行文件。在此文件夹中,我们可以完全控制执行诸如写入/删除文件之类的操作。您完全可以找到使用 DLL 侧加载技术将代码注入 Defender 进程的方法,或者干脆销毁可执行文件以阻止 Defender 服务运行。

3. 永久禁用 Windows Defender 的简单实验
劫持文件夹并让 Defender 从我想要的文件夹执行后,我现在将尝试禁用 Defender 看看是否有效。我不会销毁可执行文件,而是删除“平台”中版本文件夹与我完全控制的文件夹之间的符号链接。下次运行时,Windows Defender 将无法找到我的可执行文件夹,导致执行失败。
rmdir "C:\ProgramData\Microsoft\Windows Defender\Platform\5.18.25070.5-0"


由于与 Defender 相关的所有服务均未成功激活,因此该服务不再处于活动状态,因此 Windows 安全页面已被禁用。
总结
基本前提是利用 Windows 处理某些文件夹路径的方式。通过注册表操作,可以将 shell 文件夹(如 ProgramData)的路径重定向到另一个位置。
当 Windows Defender 等应用程序尝试扫描默认位置(例如 C:\ProgramData)时,操作系统内核会根据重定向设置将读取和写入操作透明地指向新位置。因此,Defender 最终会扫描重定向的位置,而不是原始的真实路径。如果恶意软件实际存储在原始的真实路径中,而重定向指向一个干净/诱饵的位置,Defender 将在扫描过程中无法找到恶意项目。
从本质上讲,该技术欺骗系统,使其将对一个文件夹的访问请求重新路由到另一个文件夹。
注:原文为 https://www.zerosalarium.com/2025/09/Break-Protective-Shell-Windows-Defender-Folder-Redirect-Technique-Symlink.html ,本文为译文,版权归原作者所有。






