SCCMSecrets.py は、SCCM ポリシーを悪用するツールです。NAA 資格情報の抽出にとどまらず、SCCM ポリシーの配布に関する包括的な悪用手法を提供します。このツールはさまざまな権限レベルで実行でき、ポリシー配布に関連する潜在的な設定ミスを発見しようとします。ツールとその使用方法の詳細については、関連記事を参照してください: https://www.synacktiv.com/publications/sccmsecretspy-exploiting-sccm-policies-distribution-for-credentials-harvesting-initial
policies と files の2つのサブコマンドが利用できます。
このサブコマンドは SCCM 管理ポイント と通信し、すべての秘密ポリシー(NAA 構成、資格情報を含むタスクシーケンス、コレクション変数など)の内容をダンプします。そのためには、承認済みの SCCM デバイスが必要です。これは次の3つの方法で取得できます。
--altauth フラグを指定すると、SCCMSecrets は代替認証エンドポイントを悪用し、mTLS 要件をバイパスして、資格情報なしで、かつ自動デバイス承認の設定ミスなしに承認済みデバイスを取得できます(詳細はこちら)。これは、MP が HTTPS を使用するように構成され、かつ SCCM サイトがサイト全体で HTTPS を強制するように構成されている場合にのみ機能します(MP が HTTPS を使用しているがサイトが HTTP と HTTPS の両方を許可している場合、デバイスは自動的に承認されません)。--use-existing-device)。この引数は、guid.txt ファイル(デバイス GUID)と key.pem ファイル(デバイスの秘密鍵)を含むディレクトリを指定します。これは、以前の SCCMSecrets の実行で作成されたデバイスか、侵害された正規の SCCM クライアントに対応するデバイスです。なお、SCCM ポリシーはコレクションに関連付けられています。新しいデバイスを登録すると、そのデバイスは既定のコレクションに配置されるため、既定のコレクションの秘密ポリシーのみが取得されます。そのため、--use-existing-device を使用して侵害された正規の SCCM クライアントになりすますことが有用な場合があります。実際、この正規のクライアントは、追加の秘密ポリシーに関連付けられたカスタムコレクションのメンバーである可能性があります。
出力は loot ディレクトリのサブディレクトリに配置されます(形式: [timestamp]_policies)。
$ python3 SCCMSecrets.py policies -h
Usage: SCCMSecrets.py policies [OPTIONS]
Dump secret policies from an SCCM Management Point
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ * --management-point -mp TEXT The client's SCCM management point. Expects either a URL, or a hostname/IP (defaults to HTTP in the latter case) [required] │
│ * --client-name -cn TEXT [Optional] The name of the client that will be created in SCCM - or a random name if using an existing device [required] │
│ --machine-name -u TEXT [Optional] A machine account name. If not provided, SCCMSecrets will try to exploit automatic device approval │
│ --machine-pass -p TEXT [Optional] The password for the machine account │
│ --machine-hash -H TEXT [Optional] The NT hash for the machine account │
│ --registration-sleep -rs INTEGER [Optional] The amount of time, in seconds, that should be waited after registrating a new device. A few minutes is recommended so that the new device can be added to │
│ device collections (3 minutes by default, may need to be increased) │
│ [default: 180] │
│ --use-existing-device -d TEXT [Optional] This option can be used to re-run SCCMSecrets.py using a previously registered device ; or to impersonate a legitimate SCCM client. In both cases, it │
│ expects the path of a folder containing a guid.txt file (the SCCM device GUID) and the key.pem file (the client's private key). Note that a client-name value must also │
│ be provided to SCCMSecrets (but does not have to match the one of the existing device) │
│ --pki-cert -c TEXT [Optional] The path to a valid domain PKI certificate in PEM format. Required when the Management Point enforces HTTPS and thus client certificate authentication │
│ --pki-key -k TEXT [Optional] The path to the private key of the certificate in PEM format │
│ --altauth -a [Optional] Use the MP's alternate authentication endpoint. This endpoint bypasses mutual TLS requirements, and automatically approves devices registered through it. It │
│ only works when the MP uses HTTPS AND HTTPS is enforced site-wide │
│ --verbose -v [Optional] Enable verbose output │
│ --help -h Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
このサブコマンドは、配布ポイント に保存されているファイルをインデックス化し、興味深いファイルをダウンロードします。SCCMSecrets はまず、匿名アクセスが有効かどうか(非デフォルト)を特定しようとします。有効な場合は、認証なしでファイルのインデックス化とダウンロードが可能です。それ以外の場合は、ドメイン資格情報が必要になります。
拡張子によるファイルのダウンロードが可能です。SCCMSecrets は、配布ポイントでホストされているすべてのパッケージのファイルをインデックス化し(Unix の tree 形式の index.txt ファイルを生成)、指定された拡張子のファイルをダウンロードします。空の拡張子リストを指定した場合は、ファイルのインデックス化のみが実行されます。
どちらの場合も、生成されたインデックスファイルから、--urls フラグを使用して特定の興味深いファイルを(再インデックス化なしで)ダウンロードできます。
mTLS 要件が実装されている場合でも、--nocert フラグを指定することでバイパスできることに注意してください。
出力は loot ディレクトリのサブディレクトリに配置されます(形式: [timestamp]_files)。