如何使用CMLoot发现SCCMCM SMB共享中存储的敏感文件
2023-5-16 22:32:53 Author: www.freebuf.com(查看原文) 阅读量:11 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

关于CMLoot

CMLoot是一款真的SMB共享的文件爬取工具,在该工具的帮助下,广大研究人员能够轻松寻找存储在系统中心配置管理器(SCCM/CM) SMB共享中的敏感文件。

这类共享主要用于将软件分发到Windows企业环境中的Windows客户端,同时可以包含带有密码和证书(pfx)等敏感信息的脚本/配置文件。大多数SCCM部署都配置为允许所有用户读取共享上的文件,但有时仅限于计算机帐户使用。

SCCM/CM的内容库有一个“复杂”的文件结构:

其中,DataLib文件夹中包含了很多.INI文件,这些.INI文件以原始文件名+.INI命名,而这些.INI文件包含文件的哈希,文件本身以“<文件夹名称:哈希的4个首字符>\ 完整哈希”的格式存储在FileLib中。

CM访问账号

我们可以对CM中的包应用访问控制机制,但这只会保护包含DataLib文件描述符记录的文件夹,而非文件本身。CMLoot将在清点过程中记录它无法访问(访问被拒绝)的任何包或文件,接下来,Invoke-CMLootHunt以使用此文件枚举访问控制试图保护的实际文件。

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/1njected/CMLoot.git

工具使用

下列命令可以通过在活动目录中搜索CM服务器或通过在安装了SC(系统中心)的工作站中搜索注册表键来寻找CM服务器:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints

目标设备或网络中可能部署了多个CM服务器,它们可以包含不同的文件,所以一定要找到所有这些文件。

为此,我们需要创建一个清单文件,它只是一个包含对文件描述符(.INI)引用的文本文件。以下命令将解析SCCM服务器上的所有.INI文件,以创建可用文件列表:

PS> Invoke-CMLootInventory -SCCMHost sccm01.domain.local -Outfile sccmfiles.txt

然后使用清单文件来创建目标并下载有价值的敏感文件:

PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -GridSelect

下载单个文件:

PS> Invoke-CMLootDownload -SingleFile \\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml

下载包含特定文件扩展的所有文件:

PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -Extension ps1

尝试搜索无法访问的共享:

Invoke-CMLootHunt -SCCMHost sccm -NoAccessFile sccmfiles_noaccess.txt

提取MSI文件:

Invoke-CMLootExtract -Path .\CMLootOut\msi

工具运行演示

运行清单文件,扫描可用文件:

使用GridSelect选择文件:

下载所有扩展:

搜索不可访问的文件并提取MSI:

许可证协议

本项目的开发与发布遵循BSD-3-Clause开源许可证协议。

项目地址

CMLoot:【GitHub传送门

参考资料

https://techcommunity.microsoft.com/t5/configuration-manager-archive/understanding-the-configuration-manager-content-library/ba-p/273349


文章来源: https://www.freebuf.com/articles/network/366687.html
如有侵权请联系:admin#unsafe.sh