
Un collector di BloodHound per Microsoft Configuration Manager
SCCMHound è un collector BloodHound in C# per Microsoft Configuration Manager (MCM). Se stai cercando un modo per raccogliere le informazioni sulle sessioni di BloodHound dagli utenti e dai computer di Configuration Manager, questo è lo strumento che fa per te!
Si consiglia vivamente di importare i dati raccolti insieme a quelli di un altro collector (SharpHound, SOAPHound, ecc.). Non importa se vengono importati prima o dopo un altro set di dati. Il risultato è una panoramica completa delle relazioni Active Directory dell'organizzazione target, integrata con le informazioni raccolte da Configuration Manager.
SCCMHound è un progetto open source, non un prodotto CrowdStrike. Di conseguenza, non offre supporto formale, espresso o implicito.
SCCMHound ha come target .NET 4.6.2 per garantire la compatibilità con Windows 10 versioni 1607 e successive.
È necessario un account amministratore MCM con accesso sufficiente per interrogare le informazioni su utenti e computer. A seconda del metodo di raccolta, è richiesta anche la capacità di eseguire query CMPivot. Questo strumento è stato testato con un utente a cui è stato assegnato il ruolo MCM "Full Administrator".
Il server e il codice del sito possono essere recuperati dalla console MCM o utilizzando un altro strumento come SharpSCCM.

Per prima cosa, dovrai clonare il repository. È necessario specificare --recursive poiché SCCMHound utilizza SharpHoundCommon come sottomodulo.
es. git clone [email protected]:CrowdStrike/sccmhound.git --recursive
Una volta ottenuta una copia locale, apri SCCMHound.sln in Visual Studio e compila!
Per utilizzare il metodo di raccolta predefinito, basta fornire un argomento server e sitecode. SCCMHound userà il contesto di esecuzione da cui viene invocato per autenticarsi a MCM. Ad esempio:
SCCMHound.exe --server <server> --sitecode <sitecode>
Per eseguire SCCMHound dal contesto di un altro utente o da una macchina non appartenente al dominio, sono richiesti gli argomenti -u (--username), -p (--password) e -d (--domain). Ad esempio:
SCCMHound.exe --server <server> --sitecode <sitecode> -u <username> -p <password> -d <domain>
In alternativa, è possibile usare runas /netonly prima di invocare SCCMHound:
runas /netonly /user:[email protected] cmd.exe
cd C:\path\to\SCCMHound
SCCMHound.exe --server <server> --sitecode <sitecode>
Ti ricordi quando i dati sulle sessioni di BloodHound erano facili da raccogliere? Beh...

Magnifici grafici di furto di credenziali e movimento laterale!!!

Per favore sii gentile mentre il/la manutentore/i espande le fonti di dati raccolte e corregge eventuali bug :)
Va bene, va bene... Questo invocherà tutti i metodi di raccolta (inclusi quelli basati su CMPivot):
SCCMHound.exe --server <server> --sitecode <sitecode> -c All
--server Obbligatorio. Hostname/IP del server SCCM.
--sitecode Obbligatorio. Codice sito SCCM.
-c, --collectionmethods (Default: Default) (LocalAdmins, CurrentSessions, All)
--loop (Default: false) Abilita la raccolta a loop.
--loopduration (Default: 00:30:00) Durata del loop.
--loopsleep (Default: 60) Tempo di attesa tra i loop in secondi.
--hc (Default: false) Health check. Verifica semplicemente l'autenticazione ed esce.
-u, --username Nome utente amministratore SCCM.
-p, --password Password amministratore SCCM.
-d, --domain Dominio amministratore SCCM.
-v, --verbose (Default: false) Stampa informazioni dettagliate per la risoluzione dei problemi.
--help Mostra questa schermata di aiuto.
--version Mostra le informazioni sulla versione.
Il metodo di raccolta predefinito (nessun argomento -c specificato/richiesto) costruisce un set di dati BloodHound utilizzando solo connessioni WMI al server del sito MCM specificato. Questo metodo di raccolta raccoglierà:
Questo metodo di raccolta raccoglie le informazioni sull'utente attualmente connesso per ogni oggetto Computer in MCM. Questo ha il limite di raccogliere solo l'utente connesso segnalato da MCM, indipendentemente dal fatto che più utenti siano autenticati.
SCCMHound popola automaticamente l'appartenenza ai gruppi SOLO per gli Utenti. Gli oggetti Gruppo in ConfigMgr non sembrano contenere informazioni sui gruppi figlio o gruppo padre, quindi i gruppi in BloodHound mostreranno solo i membri Utente. Questo richiede ulteriori indagini e non è un problema se si importa insieme a un altro set di dati (SharpHound, SOAPHound, ecc.).
Per ottenere una maggiore copertura delle sessioni con questo metodo di raccolta, l'argomento --loop può essere usato per raccogliere regolarmente le informazioni sulle sessioni.
Questo metodo di raccolta (-c LocalAdmins) esegue il comportamento del metodo "Default" e interroga anche la raccolta "All Systems" per raccogliere il contenuto del gruppo locale Administrators per ogni computer gestito da MCM.
Nota (1): Questo metodo di raccolta interroga solo i dispositivi online. Può essere usato con l'argomento --loop per ottenere una migliore copertura.
Nota (2): Questo metodo di raccolta usa CMPivot per eseguire la query su tutti i membri.
Questo metodo di raccolta (-c CurrentSessions) esegue il comportamento del metodo "Default" e interroga anche la raccolta "All Systems" per raccogliere informazioni in tempo reale sulle sessioni per ogni computer gestito da MCM.
Questo metodo di raccolta interroga solo i dispositivi attualmente online. Può essere usato con l'argomento --loop per ottenere una migliore copertura.
Nota (1): Questo metodo di raccolta interroga solo i dispositivi online. Può essere usato con l'argomento --loop per ottenere una migliore copertura.
Nota (2): Questo metodo di raccolta usa CMPivot per eseguire la query su tutti i membri.
Per eseguire tutti i metodi di raccolta in un'unica soluzione, basta specificare All (-c All) come metodo di raccolta.
Consiglio di leggere la seguente documentazione Microsoft per comprendere meglio come funziona CMPivot: https://learn.microsoft.com/en-us/mem/configmgr/core/servers/manage/cmpivot
tl;dr - I metodi di raccolta CMPivot sono stati testati da Microsoft in ambienti con fino a 50.000 client che hanno generato <50MB di traffico sulla rete. I metodi di raccolta di SCCMHound sono stati testati in ambienti con ~1000 macchine senza problemi identificati o degrado del servizio.
Sentiti libero di segnalare qualsiasi feedback su questi metodi di raccolta in ambienti di grandi dimensioni così che possa essere incorporato qui.
Oltre all'eccellente copertura delle sessioni e degli amministratori locali, SCCMHound popola gli oggetti raccolti con proprietà aggiuntive. Queste possono essere osservate nella scheda "Node Info" di BloodHound, precedute da "sccm". Ad es. sccmADSiteName.
Le proprietà raccolte includono:
customqueries.json fornisce query Cypher che possono essere eseguite con un set di dati SCCMHound importato. Questo verrà ampliato man mano che verranno aggiunte funzionalità a SCCMHound.
Per usarlo, basta copiare customqueries.json in ~/.config/bloodhound/customqueries.json e riavviare BloodHound. Le query appariranno quindi nella scheda "Analysis" di BloodHound.