
( System Center ) Configuration Manager ( SCCM/CM ) SMB shares に保存されている興味深いファイルを検索する
CMLootは、System Center Configuration Manager (SCCM/CM) のSMB共有に保存されている興味深いファイルを簡単に見つけ出すために作成されました。これらの共有は、Windowsエンタープライズ環境でソフトウェアをWindowsクライアントに配布するために使用され、パスワードや証明書(pfx)などを含むスクリプト/構成ファイルが含まれている可能性があります。ほとんどのSCCMデプロイメントでは、すべてのユーザーが共有上のファイルを読み取れるように構成されていますが、コンピュータアカウントのみに制限されている場合もあります。
SCCM/CMのコンテンツライブラリは「複雑な」(厄介な)ファイル構造を持っており、CMLootがそれを解きほぐします: https://techcommunity.microsoft.com/t5/configuration-manager-archive/understanding-the-configuration-manager-content-library/ba-p/273349
基本的に、DataLibフォルダには.INIファイルが含まれており、.INIファイルは元のファイル名 + .INI という名前です。
.INIファイルにはファイルのハッシュが含まれており、ファイル自体はFileLibに <フォルダ名: ハッシュの最初の4文字>\fullhash という形式で保存されます。
CMのパッケージにアクセス制御を適用することは可能です。ただし、これはファイル記述子(DataLib)のフォルダのみを保護し、実際のファイル自体は保護しません。CMLootはインベントリ中に、アクセスできないパッケージ(アクセス拒否)を記録し、ファイル <インベントリファイル>_noaccess.txt に出力します。Invoke-CMLootHuntはこのファイルを使用して、アクセス制御が保護しようとしている実際のファイルを列挙できます。
Windows Defender for Endpoint (EDR) やその他のセキュリティメカニズムが、スクリプトがSMB経由で多数のファイルを解析するためにトリガーされる可能性があります。
Active Directoryで検索するか、System Centerがインストールされたワークステーションで以下のレジストリキーを取得してCMサーバーを見つけます:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints
複数のCMサーバーがデプロイされている可能性があり、それぞれ異なるファイルを含む可能性があるため、必ずすべてのサーバーを見つけてください。
次に、ファイル記述子(.INI)への参照を含むテキストファイルであるインベントリファイルを作成する必要があります。 以下のコマンドは、SCCMサーバー上のすべての.INIファイルを解析し、利用可能なファイルのリストを作成します。
PS> Invoke-CMLootInventory -SCCMHost sccm01.domain.local -Outfile sccmfiles.txt
次に、上記で作成したインベントリファイルを使用して、関心のあるファイルをダウンロードします:
GridViewを使用してファイルを選択(大規模なインベントリファイルではパフォーマンスが異なる場合があります):
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -GridSelect
インベントリテキストの行をコピーして、単一ファイルをダウンロード:
PS> Invoke-CMLootDownload -SingleFile \\sccm\SCCMContentLib$\DataLib\SC100001.1\x86\MigApp.xml
特定の拡張子を持つすべてのファイルをダウンロード:
PS> Invoke-CMLootDownload -InventoryFile .\sccmfiles.txt -Extension ps1
デフォルトでは、ファイルはスクリプトを実行したフォルダのCMLootOutにダウンロードされます。-OutFolderパラメータで変更できます。ファイルは (フォルダ: ファイル拡張子)\(ハッシュの最初の4文字)_元のファイル名 の形式で保存されます。
CMLootInventoryがアクセス不可と判断したファイルを検索:
Invoke-CMLootHunt -SCCMHost sccm -NoAccessFile sccmfiles_noaccess.txt
MSIファイルを一括抽出:
Invoke-CMLootExtract -Path .\CMLootOut\msi
インベントリを実行し、利用可能なファイルをスキャン:

GridViewを使用してファイルを選択:

すべての拡張子をダウンロード:

「アクセス不可」ファイルの検索とMSI抽出:

Tomas Rzepka / WithSecure