组策略是一项 Windows 功能,它为管理员提供了一系列高级设置,这些设置可应用于 Windows 环境中的用户和计算机帐户。每个 Windows 主机都有一个本地组策略编辑器来管理本地设置。出于我们的目的,我们将专注于域上下文中的组策略,以管理 Active Directory 中的用户和计算机。组策略是用于管理和配置用户设置、操作系统和应用程序的强大工具。组策略也是管理域环境中安全性的有效工具。从安全上下文来看,利用组策略是广泛影响企业安全状况的最佳方式之一。Active Directory 绝不是“开箱即用”安全的,如果使用得当,组策略是纵深防御策略的关键部分。

虽然组策略是管理域安全性的出色工具,但它也可能被攻击者滥用。如果攻击者可以以某种方式利用组策略对象来接管高价值用户或计算机,则获得对组策略对象的权限可能会导致横向移动、权限提升甚至整个域受损。它们还可以用作攻击者在网络内保持持久性的一种方式。了解组策略的工作原理将使我们在攻击者面前占据优势,并且可以在渗透测试中极大地帮助我们,有时还会发现其他渗透测试人员可能会错过的细微差别的错误配置。

组策略对象 (GPO)

组策略对象 (GPO) 是可应用于 的策略设置的虚拟集合。GPO 包括屏幕锁定超时、禁用 USB 端口、强制实施自定义域密码策略、安装软件、管理应用程序、自定义远程访问设置等策略。每个 GPO 都有一个唯一的名称,并分配有一个唯一标识符(GUID)。它们可以链接到特定的 OU、域或站点。单个 GPO 可以链接到多个容器,任何容器都可以应用多个 GPO。通过将它们直接应用于 OU,可以将它们应用于单个用户、主机或组。每个 GPO 都包含一个或多个组策略设置,这些设置可能应用于本地计算机级别或 Active Directory 上下文。user(s)``computer(s)


示例 GPO

我们可以使用GPO执行的一些操作示例可能包括:

  • 使用单独的 GPO 为服务帐户、管理员帐户和标准用户帐户建立不同的密码策略
  • 防止使用可移动媒体设备(如 USB 设备)
  • 使用密码强制执行屏幕保护程序
  • 限制对标准用户可能不需要的应用程序(如 cmd.exe 和 PowerShell)的访问
  • 实施审核和日志记录策略
  • 阻止用户运行某些类型的程序和脚本
  • 跨域部署软件
  • 阻止用户安装未经批准的软件
  • 每当用户登录到系统时显示登录横幅
  • 禁止在域中使用 LM 哈希
  • 在计算机启动/关闭或用户登录/注销其计算机时运行脚本

这些只是使用组策略可以执行的操作的几个示例。可以在 GPO 中应用数百个设置,这些设置可能会变得非常精细。例如,以下是我们可以为远程桌面会话设置的一些选项。

RDP GPO 设置

Examining Group Policy - 图1

GPO 设置使用 AD 的分层结构进行处理,并使用下表中所示的规则进行应用:Order of Precedence

优先顺序

水平 描述
Local Group Policy 这些策略直接定义到域外的本地主机。如果在较高级别定义了类似的设置,则此处的任何设置都将被覆盖。
Site Policy 特定于主机所在的企业站点的任何策略。请记住,企业环境可以跨越大型校园,甚至跨越国家/地区。因此,一个网站可能有自己的策略可以遵循,这也许可以将其与组织的其他部分区分开来。访问控制策略就是一个很好的例子。假设某个特定建筑物或执行秘密或受限研究,并且需要更高级别的身份验证才能访问资源。您可以在站点级别指定这些设置,并确保它们已链接,以免被域策略覆盖。这也是为特定站点中的用户执行打印机和共享映射等操作的好方法。site
Domain-wide Policy 您希望在整个域中应用的任何设置。例如,设置密码策略复杂性级别,为所有用户配置桌面背景,以及在登录屏幕上设置“使用通知”和“同意监视”横幅。
Organizational Unit
(欧)
这些设置将影响属于特定 OU 的用户和计算机。您可能希望在此处放置任何特定于角色的唯一设置。例如,只能由 HR 访问的特定共享驱动器的映射、对打印机等特定资源的访问,或者 IT 管理员利用 PowerShell 和命令提示符的能力。
Any OU Policies nested within other OU's 此级别的设置将反映嵌套 OU 中对象的特殊权限。例如,为安全分析人员提供一组与标准 IT Applocker 设置不同的特定 Applocker 策略设置。

我们可以从组策略管理控制台(位于域控制器上“开始”菜单中的“管理工具”下)、自定义应用程序或通过命令行使用 PowerShell GroupPolicy 模块来管理组策略。默认域策略是自动创建并链接到域的默认 GPO。它具有所有 GPO 中最高的优先级,并且默认情况下应用于所有用户和计算机。通常,最佳做法是使用此默认 GPO 来管理将应用域范围的默认设置。“默认域控制器”策略也是使用域自动创建的,并为给定域中的所有域控制器设置基线安全和审核设置。它可以根据需要进行自定义,就像任何 GPO 一样。

GPO 优先顺序

