
PXEThief هي مجموعة أدوات يمكنها استخراج كلمات المرور من وظيفة نشر نظام التشغيل في Microsoft Endpoint Configuration Manager
PXEThief هي مجموعة من الأدوات التي تنفذ مسارات الهجوم التي تمت مناقشتها في محاضرة DEF CON 30 بعنوان Pulling Passwords out of Configuration Manager (https://forum.defcon.org/node/241925) ضد وظيفة نشر نظام التشغيل في Microsoft Endpoint Configuration Manager (أو ConfigMgr، التي لا تزال تُعرف باسم SCCM). يسمح بجمع بيانات الاعتماد من حسابات الوصول إلى الشبكة المُهيأة (https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/hierarchy/accounts#network-access-account) وأي حسابات تسلسل المهام أو بيانات الاعتماد المخزنة داخل متغيرات مجموعة ConfigMgr التي تم تكوينها لمجموعة "All Unknown Computers". هذه الحسابات من Active Directory عادةً ما تكون ذات صلاحيات زائدة وتسمح بتصعيد الامتيازات إلى وصول إداري في مكان ما من المجال، على الأقل بناءً على تجربتي الشخصية.
من المحتمل أن أخطر هجوم يمكن تنفيذه بهذه الأدوات هو عندما يتم دعم النشر المُبدَأ عبر PXE لـ "all unknown computers" على نقطة توزيع بدون كلمة مرور، أو بكلمة مرور ضعيفة. الصلاحيات الزائدة لحسابات ConfigMgr المكشوفة لـ OSD المذكورة سابقاً يمكن أن تسمح بعد ذلك بتنفيذ سلسلة هجوم كاملة ضد Active Directory بمجرد الوصول الشبكي إلى البيئة المستهدفة.
python pxethief.py -h
pxethief.py 1 - Automatically identify and download encrypted media file using DHCP PXE boot request. Additionally, attempt exploitation of blank media password when auto_exploit_blank_password is set to 1 in 'settings.ini'
pxethief.py 2 <IP Address of DP Server> - Coerce PXE Boot against a specific MECM Distribution Point server designated by IP address
pxethief.py 3 <variables-file-name> <Password-guess> - Attempt to decrypt a saved media variables file (obtained from PXE, bootable or prestaged media) and retrieve sensitive data from MECM DP
pxethief.py 4 <variables-file-name> <policy-file-path> <password> - Attempt to decrypt a saved media variables file and Policy XML file retrieved from a stand-alone TS media
pxethief.py 5 <variables-file-name> - Print the hash corresponding to a specified media variables file for cracking in Hashcat
pxethief.py 6 <identityguid> <identitycert-file-name> - Retrieve task sequences using the values obtained from registry keys on a DP
pxethief.py 7 <Reserved1-value> - Decrypt stored PXE password from SCCM DP registry key (reg query HKLM\software\microsoft\sms\dp /v Reserved1)
pxethief.py 8 - Write new default 'settings.ini' file in PXEThief directory
pxethief.py 10 - Print Scapy interface table to identify interface indexes for use in 'settings.ini'
pxethief.py -h - Print PXEThief help text
يجب استخدام pxethief.py 5 <variables-file-name> لإنشاء "تجزئة" لملف متغيرات الوسائط يمكن استخدامها لهجمات تخمين كلمات المرور باستخدام وحدة Hashcat المنشورة على https://github.com/MWR-CyberSec/configmgr-cryptderivekey-hashcat-module.
يتم استخدام ملف موجود في المجلد الرئيسي لـ PXEThief لتعيين خيارات تكوين أكثر ثباتاً. وهي كالتالي:
[SCAPY SETTINGS]
automatic_interface_selection_mode = 1
manual_interface_selection_by_id =
[HTTP CONNECTION SETTINGS]
use_proxy = 0
use_tls = 0
[GENERAL SETTINGS]
sccm_base_url =
auto_exploit_blank_password = 1
automatic_interface_selection_mode سيحاول تحديد أفضل واجهة لاستخدامها من قبل Scapy تلقائياً، للراحة. يفعل ذلك باستخدام تقنيتين رئيسيتين. إذا تم ضبطه على 1 فسيحاول استخدام الواجهة التي يمكنها الوصول إلى البوابة الافتراضية للجهاز كواجهة إخراج. إذا تم ضبطه على 2، فسيبحث عن أول واجهة يجدها ذات عنوان IP ليس عنواناً للتكوين التلقائي أو عنوان localhost. سيفشل هذا في تحديد الواجهة المناسبة في بعض السيناريوهات، وهذا هو السبب في أنه يمكنك فرض استخدام واجهة محددة باستخدام 'manual_interface_selection_by_id'.manual_interface_selection_by_id يسمح لك بتحديد الفهرس الصحيح للواجهة التي تريد أن يستخدمها Scapy. يجب الحصول على المعرف الذي سيستخدم في هذا الملف من تشغيل pxethief.py 10.sccm_base_url مفيد لتجاوز نقطة الإدارة التي ستتحدث إليها الأداة. هذا مفيد إذا كان DNS لا يحل الاسم (وبالتالي لا يمكن استخدام القيمة المقروءة من ملف متغيرات الوسائط) أو إذا كنت قد حددت نقاط إدارة متعددة وتريد إرسال حركة المرور الخاصة بك إلى نقطة معينة. يجب تقديم هذا على شكل عنوان URL أساسي مثل http://mp.configmgr.com بدلاً من mp.configmgr.com أو http://mp.configmgr.com/stuff.auto_exploit_blank_password يغير سلوك pxethief 1 ليحاول تلقائياً استغلال نقطة توزيع PXE غير محمية بكلمة مرور. ضبط هذه على 1 سيمكن الاستغلال التلقائي، بينما ضبطها على 0 سيطبع سلسلة عميل tftp التي يجب استخدامها لتنزيل ملف متغيرات الوسائط. لاحظ أنه في كل مرة تقريباً سترغب في ضبط هذه على 1، لأن PXE غير المحمي بكلمة مرور يستخدم مفتاحاً ثنائياً يُرسل في استجابة DHCP التي تتلقاها عندما تطلب من نقطة التوزيع تنفيذ إقلاع PXE.غير مطبقة في هذا الإصدار
pip install -r requirements.txt)pxethief.py 1 أو pxethief.py 2 لتحديد وإنشاء ملف متغيرات الوسائط، تأكد من أن الواجهة التي تستخدمها الأداة مضبوطة على الواجهة الصحيحة؛ إذا لم تكن صحيحة، فقم بضبطها يدوياً في 'settings.ini' عن طريق تحديد معرف الفهرس الصحيح من pxethief.py 10pxethief.py وتعيين عنوان الوكيل في السطر 693. أخطط لنقل هذه الميزة لتكون قابلة للتكوين في 'settings.ini' في التحديث القادم لقاعدة الكودpywin32 من أجل استخدام بعض وظائف التشفير المضمنة في Windows. هذا غير متوفر على Linux، لأن واجهات برمجة التطبيقات للتشفير في Windows غير متوفرة على Linux :P كود Scapy في pxethief.py مع ذلك يعمل بكامل طاقته على Linux، لكنك ستحتاج إلى إزالة (على الأقل) تضمين win32crypt لتشغيله تحت Linuxتوقع مواجهة مشاكل مع معالجة الأخطاء في هذه الأداة؛ هناك تفاصيل دقيقة مع كل شيء في ConfigMgr، وعلى الرغم من أنني قمت بتحسين معالجة الأخطاء بشكل كبير استعداداً لإصدار الأداة، إلا أن هذا ليس كاملاً بأي حال. إذا كانت هناك حالات حافة تفشل، قم بإنشاء مشكلة مفصلة أو قم بإصلاحها وإنشاء طلب سحب :) سأراجعها لأرى أين يمكن إجراء تحسينات معقولة. اقرأ الكود/شاهد المحاضرة وافهم ما يحدث إذا كنت ستشغلها في بيئة إنتاج. ضع في اعتبارك شروط الترخيص - أي استخدام للأداة يكون على مسؤوليتك الخاصة.
Identifying and retrieving credentials from SCCM/MECM Task Sequences - في هذا المنشور، أشرح التدفق الكامل لكيفية العثور على سياسات ConfigMgr وتنزيلها وفك تشفيرها بعد الحصول على شهادة OSD صالحة. أود أيضاً تسليط الضوء على أول مرجعين في هذا المنشور حيث يظهران أبحاث SCCM هجومية مثيرة للاهتمام جارية حالياً.
شرائح DEF CON 30 - رابط لشرائح المحاضرة
حقوق النشر (C) 2022 Christopher Panayi, MWR CyberSec