当获取SCCM权限之后,就能利用SCCM的软件分发功能进行横向移动。
SCCM允许管理员将位于指定UNC路径的应用程序部署到客户端设备上,并且可以以SYSTEM权限执行,所以当拥有Full Administrator以及Application Administrator权限时,我们就可以通过应用程序部署的方式进行软件分发来实现横向移动。
(1)确定权限
通过如下命令即可判断我们是否拥有相应的权限,结果如图2-14所示。
图2-14 通过SharpSCCM命令确定是否拥有权限
(2)应用部署
执行以下命令,创建设备集合,将指定的设备或用户添加到集合中。再使用指定的安装路径创建应用程序,将应用程序部署到设备集合,等待部署完成后清理创建的对象,即可通过应用部署进行横向移动,结果如图2-15、图2-16所示。
图2-15 通过应用部署进行横向移动
图2-16 目标成功执行calc命令
默认情况下,在当前登录用户的上下文中执行应用程序,但我们可以使用“-s”参数以SYSTEM权限来执行。应用程序的路径(calc.exe)可以替代二进制文件所在的UNC路径(如\\share\bin.exe)。
可以在软件库进行脚本编写,如图2-17所示。
默认情况下,脚本创建后需要审批,且审批者和作者不能是同一身份,如图2-18所示。
图2-17 通过软件库进行脚本创建
但是,当拥有高权限管理员时,就可以在“管理→站点→层次结构设置属性”处对审批者身份进行修改,如图2-19所示。
修改设置后,我们即可通过“软件库→脚本”进行审批,如图2-20所示。
图2-18 脚本等待审核
图2-19 修改脚本审批者身份
图2-20 进行脚本审批
脚本审批完成后,我们即可在“资产和符合性→设备→目标机器”处,通过右击执行脚本。执行过程及结果如图2-21~图2-23所示。
图2-21 在目标机器上执行脚本
图2-22 目标机器成功执行脚本
图2-23 目标机器成功运行notepad.exe
在SCCM中,服务器可以对机器进行客户端下发安装。这个过程是通过WMI远程管理实现的,而实现软件分发的配置账户需要是本地管理员组或者域管理员组中的成员。之后通过连接目标机器的admin$实现软件的下发与安装。
当SCCM具备如下条件时,就可以将NTLM身份验证从管理点的安装和机器账户强制转换为任意NetBIOS名称、FQDN或者IP地址,实现凭据的转发与破解,并且允许以低权限用户的身份在任何装有SCCM的Windows客户端上来实现。
❑SCCM启用自动站点分配和自动客户端推送安装功能。
❑未明确禁用NTLM身份验证的回退机制(默认)。
❑客户端身份验证不需要PKI证书(默认设定)。
❑目标管理点必须能够通过445端口上的SMB进行访问,或者启用WebClient通过任何端口的HTTP访问。
“客户端请求安装属性”界面如图2-24所示。
边界组用于站点分配,如图2-25所示。
满足上述条件后我们就可以通过NTLM强制认证来实现横向移动了。
首先,在攻击机上通过ntlmrelay工具来进行监听,结果如图2-26所示。
图2-24 客户端请求安装属性
图2-25 边界组站点分配设置
之后,通过SCCM的客户端安装功能来进行强制认证,结果如图2-27所示。
图2-26 使用ntlmrelayx进行中继
图2-27 通过SharpSCCM进行强制NTLM认证
攻击机获取带有凭据的连接请求,并将其中继到目标机器。发现目标机器成功执行了我们设定的命令,如图2-28所示。
图2-28 目标机器成功执行命令