
Encontre arquivos interessantes armazenados em compartilhamentos SMB do (System Center) Configuration Manager (SCCM/CM)
CMLoot foi criado para encontrar facilmente arquivos interessantes armazenados em compartilhamentos SMB do System Center Configuration Manager (SCCM/CM). Os compartilhamentos são usados para distribuir software para clientes Windows em ambientes empresariais Windows e podem conter scripts/arquivos de configuração com senhas, certificados (pfx), etc. A maioria das implantações do SCCM é configurada para permitir que todos os usuários leiam os arquivos nos compartilhamentos, às vezes limitado a contas de computador.
A Biblioteca de Conteúdo do SCCM/CM possui uma estrutura de arquivos "complexa" (irritante) que o CMLoot desembaraçará para você: https://techcommunity.microsoft.com/t5/configuration-manager-archive/understanding-the-configuration-manager-content-library/ba-p/273349
Essencialmente, a pasta DataLib contém arquivos .INI. Os arquivos .INI são nomeados com o nome original do arquivo + .INI. O arquivo .INI contém um hash do arquivo, e o próprio arquivo é armazenado na FileLib no formato <nome da pasta: 4 primeiros caracteres do hash>\fullhash.
É possível aplicar controle de acesso a pacotes no CM. No entanto, isso protege apenas a pasta do descritor de arquivo (DataLib), não o arquivo em si. Durante o inventário, o CMLoot registrará qualquer pacote ao qual não consiga acessar (Acesso negado) no arquivo _noaccess.txt. O Invoke-CMLootHunt pode então usar esse arquivo para enumerar os arquivos reais que o controle de acesso está tentando proteger.
O Windows Defender para Endpoint (EDR) ou outros mecanismos de segurança podem disparar porque o script analisa muitos arquivos via SMB.
Encontre servidores CM pesquisando por eles no Active Directory ou obtendo esta chave de registro em uma estação de trabalho com o System Center instalado:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints
Pode haver vários servidores CM implantados e eles podem conter arquivos diferentes, portanto, certifique-se de encontrar todos.
Então você precisa criar um arquivo de inventário que é apenas um arquivo de texto contendo referências aos descritores de arquivo (.INI). O comando a seguir analisará todos os arquivos .INI no servidor SCCM para criar uma lista de arquivos disponíveis.
PS> Invoke-CMLootInventory -SCCMHost sccm01.domain.local -Outfile sccmfiles.txt
Em seguida, use o arquivo de inventário criado acima para baixar arquivos de interesse:
Selecione arquivos usando GridView (a eficácia pode variar com arquivos de inventário grandes):
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -GridSelect
Baixe um único arquivo copiando uma linha no texto do inventário:
PS> Invoke-CMLootDownload -SingleFile \\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml
Baixe todos os arquivos com uma determinada extensão:
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -Extension ps1
Por padrão, os arquivos serão baixados para CMLootOut na pasta a partir da qual você executa o script, podendo ser alterado com o parâmetro -OutFolder. Os arquivos são salvos no formato (pasta: filext)\(primeiros 4 caracteres do hash>_nome original do arquivo).
Procure por arquivos que o CMLootInventory considerou inacessíveis:
Invoke-CMLootHunt -SCCMHost sccm -NoAccessFile sccmfiles_noaccess.txt
Extraia arquivos MSI em massa:
Invoke-CMLootExtract -Path .\CMLootOut\msi
Execute o inventário, escaneando arquivos disponíveis:

Selecione arquivos usando GridSelect:

Baixe todas as extensões:

Procure arquivos "inacessíveis" e extraia MSI:

Tomas Rzepka / WithSecure