
Microsoft Configuration Manager用のBloodHoundコレクター
SCCMHound は、Microsoft Configuration Manager (MCM) 向けの C# 製 BloodHound コレクターです。Configuration Manager のユーザーとコンピューターから BloodHound セッション情報を収集する方法をお探しなら、このツールが最適です。
別のコレクター (SharpHound、SOAPHound など) のデータと一緒に収集データをインポートすることを強くお勧めします。別のデータセットの前後どちらでインポートしても問題ありません。これにより、Configuration Manager から収集した情報で補完された、対象組織の Active Directory 関係の広範な概要が得られます。
SCCMHound はオープンソースプロジェクトであり、CrowdStrike の製品ではありません。したがって、明示的または暗黙的な正式なサポートはありません。
SCCMHound は、Windows 10 バージョン 1607 以降との互換性を確保するために .NET 4.6.2 を対象としています。
ユーザーおよびコンピューター情報を照会するための十分なアクセス権を持つ MCM 管理者アカウントが必要です。収集方法によっては、CMPivot クエリを実行する権限も必要です。このツールは、MCM の "Full Administrator" ロールが割り当てられたユーザーでテストされています。
サーバーとサイトコードは、MCM コンソールまたは SharpSCCM などの別のツールを使用して取得できます。

まず、リポジトリをクローンする必要があります。SCCMHound は SharpHoundCommon をサブモジュールとして使用するため、--recursive を指定する必要があります。
例: git clone [email protected]:CrowdStrike/sccmhound.git --recursive
ローカルコピーを取得したら、Visual Studio で SCCMHound.sln を開いてコンパイルしてください。
デフォルトの収集方法を使用するには、サーバーとサイトコードの引数を指定するだけです。SCCMHound は、呼び出し元の実行コンテキストを使用して MCM に認証します。例:
SCCMHound.exe --server <server> --sitecode <sitecode>
別のユーザーのコンテキストから、またはドメイン非参加のマシンから SCCMHound を実行するには、-u (--username)、-p (--password)、-d (--domain) の各引数が必要です。例:
SCCMHound.exe --server <server> --sitecode <sitecode> -u <username> -p <password> -d <domain>
または、SCCMHound を呼び出す前に runas /netonly を使用することもできます:
runas /netonly /user:[email protected] cmd.exe
cd C:\path\to\SCCMHound
SCCMHound.exe --server <server> --sitecode <sitecode>
BloodHound のセッションデータが簡単に収集できた時代を覚えていますか? ところが...

なんて美しい資格情報の盗難と横移動のグラフなのでしょう!!!

メンテナーが収集データソースを拡張し、バグを修正している間、どうか優しく見守ってください :)
わかった、わかった… これにより、すべての収集方法 (CMPivot 収集方法を含む) が呼び出されます:
SCCMHound.exe --server <server> --sitecode <sitecode> -c All
--server Required. SCCM server hostname/IP address.
--sitecode Required. SCCM sitecode.
-c, --collectionmethods (Default: Default) (LocalAdmins, CurrentSessions, All)
--loop (Default: false) Enable loop collection.
--loopduration (Default: 00:30:00) Loop Duration.
--loopsleep (Default: 60) Sleep time between loops in seconds.
--hc (Default: false) Health check. Simply tests authentication and exits.
-u, --username SCCM administrator username.
-p, --password SCCM administrator password.
-d, --domain SCCM administrator domain.
-v, --verbose (Default: false) Print verbose information to help with troubleshooting.
--help Display this help screen.
--version Display version information.
デフォルトの収集方法 (-c 引数の指定なし) は、指定された MCM サイトサーバーへの WMI 接続のみを使用して BloodHound データセットを構築します。この収集方法では以下が収集されます:
この収集方法は、MCM 内の各 Computer オブジェクトについて、現在ログオンしているユーザー情報を収集します。この方法には、複数のユーザーが認証されているかどうかに関係なく、MCM が報告したログオンユーザーのみが収集されるという制限があります。
SCCMHound は、ユーザーのみのグループメンバーシップを自動的に設定します。ConfigMgr のグループオブジェクトには子グループや親グループの情報が含まれていないようです。そのため、BloodHound のグループには User メンバーのみが表示されます。これはさらなる調査が必要ですが、別のデータセット (SharpHound、SOAPHound など) と一緒にインポートする場合は問題になりません。
この収集方法でより広範なセッション情報を取得するには、--loop 引数を使用してセッション情報を定期的に収集できます。
この収集方法 (-c LocalAdmins) は、"Default" 収集方法の動作を実行し、さらに "All Systems" コレクションをクエリして、MCM で管理されているすべてのコンピューターのローカル Administrators グループの内容を収集します。
注 (1): この収集方法は、オンラインのデバイスのみをクエリします。--loop 引数を使用すると、より良いカバレッジを得られます。
注 (2): この収集方法は、CMPivot を使用して全メンバーに対してクエリを実行します。
この収集方法 (-c CurrentSessions) は、"Default" 収集方法の動作を実行し、さらに "All Systems" コレクションをクエリして、MCM で管理されているすべてのコンピューターのリアルタイムセッション情報を収集します。
この収集方法は、現在オンラインのデバイスのみをクエリします。--loop 引数を使用すると、より良いカバレッジを得られます。
注 (1): この収集方法は、オンラインのデバイスのみをクエリします。--loop 引数を使用すると、より良いカバレッジを得られます。
注 (2): この収集方法は、CMPivot を使用して全メンバーに対してクエリを実行します。
すべての収集方法を一度に実行するには、収集方法として All (-c All) を指定するだけです。
CMPivot の仕組みをより深く理解するには、以下の Microsoft ドキュメントを読むことをお勧めします: https://learn.microsoft.com/en-us/mem/configmgr/core/servers/manage/cmpivot
tl;dr - CMPivot ベースの収集方法は、最大 50,000 クライアントの環境で Microsoft によってテストされており、ネットワーク全体で 50MB 未満のトラフィックが発生しました。SCCMHound の収集方法は、約 1000 台のマシンの環境でテストされており、問題やサービス低下は確認されていません。
大規模環境でのこれらの収集方法に関するフィードバックがあれば、お気軽に報告してください。ここに反映される可能性があります。
優れたセッションおよびローカル Administrator のカバレッジに加えて、SCCMHound は収集したオブジェクトに追加のプロパティを設定します。これらは BloodHound の "Node Info" タブで確認でき、先頭に "sccm" が付加されます。例: sccmADSiteName。
収集されるプロパティには以下が含まれます:
customqueries.json は、インポートされた SCCMHound データセットで実行できる Cypher クエリを提供します。これは、SCCMHound に機能が追加されるにつれて拡張される予定です。
これを使用するには、customqueries.json を ~/.config/bloodhound/customqueries.json にコピーして、BloodHound を再起動するだけです。クエリは BloodHound の "Analysis" タブに表示されます。