一种难以检测的批量禁用EDR传感检测的攻击手法

admin 2025年1月1日14:32:47评论22 views字数 6290阅读20分58秒阅读模式

part1

点击上方蓝字关注我们

将二进制空间安全设为"星标⭐️"

第一时间收到文章更新

一种难以检测的批量禁用EDR传感检测的攻击手法

WDAC技术

Windows Defender应用程序控制(WDAC)技术是Windows 10 和 Windows Server 2016 起开始引入并默认启用。它允许组织对其 Windows 设备上允许运行的可执行代码进行精细控制。WDAC 配置适用于整个设备,并会影响设备的所有用户。WDAC 配置覆盖范围广泛且严格,包括针对用户模式和内核模式的应用程序、驱动程序、DLL 和脚本的规则。WDAC 为防御方提供了一款强大的工具,用于阻止潜在威胁在 Windows 终端上的执行, 但 WDAC 同样可以被用于攻击。

尽管 WDAC 通常用于防御,但它也可以用来阻止遥测源和安全解决方案,例如端点检测与响应 (EDR) 传感器。这些传感器通常在内核空间中运行,并有意使其难以被停止或篡改。然而,由于 WDAC 可以对内核模式的可执行文件和驱动程序应用策略,因此如果攻击者能够应用 WDAC 策略,EDR 传感器便会面临风险。这可以通过远程管理员权限完成。一旦策略在引导时被应用,EDR 传感器将无法运行,从而允许攻击者在没有 EDR 限制的情况下操作。

简而言之,这是主要用于规避防御并协助在 Active Directory 环境中横向移动的技术。它利用精心设计的 WDAC 策略,停止端点上的防御性解决方案,使攻击者能够轻松地迁移到新主机,而不受安全解决方案(如 EDR)的影响。在更大范围内,如果攻击者能够编写组策略对象 (GPO),他们将能够将此策略分发到整个域中,系统性地停止域中所有端点上的大部分(如果不是全部)安全解决方案,可能为部署后期利用工具和/或勒索软件提供便利。

一种难以检测的批量禁用EDR传感检测的攻击手法

攻击技术

尽管此攻击可以通过多种方式执行,但 WDAC 是其中的共同关键因素。由于 WDAC 策略默认拒绝权限,阻止许多 EDR 传感器加载变得异常简单。然而,攻击者的主要考虑是既要建立自己的访问权限,又要限制防御性解决方案的访问权限。因此,从攻击的角度来看,WDAC 策略需要明确地允许攻击者的执行权限。精心设计的 WDAC 策略正是为了满足这一需求。通过自定义策略,攻击者可以阻止 EDR 传感器,同时为自身提供执行权限。

此攻击可分为以下三个阶段:

  1. 攻击者将 WDAC 策略放置在 Windows 代码完整性文件夹的正确位置:C:WindowsSystem32CodeIntegrity

  2. 即使策略在运行时被刷新,也不会对正在运行的进程生效。因此,重启机器是重新启动 EDR 传感器的最简单方法。

  3. 当机器开始重新启动时,WDAC 策略在任何 EDR 驱动程序之前生效,阻止其执行。

一种难以检测的批量禁用EDR传感检测的攻击手法

设计WDAC策略

攻击成功的关键在于所攻击环境的上下文,因为某些 EDR 供应商具有 Windows 硬件质量实验室 (WHQL) 驱动程序。这些驱动程序在 WDAC 策略中默认被允许加载,即使其服务二进制文件被阻止。在测试中发现,尽管 EDR 服务被成功阻止,但其驱动程序仍然被允许加载并显示活动情况。尽管从攻击者的角度来看,最明显的解决方法是直接禁止 WHQL 驱动程序,但这会显著增加端点无法启动的风险。毕竟,此技术的最终目的是协助横向移动操作,如果设备无法启动,这一目标将变得不可能。因此,阻止内核模式组件的更佳方法是基于特定发布者或文件属性进行阻止。在测试中发现,某些 EDR 驱动程序如果无法运行,设备将无法启动。这些驱动程序未显示任何网络活动,因此决定不单纯基于发布者进行阻止,而是专注于基于文件属性进行阻止。这被证明非常成功,因为目标驱动程序和可执行文件在不影响设备运行的情况下无法加载。

如前所述,从攻击的角度来看,定制化的 WDAC 策略极为重要。对于没有 WHQL 驱动程序的 EDR,此策略至少应满足以下条件:

  • 启用强制模式。

  • 允许一个通用路径,以便可执行文件(例如后期利用能力)可以进行加载。

