
ابحث عن الملفات المثيرة للاهتمام المخزَّنة على مشاركات SMB الخاصة بـ (System Center) Configuration Manager (SCCM/CM)
تم إنشاء CMLoot لتسهيل العثور على الملفات المثيرة للاهتمام المخزنة على مشاركات SMB الخاصة بـ System Center Configuration Manager (SCCM/CM). تُستخدم هذه المشاركات لتوزيع البرامج على عملاء 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 على تجزئة (hash) للملف، ويتم تخزين الملف نفسه في FileLib بتنسيق: <اسم المجلد: أول 4 أحرف من التجزئة>\التجزئة الكاملة.
من الممكن تطبيق التحكم بالوصول إلى الحزم في CM. ومع ذلك، فإن هذا يحمي فقط مجلد واصف الملف (DataLib)، وليس الملف الفعلي نفسه. سيقوم CMLoot أثناء الجرد بتسجيل أي حزمة لا يمكنه الوصول إليها (تم رفض الوصول) في الملف _noaccess.txt. يمكن بعد ذلك استخدام Invoke-CMLootHunt مع هذا الملف لتعداد الملفات الفعلية التي يحاول التحكم بالوصول حمايتها.
قد يتم تشغيل Windows Defender for Endpoint (EDR) أو آليات الأمان الأخرى لأن البرنامج النصي يقوم بتحليل عدد كبير من الملفات عبر SMB.
ابحث عن خوادم CM من خلال البحث عنها في Active Directory أو عن طريق إحضار مفتاح التسجيل هذا على محطة عمل مثبت عليها System Center:
(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\SMS\DP -Name ManagementPoints).ManagementPoints
قد يكون هناك عدة خوادم CM منتشرة ويمكن أن تحتوي على ملفات مختلفة، لذا تأكد من العثور عليها جميعًا.
ثم تحتاج إلى إنشاء ملف جرد وهو مجرد ملف نصي يحتوي على مراجع لواصفات الملفات (.INI). سيقوم الأمر التالي بتحليل جميع ملفات .INI على خادم SCCM لإنشاء قائمة بالملفات المتاحة.
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
تشغيل الجرد، مسح الملفات المتاحة:

تحديد الملفات باستخدام GridSelect:

تنزيل جميع الامتدادات:

البحث عن الملفات "غير القابلة للوصول" واستخراج MSI:

Tomas Rzepka / WithSecure