
Коллектор BloodHound для Microsoft Configuration Manager
SCCMHound — это коллектор BloodHound на C# для Microsoft Configuration Manager (MCM). Если вы ищете способ собирать информацию о сеансах BloodHound от пользователей и компьютеров Configuration Manager, то это инструмент для вас!
Настоятельно рекомендуется импортировать собранные данные вместе с данными другого коллектора (SharpHound, SOAPHound и т.д.). Не имеет значения, импортированы ли они до или после другого набора данных. В результате вы получите обширную картину связей Active Directory целевой организации, дополненную информацией, собранной из Configuration Manager.
SCCMHound — это проект с открытым исходным кодом, а не продукт CrowdStrike. Поэтому он не имеет официальной поддержки, явной или подразумеваемой.
SCCMHound ориентирован на .NET 4.6.2 для обеспечения совместимости с Windows 10 версий 1607 и выше.
Требуется учётная запись администратора MCM с достаточными правами для запроса информации о пользователях и компьютерах. В зависимости от метода сбора также требуется возможность выполнять запросы CMPivot. Этот инструмент тестировался с учётной записью, которой назначена роль MCM "Full Administrator".
Сервер и код сайта можно получить в консоли MCM или с помощью другого инструмента, например SharpSCCM.

Сначала нужно клонировать репозиторий. Необходимо указать --recursive, поскольку SCCMHound использует SharpHoundCommon в качестве подмодуля.
Например: git clone [email protected]:CrowdStrike/sccmhound.git --recursive
Когда у вас появится локальная копия, откройте SCCMHound.sln в Visual Studio и скомпилируйте!
Для использования метода сбора по умолчанию просто укажите аргументы server и sitecode. 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) создаёт набор данных BloodHound, используя только WMI-подключения к указанному серверу сайта MCM. Этот метод сбора собирает:
Этот метод сбора собирает информацию о текущем вошедшем пользователе для каждого объекта Computer в MCM. Ограничение состоит в том, что собирается только тот вошедший пользователь, которого сообщает MCM, независимо от того, аутентифицировано ли несколько пользователей.
SCCMHound автоматически заполняет членство в группах ТОЛЬКО для пользователей. Объекты групп в ConfigMgr, по-видимому, не содержат информации о дочерних или родительских группах, поэтому в BloodHound группы будут показывать только участников-пользователей. Это требует дальнейшего изучения и не является проблемой, если импортировать данные вместе с другим набором данных (SharpHound, SOAPHound и т.д.).
Чтобы получить более полное покрытие сеансов с помощью этого метода сбора, можно использовать аргумент --loop для регулярного сбора информации о сеансах.
Этот метод сбора (-c LocalAdmins) повторяет поведение метода сбора по умолчанию, а также запрашивает коллекцию "All Systems", чтобы собрать содержимое локальной группы Administrators для каждого компьютера, управляемого MCM.
Примечание (1): Этот метод сбора запрашивает только устройства, которые находятся в сети. Его можно использовать с аргументом --loop для более полного покрытия.
Примечание (2): Этот метод сбора использует CMPivot для выполнения запроса по всем элементам коллекции.
Этот метод сбора (-c CurrentSessions) повторяет поведение метода сбора по умолчанию, а также запрашивает коллекцию "All Systems", чтобы собрать информацию о сеансах в реальном времени для каждого компьютера, управляемого MCM.
Этот метод сбора запрашивает только устройства, которые в данный момент находятся в сети. Его можно использовать с аргументом --loop для более полного покрытия.
Примечание (1): Этот метод сбора запрашивает только устройства, которые находятся в сети. Его можно использовать с аргументом --loop для более полного покрытия.
Примечание (2): Этот метод сбора использует CMPivot для выполнения запроса по всем элементам коллекции.
Чтобы запустить все методы сбора разом, просто укажите All (-c All) в качестве метода сбора.
Рекомендую прочитать следующую документацию Microsoft, чтобы лучше понять, как работает CMPivot: https://learn.microsoft.com/en-us/mem/configmgr/core/servers/manage/cmpivot
Кратко: методы сбора на основе CMPivot были протестированы Microsoft в средах с количеством клиентов до 50 000, что создавало <50MB сетевого трафика. Методы сбора SCCMHound были протестированы в средах с ~1000 машин, при этом не было выявлено проблем или деградации сервиса.
Не стесняйтесь отправлять любые отзывы об этих методах сбора в крупных средах, чтобы их можно было учесть здесь.
Помимо отличного покрытия сеансов и локальных администраторов, SCCMHound заполняет собранные объекты дополнительными свойствами. Их можно увидеть на вкладке "Node Info" в BloodHound; они имеют префикс "sccm". Например, sccmADSiteName.
Собранные свойства включают:
customqueries.json содержит Cypher-запросы, которые можно выполнять с импортированным набором данных SCCMHound. Этот файл будет расширяться по мере добавления новых функций в SCCMHound.
Чтобы воспользоваться этим, просто скопируйте customqueries.json в ~/.config/bloodhound/customqueries.json и перезапустите BloodHound. Запросы затем появятся на вкладке "Analysis" в BloodHound.