Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-02-07 00:05:04 +00:00
parent 632247dfa3
commit ee71376c75
2 changed files with 88 additions and 65 deletions

View File

@@ -4,62 +4,70 @@
## Basic Information
Azure Conditional Access नीतियाँ Microsoft Azure में नियम हैं जो कुछ **शर्तों** के आधार पर Azure सेवाओं और अनुप्रयोगों तक पहुँच नियंत्रण लागू करने के लिए स्थापित की जाती हैं। ये नीतियाँ संगठनों को सही परिस्थितियों में सही पहुँच नियंत्रण लागू करके अपने संसाधनों को सुरक्षित रखने में मदद करती हैं।\
Conditional access नीतियाँ मूल रूप से **यह परिभाषित करती हैं** **कौन** **क्या** **कहाँ** और **कैसे** पहुँच सकता है।
Azure Conditional Access नीतियाँ Microsoft Azure में स्थापित नियम हैं जो कुछ **शर्तों** के आधार पर Azure सेवाओं और अनुप्रयोगों तक पहुँच नियंत्रण लागू करने के लिए हैं। ये नीतियाँ संगठनों को सही परिस्थितियों में सही पहुँच नियंत्रण लागू करके अपने संसाधनों को सुरक्षित रखने में मदद करती हैं।\
Conditional access नीतियाँ मूल रूप से **यह निर्धारित करती हैं** **कौन** **क्या** **कहाँ** और **कैसे** पहुँच सकता है।
यहाँ कुछ उदाहरण दिए गए हैं:
1. **साइन-इन जोखिम नीति**: यह नीति तब लागू की जा सकती है जब साइन-इन जोखिम का पता लगाया जाता है, जैसे कि जब एक उपयोगकर्ता का लॉगिन व्यवहार उनके नियमित पैटर्न की तुलना में असामान्य होता है, जैसे कि किसी अन्य देश से लॉगिन करना, तो सिस्टम अतिरिक्त प्रमाणीकरण के लिए संकेत दे सकता है।
2. **डिवाइस अनुपालन नीति**: यह नीति केवल उन उपकरणों तक पहुँच को प्रतिबंधित कर सकती है जो संगठन के सुरक्षा मानकों के अनुपालन में हैं। उदाहरण के लिए, केवल उन उपकरणों से पहुँच की अनुमति दी जा सकती है जिनमें अद्यतन एंटीवायरस सॉफ़्टवेयर है या जो एक निश्चित ऑपरेटिंग सिस्टम संस्करण चला रहे हैं।
1. **साइन-इन जोखिम नीति**: यह नीति तब लागू की जा सकती है जब साइन-इन जोखिम का पता लगाया जाए, जिसमें बहु-कारक प्रमाणीकरण (MFA) की आवश्यकता हो। उदाहरण के लिए, यदि किसी उपयोगकर्ता का लॉगिन व्यवहार उनके नियमित पैटर्न की तुलना में असामान्य है, जैसे कि किसी अन्य देश से लॉगिन करना, तो सिस्टम अतिरिक्त प्रमाणीकरण के लिए संकेत दे सकता है।
2. **डिवाइस अनुपालन नीति**: यह नीति केवल उन उपकरणों के लिए Azure सेवाओं तक पहुँच को प्रतिबंधित कर सकती है जो संगठन के सुरक्षा मानकों के अनुपालन में हैं। उदाहरण के लिए, केवल उन उपकरणों से पहुँच की अनुमति दी जा सकती है जिनमें अद्यतन एंटीवायरस सॉफ़्टवेयर है या जो एक निश्चित ऑपरेटिंग सिस्टम संस्करण चला रहे हैं।
## Conditional Access Policies Bypasses
## Enumeration
```bash
# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'
यह संभव है कि एक conditional access नीति **कुछ जानकारी की जाँच कर रही हो जिसे आसानी से छेड़ा जा सकता है जिससे नीति को बायपास किया जा सके**। और यदि उदाहरण के लिए नीति MFA को कॉन्फ़िगर कर रही थी, तो हमलावर इसे बायपास करने में सक्षम होगा।
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
```
## Conditional Acces Policies Bypasses
एक conditional access नीति को कॉन्फ़िगर करते समय यह आवश्यक है कि प्रभावित **उपयोगकर्ताओं** और **लक्षित संसाधनों** (जैसे सभी क्लाउड ऐप) को इंगित किया जाए
यह संभव है कि एक conditional access policy **कुछ जानकारी की जांच कर रही हो जिसे आसानी से छेड़ा जा सकता है जिससे नीति का बायपास किया जा सके** और यदि उदाहरण के लिए नीति MFA को कॉन्फ़िगर कर रही थी, तो हमलावर इसे बायपास करने में सक्षम होगा
यह भी आवश्यक है कि उन **शर्तों** को कॉन्फ़िगर किया जाए जो नीति को **प्रेरित** करेंगी:
एक conditional access policy को कॉन्फ़िगर करते समय **प्रभावित उपयोगकर्ताओं** और **लक्षित संसाधनों** (जैसे सभी क्लाउड ऐप) को इंगित करना आवश्यक है।
यह भी आवश्यक है कि **शर्तें** कॉन्फ़िगर की जाएं जो नीति को **प्रेरित** करें:
- **नेटवर्क**: आईपी, आईपी रेंज और भौगोलिक स्थान
- एक VPN या प्रॉक्सी का उपयोग करके एक देश से कनेक्ट करने या एक अनुमत आईपी पते से लॉगिन करने में बायपास किया जा सकता है
- एक देश से कनेक्ट करने के लिए VPN या Proxy का उपयोग करके या एक अनुमत आईपी पते से लॉगिन करने में सक्षम होना
- **Microsoft जोखिम**: उपयोगकर्ता जोखिम, साइन-इन जोखिम, अंदरूनी जोखिम
- **डिवाइस प्लेटफार्म**: कोई भी डिवाइस या Android, iOS, Windows phone, Windows, macOS, Linux का चयन करें
- यदि "कोई भी डिवाइस" का चयन नहीं किया गया है लेकिन सभी अन्य विकल्प चुने गए हैं, तो इसे उन प्लेटफार्मों से संबंधित न होने वाले यादृच्छिक उपयोगकर्ता-एजेंट का उपयोग करके बायपास किया जा सकता है
- **क्लाइंट ऐप**: विकल्प हैं "ब्राउज़र", "मोबाइल ऐप और डेस्कटॉप क्लाइंट", "एक्सचेंज एक्टिवसिंक क्लाइंट" और अन्य क्लाइंट"
- एक न चुने गए विकल्प के साथ लॉगिन बायपास करने के लिए
- यदि "कोई भी डिवाइस" चयनित नहीं है लेकिन सभी अन्य विकल्प चयनित हैं, तो इसे उन प्लेटफार्मों से संबंधित न होने वाले यादृच्छिक उपयोगकर्ता-एजेंट का उपयोग करके बायपास किया जा सकता है
- **क्लाइंट ऐप**: विकल्प हैं "ब्राउज़र", "मोबाइल ऐप और डेस्कटॉप क्लाइंट", "Exchange ActiveSync क्लाइंट" और "अन्य क्लाइंट"
- एक न चुने गए विकल्प के साथ लॉगिन को बायपास करने के लिए
- **डिवाइस के लिए फ़िल्टर**: उपयोग किए गए डिवाइस से संबंधित एक नियम उत्पन्न करना संभव है
- **प्रमाणीकरण प्रवाह**: विकल्प हैं "डिवाइस कोड प्रवाह" और "प्रमाणीकरण स्थानांतरण"
- यह एक हमलावर को प्रभावित नहीं करेगा जब तक कि वह पीड़ित के खाते तक पहुँचने के लिए फ़िशिंग प्रयास में इनमें से किसी भी प्रोटोकॉल का दुरुपयोग करने की कोशिश नहीं कर रहा हो
- **प्रमाण प्रवाह**: विकल्प हैं "डिवाइस कोड प्रवाह" और "प्रमाण स्थानांतरण"
- यह एक हमलावर को प्रभावित नहीं करेगा जब तक कि वह पीड़ित के खाते तक पहुँचने के लिए फ़िशिंग प्रयास में इनमें से किसी भी प्रोटोकॉल का दुरुपयोग करने की कोशिश न कर रहा हो
संभावित **परिणाम** हैं: ब्लॉक या पहुँच प्रदान करें जिसमें संभावित शर्तें जैसे MFA की आवश्यकता, डिवाइस का अनुपालन...
संभावित **परिणाम** हैं: ब्लॉक या एक्सेस प्रदान करें जिसमें संभावित शर्तें जैसे MFA की आवश्यकता, डिवाइस का अनुपालन होना शामिल हैं…
### Device Platforms - Device Condition
यह **डिवाइस प्लेटफार्म** (Android, iOS, Windows, macOS...) के आधार पर एक शर्त सेट करना संभव है, हालाँकि, यह **उपयोगकर्ता-एजेंट** पर आधारित है इसलिए इसे बायपास करना आसान है। यहा तक कि **सभी विकल्पों को MFA लागू करने के लिए**, यदि आप एक **उपयोगकर्ता-एजेंट का उपयोग करते हैं ज पहचाना नहीं गया है,** तो आप MFA या ब्लॉक को बायपास करने में सक्षम होंगे:
यह **डिवाइस प्लेटफार्म** (Android, iOS, Windows, macOS...) के आधार पर एक शर्त सेट करना संभव है, हालाँकि, यह **उपयोगकर्ता-एजेंट** पर आधारित है इसलिए इसे बायपास करना आसान है। यहा तक कि **सभी विकल्पों को MFA लागू करने के लिए**, यदि आप एक **उपयोगकर्ता-एजेंट का उपयोग करते हैं जिसे पहचाना नहीं गया है,** तो आप MFA या ब्लॉक को बायपास करने में सक्षम होंगे:
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
बस ब्राउज़र को **एक अज्ञात उपयोगकर्ता-एजेंट भेजने** (जैसे `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) के लिए पर्याप्त है कि यह शर्त सक्रिय न हो।\
आप डेवलपर टूल में **हाथ से** उपयोगकर्ता एजेंट बदल सकते हैं:
आप डेवलपर टूल में उपयोगकर्ता एजेंट को **हाथ से** बदल सकते हैं:
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
या [इस तरह के ब्राउज़र एक्सटेंशन का उपयोग करें](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
या [इस तरह के ब्राउज़र एक्सटेंशन](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en) का उपयोग करें।
### Locations: Countries, IP ranges - Device Condition
यदि यह conditional policy में सेट किया गया है, तो एक हमलावर बस **अनुमत देश** में एक **VPN** का उपयोग कर सकता है या इन शर्तों को बायपास करने के लिए एक **अनुमत आईपी पते** से पहुचने का तरीका खोज सकता है।
यदि यह conditional policy में सेट किया गया है, तो एक हमलावर बस **अनुमत देश** में एक **VPN** का उपयोग कर सकता है या इन शर्तों को बायपास करने के लिए **अनुमत आईपी पते** से पहुचने का एक तरीका खोज सकता है।
### Cloud Apps
यह संभव है कि **विशिष्ट ऐप** तक पहुँचने का प्रयास करते समय **कंडीशनल एक्सेस नीतियों को ब्लॉक या मजबूर** किया जाए, जैसे कि MFA:
यह संभव है कि **विशिष्ट ऐप** तक पहुँचने का प्रयास करते समय **conditional access policies को ब्लॉक या मजबूर** करने के लिए MFA को कॉन्फ़िगर किया जाए:
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
इस सुरक्षा को बायपास करने के लिए आपको देखना चाहिए कि क्या आप **केवल किसी भी एप्लिकेशन में** लॉगिन कर सकते हैं।\
उपकरण [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) में **दर्जनों एप्लिकेशन आईडी हार्डकोडेड** हैं और यह उनमें लॉगिन करने का प्रयास करेगा और आपको सूचित करेगा और यदि सफल होता है तो आपको टोकन भी देगा।
इस सुरक्षा को बायपास करने का प्रयास करने के लिए आपको देखना चाहिए कि क्या आप **किसी भी एप्लिकेशन में केवल लॉगिन कर सकते हैं**।\
उपकरण [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) में **कई एप्लिकेशन आईडी हार्डकोडेड** हैं और यह उनमें लॉगिन करने का प्रयास करेगा और आपको सूचित करेगा और यदि सफल होता है तो आपको टोकन भी देगा।
विशिष्ट संसाधनों में **विशिष्ट एप्लिकेशन आईडी का परीक्षण करने के लिए** आप एक उपकरण का उपयोग कर सकते हैं जैसे:
विशिष्ट संसाधनों में **विशिष्ट एप्लिकेशन आईडी का परीक्षण करने** के लिए आप एक उपकरण का उपयोग कर सकते हैं जैसे:
```bash
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
@@ -69,7 +77,7 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4
उपकरण [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) को भी समान उद्देश्यों के लिए उपयोग किया जा सकता है हालांकि यह अप्रबंधित लगता है।
उपकरण [**ROPCI**](https://github.com/wunderwuzzi23/ropci) का उपयोग इन सुरक्षा उपायों का परीक्षण करने और यह देखने के लिए किया जा सकता है कि क्या MFAs या ब्लॉकों को बायपास करना संभव है, लेकिन यह उपकरण **whitebox** दृष्टिकोण से काम करता है। आपको पहले टेनेट में अनुमत ऐप्स की सूची डाउनलोड करनी होगी और फिर यह उनमें लॉगिन करने की कोशिश करेगा।
उपकरण [**ROPCI**](https://github.com/wunderwuzzi23/ropci) का उपयोग भी इन सुरक्षा उपायों का परीक्षण करने और यह देखने के लिए किया जा सकता है कि क्या MFAs या ब्लॉकों को बायपास करना संभव है, लेकिन यह उपकरण **whitebox** दृष्टिकोण से काम करता है। आपको पहले टेनेट में अनुमत ऐप्स की सूची डाउनलोड करनी होगी और फिर यह उनमें लॉगिन करने की कोशिश करेगा।
## अन्य Az MFA बायपास
@@ -106,7 +114,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
यह स्क्रिप्ट कुछ उपयोगकर्ता क्रेडेंशियल प्राप्त करती है और जांचती है कि क्या यह कुछ अनुप्रयोगों में लॉगिन कर सकती है।
यह उपयोगी है यह देखने के लिए कि क्या आप **कुछ अनुप्रयोगों में लॉगिन करने के लिए MFA की आवश्यकता नहीं है** जिसे आप बाद में **privileges बढ़ाने** के लिए दुरुपयोग कर सकते हैं।
यह उपयोगी है यह देखने के लिए कि क्या आपको कुछ अनुप्रयोगों में लॉगिन करने के लिए **MFA की आवश्यकता नहीं है** जिसे आप बाद में **privileges बढ़ाने** के लिए दुरुपयोग कर सकते हैं।
### [roadrecon](https://github.com/dirkjanm/ROADtools)
@@ -135,7 +143,7 @@ Invoke-MFASweep -Username <username> -Password <pass>
```
### [donkeytoken](https://github.com/silverhack/donkeytoken)
Donkey token एक सेट फ़ंक्शंस का है जिसका उद्देश्य सुरक्षा सलाहकारों की मदद करना है जिन्हें Conditional Access Policies को मान्य करने, 2FA-सक्षम Microsoft पोर्टलों के लिए परीक्षण करने आदि की आवश्यकता होती है।
Donkey token एक सेट फ़ंक्शंस का है जिसका उद्देश्य सुरक्षा सलाहकारों की मदद करना है जिन्हें Conditional Access Policies को मान्य करने, 2FA-सक्षम Microsoft पोर्टल्स के लिए परीक्षण करने आदि की आवश्यकता होती है।
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
</strong><strong>Import-Module '.\donkeytoken' -Force
@@ -153,7 +161,7 @@ Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token
```
मान लीजिए कि टोकन में Sites.Read.All (Sharepoint से) की अनुमति है, भले ही आप MFA के कारण वेब से Sharepoint तक पहुँच नहीं पा रहे हैं, फिर भी आप उत्पन्न टोकन के साथ फ़ाइलों तक पहुँचने के लिए टोकन का उपयोग कर सकते हैं:
मान लीजिए कि टोकन के पास Sites.Read.All (Sharepoint से) की अनुमति है, भले ही आप MFA के कारण वेब से Sharepoint तक पहुँच नहीं पा रहे हैं, फिर भी आप उत्पन्न टोकन के साथ फ़ाइलों तक पहुँचने के लिए टोकन का उपयोग कर सकते हैं:
```bash
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
```