第一项要求非常容易实现——只需关闭审核模式即可。对于第二项要求,选择任意位置存储潜在的后期利用材料即可。

另一个重要的考虑因素是兼容性。确保 WDAC 策略能够在尽可能多的端点上运行非常重要。因此,策略应使用单一策略格式以最大化兼容性。在此示例中,将允许在 C:UsersPublic 路径中执行应用程序。要创建此策略,将使用应用控制策略向导。首先,选择策略创建者,如图:

一种难以检测的批量禁用EDR传感检测的攻击手法

如上所述,单一策略格式是兼容性的最佳选择, 如图:

一种难以检测的批量禁用EDR传感检测的攻击手法

该策略应足够严格以确保EDR无法运行。因此,选择“默认Windows模式”。

一种难以检测的批量禁用EDR传感检测的攻击手法

接下来,根据之前提到的必要要求配置策略。首先,禁用审计模式(Audit Mode),并启用“禁用运行时文件路径规则”(Disable Runtime Filepath Rules),以允许在策略中使用文件路径的白名单。

一种难以检测的批量禁用EDR传感检测的攻击手法

点击“添加自定义”(Add Custom)选项,并确保以下设置:

1.范围(Scope): 设置为仅用户模式(User Mode Only)(路径规则无法应用于内核模式代码)。

2.操作(Action): 设置为“允许”(Allow)。

3.规则类型(Rule Type): 设置为“路径”(Path)。

4.引用文件(Reference File): 设置为“文件夹”(Folder)选项,并指向 C:UsersPublic*

一种难以检测的批量禁用EDR传感检测的攻击手法

确保规则已正确添加。作为经验法则,通常会将策略与推荐的阻止规则(Recommended Block Rules)合并,但这不是必须的。

一种难以检测的批量禁用EDR传感检测的攻击手法

现在,策略将生成并出现在当前用户的“文档”文件夹中。

一种难以检测的批量禁用EDR传感检测的攻击手法

除了已编译的策略文件外,还会生成一个策略配置的XML表示文件。虽然XML文件方便后续编辑以提高灵活性,但攻击中使用的已编译策略文件是 SiPolicy.p7b 文件。

一种难以检测的批量禁用EDR传感检测的攻击手法

寻找攻击向量

创建WDAC策略后,就可以考虑如何使用它了。主要有以下三种攻击方式:

  1. 本地计算机

  2. 远程计算机

  3. 整个域

对于单台计算机(无论是本地还是远程),部署WDAC策略所需的只是对 C:WindowsSystem32CodeIntegrity 的写权限,默认情况下,这需要管理员权限。

要在整个域中部署WDAC策略,攻击者需要具有创建域的组策略对象(GPOs)的权限,并将策略放置在域内所有计算机可以读取的位置。此放置位置通常是域控制器上的SYSVOL共享(SMB共享),但不一定是此处。因此,攻击者可以非常灵活地选择策略存放位置——只需确保它是UNC路径或本地有效路径,并且域中的本地计算机帐户(LOCAL SYSTEM)可以访问即可。

一种难以检测的批量禁用EDR传感检测的攻击手法

本地机器

在本地计算机上使用此攻击是最简单的方式。要应用WDAC策略,只需将策略文件(SiPolicy.p7b)移动到正确的位置(C:WindowsSystem32CodeIntegrity)。

一种难以检测的批量禁用EDR传感检测的攻击手法

cp .SiPolicy.p7b C:WindowsSystem32CodeIntegrity

确认 EDR 服务状态:

一种难以检测的批量禁用EDR传感检测的攻击手法

接下来,重启机器并检查 EDR 服务是否仍在运行:

一种难以检测的批量禁用EDR传感检测的攻击手法

现在 EDR 已被禁用,可以轻松禁用 Windows Defender,并开始将其他工具放置在 WDAC 策略白名单的路径下(例如:C:UsersPublic*)。

一种难以检测的批量禁用EDR传感检测的攻击手法

一种难以检测的批量禁用EDR传感检测的攻击手法

远程计算机

远程部署与本地计算机上的部署非常相似,但有一个小区别:WDAC 策略的移动和重启是在远程执行的。这可以通过多种方式实现,其中最方便的方法是通过 Windows 内置的 SMB 共享完成。幸运的是,由于实现 WDAC 配置的唯一操作是将策略移动到 CodeIntegrity 文件夹中,因此只需要通过内置的 C$ 或 ADMIN$ 共享使用管理员权限即可完成。

