Kerberos(/?k?rb?r?s/)是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。
在kerberos协议中有三个角色:
其中:
KDC(Key Distribution Center)= 密钥分发中心
AS(Authentication Server)= 认证服务器
TGT(Ticket Granting Ticket)= TGT服务票据,由AS在AS-REP发放
TGS(Ticket Granting Server)= 票据授权服务器
ST(Server Ticket)=ST服务票据,由TGS在TGS-REP发放
实验环境
域名:HIRO
域控:WIN-KONG 域管:hiro\administrator
主机:DESKTOP-P34E60A 域用户:hiro\win10
win10用户执行:
**net use \\WIN-KONG\C$ password /u:hiro\administrator**
主要内容:
主要内容:
PS:krbtgt这个用户在域生成的时候会自动创建,它是秘钥发行中心服务账户,不能直接登录。
主要内容:
padata:
req-body:
主要内容:
有些服务并没有验证PAC,这就是白银票据能成功的原因。如果验证了PAC的话,就算攻击者拥有服务Hash,制作了ST票据,也不能制作PAC(PAC由两个数字签名构成,而这两个数字签名分别由服务器NTLM Hash和KDC NTLM Hash加密),并且只有KDC才能制作和查看PAC。(同样防止了MS14-068攻击)
Authenticator是由用户密码Hash加密的,如果得到了用户密码哈希就算解不出来也可以尝试hash传递攻击。
(工作组中只能以sid为500的用户[administrator],域环境中只能用域管Hash)
当cname值中的用户不存在时返回包提示错误,当用户名存在时,密码正确或者错误返回包结果也不一样,所以可以尝试域用户枚举和密码喷洒攻击。
(可以在域外使用,但是能ping通域控)
TGT由krbtgt用户Hash加密,如果拥有krbtgt用户Hash就可以制作TGT。
enc-part是由用户密码Hash加密的,如果域用户设置了Do not require Kerberos preauthentication,就可以尝试爆破然后用hashcat破解获得用户密码。
(当关闭了预身份认证后,攻击者可以使用指定用户去请求票据,此时域控不会做任何验证就将TGT票据和该用户Hash加密的Login Session Key返回。所以只要对Login Session Key离线解密,就可以得到指定用户的明文密码。)
由于TGS-REP中的enc-part由服务密码Hash加密,可以爆破获得服务Hash,不管用户对服务有没有访问权限,只要TGT正确就一定会返回TGS。
ticket中的enc-part是由服务Hash加密的,如果有了服务Hash,就可以签发任意用户的ST票据,不需要跟域控打交道,但是只能访问特定服务。(伪造的白银票据没有带有效KDC签名的PAC,如果目标验证了KDC的PAC签名,那么白银票据就不起作用了)
原文:https://www.cnblogs.com/car7n/p/14789310.html