专用于 SCCM 数据库探索与利用的 MSSQL 客户端。
$ pipx install git+https://github.com/synacktiv/sccmsqlclient/
您可以通过克隆仓库并安装依赖项来安装。
$ git clone https://github.com/synacktiv/sccmsqlclient
$ cd sccmsqlclient
$ python3 -m venv .venv && source .venv/bin/activate
$ python3 -m pip install -r requirements.txt
sccmsqlclient.py 使用与 Impacket 的 mssqlclient.py 相同的身份验证模型和语法,因为它基于相同的 TDS(表格数据流)MSSQL 协议实现。
如果您已经熟悉 Impacket 工具,则用法和登录格式完全相同。
$ python3 sccmsqlclient.py -windows-auth 'DOMAIN/USER:password'@mp.local
列出多站点层次结构中的 SCCM 站点和服务器。
> sccm_sites
> sccm_servers
枚举 SCCM 基础架构服务器及其在层次结构中分配的角色。
> sccm_sysreslist [ROLE_NAME]
> sccm_mp
> sccm_dp
这组命令查询 SCCM 系统资源和角色分配数据,以映射基础架构组件及其职责。
sccm_sysreslist → 列出所有已注册的 SCCM 系统资源及其角色sccm_sysreslist [ROLE_NAME] → 按角色名称过滤结果(例如,管理点、分发点)sccm_mp → 列出所有管理点的快捷方式sccm_dp → 列出所有分发点的快捷方式列出已知设备,支持按名称或 IP 地址进行部分过滤
> sccm_devices [FILTER]
列出客户端及其 BGB / 通知通道状态(OnlineStatus=0|1)
> sccm_devices_bgbstatus [FILTER]
利用运行脚本功能在受管设备上执行 PowerShell 脚本
直接从字符串定义 PowerShell 脚本。
> set_ps1_script "<string>"
示例:
> set_ps1_script "Get-Process | Select-Object -First 10"
从本地 .ps1 文件加载脚本。
示例:
> load_ps1_script ./script.ps1
对目标 SCCM 资源执行先前定义的脚本。
> sccm_run_script <RESOURCE_ID>
示例:
> sccm_run_script 16777219
执行时,此命令会生成两个 GUID:
这些标识符会自动存储在内存中,并被以下命令重用:
last_task_outputllast_task_output_printlast_task_clean这使您无需手动指定 GUID 即可对最近的执行进行操作。
显示通过 sccm_run_script 启动的最近任务的结果。
> last_task_output
这用于从上次 SCCM 运行脚本执行中检索存储在内存中的原始执行输出。
以人类可读的格式显示上次任务的执行输出。
> last_task_output_print
这会格式化并清理上次 SCCM 运行脚本执行的原始输出,以便更轻松地阅读和解释。
检索任务或脚本的执行状态。
> sccm_ScriptsExecutionStatus [TASK_GUID|SCRIPT_GUID]
示例:
> sccm_ScriptsExecutionStatus
> sccm_ScriptsExecutionStatus 4F3A1B2C-AAAA-BBBB-CCCC-1234567890AB
移除最近跟踪的 SCCM 任务。
> last_task_clean
移除特定的后台组(BGB)任务。
> sccm_BGB_Tasks_clean <TASK_GUID>
示例:
> sccm_BGB_Tasks_clean 4F3A1B2C-AAAA-BBBB-CCCC-1234567890AB
从 SCCM 中删除运行脚本对象。
> sccm_script_delete <SCRIPT_GUID>
示例:
> sccm_script_delete 7F2C9D11-1111-2222-3333-ABCDEF987654
这些命令允许枚举和提取敏感 SCCM 相关机密,例如网络访问帐户、客户端推送凭据和 Azure AD 应用程序配置。解密依赖于通过 SCCM 运行脚本执行远程脚本。
检索为特权操作配置的 SCCM 用户帐户,例如网络访问帐户(NAA)或客户端推送安装帐户。
> sccm_useraccounts
枚举存储在 SCCM 中的 Azure AD 应用程序配置。
> sccm_add_apps
在 SCCM 管理点或受管客户端上执行远程脚本,以解密存储的机密 blob。
> sccm_decrypt_blob [RESOURCE_ID] [HEXBLOB]
此命令:
RESOURCE_ID(参见 sccm_devices_bgbstatus)sccm_add_apps 或 sccm_useraccounts 检索到的十六进制编码 blob执行是远程完成的,解密结果通过 SCCM 运行脚本执行通道返回。