从域组织角度查看 GPO 时,将自上而下地处理它们。将首先处理链接到 Active Directory 网络中最高级别(例如,在域级别)的 OU 的 GPO,然后处理链接到子 OU 的 GPO 等。这意味着最后处理直接链接到包含用户或计算机对象的 OU 的 GPO。换句话说,附加到特定 OU 的 GPO 将优先于在域级别附加的 GPO,因为它将最后处理,并且可能会冒着覆盖域层次结构中较高级别的 GPO 中的设置的风险。要优先跟踪的另一件事是,在“计算机”策略中配置的设置将始终具有应用于用户的相同设置的更高优先级。下图说明了优先级及其应用方式。

GPO 优先顺序

Examining Group Policy - 图2

让我们看一下在域控制器上使用组策略管理控制台的另一个示例。在此图中,我们看到了几个 GPO。GPO 将优先于 GPO,因为它将最后处理。在 GPO 中配置的任何设置都可能覆盖层次结构中较高位置的任何 GPO 中的设置(包括链接到 OU 的设置)。Disabled Forced Restarts``Logon Banner``Disabled Forced Restarts``Corp

GPMC 蜂巢示例

Examining Group Policy - 图3

此图还显示了链接到 OU 的多个 GPO 的示例。当多个 GPO 链接到一个 OU 时,将根据 .链接顺序最低的 GPO 最后处理,或者链接顺序为 1 的 GPO 具有最高优先级,然后是 2 和 3,依此类推。因此,在上面的示例中,GPO 将优先于 和 GPO,这意味着它将首先进行处理。Corp``Link Order``Disallow LM Hash``Block Removable Media``Disable Guest Account

可以指定在特定 GPO 中强制实施设置的选项。如果设置了此选项,则链接到较低 OU 的 GPO 中的策略设置将覆盖这些设置。如果在域级别设置 GPO 并选择了该选项,则该 GPO 中包含的设置将应用于域中的所有 OU,并且不能被较低级别的 OU 策略覆盖。过去,此设置是在 Active Directory 用户和计算机下的问题容器上调用和设置的。下面我们可以看到一个 GPO 示例,其中 GPO 优先于链接到较低 OU 的 GPO,因此不会被覆盖。Enforced``CANNOT``Enforced``No Override``Enforced``Logon Banner

强制 GPO 策略优先级

Examining Group Policy - 图4

无论将哪个 GPO 设置为强制实施,如果强制实施 GPO,它将优先于所有级别的所有 GPO。Default Domain Policy

默认域策略覆盖

Examining Group Policy - 图5

还可以在 OU 上设置该选项。如果为特定 OU 指定了此权限,则更高的策略(例如在域级别)将不会应用于此 OU。如果同时设置了这两个选项,则该选项优先于该选项。下面是一个简单示例。OU 继承在下图中的 OU 上设置的 GPO。Block inheritance``No Override``Block inheritance``Computers``Corp

Examining Group Policy - 图6

如果选择该选项,我们可以看到,在 OU 上应用到更高的 3 个 GPO 不再在 OU 上强制执行。Block Inheritance``Corp``Computers

阻止继承

Examining Group Policy - 图7


组策略刷新频率

创建新的 GPO 时,不会立即自动应用设置。Windows 会定期执行组策略更新,默认情况下每 90 分钟执行一次,用户和计算机的随机偏移量为 +/- 30 分钟。默认情况下,域控制器的更新时间仅为 5 分钟。创建并链接新 GPO 后,设置最长可能需要 2 小时(120 分钟)才能生效。此 +/- 30 分钟的随机偏移量设置为通过让所有客户端同时从域控制器请求组策略来避免域控制器不堪重负。

可以在组策略本身中更改默认刷新间隔。此外,我们可以发出命令以启动更新过程。此命令会将计算机上当前应用的 GPO 与域控制器进行比较,并根据它们自上次自动更新以来是否已更改来修改或跳过它们。gpupdate /force

我们可以通过组策略修改刷新间隔,方法是单击并选择 。虽然可以更改,但不应将其设置为发生得太频繁,否则可能会导致网络拥塞,从而导致复制问题。Computer Configuration --> Policies --> Administrative Templates --> System --> Group Policy``Set Group Policy refresh interval for computers

Examining Group Policy - 图8


GPO 的安全注意事项

如前所述,GPO 可用于执行攻击。这些攻击可能包括向我们控制的用户帐户添加其他权限,向主机添加本地管理员,或创建即时计划任务以运行恶意命令,例如修改组成员身份,添加新的管理员帐户,建立反向shell连接,甚至在整个域中安装目标恶意软件。当用户具有修改应用于包含我们控制的用户帐户或计算机的 OU 的 GPO 所需的权限时,通常会发生这些攻击。

下面是使用 BloodHound 工具标识的 GPO 攻击路径的示例。此示例显示,由于嵌套的组成员身份,该组可以修改 GPO。在这种情况下,我们接下来将查看此 GPO 适用于哪些 OU,以及是否可以利用这些权限来控制高价值用户(管理员或域管理员)或计算机(服务器、DC 或关键主机),并横向移动以提升域中的权限。Domain Users``Disconnect Idle RDP

Examining Group Policy - 图9