
Un recolector de BloodHound para Microsoft Configuration Manager
SCCMHound es un recolector BloodHound en C# para Microsoft Configuration Manager (MCM). Si estás buscando una forma de recopilar información de sesiones de BloodHound de los usuarios y equipos de Configuration Manager, ¡esta es la herramienta para ti!
Se recomienda encarecidamente importar los datos recopilados junto con los datos de otro recolector (SharpHound, SOAPHound, etc.). No importa si se importan antes o después de otro conjunto de datos. Esto da como resultado una visión exhaustiva de las relaciones de Active Directory de la organización objetivo, complementada con la información recopilada de Configuration Manager.
SCCMHound es un proyecto de código abierto, no un producto de CrowdStrike. Por lo tanto, no cuenta con soporte formal, expreso o implícito.
SCCMHound está orientado a .NET 4.6.2 para garantizar la compatibilidad con Windows 10 versiones 1607 y posteriores.
Se requiere una cuenta de administrador de MCM con acceso suficiente para consultar información de usuarios y equipos. Dependiendo del método de recopilación, también se requiere la capacidad de ejecutar consultas CMPivot. Esta herramienta se ha probado con un usuario al que se le asignó el rol de "Full Administrator" de MCM.
El servidor y el código de sitio se pueden obtener desde la consola de MCM, o mediante otra herramienta como SharpSCCM.

Primero, necesitarás clonar el repositorio. Se debe especificar --recursive, ya que SCCMHound utiliza SharpHoundCommon como submódulo.
p. ej. git clone [email protected]:CrowdStrike/sccmhound.git --recursive
Una vez que tengas una copia local, ¡abre SCCMHound.sln en Visual Studio y compila!
Para usar el método de recopilación predeterminado, simplemente proporciona un argumento de servidor y código de sitio. SCCMHound utilizará el contexto de ejecución desde el que se invoca para autenticarse en MCM. Por ejemplo:
SCCMHound.exe --server <server> --sitecode <sitecode>
Para ejecutar SCCMHound desde el contexto de otro usuario o desde una máquina que no esté unida al dominio, se requieren los argumentos -u (--username), -p (--password) y -d (--domain). Por ejemplo:
SCCMHound.exe --server <server> --sitecode <sitecode> -u <username> -p <password> -d <domain>
Alternativamente, se puede usar runas /netonly antes de invocar SCCMHound:
runas /netonly /user:[email protected] cmd.exe
cd C:\path\to\SCCMHound
SCCMHound.exe --server <server> --sitecode <sitecode>
¿Recuerdas cuando los datos de sesión de BloodHound eran fáciles de recopilar? Bueno...

¡¡¡Gráficos de robo de credenciales y movimiento lateral preciosos!!!

Por favor, sé amable mientras el/los mantenedor/es amplían las fuentes de datos recopiladas y corrigen cualquier error :)
Vale, vale... Esto invocará todos los métodos de recopilación (incluidos los métodos de recopilación 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.
El método de recopilación predeterminado (no es necesario especificar el argumento -c) construye un conjunto de datos de BloodHound utilizando únicamente conexiones WMI al servidor de sitio de MCM especificado. Este método de recopilación recopilará:
Este método de recopilación recopila información del usuario con sesión iniciada actualmente para cada objeto de equipo en MCM. Esto tiene la limitación de recopilar únicamente el usuario reportado por MCM como conectado, independientemente de si hay varios usuarios autenticados.
SCCMHound rellena automáticamente la pertenencia a grupos SOLO para Usuarios. Los objetos de grupo en ConfigMgr no parecen contener información de grupos secundarios o grupos principales, por lo que los grupos en BloodHound solo mostrarán miembros Usuario. Esto requiere una investigación más profunda y no es un problema si se importa con otro conjunto de datos (SharpHound, SOAPHound, etc.).
Para obtener una mayor cobertura de sesiones con este método de recopilación, se puede usar el argumento --loop para recopilar información de sesiones periódicamente.
Este método de recopilación (-c LocalAdmins) ejecuta el comportamiento del método de recopilación "Default" y también consulta la colección "All Systems" para recopilar el contenido del grupo local Administrators de cada equipo administrado por MCM.
Nota (1): Este método de recopilación solo consulta los dispositivos que están en línea. Puede usarse con el argumento --loop para obtener una mejor cobertura.
Nota (2): Este método de recopilación utiliza CMPivot para ejecutar la consulta en todos los miembros.
Este método de recopilación (-c CurrentSessions) ejecuta el comportamiento del método de recopilación "Default" y también consulta la colección "All Systems" para recopilar información de sesiones en tiempo real de cada equipo administrado por MCM.
Este método de recopilación solo consulta los dispositivos que están actualmente en línea. Puede usarse con el argumento --loop para obtener una mejor cobertura.
Nota (1): Este método de recopilación solo consulta los dispositivos que están en línea. Puede usarse con el argumento --loop para obtener una mejor cobertura.
Nota (2): Este método de recopilación utiliza CMPivot para ejecutar la consulta en todos los miembros.
Para ejecutar todos los métodos de recopilación de una sola vez, simplemente especifica All (-c All) como método de recopilación.
Recomiendo leer la siguiente documentación de Microsoft para comprender mejor cómo funciona CMPivot: https://learn.microsoft.com/en-us/mem/configmgr/core/servers/manage/cmpivot
tl;dr: los métodos de recopilación de CMPivot han sido probados por Microsoft en entornos con hasta 50 000 clientes, lo que generó <50 MB de tráfico en la red. Los métodos de recopilación de SCCMHound se han probado en entornos con ~1000 máquinas sin problemas identificados ni degradación del servicio.
No dudes en informar cualquier comentario sobre estos métodos de recopilación en entornos grandes para que pueda incorporarse aquí.
Además de una excelente cobertura de sesiones y de administradores locales, SCCMHound rellena los objetos recopilados con propiedades adicionales. Estas se pueden observar en la pestaña "Node Info" en BloodHound, precedidas por "sccm". Por ejemplo, sccmADSiteName.
Las propiedades recopiladas incluyen:
customqueries.json proporciona consultas Cypher que se pueden ejecutar con un conjunto de datos de SCCMHound importado. Esto se ampliará a medida que se agreguen funcionalidades adicionales a SCCMHound.
Para usarlo, simplemente copia customqueries.json a ~/.config/bloodhound/customqueries.json y reinicia BloodHound. Las consultas aparecerán entonces en la pestaña "Analysis" de BloodHound.