
Un collecteur BloodHound pour Microsoft Configuration Manager
SCCMHound est un collecteur BloodHound en C# pour Microsoft Configuration Manager (MCM). Si vous cherchez un moyen de collecter les informations de session BloodHound à partir des utilisateurs et des ordinateurs de Configuration Manager, alors cet outil est fait pour vous !
Il est vivement recommandé d'importer les données collectées avec celles d'un autre collecteur (SharpHound, SOAPHound, etc.). Peu importe que l'importation soit effectuée avant ou après un autre jeu de données. Cela permet d'obtenir une vue étendue des relations Active Directory de l'organisation cible, complétée par les informations collectées depuis Configuration Manager.
SCCMHound est un projet open source, et non un produit CrowdStrike. À ce titre, il n'offre aucun support formel, explicite ou implicite.
SCCMHound cible .NET 4.6.2 afin de garantir la compatibilité avec Windows 10 versions 1607 et ultérieures.
Un compte administrateur MCM est requis avec des droits suffisants pour interroger les informations utilisateurs et ordinateurs. Selon la méthode de collecte, la capacité à exécuter des requêtes CMPivot est également requise. Cet outil a été testé avec un utilisateur disposant du rôle MCM « Full Administrator ».
Le serveur et le code de site peuvent être récupérés depuis la console MCM, ou à l'aide d'un autre outil tel que SharpSCCM.

Tout d'abord, vous devez cloner le dépôt. L'option --recursive doit être spécifiée car SCCMHound utilise SharpHoundCommon comme sous-module.
Ex. git clone [email protected]:CrowdStrike/sccmhound.git --recursive
Une fois que vous avez une copie locale, ouvrez SCCMHound.sln dans Visual Studio et compilez !
Pour utiliser la méthode de collecte par défaut, fournissez simplement un serveur et un code de site. SCCMHound utilisera le contexte d'exécution à partir duquel il est invoqué pour s'authentifier auprès de MCM. Par exemple :
SCCMHound.exe --server <server> --sitecode <sitecode>
Pour exécuter SCCMHound depuis le contexte d'un autre utilisateur ou depuis une machine non jointe au domaine, les arguments -u (--username), -p (--password) et -d (--domain) sont requis. Par exemple :
SCCMHound.exe --server <server> --sitecode <sitecode> -u <username> -p <password> -d <domain>
Alternativement, runas /netonly peut être utilisé avant d'invoquer SCCMHound :
runas /netonly /user:[email protected] cmd.exe
cd C:\path\to\SCCMHound
SCCMHound.exe --server <server> --sitecode <sitecode>
Vous vous souvenez de l'époque où les données de session BloodHound étaient faciles à collecter ? Eh bien...

De superbes graphes de vol d'identifiants et de mouvements latéraux !!!

