黄金票据 --- kerberos学习记录


Kerberos协议是怎么工作的

这里首先要搞懂几个概念:

  1. 认证服务器(Authentication Server,AS):负责首次身份验证和颁发TGT(Ticket Granting Ticket)给用户。用户通过AS向Kerberos服务器发送身份验证请求,并在验证通过后获取TGT。

  2. 授权票证颁发服务器(Ticket Granting Server,TGS):负责颁发服务票证(Service Ticket)给用户,以便用户可以访问特定的服务。用户使用TGT向TGS发送服务请求,并在TGS验证通过后获取服务票证。

  3. 客户端:需要访问特定服务的用户。

  4. 服务端:提供特定服务的服务器。

  5. 许可证授予服务(Key Distribution Center,KDC):AS和TGS的组合,负责颁发TGT和服务票证。在一些Kerberos实现中,KDC是AS和TGS的逻辑实体。

  6. 加密算法:Kerberos使用对称加密算法,如DES(Data Encryption Standard)或AES(Advanced Encryption Standard)来保护用户凭据和票证的安全性。

简单了解以上概念,接下来就是 Kerberos协议的工作流程:
这个流程有点像买票,客户端前往认证服务器(AS)请求认证是安全的人员。

  1. 认证请求:这个时候客户端需要向Kerberos认证服务器请求一个票据,以证明其身份。客户端向Kerberos认证服务器发送一个KRB_AS_REQ

  2. 在认证服务器(AS)接收到客户端的请求后,会首先验证客户端的身份。认证服务器会检查客户端的身份是否存在(对比服务器里面的数据是否有客户端的名字),并且验证客户端发送的请求是否有效(校验时间戳是否超时)。授权票据:Kerberos服务器收到认证请求后,生成一个称为"授权票据"(Ticket Granting Ticket,TGT)的加密令牌。该令牌包含了客户端的身份信息和一个用于与服务器进行通信的"票据加密密钥"(Ticket-Granting Ticket Session Key,TGS Session Key)。

  3. 授权票据传输:Kerberos服务器将TGT加密后发送给客户端。

  4. 授权票据校验:客户端收到TGT后,使用自己的密码解密TGT,提取出TGS Session Key,并用TGS Session Key加密一个称为"授权票据校验"(Authenticator)的令牌,发送给Kerberos服务器。

  5. 服务票据请求:Kerberos服务器收到Authenticator后,使用客户端的TGS Session Key解密Authenticator,验证客户端的身份。验证成功后,服务器使用自己的密钥数据库中的服务器密钥解密Authenticator,提取出客户端的身份信息。

  6. 服务票据生成:如果认证成功,Kerberos服务器生成一个称为"服务票据"(Service Ticket,ST)的加密令牌。该令牌包含了客户端的身份信息和一个用于与目标服务器进行通信的"票据加密密钥"(Service Session Key)。

  7. 服务票据传输:Kerberos服务器将ST加密后发送给客户端。

  8. 服务票据校验:客户端收到ST后,使用自己的密码解密ST,提取出Service Session Key,并用Service Session Key加密一个称为"服务票据校验"(Authenticator)的令牌,发送给目标服务器。

  9. 服务访问:目标服务器收到Authenticator后,使用Service Session Key解密Authenticator,验证客户端的身份。如果验证成功,则客户端被授权访问目标服务器提供的服务。

一、黄金票据

黄金票据攻击的基本思想是利用域控制器上的域账户(通常是Kerberos TGT凭证)的加密密钥,生成合法的Kerberos票据,从而获得对域内资源的未经授权的访问权限。

利用条件

黄金票据攻击的利用条件如下:

1.攻击者必须能够获得域控制器的NTLM哈希。
2.攻击者必须拥有域内任意计算机的管理员权限。
3.攻击者必须能够与目标计算机建立有效的Kerberos票据。
简单来说就是需要一下几个东西:
1.DC密钥分发中心账户krbtgt的hash值
2.域名
3.域的SID值(最后4位不要:说的就是”-500“)
4.需要伪造的用户(比如admin)

利用步骤

简单来说在一下步骤:

  1. 获取域控制器账户散列值(hash):首先获取域控制器上krbtgt域账户的散列值,这可以通过各种手段如哈希转储、域控制器上的缓存等获得。这个krbtgt的账户的只在域控中存在,可以先用 net user 命令查看是否有krbtgt账户。使用 systeminfo 命令查看域名。使用 whomai 命令查看域的sid。可以使用mimikatz.exe工具查看krbtgt的hash值。
lsadump::dcsync /domain:域名 /user:krbtgt

这里要求一定要是管理员账户才能有用。

  1. 删除本机域内其他机器的票据
kerberos::purge
  1. 生成黄金票据:黄金票据是伪造的Kerberos票据,包含了有效的身份验证和授权信息。注入黄金票据:攻击者将生成的黄金票据注入到目标域环境中,通常通过域控制器的票据注入功能或修改域内工作站的票据缓存,使其接受并信任黄金票据。获取高权限访问:一旦黄金票据被注入,攻击者就可以使用任意身份进行域内访问,绕过身份验证过程。攻击者可以获取域内资源的高权限访问,并且可以模拟任何用户进行活动,而这些活动都将被视为合法。
kerberos::golden /user:administrator /domain:域名 /sid:SID值 /krbtgt:NTLM-HASH /ptt
  1. 尝试横向移动
psexec.exe \\域控名 cmd.exe
shell dir \\域控名\c$
  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值