以下是从 Linux 机器直接上传策略的简单示例:

smbmap -u Administrator -p P@ssw0rd -H 192.168.4.4 --upload "/home/kali/SiPolicy.p7b" "ADMIN$/System32/CodeIntegrity/SiPolicy.p7b"

一种难以检测的批量禁用EDR传感检测的攻击手法

将 WDAC 策略放置到正确位置后,重启机器:

smbmap -u Administrator -p P@ssw0rd -H 192.168.4.4 -x "shutdown /r /t 0"

一种难以检测的批量禁用EDR传感检测的攻击手法

此外,有一个专门为此攻击开发的工具 Krueger。它是由 Logan Goins 编写的 C# 定制工具,旨在作为内存中运行的一部分,用于后渗透横向移动活动。下面的示例使用 inlineExecute-Assembly在内存中执行 .NET 程序集。

inlineExecute-Assembly --dotnetassembly C:ToolsKrueger.exe --assemblyargs --host ms01

一种难以检测的批量禁用EDR传感检测的攻击手法

一种难以检测的批量禁用EDR传感检测的攻击手法

针对全域

虽然此攻击技术在单个主机上已经具有破坏性,但如果攻击者能够获得 Active Directory 域的管理权限,其威胁将变得更为严重。一旦获取 Domain Admin、Enterprise Admin 或具有创建 GPO 权限的组权限,攻击者可以将恶意组策略分发到域中的计算机。此操作对组织构成了一系列威胁,特别是对该攻击技术而言,仅需应用 WDAC 策略并重启计算机,即可在较短时间内停止每个终端上的 EDR 传感器。以下是此攻击的执行流程:

  1. 获取管理员权限。

  2. 将 WDAC 策略放置在所有域计算机都可访问的位置。

  3. 创建一个 GPO,执行以下操作:

  4. 可选)关闭 Windows Defender 和 Windows Defender 防火墙。

    尽可能安排立即重启。

    应用 WDAC 策略。

  5. 等待机器重启。

  6. 域内所有 Windows 机器上的 EDR 和 Defender 可能都已停用。

一种难以检测的批量禁用EDR传感检测的攻击手法

Krueger

正如前文提到的,Krueger 是一种 .NET 后渗透概念验证工具,主要用于 Active Directory 网络中协助横向移动活动,通过远程禁用 EDR,且旨在与 inlineExecute-Assemblyexecute-assembly 一起在内存中运行。凭借对远程目标设备的管理员权限,Krueger 会将嵌入于 .NET 程序集中的特制恶意 WDAC 策略写入目标设备的 CodeIntegrity 目录中。Krueger 使用 Win32 API 函数 InitiateSystemShutDownEx 触发目标设备重启。当设备完全重启后,WDAC 策略会被应用,阻止用户模式和内核模式的 EDR 保护启动。随后,攻击者可以利用其他工具以及之前获取的管理员权限进行横向移动。

工具下载地址:https://github.com/logangoins/Krueger

一种难以检测的批量禁用EDR传感检测的攻击手法

检测威胁

尽管可以检测到该攻击,但建议强烈采取缓解措施,因为该攻击可能会在短时间内执行。要检测终端上的 WDAC 策略部署,最好监控特定文件系统位置中的特定命名文件。虽然单一策略格式由于兼容性原因是最佳选择,但攻击者并不局限于此。如果组织使用较新版本的 Windows 操作系统,多策略格式也可以实现相同结果。

  • 单策略 -  文件位置:C:WindowsSystem32CodeIntegrity  - 文件特征:SiPolicy.p7b

  • 多策略 - 文件位置:C:WindowsSystem32CodeIntegrityCiPoliciesActive - 文件特征:{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}.cip

不幸的是,检测 WDAC 策略被放置到敏感位置并不是检测该攻击的最佳方法。尽管这些位置中策略的存在确实是攻击的一个特征,但这些位置的策略本身并不一定是恶意的。因此,应采取措施主动扫描 WDAC 策略以确定其完整性,包括调查其中的字符串和特定字节。

例如,仅允许运行 Windows 二进制文件和 WHQL 签名驱动程序的基础 WDAC 策略会阻止所有不符合这些要求的内容。因此,不使用 WHQL 签名驱动程序的 EDR 供应商将被该策略阻止,即使策略中从未明确提及该供应商。这为潜在的检测带来了很大难度,因为检测需要寻找未提及供应商的情况。

