
Ein BloodHound-Collector für Microsoft Configuration Manager
SCCMHound ist ein C#-BloodHound-Collector für Microsoft Configuration Manager (MCM). Wenn Sie nach einer Möglichkeit suchen, BloodHound-Sitzungsinformationen von Benutzern und Computern des Configuration Managers zu sammeln, dann ist dies das richtige Tool für Sie!
Es wird dringend empfohlen, die gesammelten Daten zusammen mit den Daten eines anderen Collectors (SharpHound, SOAPHound usw.) zu importieren. Dabei spielt es keine Rolle, ob vor oder nach einem anderen Datensatz importiert wird. Dies ergibt eine umfassende Übersicht über die Active-Directory-Beziehungen der Zielorganisation, ergänzt um Informationen aus dem Configuration Manager.
SCCMHound ist ein Open-Source-Projekt und kein CrowdStrike-Produkt. Daher wird kein formeller Support gewährt, weder ausdrücklich noch stillschweigend.
SCCMHound zielt auf .NET 4.6.2 ab, um die Kompatibilität mit Windows 10 Versionen 1607 und höher zu gewährleisten.
Ein MCM-Administratorkonto mit ausreichendem Zugriff zum Abfragen von Benutzer- und Computerinformationen ist erforderlich. Je nach Sammlungsmethode ist auch die Fähigkeit erforderlich, CMPivot-Abfragen auszuführen. Dieses Tool wurde mit einem Benutzer getestet, dem die MCM-Rolle „Full Administrator" zugewiesen wurde.
Der Server und der Standortcode können aus der MCM-Konsole oder mit einem anderen Tool wie SharpSCCM abgerufen werden.

Zunächst müssen Sie das Repository klonen. --recursive muss angegeben werden, da SCCMHound SharpHoundCommon als Submodul verwendet.
z. B. git clone [email protected]:CrowdStrike/sccmhound.git --recursive
Sobald Sie eine lokale Kopie haben, öffnen Sie SCCMHound.sln in Visual Studio und kompilieren Sie!
Um die standardmäßige Sammlungsmethode zu verwenden, geben Sie einfach einen Server- und einen Standortcode-Parameter an. SCCMHound verwendet den Ausführungskontext, aus dem es aufgerufen wird, um sich bei MCM zu authentifizieren. Zum Beispiel:
SCCMHound.exe --server <server> --sitecode <sitecode>
Um SCCMHound aus dem Kontext eines anderen Benutzers oder von einem nicht in der Domäne befindlichen Computer aus auszuführen, sind die Argumente -u (--username), -p (--password) und -d (--domain) erforderlich. Zum Beispiel:
SCCMHound.exe --server <server> --sitecode <sitecode> -u <username> -p <password> -d <domain>
Alternativ kann runas /netonly vor dem Aufruf von SCCMHound verwendet werden:
runas /netonly /user:[email protected] cmd.exe
cd C:\path\to\SCCMHound
SCCMHound.exe --server <server> --sitecode <sitecode>
Erinnern Sie sich, als BloodHound-Sitzungsdaten noch einfach zu sammeln waren? Nun ja...

Hübsche Graphen zu Anmeldedatendiebstahl und lateraler Bewegung!!!

