联合作者:@oops4git(https://github.com/oops4git)
EDRPrison 利用合法的 WFP 标注驱动程序 WinDivert 来有效静默 EDR 系统。该项目借鉴了 Shutter、FireBlock 和 EDRSilencer 等工具的思路,专注于基于网络的规避技术。与之前的工具不同,EDRPrison 安装并加载一个外部合法的 WFP 标注驱动程序,而不是仅依赖内置的 WFP。此外,它通过动态添加运行时过滤器来阻止 EDR 进程的出站流量,而无需直接与 EDR 进程或其可执行文件交互。
总之,EDRPrison 具有以下关键特性和能力:
更多技术细节请参阅文章:https://winslow1984.com/books/malware/page/edrprison-borrow-a-legitimate-driver-to-mute-edr-agent
成功运行 EDRPrison 需要提升的权限。EDRPrison 由以下三个组件组成:
EDRPrison 在其前身的基础上提供了多项增强和改进,使其成为更强大、更隐蔽的基于网络的 EDR 规避工具:
由于我手头资源有限,到目前为止我已在物理服务器上针对 Elastic Endpoint 和 Microsoft Defender for Endpoint (MDE) 测试了 EDRPrison。
Elastic Endpoint 和 MDE 的相关进程已硬编码在源代码中。测试期间,主程序和 WinDivert 均未被安全系统检测到。
我测试了一些常见的恶意软件样本,例如 Mimikatz。这些样本仍然可能被检测到,因为即使没有互联网连接,EDR 系统仍保留基本的检测能力,例如基于哈希的签名。执行恶意软件后,数据包数量增加,表明其中包含警报数据。

虽然某些检测会在本地发生,但不会出现在 EDR 面板上。在没有互联网连接的情况下,EDR 系统无法利用机器学习和云计算等高级功能来阻止更复杂的恶意软件攻击。


修改以下代码片段以硬编码更多 EDR 进程。
static void initData()
{
processDictionary.TryAdd("MsMpEng.exe", 1);
processDictionary.TryAdd("MsSense.exe", 1);
processDictionary.TryAdd("SenseIR.exe", 1);
processDictionary.TryAdd("SenseNdr.exe", 1);
processDictionary.TryAdd("SenseCncProxy.exe", 1);
processDictionary.TryAdd("SenseSampleUploader.exe", 1);
processDictionary.TryAdd("elastic-endpoint.exe", 1);
processDictionary.TryAdd("elastic-agent.exe", 1);
}
以下方法可用于检测或缓解 EDRPrison 的使用。不过,具体取决于环境,其中一些检测可能会导致误报 (FP)。
如果系统中尚未安装 WinDivert 驱动程序,EDRPrison 将在首次执行时安装该标注驱动程序。操作系统和遥测数据都会记录此事件。
EDRPrison 和其他依赖 WinDivert 的程序需要磁盘上存在 WinDivert64.sys 和 WinDivert.dll。监控这些文件有助于检测此类程序。
WinDivertTool 等工具可以检测当前正在使用 Windows 筛选平台 (WFP) 的进程。

Elastic 有一条检测 规则,可以识别针对安全软件进程的数据包丢弃或阻止操作,这可能表明 EDRPrison 的存在。
工具 WFPExplorer 可帮助管理员审查活动的 WFP 会话、已注册的标注和过滤器。




未来可能增加的一项功能是为驱动程序安装提供额外保护,进一步增强针对未经授权使用 WinDivert 等驱动程序的安全性。
从红队的角度来看,可以根据环境的安全配置采用多种策略来规避上述检测。
如果 WinDivert 在环境中被视为恶意软件,可以使用其他已签名的开源驱动程序。这些替代方案应具有较少的恶意使用记录,并且仍然支持数据包拦截、重新注入以及其他操作技术。
在未经批准不得使用外部驱动程序的环境中,对已安装的或内置的 WFP 标注驱动程序进行逆向工程虽然具有挑战性,但却是可行的。通过复用其标注函数,红队成员可以利用现有的驱动程序。许多安全软件解决方案都包含自己的 WFP 标注驱动程序,可以重新加以利用。
红队成员可以不阻止或丢弃拦截到的数据包,而是将其重定向或代理。这种方法可以规避专注于数据包丢弃或阻止操作的检测规则,同时仍能实现对 EDR 进程的预期干扰。
以下资源在我的研究过程中给予了我很多启发和帮助。我向所有作者表示感谢:
https://github.com/netero1010/EDRSilencer
https://github.com/dsnezhkov/shutter
https://www.mdsec.co.uk/2023/09/nighthawk-0-2-6-three-wise-monkeys/
https://github.com/amjcyber/EDRNoiseMaker
https://www.securityartwork.es/2024/06/17/edr-silencer-2/
https://windowsir.blogspot.com/2024/01/edrsilencer.html
https://github.com/TechnikEmpire/HttpFilteringEngine
https://reqrypt.org/windivert.html
https://learn.microsoft.com/en-us/defender-cloud-apps/network-requirements
https://github.com/microsoft/windows-driver-samples/tree/main/network/trans/WFPSampler