基于资源的约束委派

VSole2022-02-24 13:39:47

微软试图为域用户提供更大的灵活性,使资源的所有者能够配置哪些帐户是可信的,并允许委派给他们。这可以通过修改用于控制目标资源访问的属性“ms-DS-AllowedToActOnBehalfOfOtherIdentity”来实现的。具体而言,如果计算机帐户等资源设置了此属性,则允许帐户代表计算机帐户执行操作。为了能够修改此属性,帐户需要具备该对象的写入权限,而默认情况下该权限是没有的。但是,如果可以触发 SYSTEM 帐户并将身份验证中继到 Active Directory,则帐户可能会获得委派权限,从而充当提升的用户。

通过基于资源的约束委派提升特权并不是一个新话题,Elad Shamir 和 Will Schroeder 过去曾对此进行过讨论。此攻击向量遵循一系列步骤并依赖于用户服务 (S4U) Kerberos 扩展,该扩展使服务(例如 CIFS)能够代表另一个用户请求和获取服务票证。通过基于资源的约束委派提权的方法包括以下步骤:

1.发现计算机账户配额;

2.启用 WebClient 服务;

3.创建计算机帐户;

4.NTLM中继;

5.哈希计算;

6.请求服务票;

7.票证转换;

8.通过 Kerberos 身份验证访问;

下图说明了基于资源的约束委派的步骤:

 寻找计算机账户配额

默认情况下,域中的用户最多可以创建 10 个计算机帐户。属性“ms-DS-MachineAccountQuota”的值定义了可以创建多少个计算机帐户。从 Active Directory 的角度来看,这可以通过查看域属性中的属性编辑器来观察到这一点。

计算机账户配额

但是,可以通过在红队操作期间查询 Active Directory 对象来检索上述值。SharpView 相当于用 C# 开发的 PowerView,因此可以直接从植入程序中使用。执行下面的命令将枚举所有域对象。

SharpView——域对象

属性“ms-ds-machineaccountquota”的值将显示在输出中。

SharpView——计算机账户配额

另一种方法是使用 StandIn,它只能查询感兴趣的域对象。

StandIn——计算机账户配额对象

“ms-ds-machineaccountquota”的值将显示在控制台中。

StandIn——计算机账户配额

 启用 WebClient 服务

在Windows 10、Windows 11等较新版本操作系统中,安装了web客户端服务,但默认未启用。服务的状态可以通过在PowerShell控制台执行以下操作来获得。

WebClient Service – Status

为了使该技术生效,WebDav 服务需要处于运行状态,因为 WebDav 不协商签名,因此将允许来自当前计算机帐户的身份验证中继。标准用户没有权限启用该服务。James Forshaw 发布了一个概念证明,它通过触发自定义 ETW 事件来解决此问题,该事件将从标准用户的角度启用该服务。

c++代码——启用Web客户端

将代码编译为可执行文件并在目标主机上运行二进制文件以启用该服务。

启用 WebClient 服务

在命令提示符中,可以通过执行以下命令查询服务:

WebClient服务

 创建计算机帐户

如上所述,默认情况下域用户最多可以创建 10 个计算机帐户。如果提供凭据,可以使用各种工具从加入域的系统和未加入域的系统中创建计算机帐户。Ruben Boonen 开发了一个名为 StandIn 的 .NET 活动目录后开发工具包,可以从植入程序中使用它来执行与基于资源的约束委派相关的任务,例如创建计算机帐户。执行以下命令将使用随机密码在域上创建一个新的计算机帐户。

StandIn——创建计算机帐户

Impacket 包含一个 python 脚本,它可以从非域加入系统创建计算机帐户。

Impacket——添加新计算机

另外,这个任务也可以通过PowerShell来执行,因为Kevin Robertson开发的PowerMad模块包含一个可以创建新计算机帐户的功能。

Import-Module .\Powermad.psm1

New-MachineAccount -MachineAccount Pentestlaboratories -Domain purple.lab -

DomainController dc.purple.lab

PowerMad——新计算机帐户

