
Encuentra archivos interesantes almacenados en (System Center) Configuration Manager (SCCM/CM) SMB shares
CMLoot fue creado para encontrar fácilmente archivos interesantes almacenados en recursos compartidos SMB de System Center Configuration Manager (SCCM/CM). Los recursos compartidos se utilizan para distribuir software a clientes Windows en entornos empresariales Windows y pueden contener scripts/archivos de configuración con contraseñas, certificados (pfx), etc. La mayoría de las implementaciones de SCCM están configuradas para permitir que todos los usuarios lean los archivos en los recursos compartidos, a veces está limitado a cuentas de computadora.
La biblioteca de contenido de SCCM/CM tiene una estructura de archivos "compleja" (molesta) que CMLoot desenredará por ti: https://techcommunity.microsoft.com/t5/configuration-manager-archive/understanding-the-configuration-manager-content-library/ba-p/273349
Esencialmente, la carpeta DataLib contiene archivos .INI, los archivos .INI se nombran como nombre de archivo original + .INI. El archivo .INI contiene un hash del archivo, y el archivo en sí se almacena en FileLib en formato de <nombre de carpeta: 4 primeros caracteres del hash>\fullhash.
Es posible aplicar control de acceso a los paquetes en CM. Sin embargo, esto solo protege la carpeta del descriptor de archivo (DataLib), no el archivo en sí. CMLoot, durante el inventario, registrará cualquier paquete al que no pueda acceder (Acceso denegado) en el archivo _noaccess.txt. Invoke-CMLootHunt puede entonces usar este archivo para enumerar los archivos reales que el control de acceso intenta proteger.
Windows Defender for Endpoint (EDR) u otros mecanismos de seguridad podrían activarse porque el script analiza muchos archivos a través de SMB.
Encuentre servidores CM buscándolos en Active Directory o obteniendo esta clave de registro en una estación de trabajo con System Center instalado:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints
Puede haber múltiples servidores CM desplegados y pueden contener diferentes archivos, así que asegúrese de encontrar todos.
Luego necesita crear un archivo de inventario que es simplemente un archivo de texto que contiene referencias a descriptores de archivos (.INI). El siguiente comando analizará todos los archivos .INI en el servidor SCCM para crear una lista de archivos disponibles.
PS> Invoke-CMLootInventory -SCCMHost sccm01.domain.local -Outfile sccmfiles.txt
Luego use el archivo de inventario creado arriba para descargar archivos de interés:
Seleccione archivos usando GridView (el rendimiento puede variar con archivos de inventario grandes):
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -GridSelect
Descargue un solo archivo copiando una línea en el texto de inventario:
PS> Invoke-CMLootDownload -SingleFile \\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml
Descargue todos los archivos con una extensión de archivo determinada:
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -Extension ps1
Los archivos se descargarán por defecto en CMLootOut en la carpeta desde la que ejecute el script, se puede cambiar con el parámetro -OutFolder. Los archivos se guardan en el formato de (carpeta: filext)\(primeros 4 caracteres del hash>_nombreoriginal).
Busque archivos que CMLootInventory encontró inaccesibles:
Invoke-CMLootHunt -SCCMHost sccm -NoAccessFile sccmfiles_noaccess.txt
Extracción masiva de archivos MSI:
Invoke-CMLootExtract -Path .\CMLootOut\msi
Ejecutar inventario, escaneando archivos disponibles:

Seleccionar archivos usando GridSelect:

Descargar todas las extensiones:

Buscar archivos "inaccesibles" y extracción MSI:

Tomas Rzepka / WithSecure