
Finde interessante Dateien, die auf (System Center) Configuration Manager (SCCM/CM) SMB-Freigaben gespeichert sind.
CMLoot wurde erstellt, um einfach interessante Dateien zu finden, die auf SMB-Freigaben von System Center Configuration Manager (SCCM/CM) gespeichert sind. Die Freigaben werden verwendet, um Software an Windows-Clients in Windows-Unternehmensumgebungen zu verteilen, und können Skripte/Konfigurationsdateien mit Passwörtern, Zertifikaten (PFX) usw. enthalten. Die meisten SCCM-Bereitstellungen sind so konfiguriert, dass alle Benutzer die Dateien auf den Freigaben lesen können, manchmal ist dies auf Computerkonten beschränkt.
Die Content Library von SCCM/CM hat eine "komplexe" (lästige) Dateistruktur, die CMLoot für Sie entwirrt: https://techcommunity.microsoft.com/t5/configuration-manager-archive/understanding-the-configuration-manager-content-library/ba-p/273349
Im Wesentlichen enthält der DataLib-Ordner .INI-Dateien. Die .INI-Dateien sind nach dem ursprünglichen Dateinamen + .INI benannt. Die .INI-Datei enthält einen Hash der Datei, und die Datei selbst wird in der FileLib im Format <Ordnername: die ersten 4 Zeichen des Hashs>\vollständigerHash gespeichert.
Es ist möglich, Zugriffssteuerung auf Pakete in CM anzuwenden. Dies schützt jedoch nur den Ordner für den Dateideskriptor (DataLib), nicht die eigentliche Datei selbst. CMLoot wird während der Inventarisierung jedes Paket, auf das es keinen Zugriff hat (Zugriff verweigert), in der Datei _noaccess.txt aufzeichnen. Mit Invoke-CMLootHunt kann diese Datei dann verwendet werden, um die tatsächlichen Dateien aufzulisten, die die Zugriffssteuerung schützen soll.
Windows Defender for Endpoint (EDR) oder andere Sicherheitsmechanismen könnten ausgelöst werden, da das Skript viele Dateien über SMB analysiert.
Finden Sie CM-Server, indem Sie in Active Directory nach ihnen suchen oder diesen Registrierungsschlüssel auf einer Workstation mit installiertem System Center abrufen:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints
Es können mehrere CM-Server bereitgestellt sein, die unterschiedliche Dateien enthalten können. Stellen Sie also sicher, dass Sie alle finden.
Dann müssen Sie eine Inventardatei erstellen, die nur eine Textdatei ist, die Verweise auf Dateideskriptoren (.INI) enthält. Der folgende Befehl analysiert alle .INI-Dateien auf dem SCCM-Server, um eine Liste der verfügbaren Dateien zu erstellen.
PS> Invoke-CMLootInventory -SCCMHost sccm01.domain.local -Outfile sccmfiles.txt
Dann verwenden Sie die oben erstellte Inventardatei, um Dateien von Interesse herunterzuladen:
Wählen Sie Dateien mit GridView aus (bei großen Inventardateien kann die Leistung variieren):
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -GridSelect
Laden Sie eine einzelne Datei herunter, indem Sie eine Zeile im Inventartext kopieren:
PS> Invoke-CMLootDownload -SingleFile \\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml
Laden Sie alle Dateien mit einer bestimmten Dateierweiterung herunter:
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -Extension ps1
Dateien werden standardmäßig in den Ordner CMLootOut in dem Verzeichnis heruntergeladen, von dem aus Sie das Skript ausführen. Dies kann mit dem Parameter -OutFolder geändert werden. Dateien werden im Format (Ordner: Dateierweiterung)\(erste 4 Zeichen des Hashs>_ursprünglicherDateiname) gespeichert.
Jagen Sie nach Dateien, die CMLootInventory als nicht zugänglich eingestuft hat:
Invoke-CMLootHunt -SCCMHost sccm -NoAccessFile sccmfiles_noaccess.txt
Massenweise MSI-Dateien extrahieren:
Invoke-CMLootExtract -Path .\CMLootOut\msi
Inventar ausführen, verfügbare Dateien scannen:

Dateien mit GridSelect auswählen:

Alle Erweiterungen herunterladen:

Nach "nicht zugänglichen" Dateien suchen und MSI extrahieren:

Tomas Rzepka / WithSecure