跨林攻击-PAM 信任

特权访问管理 (PAM) 通过利用堡垒林(Bastion Forest,也称为管理林)来简化对现有用户/生产林的管理。这种设置涉及在堡垒林与现有用户林之间建立单向 PAM 信任。在这种架构中,堡垒林中的用户可以与用户林中的高权限组(如 Domain Admins 和 Enterprise Admins)关联,而无需修改用户林内的组成员身份或访问控制列表 (ACL)。

这种方法背后的机制依赖于在堡垒林 中创建影子安全主体(Shadow security principals)。这些影子主体被映射到用户林中高权限组的SID。通过将堡垒林中的用户添加为这些影子安全主体的成员,他们无需直接更改组成员身份或访问控制列表(ACL)配置,即可继承相关的权限。这种战略性实现方式允许集中管理特权访问,同时保持安全性并最大限度地降低未经授权访问的风险。

1. Shadow Principals

在AD中, shadow principal 是指存在于受信任域中的安全主体(例如用户、组或计算机帐户),但它看起来就像也存在于本地域中一样。

当两个域之间建立信任关系时,受信任域中的安全主体可以访问另一个域中的资源。然而,尽管这些安全主体已在受信任域中通过身份验证,但它们在信任域中可能并没有实际的存在(例如:没有对应的用户账户)。在这种情况下,会在受信任域中创建影子主体来代表这些来自信任域的安全主体。

1.1. 介绍

假设存在一个名为 controlcenter.corp 的堡垒(管理)林,以及三个独立的用户/生产林:eulogistics.corpuslogistics.corpinlogistics.corp。核心目标是让 Controlcenter 能够高效地管理和监督这三个用户林,且无需对这些用户林内部的组成员身份或访问控制列表(ACL)进行任何修改
Pasted image 20260309221557.png
为了实现这一目标,一种可行的方法是:从每个用户林向堡垒林建立单向特权访问管理(PAM)信任,并在堡垒林中创建影子主体
Pasted image 20260309221709.png
一旦信任关系建立,下一步就是在堡垒林(controlcenter.corp)中创建一个影子主体对象。

该影子主体对象被配置为包含来自用户林的企业管理员的SID。影子主体存放在堡垒林(controlcenter.corp)配置容器下的一个特殊容器中,路径为:CN=Shadow Principal Configuration

1.2. 在堡垒林中配置影子主体的步骤:

  • 获取用户林的 Enterprise Admins 或 Domain Admins SID
  • 使用获取的用户林 SID 在堡垒林中创建 Shadow Principal
  • 将堡垒森林中的一名 user 设为已创建的 Shadow Principal 成员。

1.3. shadow admin

通过这种配置,堡垒林中属于 shadow principal 的用户现在可以以 administrator 身份访问用户林。该用户作为 shadow principal 的成员,通常被称为 shadow admin 

1.4. 在堡垒林中创建影子主体

# 获取用户林中“企业管理员”(Enterprise Admins)组的 SID
$ShadowPrincipalSid = (Get-ADGroup -Identity 'Enterprise Admins' -Properties ObjectSID -Server eulogistics.corp).ObjectSID

# 影子主体容器的位置(路径)
$Container = 'CN=Shadow Principal Configuration,CN=Services,CN=Configuration,DC=controlcenter,DC=corp'

# 创建影子主体对象
New-ADObject -Type msDS-ShadowPrincipal -Name "Tom" -Path $Container -OtherAttributes @{'msDS-ShadowPrincipalSid'= $ShadowPrincipalSid}

# 我们可以将堡垒林中的用户,添加到堡垒林中名为“Tom”的现有影子安全主体容器中
Set-ADObject -Identity "CN=Tom,CN=Shadow Principal Configuration,CN=Services,CN=Configuration,DC=controlcenter,DC=corp" -Add @{'member'="CN=Administrator,CN=Users,DC=controlcenter,DC=corp"} -Verbose

2. Abusing PAM Trust

当堡垒林被攻破时,攻击者不仅可以渗透到其管理的林(例如 User/Production Forest 中,还能建立持久化访问权限。假设我们已经攻破了一个堡垒林(例如 controlcenter.corp ),我们可以枚举特权访问管理 (PAM) 信任关系是否已建立,以及是否配置了任何影子主体。这可以通过 PowerShell 的 Get-ADObject cmdlet 来实现,该 cmdlet 可以检索影子主体的配置信息。

2.1. 枚举 Shadow Principals

PS C:\Tools> Get-ADObject -SearchBase ("CN=Shadow Principal Configuration,CN=Services," + (Get-ADRootDSE).configurationNamingContext) -Filter * -Properties * | select Name,member,msDS-ShadowPrincipalSid | fl

Name                    : Shadow Principal Configuration
member                  : {}
msDS-ShadowPrincipalSid :

Name                    : Tommember                  : {CN=Administrator,CN=Users,DC=controlcenter,DC=corp}
msDS-ShadowPrincipalSid : S-1-5-21-1490426177-2790079739-1572189234-519
  • Name:堡垒林中的影子主体名称
  • Member:来自堡垒林并被映射到该影子主体的成员
  • msDS-ShadowPrincipalSid:用户林分配给该影子主体的SID