SCCM 分发点 (DP) 是 Microsoft SCCM 用于托管软件安装、补丁、脚本部署等中使用的所有文件的服务器。默认情况下,这些服务器允许通过 SMB (TCP/445) 和 HTTP/S (TCP /80 和/或 TCP/443)并需要某种类型的 Windows 身份验证(即 NTLM)。
当前的 SCCM DP 抢劫工具依赖于浏览 SMB 共享来收集文件的能力。
但是,组织限制对内部网络上的服务器的入站 SMB 访问以及阻止来自 Internet 的入站 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 中的目录,因为它只存储实际文件。
但是,直接从http://<SCCM DP>/SMS_DP_SMSPKG$/
根目录浏览到目录名称将显示该目录中的文件,可以直接下载。
这就是sccm-http-looter
正常工作的方式。它会解析 Datalib 目录列表中的目录,然后请求这些目录并解析每个目录中的任何文件,然后再下载具有用户指定的允许列表中的扩展名的任何文件。
在启用匿名访问但禁用http://<SCCM DP>/SMS_DP_SMSPKG$/
根目录之外的目录的目录列表的情况下,还有第二种技术来检索可通过使用-use-signature-method
运行该工具来使用的文件-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 个字节的文件名,如下所示。
该工具搜索该字节字符串并从签名文件中提取所有文件名。