如果系统已经针对基于资源的约束委派进行了配置,则可以使用现有的计算机帐户,而不是使用上述方法之一创建新的计算机帐户。StandIn 的“委派”标志可以显示所有具有基于资源的受限委派权限的帐户,包括具有不受约束和受限委派权限的帐户。

StandIn——发现为基于资源的受限委派配置的帐户

 NTLM中继

由于已经创建了一个新的计算机帐户并且 Web 客户端服务正在主机上运行,因此下一步是从 Impacket 配置“ntlmrelayx”以进行委派。一旦捕获了来自合法计算机帐户的身份验证,将被转发到域控制器以通过 LDAP 进行身份验证。由于初始身份验证将通过 HTTP 接收,因此需要在目录中放置图像。伪造的计算机账户“DESKTOP-Pentestlab$”将成为委派权限的目标。

Ntlmrelayx——委派访问

为了强制系统帐户通过网络进行身份验证,NCC 集团开发了接受 WebDav 路径的 Change-Lockscreen。为了使身份验证成功,需要使用主机名而不是 IP 地址,因为 WebDav 客户端会在 Intranet 区域中自动进行身份验证。需要注意的是,WebClient 服务将使用更改锁屏触发器来启用,并且可以避免启用Web 客户端服务的步骤。

身份验证触发器——Change-LockScreen

计算机帐户(Hive$)将通过 Kali 实例上的 HTTP 进行身份验证,并将尝试在随机路径上查找图像。在域控制器上中继身份验证后,虚假计算机帐户(DESKTOP-Pentestlab$)将获得对 Hive$ 帐户的委派权限。

ntlmrelayx ——基于资源的约束委派

如果使用 rbcd python 脚本提供域凭据,则该攻击也可以从未加入的域系统执行,该脚本可自动执行该过程。

Python 实现——rbcd

与具有委派权限的计算机帐户对应的值将出现在计算机对象 (Hive) 的“msDS-AllowedToActOnBehalfOfOtherIdentify”属性中。

Active Directory——基于资源的约束委派

 哈希计算

从密钥传递中心(KDC)获取票证的请求需要密码的哈希表示而不是纯文本值。由于计算机帐户的密码是已知的,因此可以使用 Rubeus 的“哈希”操作来计算给定密码的哈希值。

计算哈希——计算机账户

 请求服务票证

计算机帐户“DESKTOP-Pentestlab$”具有受约束的委派权限,因此可以使用 Rubeus 代表管理员帐户请求通用 Internet 文件系统(CIFS)的服务票证。这是通过使用用户服务(S4U)Kerberos 扩展来实现的,该扩展能够代表用户请求服务票证。由于将颁发的票证属于管理员帐户,因此可用于通过 Kerberos 进行身份验证,以提升的用户身份访问主机。将为为委派创建的计算机帐户(DESKTOP-Pentestlab$)请求初始票证。

TGT 请求——计算机账户

使用“用户服务”操作,将向管理员帐户的当前域控制器的 Kerberos 分发中心 (KDC) 请求票证。

管理员TGS

最后使用 Kerberos 扩展 S4U2proxy 将代表管理员帐户为 CIFS 服务请求票证。应该注意的是,即使请求的票证不会被标记为可转发,它仍然可以用于访问服务。

CIFS 服务票证

上述过程可以通过使用python实用程序“getST”直接从Impacket执行。与Rubeus相比,该工具不需要对计算机帐户密码进行散列,而是需要对纯文本进行哈希处理。可以通过执行以下命令来请求服务票证:

CIFS 票证——getST

票证将在当前工作目录中保存为 .ccache。

 转换票证

Rubeus 的最终票证授予票证(TGT)是基于 64 编码的。为了用于 Kerberos 身份验证,票证需要采用 .ccache 格式。执行以下命令将解码票证并将输出写入 .kirbi 文件。

Base64 - Kirbi Ticket

Impacket 包含一个 python 实用程序,它可以将具有 .kirbi 扩展名的 Kerberos 票证转换为 .ccache。

票证转换器——从kirbi 到 ccache

“KRB5CCNAME”环境变量应设置为 .ccache 票证的位置,以便在 Kerberos 身份验证期间使用来自缓存的票证。

