关于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