
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 के नाम से जाना जाता है) में ऑपरेटिंग सिस्टम डिप्लॉयमेंट कार्यक्षमता के विरुद्ध लागू करता है। यह कॉन्फ़िगर किए गए Network Access Accounts (https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/hierarchy/accounts#network-access-account) और किसी भी Task Sequence Accounts या ConfigMgr Collection Variables में संग्रहीत क्रेडेंशियल्स से क्रेडेंशियल एकत्र करने की अनुमति देता है जो "All Unknown Computers" संग्रह के लिए कॉन्फ़िगर किए गए हैं। ये Active Directory खाते आमतौर पर अत्यधिक अनुमतियों वाले होते हैं और मेरे व्यक्तिगत अनुभव में, डोमेन में कहीं प्रशासनिक पहुँच के लिए विशेषाधिकार वृद्धि की अनुमति देते हैं।
संभवतः, इस टूलिंग के साथ निष्पादित किया जा सकने वाला सबसे गंभीर हमला वह होगा जिसमें बिना पासवर्ड या कमज़ोर पासवर्ड वाले वितरण बिंदु पर "All unknown computers" के लिए PXE-आरंभित डिप्लॉयमेंट समर्थित हो। पहले उल्लिखित OSD के लिए उजागर ConfigMgr खातों की अत्यधिक अनुमतियाँ फिर केवल लक्ष्य वातावरण तक नेटवर्क पहुँच के साथ एक पूर्ण 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> का उपयोग एक मीडिया वेरिएबल्स फ़ाइल का 'हैश' उत्पन्न करने के लिए किया जाना चाहिए जिसका उपयोग https://github.com/MWR-CyberSec/configmgr-cryptderivekey-hashcat-module पर प्रकाशित Hashcat मॉड्यूल के साथ पासवर्ड अनुमान लगाने के हमलों के लिए किया जा सकता है।
मुख्य 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 पर सेट किया जाता है, तो यह उस इंटरफ़ेस का उपयोग करने का प्रयास करेगा जो आउटपुट इंटरफ़ेस के रूप में मशीन के डिफ़ॉल्ट GW तक पहुँच सकता है। यदि 2 पर सेट किया जाता है, तो यह पहले ऐसे इंटरफ़ेस की तलाश करेगा जिसमें एक IP पता हो जो ऑटोकॉन्फ़िगर या लोकलहोस्ट IP पता न हो। यह कुछ परिदृश्यों में उपयुक्त इंटरफ़ेस का चयन करने में विफल रहेगा, यही कारण है कि आप 'manual_interface_selection_by_id' के साथ एक विशिष्ट इंटरफ़ेस के उपयोग को बाध्य कर सकते हैं।manual_interface_selection_by_id आपको उस इंटरफ़ेस का पूर्णांक इंडेक्स निर्दिष्ट करने की अनुमति देता है जिसे आप Scapy द्वारा उपयोग करना चाहते हैं। इस फ़ाइल में उपयोग करने के लिए ID pxethief.py 10 चलाकर प्राप्त की जानी चाहिए।sccm_base_url उस Management Point को ओवरराइड करने के लिए उपयोगी है जिससे टूलिंग बात करेगी। यह उपयोगी है यदि DNS हल नहीं करता है (इसलिए मीडिया वेरिएबल्स फ़ाइल से पढ़ा गया मान उपयोग नहीं किया जा सकता) या यदि आपने कई Management Points की पहचान की है और अपने ट्रैफ़िक को किसी विशिष्ट पर भेजना चाहते हैं। इसे एक आधार 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 का उपयोग कर रहे हैं, तो सुनिश्चित करें कि टूल द्वारा उपयोग किया जाने वाला इंटरफ़ेस सही पर सेट है, यदि यह सही नहीं है, तो pxethief.py 10 से सही इंडेक्स ID की पहचान करके इसे 'settings.ini' में मैन्युअल रूप से सेट करेंpxethief.py की पंक्ति 35 पर सक्षम किया जा सकता है और प्रॉक्सी का पता पंक्ति 693 पर सेट किया जा सकता है। मैं कोडबेस के अगले अपडेट में इस सुविधा को 'settings.ini' में कॉन्फ़िगर करने योग्य बनाने की योजना बना रहा हूँpywin32 का उपयोग करता है। यह Linux पर उपलब्ध नहीं है, क्योंकि Windows क्रिप्टोग्राफी API Linux पर उपलब्ध नहीं हैं :P हालाँकि, pxethief.py में Scapy कोड Linux पर पूरी तरह से कार्यात्मक है, लेकिन इसे Linux पर चलाने के लिए आपको win32crypt के शामिल किए जाने को (कम से कम) पैच करना होगाइस टूल के साथ त्रुटि प्रबंधन में समस्याओं का सामना करने की अपेक्षा करें; ConfigMgr में हर चीज़ में सूक्ष्म बारीकियाँ हैं और जबकि मैंने टूल के रिलीज़ की तैयारी में त्रुटि प्रबंधन में काफी सुधार किया है, यह किसी भी तरह से पूर्ण नहीं है। यदि ऐसे किनारे के मामले हैं जो विफल होते हैं, तो एक विस्तृत मुद्दा बनाएँ या इसे ठीक करें और एक पुल अनुरोध करें :) मैं इनकी समीक्षा करूँगा ताकि देख सकूँ कि कहाँ उचित सुधार किए जा सकते हैं। यदि आप इसे उत्पादन वातावरण में चलाने जा रहे हैं तो कोड पढ़ें/बात देखें और समझें कि क्या हो रहा है। लाइसेंसिंग शर्तों को ध्यान में रखें - अर्थात टूल का उपयोग आपके अपने जोखिम पर है।
SCCM/MECM Task Sequences से क्रेडेंशियल की पहचान और पुनर्प्राप्ति - इस पोस्ट में, मैं समझाता हूँ कि वैध OSD प्रमाणपत्र प्राप्त करने के बाद ConfigMgr नीतियाँ कैसे खोजी, डाउनलोड और डिक्रिप्ट की जाती हैं। मैं इस पोस्ट में पहले दो संदर्भों पर भी प्रकाश डालना चाहता हूँ क्योंकि वे बहुत ही रोचक आक्रामक SCCM अनुसंधान दिखाते हैं जो फिलहाल चल रहा है।
DEF CON 30 स्लाइड्स - बात के स्लाइड्स का लिंक
कॉपीराइट (C) 2022 Christopher Panayi, MWR CyberSec