环境变量——Kerberos 票证

 通过 Kerberos 身份验证访问

获取属于管理员帐户的票证意味着它可用于从更高的角度访问目标服务。来自 Impacket 的“wmiexec”和“psexec”都支持 Kerberos 身份验证,因此可用于以管理员或系统身份访问主机,完成权限提升方案。

Wmiexec——Kerberos 身份验证

执行“psexec”将在目标主机上创建一个服务,它被认为是不安全的。但是,它可以通过使用“-k”和“-no-pass”标志指定管理员帐户和目标主机来使用 Kerberos 身份验证来执行。

Psexec——Kerberos 身份验证

或者仅使用相同的标志和目标主机。

psexec——Kerberos 身份验证

电脑哈希
本作品采用《CC 协议》,转载必须注明作者和本文链接
哈希传递对于大多数企业或组织来说仍然是一个非常棘手的问题,这种攻击手法经常被渗透测试人员和攻击者们使用。当谈及检测哈希传递攻击时,我首先开始研究的是先看看是否已经有其他人公布了一些通过网络来进行检测的可靠方法。我拜读了一些优秀的文章,但我没有发现可靠的方法,或者是这些方法产生了大量的误报。 我不会在本文深入剖析哈希传递的历史和工作原理,但如果你有兴趣,你可以阅读SANS发布的这篇优秀的文章——哈希
资安公司Emsisoft发现犯案的黑客组织在推特宣称,Nvidia以电脑加密的手段反击他们的入侵行为,黑客表示未被成功骇入。
域渗透就是基于windows域环境的渗透,而域渗透涉及到的技术,如哈希传递(PTH)票据传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解Windows认证机制的原因之一Windows的认证包括三个部分,用户直接操作计算机登陆账户(本地认证),远程连接到工作组中的某个设备(网络认证),登陆到域环境中的某个设备(域认证)
WINDOWS认证机制 阅读本文前需要补充的知识:域的基本概念,域环境与工作组环境的区别 何谓域渗透,域渗透就是基于windows域环境的渗透,而域渗透设计到的技术,如哈希传递(PTH)票据传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解Windows认证机制的原因之一 Windows的认证包括三个部分,用户直接操作计算机登陆账户(本地认证),远程连接到工作组
火绒安全团队讯 近日,有用户就“TeamViewer最新漏洞”一事向火绒安全团队咨询。经火绒工程师查看确认,该漏洞(CVE-2020-13699)并非网传的:导致黑客可以在没有密码的情况下入侵用户电脑。而是当用户访问了黑客创建...
WINDOWS认证机制之NTLM
2021-11-18 08:22:53
Windows的认证包括三个部分,用户直接操作计算机登陆账户,远程连接到工作组中的某个设备,登陆到域环境中的某个设备(域认证)本地认证 NTLM
针对各种各样的社工攻击,我们除了教育,提醒用户时刻注意微信安全以外,技术上我们也需要考虑一些相应的手段来进行补充。这个事件对于监视启动文件夹、临时目录和下载目录等位置非常重要,这些位置通常是恶意软件在初始感染期间放置的地方。
与其他攻击不同的是,这种SMB身份验证相关的攻击是继IE和Edge之后首次在Google Chrome上公开展示的。由于Chrome信任Windows SCF文件,攻击者可以诱使受害者访问其网站,其中包含恶意创建的快捷方式文件,该文件会自动下载到目标系统上,而无需提示用户确认。但是,攻击者创建的恶意SCF文件没有设置图标图像的位置,而是包含远程SMB服务器的位置。
据悉,与朝鲜政府有联系的黑客组织正在大量的利用一个被称为Goldbackdoor的新型恶意软件来攻击记者。这种攻击包括了多个阶段的感染活动,其最终目的是要从目标中窃取敏感的信息。研究人员发现,该攻击活动于今年3月份开始,并且目前正在进行中。 Stairwell的研究人员跟进了韩国NK新闻的一份初步报告,该报告显示,一个被称为APT37的朝鲜APT组织已经从一名前韩国情报官员的私人电脑中窃取了信息
VSole
网络安全专家