域渗透之黄金票据与白银票据

kerberos认证

Kerberos 一词来源于古希腊神话中的 Cerberus —— 守护地狱之门的三头犬。

一句话来说,Kerberos 是一种基于加密 Ticket 的身份认证协议。Kerberos 主要由三个部分组成:Key Distribution Center (即KDC)、Client 和 Service。

认证过程

1. 首先Client 要通过AS验证,获得TGT

当某个Client要访问某个Server时,需要AS来进行认证,Client输入用户和密码,并且向KDC发送一个AS_REQ,这个AS_REQ里包含了使用Client的NTLM-Hash加密的时间戳以及Client-info、Server-info等数据,以及一些其他信息。

AS接收到Client发送的AS_REQ,首先向AD询问是否有此用户,有的话则用此用户的NTLM-Hash来对AS_REQ进行解密,如果可以成功解密,且解密后得到的时间戳和和当时时间在5分钟内则为认证成功。

2. Client要和TGS认证,获得ST服务票据

当Client收到了AS发回来的AS_REP时,会使用自己的NTLM-Hash,将被加密过的临时秘钥Session-Key进行解密,得到没有被加密的Session-Key,然后将其保存在本地,如果有需要访问某个服务时就可以构成TGS_REQ提交给TGS,来得到对应的ST。

在这个过程中发送的TGS_REQ中包含了使用Session-Key(AS生成的)加密的时间戳以及Client-info、Server-info 等数据,以及一些其他信息,以及使用krbtgt用户NTLM-Hash加密的TGT

当TGS收到TGS_REQ后会首先对使用krbtgt用户NTLM-Hash加密的TGT进行解密,目的是得到Session-Key(AS生成的)、时间戳以及Client-info、Server-info等数据,同理,如果时间戳和解密时间相差太久则终止验证,同时TGS会使用TGT里的Client信息和当前Client的信息进行比较来判断是否为同一人,判断无误后则会判断此Client是否有访问此Server的权限,如果有,则返回一个TGS_REP,由两部分组成。

3. Client和Server通信

Client收到了TGS_REP,获得了加密的Session-key以及ST,和上面的操作一样,先使用刚才储存在本地的Session-key(AS生成的)对Session-key(TGS生成的)进行解密,得到未加密的Session-key(TGS生成的),然后继续将其和ST一起储存在本地。

当Client需要访问Server时,Client则会发送AP_REQ

AP_REQ包含了使用Session-key(TGS生成的)加密时间戳、Client-info、Server-info等数据,以及一些其他信息,然后再把ST一同发送给Server。

Server收到AP_REQ后会使用自己的NTLM-Hash对ST进行解密,拿到到Session-Key(TGS生成的),时间戳、Client-info等数据,根据ST内的时间戳和解密时的时间戳进行对比,如果时间超过8小时则为验证失败,然后Server会将PAC发送给DC,询问DC该用户是否有访问权限,来决定Client是否有权限访问Server。

DC拿到PAC会进行解密获取用户的sid,以及所在的组,再判断用户是否有访问服务的权限,有访问权限(有些服务并没有验证PAC这一步,这也是白银票据能成功的前提,因为就算拥有用户hash,可以制作TGS,也不能制作PAC,PAC当然也验证不成功,但是有些服务不去验证PAC,这是白银票据成功的前提)就允许用户访问。

特别说明的是,PAC对于用户和服务全程都是不可见的。只有KDC能制作和查看PAC。

黄金票据

原理

在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验证,不用验证账户和密码,所以也不担心域管密码修改。

特点

不需要与AS进行交互,需要用户krbtgt的Hash

 制造金票的条件

1. 域名称

2. 域的SID值

3. 域的KRBTGT账户密码HASH

4. 伪造用户名,可以是任意的

实战中通常用mimikatz 来提取krbtgt的NTLM-Hash

黄金票据的防御

1. 限制管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录到这些服务器)将所有其他权限委派给自定义管理员组。

2. 禁用KRBTGT账户,并保存当前的密码以及以前的密码。

白银票据

原理

白银票据伪造ST

Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。

特点

1. 白银票据是一个有效的票据授予服务(TGS)Kerberos票据,因为Kerberos验证服务运行的每台服务器都对服务主体名称的服务帐户进行加密和签名。

2. 银票据是伪造TGS。这意味着白银票据仅限于特定服务器上的任何服务。

3. 攻击者需要服务帐户密码哈希值。

4. TGS是伪造的,所以没有和TGT通信,意味着DC从验证过。

5.  任何事件日志都在目标服务器上。

制造银票条件

1. 域名称

2. 域的SID值

3. 域中的Server服务器账户的NTLM-Hash

4. 伪造的用户名,可以是任意用户名

5. 目标服务器上的Kerberos服务

白银票据的防御

1. 尽量保证凭证不被获取到

2. 增加验证方式

        通过开启PAC(Privileged Attribute Certificate)特权属性证书保护功能,开启PAC后,PAC会将client发送的票据ticket发送给KDC,由KDC来进行验证ticket是否有效,就可以使所伪造的票据无法进行利用。

黄金票据和白银票据的区别

获取权限不同

金票:伪造的TGT,可以获取任意Kerberos的访问权限
银票:伪造的ST,只能访问指定的服务

认证流程不同

金票:同KDC交互,但不同AS交互
银票:不同KDC交互,直接访问Server

加密方式不同

金票:由krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值