Bitte seien Sie nachsichtig, während die Betreuer die gesammelten Datenquellen erweitern und etwaige Fehler ausbügeln :)
Okay, okay... Dies ruft alle Sammlungsmethoden auf (einschließlich der CMPivot-Sammlungsmethoden):
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.
Die Standard-Sammlungsmethode (kein -c-Argument angegeben/erforderlich) erstellt einen BloodHound-Datensatz ausschließlich über WMI-Verbindungen zum angegebenen MCM-Standortserver. Diese Sammlungsmethode sammelt:
Diese Sammlungsmethode sammelt Informationen über den aktuell angemeldeten Benutzer für jedes Computerobjekt in MCM. Dies hat die Einschränkung, dass nur der von MCM gemeldete angemeldete Benutzer erfasst wird, unabhängig davon, ob mehrere Benutzer authentifiziert sind.
SCCMHound füllt Gruppenmitgliedschaften automatisch NUR für Benutzer auf. Gruppenobjekte in ConfigMgr scheinen keine Informationen zu Unter- oder übergeordneten Gruppen zu enthalten, daher zeigen Gruppen in BloodHound nur Benutzermitglieder. Dies erfordert weitere Untersuchungen und ist kein Problem, wenn mit einem anderen Datensatz (SharpHound, SOAPHound usw.) importiert wird.
Um mit dieser Sammlungsmethode eine größere Sitzungsabdeckung zu erreichen, kann das Argument --loop verwendet werden, um regelmäßig Sitzungsinformationen zu sammeln.
Diese Sammlungsmethode (-c LocalAdmins) führt das Verhalten der Sammlungsmethode „Default" aus und fragt zusätzlich die Sammlung „All Systems" ab, um den Inhalt der lokalen Gruppe Administrators für jeden von MCM verwalteten Computer zu sammeln.
Hinweis (1): Diese Sammlungsmethode fragt nur Geräte ab, die online sind. Sie kann mit dem Argument --loop verwendet werden, um eine bessere Abdeckung zu erzielen.
Hinweis (2): Diese Sammlungsmethode verwendet CMPivot, um die Abfrage auf allen Mitgliedern auszuführen.
Diese Sammlungsmethode (-c CurrentSessions) führt das Verhalten der Sammlungsmethode „Default" aus und fragt zusätzlich die Sammlung „All Systems" ab, um Echtzeit-Sitzungsinformationen für jeden von MCM verwalteten Computer zu sammeln.
Diese Sammlungsmethode fragt nur Geräte ab, die derzeit online sind. Sie kann mit dem Argument --loop verwendet werden, um eine bessere Abdeckung zu erhalten.
Hinweis (1): Diese Sammlungsmethode fragt nur Geräte ab, die online sind. Sie kann mit dem Argument --loop verwendet werden, um eine bessere Abdeckung zu erzielen.
Hinweis (2): Diese Sammlungsmethode verwendet CMPivot, um die Abfrage auf allen Mitgliedern auszuführen.
Um alle Sammlungsmethoden auf einmal auszuführen, geben Sie einfach All (-c All) als Sammlungsmethode an.
Ich empfehle, die folgende Microsoft-Dokumentation zu lesen, um ein besseres Verständnis dafür zu bekommen, wie CMPivot funktioniert: https://learn.microsoft.com/en-us/mem/configmgr/core/servers/manage/cmpivot
tl;dr - Die CMPivot-Sammlungsmethoden wurden von Microsoft in Umgebungen mit bis zu 50.000 Clients getestet, die weniger als 50 MB Netzwerkverkehr erzeugten. Die Sammlungsmethoden von SCCMHound wurden in Umgebungen mit etwa 1000 Maschinen getestet, ohne dass Probleme oder Servicebeeinträchtigungen festgestellt wurden.
Zögern Sie nicht, Feedback zu diesen Sammlungsmethoden in großen Umgebungen zu melden, damit es hier eingearbeitet werden kann.
Zusätzlich zu einer hervorragenden Abdeckung von Sitzungen und lokalen Administratoren reichert SCCMHound die gesammelten Objekte mit zusätzlichen Eigenschaften an. Diese können im Reiter „Node Info" in Bloodhound beobachtet werden, mit dem Präfix „sccm". Zum Beispiel sccmADSiteName.
Die gesammelten Eigenschaften umfassen:
customqueries.json enthält Cypher-Abfragen, die mit einem importierten SCCMHound-Datensatz ausgeführt werden können. Dies wird erweitert, sobald SCCMHound zusätzliche Funktionen erhält.
Um dies zu verwenden, kopieren Sie einfach customqueries.json nach ~/.config/bloodhound/customqueries.json und starten Sie BloodHound neu. Die Abfragen erscheinen dann unter dem Reiter „Analysis" in BloodHound.