另一方面,某些 EDR 供应商使用 WHQL 签名驱动程序,这就要求 WDAC 策略明确阻止该供应商的驱动程序。幸运的是,这一要求使检测变得更容易,因为可以标记提到某些 EDR 供应商的策略。虽然编译的 WDAC 策略格式未公开,但通过观察其中的字符串可轻松检测到潜在恶意策略。例如,转储 WDAC 策略的字符串可提供所有可执行文件、驱动程序和文件属性的引用。

一种难以检测的批量禁用EDR传感检测的攻击手法

为了实现轻量级检测,可以利用针对 Krueger 和包含特定文件属性的编译 WDAC 策略的 YARA 规则。这些规则在检测恶意策略时有效,但存在尚未解决的误报问题。因此,请自行承担使用风险。

特征偏移 描述 特征
0x00 - 0x04 将文件标记为已编译的 WDAC 策略 0x07 00 00 00 0E
0x25 禁用运行时文件路径规则(允许在策略中使用文件路径) 0x20为关闭|0x28代表开启
0x26 控制强制/审核模式 0x8C表示强制 |0x8D用于审计
0xE0-0xE7 需要更多的研究,但这似乎控制了这种攻击技术正常工作所需的允许/阻止规则 0xFF FF FF FF FF FF FF FF 用于阻塞|0x00 00 00 00 00 00 00 00表示允许

在研究过程中发现,由于 WDAC 策略的结构特点,根据已编译的 WDAC 策略检测特定的阻止规则是非常困难的。因此,研究人员提出了一种轻量级的检测方法,开发了用于检测 Krueger 工具以及提及特定文件属性的已编译 WDAC 策略的 YARA 规则。这些 YARA 规则虽然对恶意策略有效,但仍然存在尚未解决的误报问题。因此,请谨慎使用这些规则。有关已开发的检测方法,请参阅 Krueger 的 GitHub 仓库。

不幸的是,这里得出的关键结论是,检测“恶意”策略并不容易。如果某组织未在其环境中使用 WDAC,则检测机制可能只需针对在上述表格提到的位置尝试添加、编辑或删除策略的行为构建即可。此外,这类攻击的检测通常难以为防御者提供有效的早期预警,因为一旦策略在终端上生效,只需重启设备即可停止 EDR(端点检测与响应)。因此,强烈建议采取措施来缓解潜在的攻击威胁。

一种难以检测的批量禁用EDR传感检测的攻击手法

缓解措施

简而言之,可采用以下两种缓解技术:

  1. 通过组策略强制实施 WDAC 策略。

  2. 遵循最小权限原则:限制对代码完整性文件夹、SMB 共享和组策略修改的权限。

虽然在足够早的时间检测此攻击以减少影响较困难,但缓解措施相对简单。首先,通过 GPO 强制实施远程 WDAC 策略将消除攻击者推送策略到单个终端的威胁。当 GPO 强制实施 WDAC 策略时,即使本地 WDAC 策略副本被覆盖,机器也会从 GPO 定义的位置拉取策略,并在其生效前覆盖“恶意”策略。如果组织未在其终端上使用 WDAC,可通过 GPO 部署处于审计模式的 WDAC 策略,以在保持环境使用和功能的同时提供保护。

此外,一些较小的缓解措施可减少此攻击的影响。确保禁用本地管理员帐户和/或通过 Microsoft 的本地管理员密码解决方案 (LAPS) 强制使用安全密码,可以降低本地管理员帐户被破坏并用于执行恶意操作的可能性。此外,最好限制可以修改域中组策略和远程访问 SMB 共享的用户数量。遵循最小权限原则是一种强有力的风险限制方法。

参考文献:

https://beierle.win/2024-12-20-Weaponizing-WDAC-Killing-the-Dreams-of-EDR/

往期推荐

利用文件建立TCP连接隧道绕过防火墙

简化渗透测试整体流程的几个脚本

黑客利用ARP协议进行侦查和攻击手法

一款跨平台比VNC更丝滑的远程桌面管理工具

最受黑客和安全专家青睐的10款搜索引擎

八种绕过WAF防火墙的Payload混淆技术

省时省力的免费好工具-黑客软件集成管家

2024年最受欢迎的6款黑客专用操作系统

黑客在Windows系统下提权的8种主要姿势

原文始发于微信公众号(二进制空间安全):一种难以检测的批量禁用EDR传感检测的攻击手法

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月1日14:32:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一种难以检测的批量禁用EDR传感检测的攻击手法http://cn-sec.com/archives/3580647.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息