Skip to main content

OU 与 GPO

组织单元,即 OU,可以用来充当具有同样性质的一些对象的容器。例如,同为 SQL 服务器的 SRV01 与 SRV02 可以用 OU SQL_Server 来存放。再比如,一家公司里,职位相同的一些员工如 HR 的帐号,由 OU HR 来盛放。

而 GPO 是一组定义了系统配置的设置, 并可作用于 OU。通过枚举 GPO,我们可以查看当前域对特定 OU 的特殊设置。我们可能不知道 GPO 的详细设置,但我们可以根据 GPO 名称或描述来推断它们的作用。GPO也可能有助于我们移动到其他机器。例如,GPO可以授予某些用户对特定计算机的 RDP 或 WinRM 访问权。

枚举OU

我们枚举一下当前域的所有 OU:

Get-DomainOU -Properties Name

image.png

总共有 3 个 OU,其中 2 个是自定义的。而 PROD 域中则有多个自定义 OU,

image.png

我们查看一下 SQL Server 的详细信息,可惜并不能直接看出来包含哪些服务器。

image.png

我们可以用这么一个长命令得到指定 OU 所包含的内容:

Get-DomainOU -domain prod.raven-med.local -identity "SQL Server" | %{Get-DomainComputer -SearchBase $_.distinguishedname -Properties Name}

PROD 域中的 SQL Server OU 包含了服务器 SRV01。

image.png


枚举GPO

接着,我们来枚举一下存在的 GPO

Get-DomainGPO -Properties DisplayName

image.png

我们发现有一个自定义的 GPO DebugRemoval,查看一下它的详细信息:

image.png

我们并没有看到类似于描述之类的属性,从名称也无法准确推测出该 GPO 的作用。那么,我们来查看一下 PROD 域的 GPO。在 PROD 域,存在更多自定义的 GPO,AppLocker 与 RunAsPPL 都是我们能根据名称推测出作用的 GPO。

image.png

既然推测了 AppLockerRunAsPPL 的作用,我们来查看一下它们的作用对象:

作用于特定主机的所有 GPO

如果我们的目标只是一台主机,我们可以直接查询作用于它的 GPO,我们以当前的 Web02 为例

image.png

有 2 个 GPO 作用于 Web02 主机。

特定 GPO 所作用的 OU

我们能看到,在 PROD 域中,RunAsPPL GPO 只作用于 File Server OU。该 OU 只有一台主机 file01

image.png

image.png

 

BloodHound 则可以显示出 OU 与 GPO 之间更直观的关系。