mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-27 13:13:06 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-azuread.
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Azure Active Directory (Azure AD) माइक्रोसॉफ्ट की पहचान और पहुँच प्रबंधन के लिए क्लाउड-आधारित सेवा है। यह कर्मचारियों को साइन इन करने और संसाधनों तक पहुँच प्राप्त करने में सहायक है, जो संगठन के भीतर और बाहर, माइक्रोसॉफ्ट 365, Azure पोर्टल, और कई अन्य SaaS अनुप्रयोगों को शामिल करता है। Azure AD का डिज़ाइन आवश्यक पहचान सेवाओं को प्रदान करने पर केंद्रित है, जिसमें प्रमुख रूप से **authentication, authorization, and user management** शामिल हैं।
|
||||
Azure Active Directory (Azure AD) माइक्रोसॉफ्ट की पहचान और पहुँच प्रबंधन के लिए क्लाउड-आधारित सेवा है। यह कर्मचारियों को साइन इन करने और संसाधनों तक पहुँच प्राप्त करने में सहायक है, जो संगठन के भीतर और बाहर, Microsoft 365, Azure पोर्टल, और कई अन्य SaaS अनुप्रयोगों को शामिल करता है। Azure AD का डिज़ाइन आवश्यक पहचान सेवाओं को प्रदान करने पर केंद्रित है, जिसमें प्रमुख रूप से **authentication, authorization, and user management** शामिल हैं।
|
||||
|
||||
Azure AD की प्रमुख विशेषताओं में **multi-factor authentication** और **conditional access** शामिल हैं, साथ ही अन्य माइक्रोसॉफ्ट सुरक्षा सेवाओं के साथ सहज एकीकरण। ये विशेषताएँ उपयोगकर्ता पहचान की सुरक्षा को महत्वपूर्ण रूप से बढ़ाती हैं और संगठनों को उनकी पहुँच नीतियों को प्रभावी ढंग से लागू और प्रवर्तन करने में सक्षम बनाती हैं। माइक्रोसॉफ्ट के क्लाउड सेवाओं के पारिस्थितिकी तंत्र का एक मौलिक घटक होने के नाते, Azure AD उपयोगकर्ता पहचान के क्लाउड-आधारित प्रबंधन के लिए महत्वपूर्ण है।
|
||||
|
||||
@@ -140,6 +140,34 @@ curl "$IDENTITY_ENDPOINT?resource=https://management.azure.com&api-version=2017-
|
||||
curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="MS Graph" }}
|
||||
```bash
|
||||
Get-MgTenantRelationshipDelegatedAdminCustomer
|
||||
# Install the Microsoft Graph PowerShell module if not already installed
|
||||
Install-Module Microsoft.Graph -Scope CurrentUser
|
||||
|
||||
# Import the module
|
||||
Import-Module Microsoft.Graph
|
||||
|
||||
# Login to Microsoft Graph
|
||||
Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All", "Directory.Read.All"
|
||||
|
||||
# Enumerate available commands in Microsoft Graph PowerShell
|
||||
Get-Command -Module Microsoft.Graph*
|
||||
|
||||
# Example: List users
|
||||
Get-MgUser -All
|
||||
|
||||
# Example: List groups
|
||||
Get-MgGroup -All
|
||||
|
||||
# Example: Get roles assigned to a user
|
||||
Get-MgUserAppRoleAssignment -UserId <UserId>
|
||||
|
||||
# Disconnect from Microsoft Graph
|
||||
Disconnect-MgGraph
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Azure AD" }}
|
||||
```bash
|
||||
@@ -160,7 +188,7 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
|
||||
|
||||
उदाहरण के लिए, एक **powershell script** जो **प्रमाणित** करती है, एक ऐप का उपयोग करती है जिसकी क्लाइंट आईडी **`1950a258-227b-4e31-a9cf-717495945fc2`** है। भले ही ऐप कंसोल में दिखाई न दे, एक सिस्टम एडमिन उस एप्लिकेशन को **ब्लॉक कर सकता है** ताकि उपयोगकर्ता उस ऐप के माध्यम से कनेक्ट करने वाले उपकरणों का उपयोग न कर सकें।
|
||||
|
||||
हालांकि, अन्य एप्लिकेशनों की **क्लाइंट-आईडी** हैं जो **आपको Azure से कनेक्ट करने की अनुमति देंगी**:
|
||||
हालांकि, ऐसे **अन्य क्लाइंट-आईडी** हैं जिनके एप्लिकेशन **आपको Azure से कनेक्ट करने की अनुमति देंगे**:
|
||||
```bash
|
||||
# The important part is the ClientId, which identifies the application to login inside Azure
|
||||
|
||||
@@ -248,6 +276,34 @@ curl -X GET "https://graph.microsoft.com/beta/roleManagement/directory/roleDefin
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="MS Graph" }}
|
||||
```bash
|
||||
# Enumerate users using Microsoft Graph PowerShell
|
||||
Get-MgUser -All
|
||||
|
||||
# Get user details
|
||||
Get-MgUser -UserId "test@corp.onmicrosoft.com" | Format-List *
|
||||
|
||||
# Search "admin" users
|
||||
Get-MgUser -All | Where-Object { $_.DisplayName -like "*test*" } | Select-Object DisplayName
|
||||
|
||||
# Search attributes containing the word "password"
|
||||
Get-MgUser -All | Where-Object { $_.AdditionalProperties.PSObject.Properties.Name -contains "password" }
|
||||
|
||||
# All users from Entra ID
|
||||
Get-MgUser -Filter "startswith(userPrincipalName, 't')" -All | Select-Object DisplayName, UserPrincipalName
|
||||
|
||||
# Get groups where the user is a member
|
||||
Get-MgUserMemberOf -UserId <UserId>
|
||||
|
||||
# Get roles assigned to the user in Entra ID
|
||||
Get-MgUserAppRoleAssignment -UserId <UserId>
|
||||
|
||||
# List available commands in Microsoft Graph PowerShell
|
||||
Get-Command -Module Microsoft.Graph.Users
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Azure AD" }}
|
||||
```bash
|
||||
# Enumerate Users
|
||||
@@ -368,7 +424,33 @@ Get-AzADGroupMember -GroupDisplayName <resource_group_name>
|
||||
Get-AzRoleAssignment -ResourceGroupName <resource_group_name>
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="MS Graph" }}
|
||||
```bash
|
||||
# Enumerate groups using Microsoft Graph PowerShell
|
||||
Get-MgGroup -All
|
||||
|
||||
# Get group details
|
||||
Get-MgGroup -GroupId <GroupId> | Format-List *
|
||||
|
||||
# Search "admin" groups
|
||||
Get-MgGroup -All | Where-Object { $_.DisplayName -like "*admin*" } | Select-Object DisplayName
|
||||
|
||||
# Get members of a group
|
||||
Get-MgGroupMember -GroupId <GroupId> -All
|
||||
|
||||
# Get groups a group is member of
|
||||
Get-MgGroupMemberOf -GroupId <GroupId>
|
||||
|
||||
# Get roles assigned to the group in Entra ID
|
||||
Get-MgGroupAppRoleAssignment -GroupId <GroupId>
|
||||
|
||||
# Get group owner
|
||||
Get-MgGroupOwner -GroupId <GroupId>
|
||||
|
||||
# List available commands in Microsoft Graph PowerShell
|
||||
Get-Command -Module Microsoft.Graph.Groups
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="Azure AD" }}
|
||||
```bash
|
||||
# Enumerate Groups
|
||||
@@ -467,6 +549,30 @@ Headers = @{
|
||||
(Invoke-RestMethod @RequestParams).value
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="MS Graph" }}
|
||||
```bash
|
||||
# Get Service Principals using Microsoft Graph PowerShell
|
||||
Get-MgServicePrincipal -All
|
||||
|
||||
# Get details of one Service Principal
|
||||
Get-MgServicePrincipal -ServicePrincipalId <ServicePrincipalId> | Format-List *
|
||||
|
||||
# Search SP by display name
|
||||
Get-MgServicePrincipal -All | Where-Object { $_.DisplayName -like "*app*" } | Select-Object DisplayName
|
||||
|
||||
# Get owner of Service Principal
|
||||
Get-MgServicePrincipalOwner -ServicePrincipalId <ServicePrincipalId>
|
||||
|
||||
# Get objects owned by a Service Principal
|
||||
Get-MgServicePrincipalOwnedObject -ServicePrincipalId <ServicePrincipalId>
|
||||
|
||||
# Get groups where the SP is a member
|
||||
Get-MgServicePrincipalMemberOf -ServicePrincipalId <ServicePrincipalId>
|
||||
|
||||
# List available commands in Microsoft Graph PowerShell
|
||||
Get-Command -Module Microsoft.Graph.ServicePrincipals
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Azure AD" }}
|
||||
```bash
|
||||
@@ -645,6 +751,25 @@ Get-AzADAppCredential
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="MS Graph" }}
|
||||
```bash
|
||||
# List Applications using Microsoft Graph PowerShell
|
||||
Get-MgApplication -All
|
||||
|
||||
# Get application details
|
||||
Get-MgApplication -ApplicationId 7861f72f-ad49-4f8c-96a9-19e6950cffe1 | Format-List *
|
||||
|
||||
# Search App by display name
|
||||
Get-MgApplication -Filter "startswith(displayName, 'app')" | Select-Object DisplayName
|
||||
|
||||
# Get owner of an application
|
||||
Get-MgApplicationOwner -ApplicationId <ApplicationId>
|
||||
|
||||
# List available commands in Microsoft Graph PowerShell
|
||||
Get-Command -Module Microsoft.Graph.Applications
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Azure AD" }}
|
||||
```bash
|
||||
# List all registered applications
|
||||
@@ -660,7 +785,7 @@ Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *
|
||||
{{#endtabs }}
|
||||
|
||||
> [!WARNING]
|
||||
> एक ऐप जिसमें अनुमति **`AppRoleAssignment.ReadWrite`** है, **Global Admin** में **escalate** कर सकता है।\
|
||||
> एक ऐप जिसमें अनुमति **`AppRoleAssignment.ReadWrite`** है, **Global Admin** के रूप में **उच्चीकृत** हो सकता है।\
|
||||
> अधिक जानकारी के लिए [**यहाँ देखें**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
|
||||
|
||||
> [!NOTE]
|
||||
@@ -668,7 +793,7 @@ Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *
|
||||
> इसलिए, यदि आप इस **पासवर्ड** को ढूंढ लेते हैं, तो आप **service principal** के रूप में **tenant** के **अंदर** पहुँच सकते हैं।\
|
||||
> ध्यान दें कि यह पासवर्ड केवल उत्पन्न होने पर ही दिखाई देता है (आप इसे बदल सकते हैं लेकिन फिर से प्राप्त नहीं कर सकते)।\
|
||||
> **एप्लिकेशन** का **स्वामी** इसे **पासवर्ड** जोड़ सकता है (ताकि वह इसकी नकल कर सके)।\
|
||||
> इन सेवा प्रमुखों के रूप में लॉगिन **जोखिमपूर्ण** के रूप में **चिह्नित नहीं होते** और इनमें **MFA नहीं होगा।**
|
||||
> इन service principals के रूप में लॉगिन **जोखिमपूर्ण** के रूप में **चिह्नित** नहीं होते हैं और इनमें **MFA** नहीं होगा।
|
||||
|
||||
Microsoft के सामान्य उपयोग किए जाने वाले ऐप IDs की सूची [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) पर पाई जा सकती है।
|
||||
|
||||
@@ -719,7 +844,27 @@ az role assignment list --all --query "[].{principalName:principalName,principal
|
||||
# Get all the roles assigned to a user
|
||||
az role assignment list --assignee "<email>" --all --output table
|
||||
# Get all the roles assigned to a user by filtering
|
||||
az role assignment list --all --query "[?principalName=='carlos@carloshacktricks.onmicrosoft.com']" --output table
|
||||
az role assignment list --all --query "[?principalName=='admin@organizationadmin.onmicrosoft.com']" --output table
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="MS Graph" }}
|
||||
```bash
|
||||
|
||||
# List all available role templates using Microsoft Graph PowerShell
|
||||
Get-MgDirectoryRoleTemplate -All
|
||||
|
||||
# List enabled built-in Entra ID roles
|
||||
Get-MgDirectoryRole -All
|
||||
|
||||
# List all Entra ID roles with their permissions (including custom roles)
|
||||
Get-MgDirectoryRoleDefinition -All
|
||||
|
||||
# List members of a Entra ID role
|
||||
Get-MgDirectoryRoleMember -DirectoryRoleId <RoleId> -All
|
||||
|
||||
# List available commands in Microsoft Graph PowerShell
|
||||
Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -833,6 +978,24 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl *
|
||||
# If you know how to do this send a PR!
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="MS Graph" }}
|
||||
```bash
|
||||
# Enumerate devices using Microsoft Graph PowerShell
|
||||
Get-MgDevice -All
|
||||
|
||||
# Get device details
|
||||
Get-MgDevice -DeviceId <DeviceId> | Format-List *
|
||||
|
||||
# Get devices managed using Intune
|
||||
Get-MgDevice -Filter "isCompliant eq true" -All
|
||||
|
||||
# Get devices owned by a user
|
||||
Get-MgUserOwnedDevice -UserId test@corp.onmicrosoft.com
|
||||
|
||||
# List available commands in Microsoft Graph PowerShell
|
||||
Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Azure AD" }}
|
||||
```bash
|
||||
@@ -858,7 +1021,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
|
||||
|
||||
> [!WARNING]
|
||||
> यदि एक डिवाइस (VM) **AzureAD से जुड़ा** है, तो AzureAD के उपयोगकर्ता **लॉगिन करने में सक्षम** होंगे।\
|
||||
> इसके अलावा, यदि लॉग इन किया हुआ उपयोगकर्ता डिवाइस का **स्वामी** है, तो वह **स्थानीय व्यवस्थापक** होगा।
|
||||
> इसके अलावा, यदि लॉगिन करने वाला उपयोगकर्ता डिवाइस का **स्वामी** है, तो वह **स्थानीय व्यवस्थापक** होगा।
|
||||
|
||||
### प्रशासनिक इकाइयाँ
|
||||
|
||||
@@ -913,12 +1076,12 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
|
||||
|
||||
### विशेषाधिकार पहचान प्रबंधन (PIM)
|
||||
|
||||
Azure में विशेषाधिकार पहचान प्रबंधन (PIM) **अधिकतम विशेषाधिकार** को उपयोगकर्ताओं को अनावश्यक रूप से सौंपने से **रोकने** में मदद करता है।
|
||||
Azure में विशेषाधिकार पहचान प्रबंधन (PIM) **अधिकतम विशेषाधिकार** को अनावश्यक रूप से उपयोगकर्ताओं को सौंपने से **रोकने** में मदद करता है।
|
||||
|
||||
PIM द्वारा प्रदान की जाने वाली मुख्य विशेषताओं में से एक यह है कि यह लगातार सक्रिय प्रिंसिपलों को भूमिकाएँ सौंपने की अनुमति नहीं देता, बल्कि उन्हें **एक निश्चित समय (जैसे 6 महीने)** के लिए **योग्य** बनाता है। फिर, जब भी उपयोगकर्ता उस भूमिका को सक्रिय करना चाहता है, तो उसे यह बताना होगा कि उसे विशेषाधिकार की आवश्यकता है (जैसे 3 घंटे)। फिर एक **व्यवस्थापक को** अनुरोध को मंजूरी देने की आवश्यकता होती है।\
|
||||
PIM द्वारा प्रदान की गई मुख्य विशेषताओं में से एक यह है कि यह लगातार सक्रिय प्रिंसिपलों को भूमिकाएँ सौंपने की अनुमति नहीं देता, बल्कि उन्हें **एक निश्चित समय (जैसे 6 महीने)** के लिए **योग्य** बनाता है। फिर, जब भी उपयोगकर्ता उस भूमिका को सक्रिय करना चाहता है, तो उसे यह बताना होगा कि उसे विशेषाधिकार की आवश्यकता कितने समय के लिए है (जैसे 3 घंटे)। फिर एक **व्यवस्थापक को** अनुरोध को मंजूरी देने की आवश्यकता होती है।\
|
||||
ध्यान दें कि उपयोगकर्ता **समय बढ़ाने** के लिए भी अनुरोध कर सकेगा।
|
||||
|
||||
इसके अलावा, **PIM ईमेल भेजता है** जब किसी को विशेषाधिकार वाली भूमिका सौंपा जा रहा हो।
|
||||
इसके अलावा, **PIM ईमेल भेजता है** जब किसी को विशेषाधिकार वाली भूमिका सौंपा जाता है।
|
||||
|
||||
<figure><img src="../../../images/image (354).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -935,7 +1098,7 @@ PIM द्वारा प्रदान की जाने वाली म
|
||||
|
||||
### शर्तीय पहुँच नीतियाँ
|
||||
|
||||
जाँचें:
|
||||
जांचें:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
|
||||
@@ -943,9 +1106,9 @@ PIM द्वारा प्रदान की जाने वाली म
|
||||
|
||||
### Entra पहचान सुरक्षा
|
||||
|
||||
Entra पहचान सुरक्षा एक सुरक्षा सेवा है जो **यह पहचानने की अनुमति देती है कि जब कोई उपयोगकर्ता या साइन-इन बहुत जोखिम भरा होता है** तो उसे स्वीकार नहीं किया जा सकता, जिससे उपयोगकर्ता या साइन-इन प्रयास को **ब्लॉक** किया जा सकता है।
|
||||
Entra पहचान सुरक्षा एक सुरक्षा सेवा है जो **यह पहचानने** की अनुमति देती है कि जब कोई उपयोगकर्ता या साइन-इन बहुत जोखिम भरा होता है, तो उसे स्वीकार नहीं किया जा सकता, जिससे उपयोगकर्ता या साइन-इन प्रयास को **ब्लॉक** किया जा सकता है।
|
||||
|
||||
यह व्यवस्थापक को इसे **ब्लॉक** करने के लिए कॉन्फ़िगर करने की अनुमति देता है जब जोखिम "कम और ऊपर", "मध्यम और ऊपर" या "उच्च" होता है। हालाँकि, डिफ़ॉल्ट रूप से यह पूरी तरह से **निष्क्रिय** है:
|
||||
यह व्यवस्थापक को इसे इस तरह कॉन्फ़िगर करने की अनुमति देता है कि जब जोखिम "कम और ऊपर", "मध्यम और ऊपर" या "उच्च" हो, तो प्रयासों को **ब्लॉक** किया जाए। हालाँकि, डिफ़ॉल्ट रूप से यह पूरी तरह से **निष्क्रिय** है:
|
||||
|
||||
<figure><img src="../../../images/image (356).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -954,7 +1117,7 @@ Entra पहचान सुरक्षा एक सुरक्षा से
|
||||
|
||||
### Entra पासवर्ड सुरक्षा
|
||||
|
||||
Entra पासवर्ड सुरक्षा ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) एक सुरक्षा विशेषता है जो **कमजोर पासवर्ड के दुरुपयोग को रोकने में मदद करती है जब कई असफल लॉगिन प्रयास होते हैं**।\
|
||||
Entra पासवर्ड सुरक्षा ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) एक सुरक्षा विशेषता है जो **कमजोर पासवर्ड के दुरुपयोग को रोकने में मदद करती है** जब कई असफल लॉगिन प्रयास होते हैं, तो खातों को लॉक करके।\
|
||||
यह एक कस्टम पासवर्ड सूची को **बैन** करने की अनुमति भी देती है जिसे आपको प्रदान करना होगा।
|
||||
|
||||
यह **क्लाउड स्तर** और ऑन-प्रिमाइसेस सक्रिय निर्देशिका दोनों पर **लागू** किया जा सकता है।
|
||||
|
||||
Reference in New Issue
Block a user