SCCMHound 是一个用于 Microsoft Configuration Manager (MCM) 的 C# BloodHound 收集器。如果您正在寻找一种从 Configuration Manager 的用户和计算机中收集 BloodHound 会话信息的方法,那么这个工具正是您所需要的!
强烈建议将收集到的数据与其他收集器的数据(SharpHound、SOAPHound 等)一起导入。无论是在其他数据集之前还是之后导入都没有关系。这样可以获得目标组织 Active Directory 关系的全面概览,并辅以从 Configuration Manager 收集的信息。
SCCMHound 是一个开源项目,不是 CrowdStrike 产品。因此,它不提供任何明示或暗示的正式支持。
SCCMHound 以 .NET 4.6.2 为目标,以确保与 Windows 10 版本 1607 及更高版本兼容。
需要具有足够权限查询用户和计算机信息的 MCM 管理员帐户。根据收集方法的不同,还需要能够执行 CMPivot 查询。该工具已在分配了 MCM“完全管理员”角色的用户下进行了测试。
可以从 MCM 控制台或使用其他工具(如 SharpSCCM)获取服务器和站点代码。

首先,您需要克隆仓库。必须指定 --recursive,因为 SCCMHound 使用 SharpHoundCommon 作为子模块。
例如:git clone [email protected]:CrowdStrike/sccmhound.git --recursive
获得本地副本后,在 Visual Studio 中打开 SCCMHound.sln 并编译!
要使用默认收集方法,只需提供服务器和站点代码参数。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 会话数据很容易收集的时候吗?好吧……

漂亮的凭据窃取和横向移动图!!!

在维护者扩展收集的数据源并修复各种 bug 期间,请善待他们 :)
好吧,好吧……这会调用所有收集方法(包括 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 参数)仅通过与指定 MCM 站点服务器的 WMI 连接来构建 BloodHound 数据集。此收集方法将收集:
此收集方法会收集 MCM 中每个 Computer 对象的当前登录用户信息。其局限性在于,无论是否有多个用户通过身份验证,它都只收集 MCM 报告的已登录用户。
SCCMHound 仅自动填充用户的组成员身份。ConfigMgr 中的组对象似乎不包含子组或父组信息,因此 BloodHound 中的组只会显示用户成员。这需要进一步调查,如果与其他数据集(SharpHound、SOAPHound 等)一起导入,则不会成为问题。
要使用此收集方法获得更大的会话覆盖范围,可以使用 --loop 参数定期收集会话信息。
此收集方法(-c LocalAdmins)执行“默认”收集方法的行为,同时查询“所有系统”集合,以收集每台由 MCM 管理的计算机上本地 Administrators 组的内容。
注意 (1):此收集方法仅查询在线的设备。可以结合 --loop 参数使用以获得更好的覆盖范围。
注意 (2):此收集方法使用 CMPivot 对所有成员执行查询。
此收集方法(-c CurrentSessions)执行“默认”收集方法的行为,同时查询“所有系统”集合,以收集每台由 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 还会为收集到的对象填充额外的属性。这些属性可以在 BloodHound 的“节点信息”选项卡中看到,并以“sccm”为前缀。例如 sccmADSiteName。
收集的属性包括:
customqueries.json 提供了可与导入的 SCCMHound 数据集一起执行的 Cypher 查询。随着 SCCMHound 添加更多功能,此文件也将随之扩展。
要使用它,只需将 customqueries.json 复制到 ~/.config/bloodhound/customqueries.json,然后重新启动 BloodHound。这些查询将出现在 BloodHound 的“分析”选项卡下。