
Azure RedOps, Microsoft Entra ID की सुरक्षा स्थिति का आकलन करने के लिए एक आक्रामक सुरक्षा टूलकिट है।
Azure / Entra ID रेड टीमिंग के लिए एक स्विस आर्मी टूल।
लेखक: Mr.Un1k0d3r (TrueCyber Inc) संस्करण: 0.1 भाषा: Python 3.12+
AzureRedOps Microsoft Entra ID और Azure टेनेंट्स की सुरक्षा स्थिति का आकलन करने के लिए एक आक्रामक सुरक्षा टूलकिट है। यह सबसे सामान्य रेड-टीम वर्कफ़्लो — प्रमाणीकरण, टोकन प्रबंधन, निर्देशिका गणना, विशेषाधिकार जाँच, पासवर्ड स्प्रेइंग, और Microsoft Graph के विरुद्ध पोस्ट-एक्सप्लॉइटेशन क्रियाएँ — को एक सुसंगत --activity-संचालित CLI में लपेटता है।
हर ऑपरेशन -a/--activity के साथ चुना जाता है। प्रमाणीकरण के दौरान प्राप्त टोकन को स्थानीय रूप से (.azure_creds) कैश किया जा सकता है और -l/--load-access-token के साथ नाम से पुन: उपयोग किया जा सकता है, जिससे आपको शायद ही कभी कच्चे JWT चिपकाने पड़ें।
टूल के बारे में और जानें CYPFER ब्लॉग पर
.azure_creds) में एक्सेस/रिफ़्रेश टोकन को सहेजें, सूचीबद्ध करें, डीकोड/देखें, और हटाएँ। कोई भी प्रवाह -s/--save + -n/--name के साथ अपने टोकन को स्वचालित रूप से संग्रहीत कर सकता है।auth) — सीधा उपयोगकर्ता नाम/पासवर्ड प्रमाणीकरण।phish-start / phish-capture) — OAuth डिवाइस प्राधिकरण अनुदान का दुरुपयोग करके जब लक्ष्य आपका उपयोगकर्ता कोड microsoft.com/devicelogin पर दर्ज करता है तो जारी किए गए टोकन को कैप्चर करें। डिफ़ॉल्ट रूप से स्वचालित रूप से कैप्चर करता है।auth-app) — एक कस्टम एप्लिकेशन पंजीकरण के विरुद्ध पूर्ण प्राधिकरण कोड + PKCE प्रवाह, जो रीडायरेक्ट प्राप्त करने वाले एक अंतर्निहित स्थानीय HTTPS लिसनर द्वारा प्रस्तुत किया जाता है।auth-interactive) — एक वास्तविक ब्राउज़र (Playwright; डिफ़ॉल्ट रूप से Firefox, स्विच करने के लिए -br) चलाएँ (MFA / Conditional Access / SSO को संभालता है), फिर रिकॉर्ड किए गए सत्र HAR से हर टोकन की कटाई करें।refresh) — एक रिफ़्रेश टोकन को नए एक्सेस टोकन के लिए व्यापार करें।obo) — पहले से जारी एक्सेस टोकन को डाउनस्ट्रीम संसाधन (OAuth 2.0 jwt-bearer / OBO) के लिए स्कोप किए गए नए टोकन के लिए एक्सचेंज करें।browser-sso) — एक वास्तविक ब्राउज़र पहले से उपयोगकर्ता के रूप में प्रमाणित सीधे लक्ष्य वेब ऐप (Outlook on the web, Teams, SharePoint, Azure पोर्टल, ...) में खोलें। -aprt/--auto-prt के साथ यह एक रिफ़्रेश टोकन से प्राथमिक रिफ़्रेश टोकन (PRT) कुकी को स्वचालित रूप से मिंट करता है (डिवाइस पंजीकरण → PRT → x-ms-RefreshTokenCredential), ताकि एक नया ब्राउज़र बिना मैन्युअल लॉगिन के सिंगल साइन-ऑन पूरा करे।gather-all संग्रहकर्ता।spray) और क्रॉस-ऐप रिफ़्रेश-टोकन स्प्रेइंग (spray-refresh)।magic-app AllPrincipals सहमति के साथ सार्वजनिक रूप से रीडायरेक्ट करने योग्य ऐप ढूँढता है; ज्ञात/दिलचस्प Microsoft ऐप आईडी की अंतर्निहित सूचियाँ।requirements.txt):
PyJWTrequestsplaywrightcryptography (केवल browser-sso -aprt, ऑटो-PRT प्रवाह के लिए आवश्यक)auth-interactive, browser-sso) के लिए एक Playwright ब्राउज़र रनटाइम।
Firefox डिफ़ॉल्ट इंजन है (-br/--browser); इसे इंस्टॉल करें:
python -m playwright install firefoxincludes/web/cert.pem और includes/web/key.pem पर TLS प्रमाणपत्र + कुंजी
(केवल auth-app PKCE प्रवाह के लिए आवश्यक — नोट्स देखें)।git clone AzureRedOps cd AzureRedOps
python3 -m venv AzureRedOps source AzureRedOps/bin/activate # Linux / macOS
pip install -r requirements.txt
python -m playwright install firefox
उपकरण चलाएँ:```bash
python3 AzureRedOps.py -a <activity> [options]
सामान्य आह्वान पैटर्न है:```bash python3 AzureRedOps.py -a [authentication] [activity options] [global options]
### एक टोकन प्रदान करना
माइक्रोसॉफ्ट ग्राफ को कॉल करने वाली गतिविधियों को एक एक्सेस टोकन की आवश्यकता होती है। आप इसे दो तरीकों से प्रदान कर सकते हैं:
| विधि | फ़्लैग | उदाहरण |
|--------|------|---------|
| एक रॉ टोकन पास करें | `-ac, --access-token` | `-ac eyJ0eXAi...` |
| कैश्ड टोकन को नाम से लोड करें | `-l, --load-access-token` | `-l mytoken` |
जब `-l` का उपयोग किया जाता है, तो मिलान करने वाला `access_token` (और, जहां प्रासंगिक हो, `refresh_token` और `tenant`) `.azure_creds` स्टोर से पढ़ा जाता है।
### टोकन को फ़ाइल में सहेजना (`-s` / `-n`)
टोकन प्राप्त करने वाली कोई भी गतिविधि (`auth`, `auth-app`, `auth-interactive`, `phish-start`/`phish-capture`, `refresh`) `-s/--save` के साथ `-n/--name` जोड़कर उन्हें स्थानीय क्रेडेंशियल स्टोर (`.azure_creds`) में **स्वचालित रूप से संग्रहीत** कर सकती है:```bash
# Authenticate and save the resulting tokens under the name "victim1"
python3 AzureRedOps.py -a auth -u [email protected] -p 'P@ssw0rd!' -tid <tenant-guid> -s -n victim1
-s/--save ऑटो-सेव चालू करता है; इसके लिए -n/--name आवश्यक है — यदि -n गायब है तो टूल त्रुटि के साथ बाहर निकल जाता है।-n/--name वह कुंजी है जिसके अंतर्गत टोकन संग्रहीत किया जाता है। आप बाद में इसे -l victim1 के साथ पुनः उपयोग कर सकते हैं, कच्चे JWT को चिपकाने के बजाय, इसे -a view -n victim1 से देख सकते हैं, या -a delete -n victim1 से हटा सकते हैं।auth-interactive गतिविधि हमेशा ऑटो-सेव करती है और यदि -n प्रदान नहीं किया गया है तो वह आपसे इंटरैक्टिव रूप से एक नाम माँगेगी।-j)अधिकांश गणना गतिविधियाँ (list-users, list-applications, list-principals,
gather-all, raw-url) कच्चे API प्रतिक्रिया को फ़ाइल में लिखने के लिए -j/--json <filename> स्वीकार करती हैं, जो उसे प्रिंट करने के अतिरिक्त (या उसके बजाय) JSON फ़ाइल में सहेजता है:```bash
python3 AzureRedOps.py -a list-users -l victim1 -j users.json
For `gather-all`, the supplied filename is used as a suffix and one file is written per Graph endpoint (e.g. `users-<name>`, `groups-<name>`, ...).
> सुझाव: `-j` संरचित JSON निर्यात को नियंत्रित करता है, जबकि `-re/--redirect-to-file` फ़ॉर्मेटेड कंसोल आउटपुट को `output.txt` में मिरर करता है। दोनों स्वतंत्र हैं।
### टेनेंट पहचानकर्ता
- `-t, --tenant` एक **डोमेन नाम** की अपेक्षा करता है (जैसे `contoso.com`) और इसका उपयोग `id` गतिविधि द्वारा किया जाता है।
- `-tid, --tenant-id` एक **टेनेंट GUID** या `common` की अपेक्षा करता है, जिसका उपयोग प्रमाणीकरण गतिविधियों द्वारा किया जाता है।
---
## कमांड-लाइन विकल्प