SCCM安全风险分析与横向移动利用技术详解
System Center Configuration Manager (SCCM) 作为企业级内网的“总调度站”,其强大的自动化运维能力在安全视角下是一把双刃剑。一旦攻击者通过渗透手段介入 SCCM 控制链,其攻击面将覆盖从单一终端到整个域环境的资产
1.SCCM介绍
System Center Configuration Manager (SCCM) 是微软推出的一款企业级IT自动化管理工具,主要用于集中管理大规模的Windows设备、应用程序和操作系统。在大型企业的内网经常用来作为企业环境中重要的端点管理与软件分发系统,一旦被攻击者控制,可导致整个客户端网络沦陷。
核心能力
1.安装/卸载应用程序
2.安装补丁/更新
3.运行脚本
4.配置 Windows 应用程序 网络设置
5.部署操作系统
6.以及其他类似的自动化运维任务
站点 (Site) —— 管理层级
站点是 SCCM 的逻辑边界。根据企业规模,主要分为三种:
- 管理中心站点 (CAS): 顶级站点,仅用于管理多个子站点(超大型全球企业使用)。
- 主要站点 (Primary Site): 核心管理点,负责管理客户端和处理所有数据。
- 辅助站点 (Secondary Site): 类似于分部代理,用于分担跨地域网络带宽压力
服务端 (Site Server & Roles) —— 指令中心
服务端是指安装了 SCCM 软件的服务器,它通过不同的角色执行具体功能:
- 管理点 (MP): 客户端与服务端沟通的“传声筒”,下发策略。
- 分发点 (DP): “仓库”,存放安装包、补丁和系统镜像。
- 软件更新点 (SUP): 结合 WSUS,负责推送 Windows 补丁。
- 数据库: 使用 SQL Server 存储所有硬件清单和配置数据。
客户端 (Client) —— 执行终端
客户端是指安装了 Configuration Manager Agent 软件的电脑或设备。
- 功能: 定期从服务端拉取“策略”(Policy),汇报自己的硬件配置、安装了哪些软件。
- 执行: 自动按照指令静默安装软件、修复系统漏洞、强制重启或重装系统。
- 状态: 客户端会持续上报“心跳”,确保管理端知道它在线。
简单来说:站点定义了地盘,服务端下达指令并提供资源,客户端在每台电脑上负责听令并执行任务
sccm界面展示
2.如何发现存在sccm以及查询站点信息
从本机信息中查看是否存在sccm
LDAP
使用 PowerShell 通过 LDAP 搜索管理点对象,以确定域内是否有使用sccm:
如果存在 System Management,则证明该域内已经安装了 SCCM 服务器
通过 LDAP 搜索管理点对象,以定位 SCCM 站点信息:
通过观察dNSHostName(DNS 主机名称)来定位sccm管理端地址
通过WMI从命名空间中定位和查询SCCM站点信息
Get-WmiObject -Namespace 'root/ccm' -Query 'SELECT * FROM SMS_Authority'
Get-CimInstance -Namespace root/ccm -Query 'SELECT * FROM SMS_Authority'
利用工具
使用SharpSccM查询站点信息以及定位服务端地址
3.利用SCCM横向
使用服务端下发命令横向到客户端
1.在软件库中创建一个脚本
此时的脚本是不允许执行的,因为还在待审批状态
2.设置审批属性
取消勾选脚本编写者需要其他脚本审批者
3.脚本创建者自己审批(批准)
4.下发命令让指定机器执行创建好的脚本
不勾选定时执行,当脚本执行结束后会提示执行成功(可以选择修改密码\添加用户\从unc路径执行应用程序的方式横向)
利用SCCM强制进行NTLM认证
前置条件
当SCCM启用自动站点分配和自动客户端推送安装功能时,若未明确禁用NTLM身份验证的回退(默认设置),并且客户端身份验证不需要PKI证书(默认设定),以及目标管理点必须能够通过445端口上的SMB访问或启用WebClient通过任何端口的HTTP访问时,攻击者可以利用这些条件将NTLM身份验证从管理点的安装和计算机账户强制转换为任意NetBIOS名称、FQDN或IP地址,从而允许凭据转发或破解。此操作可以在任何Windows SCCM客户端上由低权限用户完成
实战中NTLM强制认证以横向移动
在实战中利用 NTLM Relay 的一大难点就是我们在 VPS 监听了端口,但是目标机器的流量中继不过来,这里可以还使用StreamDivert直接将目标 Windows机器445的流量转发给指定VPS的指定端口
首先,我们在 VPS 上执行如下命令进行监听,其中修改了监听端口为 1445
proxychains4 -q ntlmrelayx.py -t 192.168.10.100 -smb2support --smb-port 1445 -socks
StreamDivert配置文件信息如下:xxx.xxx.xxx.xxx是vps的Ip
然后在目标出网机器以管理员权限执行如下命令:
StreamDivert.exe config.txt -f -v
在sccm客户端上使用SharpSCCM来进行强制认证
以下仅证明能使用sccm进行强制ntlm认证并流量转发成功
流程如下:(如果图画的不对请大佬们多多指正)
Reference
详解SCCM架构、探测方法及两类横向移动技术:脚本下发执行与NTLM中继认证攻击。
由 AI 根据全文自动生成,仅供参考,以原文为准