# OU 与 GPO

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

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

### **枚举OU**

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

```powershell
Get-DomainOU -Properties Name
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/DDkrP1ilQpuBSR6R-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/DDkrP1ilQpuBSR6R-image.png)

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/dwQpSnW1VlTe6gL1-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/dwQpSnW1VlTe6gL1-image.png)

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/EKcbOxTCCfxkmGCR-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/EKcbOxTCCfxkmGCR-image.png)

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

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

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/dGlJ3xRq9n2ZV9r9-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/dGlJ3xRq9n2ZV9r9-image.png)

### **枚举GPO**

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

```powershell
Get-DomainGPO -Properties DisplayName
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/kEMk7YiILhOnhmCk-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/kEMk7YiILhOnhmCk-image.png)

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/RnQuHuVsqNNpk0aI-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/RnQuHuVsqNNpk0aI-image.png)

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/K0bD4defoF4MGuv7-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/K0bD4defoF4MGuv7-image.png)

既然推测了 **AppLocker** 与 **RunAsPPL** 的作用，我们来查看一下它们的作用对象：

##### **作用于特定主机的所有 GPO**

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/Oz9WUv7kgDQT39by-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/Oz9WUv7kgDQT39by-image.png)

有 2 个 GPO 作用于 Web02 主机。

##### **特定 GPO 所作用的 OU**

```powershell
Get-DomainOU -gpLink "[GPO Name(序列号)]"
```

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/gjJufmCZrvTMMExR-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/gjJufmCZrvTMMExR-image.png)

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/sbH1Tm2ZVskFhxmy-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/sbH1Tm2ZVskFhxmy-image.png)

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