Soyez indulgents pendant que le/les mainteneur(s) étend(ent) les sources de données collectées et corrige(nt) les bugs :)
D'accord, d'accord... Ceci invoquera toutes les méthodes de collecte (y compris les méthodes de collecte CMPivot) :
SCCMHound.exe --server <server> --sitecode <sitecode> -c All
--server Requis. Nom d'hôte/adresse IP du serveur SCCM.
--sitecode Requis. Code de site SCCM.
-c, --collectionmethods (Défaut : Default) (LocalAdmins, CurrentSessions, All)
--loop (Défaut : false) Active la collecte en boucle.
--loopduration (Défaut : 00:30:00) Durée de la boucle.
--loopsleep (Défaut : 60) Temps de pause entre les boucles en secondes.
--hc (Défaut : false) Test de santé. Teste simplement l'authentification puis se termine.
-u, --username Nom d'utilisateur administrateur SCCM.
-p, --password Mot de passe administrateur SCCM.
-d, --domain Domaine administrateur SCCM.
-v, --verbose (Défaut : false) Affiche des informations détaillées pour faciliter le dépannage.
--help Affiche cet écran d'aide.
--version Affiche les informations de version.
La méthode de collecte par défaut (aucun argument -c spécifié/requis) construit un jeu de données BloodHound en utilisant uniquement des connexions WMI au serveur de site MCM spécifié. Cette méthode de collecte collectera :
Cette méthode de collecte recueille les informations de l'utilisateur actuellement connecté pour chaque objet Ordinateur dans MCM. Cela présente la limitation de ne collecter que l'utilisateur connecté signalé par MCM, qu'un seul ou plusieurs utilisateurs soient authentifiés.
SCCMHound remplit automatiquement les appartenances aux groupes pour les UTILISATEURS uniquement. Les objets Groupe dans ConfigMgr ne semblent pas contenir d'informations sur les groupes enfants ou parents, donc les groupes dans BloodHound n'afficheront que les membres utilisateurs. Cela nécessite une investigation plus approfondie et ne pose pas de problème si l'importation est effectuée avec un autre jeu de données (SharpHound, SOAPHound, etc.).
Pour obtenir une meilleure couverture des sessions avec cette méthode de collecte, l'argument --loop peut être utilisé pour collecter régulièrement les informations de session.
Cette méthode de collecte (-c LocalAdmins) exécute le comportement de la méthode de collecte « Default » et interroge également la collection « All Systems » afin de collecter le contenu du groupe local Administrators pour chaque ordinateur géré par MCM.
Remarque (1) : Cette méthode de collecte n'interroge que les appareils en ligne. Elle peut être utilisée avec l'argument --loop pour obtenir une meilleure couverture.
Remarque (2) : Cette méthode de collecte utilise CMPivot pour exécuter la requête sur tous les membres.
Cette méthode de collecte (-c CurrentSessions) exécute le comportement de la méthode de collecte « Default » et interroge également la collection « All Systems » afin de collecter les informations de session en temps réel pour chaque ordinateur géré par MCM.
Cette méthode de collecte n'interroge que les appareils actuellement en ligne. Elle peut être utilisée avec l'argument --loop pour obtenir une meilleure couverture.
Remarque (1) : Cette méthode de collecte n'interroge que les appareils en ligne. Elle peut être utilisée avec l'argument --loop pour obtenir une meilleure couverture.
Remarque (2) : Cette méthode de collecte utilise CMPivot pour exécuter la requête sur tous les membres.
Pour exécuter toutes les méthodes de collecte en une seule fois, spécifiez simplement All (-c All) comme méthode de collecte.
Je recommande de lire la documentation Microsoft suivante pour mieux comprendre le fonctionnement de CMPivot : https://learn.microsoft.com/en-us/mem/configmgr/core/servers/manage/cmpivot
tl;dr - Les méthodes de collecte CMPivot ont été testées par Microsoft dans des environnements comptant jusqu'à 50 000 clients, générant moins de 50 Mo de trafic sur le réseau. Les méthodes de collecte de SCCMHound ont été testées dans des environnements d'environ 1 000 machines, sans problème identifié ni dégradation de service.
N'hésitez pas à signaler tout retour concernant ces méthodes de collecte dans les grands environnements afin qu'il puisse être intégré ici.
En plus d'une excellente couverture des sessions et des administrateurs locaux, SCCMHound enrichit les objets collectés avec des propriétés supplémentaires. Celles-ci peuvent être observées dans l'onglet « Node Info » de BloodHound, préfixées par « sccm ». Par ex. sccmADSiteName.
Les propriétés collectées incluent :
customqueries.json fournit des requêtes Cypher qui peuvent être exécutées avec un jeu de données SCCMHound importé. Ce fichier sera enrichi à mesure que de nouvelles fonctionnalités seront ajoutées à SCCMHound.
Pour l'utiliser, copiez simplement customqueries.json vers ~/.config/bloodhound/customqueries.json puis redémarrez BloodHound. Les requêtes apparaîtront alors sous l'onglet « Analysis » de BloodHound.