
Trouvez des fichiers intéressants stockés sur les partages SMB de (System Center) Configuration Manager (SCCM/CM)
CMLoot a été créé pour trouver facilement des fichiers intéressants stockés sur les partages SMB de System Center Configuration Manager (SCCM/CM). Ces partages sont utilisés pour distribuer des logiciels aux clients Windows dans les environnements d'entreprise Windows et peuvent contenir des scripts/fichiers de configuration avec des mots de passe, des certificats (pfx), etc. La plupart des déploiements SCCM sont configurés pour permettre à tous les utilisateurs de lire les fichiers sur les partages, parfois cela est limité aux comptes machines.
La bibliothèque de contenu de SCCM/CM possède une structure de fichiers "complexe" (ennuyeuse) que CMLoot va démêler pour vous : https://techcommunity.microsoft.com/t5/configuration-manager-archive/understanding-the-configuration-manager-content-library/ba-p/273349
Essentiellement, le dossier DataLib contient des fichiers .INI, les fichiers .INI sont nommés selon le nom de fichier original + .INI. Le fichier .INI contient un hachage du fichier, et le fichier lui-même est stocké dans FileLib au format <nom du dossier : 4 premiers caractères du hachage>\hachage_complet.
Il est possible d'appliquer un contrôle d'accès aux paquets dans CM. Cela ne protège cependant que le dossier du descripteur de fichier (DataLib), pas le fichier lui-même. CMLoot enregistrera lors de l'inventaire tout paquet auquel il ne peut pas accéder (Accès refusé) dans le fichier <fichier_inventaire>_noaccess.txt. Invoke-CMLootHunt peut ensuite utiliser ce fichier pour énumérer les fichiers réels que le contrôle d'accès tente de protéger.
Windows Defender for Endpoint (EDR) ou d'autres mécanismes de sécurité peuvent se déclencher car le script analyse beaucoup de fichiers via SMB.
Trouvez les serveurs CM en les recherchant dans Active Directory ou en récupérant cette clé de registre sur un poste de travail avec System Center installé :
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints
Il peut y avoir plusieurs serveurs CM déployés et ils peuvent contenir des fichiers différents, alors assurez-vous de tous les trouver.
Ensuite, vous devez créer un fichier d'inventaire qui est simplement un fichier texte contenant des références aux descripteurs de fichiers (.INI). La commande suivante analysera tous les fichiers .INI sur le serveur SCCM pour créer une liste des fichiers disponibles.
PS> Invoke-CMLootInventory -SCCMHost sccm01.domain.local -Outfile sccmfiles.txt
Utilisez ensuite le fichier d'inventaire créé ci-dessus pour télécharger les fichiers d'intérêt :
Sélectionnez des fichiers à l'aide de GridView (les performances peuvent varier avec des fichiers d'inventaire volumineux) :
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -GridSelect
Téléchargez un seul fichier en copiant une ligne dans le texte d'inventaire :
PS> Invoke-CMLootDownload -SingleFile \\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml
Téléchargez tous les fichiers avec une certaine extension :
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -Extension ps1
Les fichiers seront par défaut téléchargés dans CMLootOut dans le dossier à partir duquel vous exécutez le script, cela peut être modifié avec le paramètre -OutFolder. Les fichiers sont enregistrés au format (dossier : extension)\(4 premiers caractères du hachage>_nom_fichier_original).
Recherchez les fichiers que CMLootInventory a trouvés inaccessibles :
Invoke-CMLootHunt -SCCMHost sccm -NoAccessFile sccmfiles_noaccess.txt
Extrayez en masse les fichiers MSI :
Invoke-CMLootExtract -Path .\CMLootOut\msi
Exécution de l'inventaire, analyse des fichiers disponibles :

Sélection des fichiers à l'aide de GridSelect :

Téléchargement de toutes les extensions :

Recherche de fichiers "inaccessibles" et extraction MSI :

Tomas Rzepka / WithSecure