EDR Silencers and Beyond Exploring Methods to Block EDR Communication - Part 1
对于红队和对手来说,保持隐蔽是非常重要的。如今,许多公司都部署了 EDR 代理,这些代理始终是关注的焦点,像 EDRSilencer 或 EDRSandblast 这样的工具使用不同的技术来防止 EDR 代理与日志摄取端点的进一步通信。
几周前,我和 Mehmet Ergene 讨论了其他防止代理通信的方法以及检测此类篡改的方法。于是,诞生了一个两部分的博客文章的想法。虽然我只介绍了一种“新颖”的阻止 EDR 的方法,但 Mehmet 已经发布了第二部分,其中涵盖了其他方面。
注意
虽然本博客文章中的示例针对的是 Microsoft Defender for Endpoint,但所使用的技术并不限于此 EDR。
以往的工作
由于这个话题并不新颖,已经有很多优秀的资源可以参考,因为它们仍然是攻击 EDR 代理的有效方法。
Windows 防火墙
最明显的方法是使用 Windows 防火墙阻止 EDR 代理的通信,这已经得到了广泛的报道。Søren Fritzbøger 在 2021 年发布了一篇很棒的博客文章,Bhabesh Raj 也对此进行了检测。
Windows 过滤平台
使用 Windows 过滤平台(WFP),如 EDRSilencer 所做的,已在 Jonathan Johnson 的“消音 EDR 消音器”一文中得到了很好的覆盖。它不仅涵盖了攻击本身,还为 EDR 供应商提供了如何检测和缓解该问题的想法。
这两种技术都利用 Windows 平台的网络层来防止传感器与云服务的通信。但是,当你在 Windows 上工作得足够久时,你会知道还有很多其他方法可以篡改操作系统的网络层。接下来我将探讨其中之一:
名称解析策略表
自 Windows 7 以来,Windows 操作系统支持一个名为名称解析策略表(NRPT)的功能。
该功能的主要目标是根据 DNS 后缀或 FQDN 配置 DNS 设置,并覆盖系统默认的 DNS 设置。例如,如果你希望某个子域始终发送到支持 DNSSEC 验证的特定 DNS 服务器,你可以将其添加到策略表中。
但在我深入细节之前,最后要向Nathan McNulty致敬,他是这一功能的最大倡导者之一。
安静,小代理
> 所描述的方法需要目标机器的管理权限。
关于 NRPT 的一个重要事实是,Windows 中的 DNS 客户端将始终检查该表,只有在未找到任何匹配项时,它才会使用默认的 DNS 服务器。
幸运的是,Microsoft 提供了Microsoft Defender for Endpoint 所需的完整 URL 和域名列表。攻击者可以使用例如 PowerShell cmdletAdd-DnsClientNrptRule
添加两个新条目,这将把所有 FQDN 及其所有子域的 DNS 查询重定向到 localhost,而不是常规的 DNS 服务器。像许多流行的广告拦截器一样,这将导致 DNS 查询失败,因此 MDE 代理将无法再发送新事件。你也可以将 DNS 请求发送到不同的 IP 地址,只要响应不是正确的即可。
Add-DnsClientNrptRule-Namespace".endpoint.security.microsoft.com"-NameServers127.0.0.1-Comment"Silenced by Name Resolution Policy Table"
Add-DnsClientNrptRule-Namespace"endpoint.security.microsoft.com"-NameServers127.0.0.1-Comment"Silenced by Name Resolution Policy Table"
Clear-DnsClientCache
当然,仅仅一个域名是不够的,但当你添加所有 EDR 代理所需的域名时,执行后设备的时间线将会是空的。
检测机会
PowerShell 命令执行
根据配置生效的速度,执行的命令可能会被捕获并通过自定义检测轻松检测到。
DeviceEvents
| where ActionType == @"PowerShellCommand"
| where AdditionalFields has "Add-DnsClientNrptRule"
在我的测试中,变化的应用速度如此之快,以至于连 PowerShell 命令都不会被注册。然而,仍然存在一些边缘情况,你可能会偶然看到其中一个执行过程。正如在安全领域中一样,一种技术可以通过多种不同的检测方式被发现,因此最好有多种检测措施。
注册表更改
当然,PowerShell 并不是唯一可以向此配置添加条目的方法,单一基于执行命令的检测是不够的。在后台,该命令会在注册表键HKLMSystemCurrentControlSetServicesDnscacheParametersDnsPolicyConfig{UUID}
中创建新的注册表值。
DeviceRegistryEvents
| where RegistryKey startswith @"HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesDnscacheParametersDnsPolicyConfig"
注册表值不会被 Defender for Endpoint 捕获,这使得进一步过滤变得困难。一个额外的指示器是使用 PowerShell 添加条目的InitiatingProcessVersionInfoInternalFileName
,其值为Wmiprvse.exe。
添加的重要注册表值包括:
|
|
---|---|
|
|
|
|
> 值Name 的类型为 MULTI_SZ,这甚至阻止了 Sysmon 捕获此数据,因为它对这类数据使用了硬编码的值Binary Data。
已知对这些注册表键的良性正面更改包括像 Tailscale 这样的 VPN 软件,它们利用此功能在不更改任何特定接口上的 DNS 服务器的情况下重定向您的 DNS 流量。
后记
由于所描述的方法阻止了 EDR 代理发送任何数据,因此仅依赖代理进行检测是不够的。作为一个行业,供应商或您作为检测工程师和安全架构师可以采取一些措施来检测和缓解此攻击。
EDR 供应商可以做什么?
EDR 供应商可以从多个角度应对这一攻击。
-
监控 NRPT 表中某些域后缀和 FQDN 的更改,恢复它们并创建警报。这种方法的缺点是可能会对该表进行合法更改。 -
不仅依赖系统 DNS 进行名称解析。在接入代理后,可以为最重要的 FQDN 接收备份 IP 地址,并在操作系统 DNS 客户端返回错误或返回的 IP 地址没有响应时回退到这些地址。
你可以做什么?
您可以建立一个与供应商无关的备份警报通道,通知您有关重要注册表键的更改以及来自 EDR 代理的指示篡改或通信丢失的事件。
您可以使用 Sysmon 等工具实现此功能,仅监控最小的一组注册表条目,并将这些事件转发到您的日志分析工作区。
更多技术
正如开头所提到的,Mehmet Ergene 在他的博客文章中发布了更多篡改 EDR 通信的方法。请前往那里 阅读。
附加信息
-
EDRSilencer -
EDRSandblast -
使用防火墙规则静音 Microsoft Defender for Endpoint -
检测 Defender 防火墙中新防火墙规则的添加 -
静音 EDR 静音器 -
SANS ISC - Sysmon 的 RegistryEvent(值设置) -
EDR 静音器及其他:探索阻止 EDR 通信的方法 - 第 1 部分
原文始发于微信公众号(securitainment):EDR Silencers 与阻止 EDR 通信的方法探索 - 第一部分
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论