域渗透之黄金票据的利用

0收藏

0点赞

浏览量:494

2021-08-18

举报

前言:

这里先介绍下Kerberos协议:
Kerberos是一种由MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。

在Kerberos协议中主要是有三个角色的存在:

1:访问服务的Client(用户的机器客户端)

2:提供服务的Server(服务端)

3:KDC(Key Distribution Center)密钥分发中心其中KDC服务默认会安装在一个域的域控中,而Client和Server为域内的用户或者是服务,如HTTP服务,SQL服务,远程桌面服务。在Kerberos中Client是否有权限访问Server端的服务由KDC发放的票据来决定。


0x01 Kerberos工作原理

1:Client向KDC发起AS_REQ请求内容为通过Client密码Hash 加密的时间戳、ClientID、网络地址、加密类型等内容。


2:KDC使用Client hash进行解密,并在ntds.dit(只有域控中才有的数据库)中查找该账户,如果结果正确就返回用krbtgt NTLM-hash加密的TGT票据,TGT里面包含PAC,PAC包含Client的sid,Client所在的组。


注释:PAC的全称是Privilege Attribute Certificate(特权属性证书)。不同的账号有不同的权限,PAC就是为了区别不同权限的一种方式。


3:Client(客户端)凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求。


4:KDC使用krbtgt NTLM-hash进行解密,如果结果正确,就返回用服务NTLM-hash 加密的TGS票据,并带上PAC返回给Client(客户端)(这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据)。

TGT:认证票据TGS:票据发放服务


5:此时client拿着KDC给的TGS票据去请求服务。


6:服务端使用自己的NTLM-hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。

至此,就是登录域控中Kerberos协议的工作流程,看起来可能点绕,根据我上面的贴图,一步步的看还是比较好理解的。


0x02 实验步骤


主域控:windows server 2008 IP地址:192.168.107.146

域内机器(Client):windows server 2008 IP地址:192.168.107.164


通过上面工作原理得知,我们这里只要伪造第三步,也就是TGT票据即可。

首先我们 需要先从域控中,或者是域内其他Client中导出krbtgt用户的hash,这里需要注意的是,krbtgt用户只有在域控中才会存在。

当然了如果你有域控管理员的其他账号,也是可以登录其他域其他机器来使用mimikatz.exe导出hash的。


第一步::在域控内导出krbtgt用户的hash和sid(使用mimikatz.exe工具):

lsadump::dcsync /domain:hydra.com /user:krbtgt   # domian:后面是域控名  user后面是krbtgt用户


2:在域内其他Client(用户机器)上使用其他域管理员来抓取krbtgt用户的hash和sid(使用mimikatz.exe工具),这里命令和上面的命令是一样的,最后抓取的hash也是和上面一样的,这里我就不贴图了。


第二步:.清除自己Client端(域内其他机器)的票据。

我们在域控上面成功抓取了hash和sid,将hash和sid复制到其他域内机器中,也就是Client端,然后在mimikatz.exe执行kerberos::list查看我们当前的票据。

图片

然后在mimikatz.exe执行:kerberos::purge 意思就是清空当前用户登录的票据,通过下面的图片看到清空了以后,在执行list的时候,就没有任何的票据了。

图片

第三步:伪造TGT票据(黄金票据)



kerberos::golden /admin:ceshi /domain:hydra.com /sid:S-1-5-21-4188752632-3746001697-3968431413 /krbtgt:524f4bed4b8a362bda1a560b9779eadf /ptt


kerberos::golden的意思是使用票据功能,/admin 后面的用户是我们可以伪造的任意用户,我这里用ceshi,/sid后面输入的就是我们之前抓到的sid,/krbtgt后面是之前抓到的hash, /ptt是立即执行到内存的意思。ps:一共有5个空格,这里需要注意下。

构造好了语句后,在Client端上执行,提示Successfully表示已经成功了。

第四步:通过kerberos::list查看当前票据,伪造成功(也可以通过cmd中klist查看,这里需要注意的是cmd需要用管理员的方式运行)

到了这一步以后,说明我们已经成功在Client端伪造了黄金票据(在伪造的时候可以是任意用户名,我这里是ceshi)。


第五步:在Client端通过Psexec.exe工具来与主域控进行连接(对于psexec.exe工具的使用这里不多做介绍)

连接成功了以后,是直接返回一个cmd的交互式界面,并且是最高权限。

此时,我们就可以在当前Client端(域内机器中)来执行主域控下cmd操作,并且权限是最高的。


0x03 总结

第一步:在域控中,或者是域内机器中(域管理员用户权限登录),因为是需要抓取hash和sid的,所以必须要是管理员权限,命令如下:

lsadump::dcsync /domain:hydra.com /user:krbtgt

第二步:清除自己client端(域内其他机器)的票据:

kerberos::purge

第三步:查看票据(client端):(此时票据信息肯定是空的)

kerberos::list

第四步:伪造黄金票据(client端),这里的参数文章上面都介绍过了,这里不多介绍。

kerberos::golden /admin:ceshi /domain:hydra.com  /sid:S-1-5-21-4188752632-3746001697-3968431413 /krbtgt:524f4bed4b8a362bda1a560b9779eadf /ptt 


第五步:尝试使用psexec登录域控的cmd控制台(client端):

psexec.exe \\dc.hydra.com cmd.exe

与其说是一种攻击方式,不如说是一种后门,当域控权限掉后,在通过域内其他任意机器伪造票据重新获取最高权限。


原文链接:https://blog.csdn.net/cj_Allen/article/details/104297452


(来源:Hacking黑白红)

发表评论

点击排行

钓鱼邮件-如何快速成为钓鱼达人

一、前言在大型企业边界安全做的越来越好的情况下,不管是 APT 攻击还是红蓝对抗演练,钓鱼邮件攻击使用的...

【渗透实战系列】| 1 -一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

本次渗透实战主要知识点:1.app抓包,寻找后台地址2.上传绕过,上传shell3.回shell地址的分析4.中国蚁剑工...

HTTPS - 如何抓包并破解 HTTPS 加密数据?

HTTPS 在握手过程中,密钥规格变更协议发送之后所有的数据都已经加密了,有些细节也就看不到了,如果常规的...

无线电安全攻防之GPS定位劫持

一、需要硬件设备HackRFHackRF 连接数据线外部时钟模块(TCXO 时钟模块)天线(淘宝套餐中的 700MHz-2700MH...

记一次Fastadmin后台getshell的渗透记录

1.信息搜集先来看看目标站点的各种信息后端PHP,前端使用layui,路由URL规则看起来像ThinkPHP,那自然想到...

华为防火墙实战配置教程,太全了

防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系...

ADCS系列之ESC1、ESC8复现

对原理感兴趣的可以去https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf看原文,这里只...

【干货分享】利用MSF上线断网主机的思路分享

潇湘信安 Author 3had0w潇湘信安一个不会编程、挖SRC、代码审计的安全爱好者,主要分享一些安全经验、...

扫描二维码下载APP