SCCM 分发点(DP)是 Microsoft SCCM 用于托管软件安装、补丁、脚本部署等所用全部文件的服务器。默认情况下,这些服务器允许通过 SMB(TCP/445)和 HTTP/S(TCP/80 和/或 TCP/443)进行访问,并且需要某种类型的 Windows 身份验证(即 NTLM)。
当前的 SCCM DP 文件提取工具依赖于浏览 SMB 共享来收集文件的能力。
然而,组织限制内部网络服务器上的入站 SMB 访问并不少见,并且阻止来自互联网的入站 SMB 访问也是标准做法。另一方面,HTTP/S 访问在内部网络上通常不受限制,而且经常允许来自互联网的访问。如果攻击者能够找到通过 HTTP/S 从 SCCM DP 获取文件的方法,这就为他们提供了可乘之机。
SMB 工具的工作原理是枚举 SCCMContentLib$ 共享中的 DataLib 文件夹,查找包含文件哈希的 <filename.ext>.INI 文件。然后,它们可以在 FileLib/<hash[0:4]>/<hash> 位置找到实际文件。这之所以有效,是因为只要能够访问该共享,就可以枚举 DataLib 文件夹中的所有文件。
使用 HTTP/S 时,情况有所不同。浏览 http://<SCCM DP>/SMS_DP_SMSPKG$/Datalib 会显示编号文件和 INI 的目录列表。
由于各种原因(例如速度),这些分发点可以配置为允许匿名访问。

然而,点击非 INI 链接只会显示相同的页面,这将直接可访问的文件限制为 Datalib “根”目录中的那些文件,因为从 INI 文件中为目录提取的哈希无法用于在 FileLib 中查找目录,因为 FileLib 只存储实际文件。

然而,直接浏览 http://<SCCM DP>/SMS_DP_SMSPKG$/ 根目录下的目录名称,将显示该目录中的文件,这些文件可以直接下载。

这就是 sccm-http-looter 的正常工作方式。它解析 Datalib 目录列表以获取目录,然后请求这些目录并逐一解析其中是否有文件,再下载任何扩展名在用户指定的允许列表中的文件。
在启用匿名访问但 http://<SCCM DP>/SMS_DP_SMSPKG$/ 根目录下的目录列表被禁用的情况下,还有第二种检索文件的技术,可以通过使用 -use-signature-method 参数运行工具来启用。在此模式下,该工具执行以下操作:
http://<SCCM DP>/SMS_DP_SMSPKG$/Datalib 下载 Datalib 列表http://<SCCM DP>/SMS_DP_SMSSIG$/<filename>.tar 下载任何非 .INI 链接文件名,其中 <filename> 是 Datalib 页面中任何 href 的最后一段(例如 12300005.1)http://<SCCM DP>/SMS_DP_SMSPKG$/Datalib/<filename>/<extracted filename>.INI 下载 INI 文件http://<SCCM DP>/SMS_DP_SMSPKG$/Filelib/<hash[0:4]>/<hash> 下载实际文件,并根据签名文件中指定的正确文件名进行重命名。签名文件是 .tar 文件,但并非真正的 tar 文件。它们包含文件名,这些文件名位于字节字符串 0x18, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01 之前的 512 字节处,如下所示。

该工具会搜索该字节字符串,并从签名文件中提取所有文件名。