
Trova file interessanti archiviati su (System Center) Configuration Manager (SCCM/CM) SMB shares
CMLoot è stato creato per trovare facilmente file interessanti memorizzati nelle condivisioni SMB di System Center Configuration Manager (SCCM/CM). Le condivisioni sono utilizzate per distribuire software ai client Windows in ambienti aziendali Windows e possono contenere script/file di configurazione con password, certificati (pfx), ecc. La maggior parte delle distribuzioni SCCM sono configurate per consentire a tutti gli utenti di leggere i file sulle condivisioni, a volte è limitato agli account computer.
La libreria di contenuti di SCCM/CM ha una struttura di file "complessa" (fastidiosa) che CMLoot dipanerà per te: https://techcommunity.microsoft.com/t5/configuration-manager-archive/understanding-the-configuration-manager-content-library/ba-p/273349
In sostanza, la cartella DataLib contiene file .INI, i file .INI sono denominati nomefile originale + .INI. Il file .INI contiene un hash del file, e il file stesso è memorizzato in FileLib nel formato <nome cartella: primi 4 caratteri dell'hash>\hashcompleto.
È possibile applicare il controllo degli accessi ai pacchetti in CM. Tuttavia, questo protegge solo la cartella per il descrittore di file (DataLib), non il file stesso. Durante l'inventario, CMLoot registrerà qualsiasi pacchetto a cui non può accedere (Accesso negato) nel file _noaccess.txt. Invoke-CMLootHunt può quindi utilizzare questo file per enumerare i file effettivi che il controllo degli accessi sta cercando di proteggere.
Windows Defender for Endpoint (EDR) o altri meccanismi di sicurezza potrebbero attivarsi perché lo script analizza molti file via SMB.
Trova i server CM cercandoli in Active Directory o recuperando questa chiave di registro su una workstation con System Center installato:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints
Potrebbero essere distribuiti più server CM e possono contenere file diversi, quindi assicurati di trovarli tutti.
Poi devi creare un file di inventario che è semplicemente un file di testo contenente riferimenti ai descrittori di file (.INI). Il seguente comando analizzerà tutti i file .INI sul server SCCM per creare un elenco di file disponibili.
PS> Invoke-CMLootInventory -SCCMHost sccm01.domain.local -Outfile sccmfiles.txt
Quindi utilizza il file di inventario creato sopra per scaricare i file di interesse:
Seleziona i file usando GridView (il chilometraggio può variare con file di inventario grandi):
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -GridSelect
Scarica un singolo file, copiando una riga nel testo dell'inventario:
PS> Invoke-CMLootDownload -SingleFile \\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml
Scarica tutti i file con una certa estensione:
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -Extension ps1
I file verranno scaricati per impostazione predefinita in CMLootOut nella cartella da cui esegui lo script, può essere modificato con il parametro -OutFolder. I file vengono salvati nel formato (cartella: estensione)\(primi 4 caratteri dell'hash>_nomefile originale).
Caccia ai file che CMLootInventory ha trovato inaccessibili:
Invoke-CMLootHunt -SCCMHost sccm -NoAccessFile sccmfiles_noaccess.txt
Estrai in blocco file MSI:
Invoke-CMLootExtract -Path .\CMLootOut\msi
Esegui l'inventario, scansionando i file disponibili:

Seleziona i file usando GridSelect:

Scarica tutte le estensioni:

Caccia ai file "inaccessibili" ed estrazione MSI:

Tomas Rzepka / WithSecure