diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 615cddd82..1e94d34b9 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -14,11 +14,11 @@ az-basic-information/ Для аудиту середовища AZURE дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні служби Azure та **зовнішні служби** з'єднані. -З точки зору Red Team, **перший крок до компрометації середовища Azure** - це отримати **переправу**. +З точки зору Red Team, **перший крок для компрометації середовища Azure** - це отримати деяке **підтвердження**. ### Зовнішня енумерація та початковий доступ -Перший крок - це, звичайно, перерахувати інформацію про орендаря, якого ви атакуєте, і спробувати отримати переправу. +Перший крок - це, звичайно, перерахувати інформацію про орендаря, якого ви атакуєте, і спробувати отримати підтвердження. На основі доменного імені можна дізнатися, **чи використовує компанія Azure**, отримати **ідентифікатор орендаря**, отримати інші **дійсні домени** в тому ж орендарі (якщо є) та отримати **релевантну інформацію**, таку як чи увімкнено SSO, налаштування електронної пошти, дійсні електронні адреси користувачів... @@ -28,34 +28,34 @@ az-basic-information/ az-unauthenticated-enum-and-initial-entry/ {{#endref}} -З цією інформацією найпоширеніші способи спробувати отримати переправу: +З цією інформацією найпоширеніші способи спробувати отримати підтвердження: - **OSINT**: Перевірте наявність **витоків** у Github або будь-якій іншій відкритій платформі, яка може містити **облікові дані** або цікаву інформацію. -- Повторне використання **паролів**, витоки або [password spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) -- Купівля облікових даних у співробітника +- **Повторне використання паролів**, витоки або [password spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) +- Купити облікові дані у співробітника - [**Звичайна фішинг-атака**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (облікові дані або Oauth App) - [Фішинг за допомогою коду пристрою](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) -- Порушення з боку третіх осіб -- Вразливості в додатках, розміщених в Azure -- [**Серверна підробка запитів**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) з доступом до кінцевої точки метаданих -- **Перехоплення піддоменів**, як у [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/) +- **Зламані** третіми сторонами +- Вразливості в Azure-Hosted Applications +- [**Серверна підробка запитів**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) з доступом до метаданих +- **Перехоплення піддоменів** як у [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/) - **Інші неправильні налаштування служб Azure** -- Якщо комп'ютер розробника скомпрометовано ([WinPEAS і LinPEAS](https://github.com/peass-ng/PEASS-ng) можуть знайти цю інформацію): +- Якщо комп'ютер розробника зламано ([WinPEAS і LinPEAS](https://github.com/peass-ng/PEASS-ng) можуть знайти цю інформацію): - Всередині **`/.Azure`** - **`azureProfile.json`** містить інформацію про користувачів, які входили в систему раніше - **`clouds.config` містить** інформацію про підписки - **`service_principal_entries.json`** містить облікові дані додатків (ідентифікатор орендаря, клієнти та секрет). Тільки в Linux і macOS -- **`msal_token_cache.json`** містить облікові токени доступу та токени оновлення. Тільки в Linux і macOS +- **`msal_token_cache.json`** містить токени доступу та токени оновлення. Тільки в Linux і macOS - **`service_principal_entries.bin`** та msal_token_cache.bin використовуються в Windows і зашифровані за допомогою DPAPI -- **`msal_http_cache.bin`** є кешем HTTP-запитів +- **`msal_http_cache.bin`** є кешем HTTP запитів - Завантажте його: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)` -- **`AzureRmContext.json`** містить інформацію про попередні входи, використовуючи Az PowerShell (але без облікових даних) -- Всередині **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** є кілька `.bin` файлів з **обліковими токенами**, ID токенами та інформацією про облікові записи, зашифрованими за допомогою DPAPI користувача. -- Можна знайти більше **облікових токенів** у файлах `.tbres` всередині **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`**, які містять base64, зашифрований за допомогою DPAPI з обліковими токенами. -- У Linux і macOS ви можете отримати **облікові токени доступу, токени оновлення та ID токени** з Az PowerShell (якщо використовувався), запустивши `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` +- **`AzureRmContext.json`** містить інформацію про попередні входи за допомогою Az PowerShell (але без облікових даних) +- Всередині **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** є кілька `.bin` файлів з **токенами доступу**, ID токенами та інформацією про облікові записи, зашифрованими за допомогою DPAPI користувача. +- Можна знайти більше **токенів доступу** у файлах `.tbres` всередині **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`**, які містять base64, зашифрований за допомогою DPAPI з токенами доступу. +- У Linux і macOS ви можете отримати **токени доступу, токени оновлення та ID токени** з Az PowerShell (якщо використовувався), запустивши `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` - У Windows це просто генерує ID токени. - Можна перевірити, чи використовувався Az PowerShell у Linux і macOS, перевіривши, чи існує `$HOME/.local/share/.IdentityService/` (хоча вміст файлів порожній і марний) -Знайдіть **інші неправильні налаштування служб Azure**, які можуть призвести до переправи, на наступній сторінці: +Знайдіть **інші неправильні налаштування служб Azure**, які можуть призвести до підтвердження, на наступній сторінці: {{#ref}} az-unauthenticated-enum-and-initial-entry/ @@ -72,19 +72,25 @@ az-unauthenticated-enum-and-initial-entry/ az-enumeration-tools.md {{#endref}} -### Обхід умов входу +### Обхід політик доступу
У випадках, коли у вас є дійсні облікові дані, але ви не можете увійти, це деякі загальні захисти, які можуть бути на місці: -- **IP-білий список** -- Вам потрібно скомпрометувати дійсний IP +- **IP-білий список** -- Вам потрібно зламати дійсний IP - **Геообмеження** -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або хоча б з тієї ж країни) -- **Браузер** -- Можливо, лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS) дозволено. Дізнайтеся, яку ОС використовує жертва/компанія. -- Ви також можете спробувати **скомпрометувати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється +- **Браузер** -- Можливо, дозволено лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS). Дізнайтеся, яку ОС використовує жертва/компанія. +- Ви також можете спробувати **зламати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється Після обходу ви можете повернутися до вашої початкової налаштування і все ще мати доступ. +Перегляньте: + +{{#ref}} +az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md +{{#endref}} + ### Whoami > [!CAUTION] @@ -135,7 +141,7 @@ Get-AzureADTenantDetail {{#endtabs }} -### Перерахунок Entra ID та ескалація привілеїв +### Entra ID Enumeration & Privesc За замовчуванням будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби... (перевірте [стандартні дозволи AzureAD](az-basic-information/index.html#default-user-permissions)).\ Тут ви можете знайти посібник: @@ -151,58 +157,58 @@ az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}} -### Перерахунок служб Azure +### Azure Enumeration -Коли ви знаєте, хто ви, ви можете почати перерахунок **служб Azure, до яких у вас є доступ**. +Коли ви знаєте, хто ви, ви можете почати перераховувати **сервіси Azure, до яких у вас є доступ**. -Вам слід почати з визначення **дозволів, які у вас є** на ресурси. Для цього: +Вам слід почати з визначення **прав, які у вас є** на ресурси. Для цього: 1. **Знайдіть ресурс, до якого у вас є доступ**: Команда Az PowerShell **`Get-AzResource`** дозволяє вам **дізнатися про ресурси, які ваш поточний користувач може бачити**. -Крім того, ви можете отримати ту ж інформацію в **веб-консолі**, перейшовши за [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) або шукаючи "Усі ресурси" або виконуючи: `az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01"` +Крім того, ви можете отримати ту ж інформацію в **веб-консолі**, перейшовши за [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) або шукаючи "Усі ресурси" або виконавши: `az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01"` -2. **Знайдіть дозволи, які у вас є на ресурси, до яких у вас є доступ, і знайдіть ролі, призначені вам**: +2. **Знайдіть права, які у вас є на ресурси, до яких у вас є доступ, і знайдіть ролі, призначені вам**: -Зверніть увагу, що вам потрібен дозвіл **`Microsoft.Authorization/roleAssignments/read`** для виконання цієї дії. +Зверніть увагу, що вам потрібні права **`Microsoft.Authorization/roleAssignments/read`** для виконання цієї дії. -Крім того, з достатніми правами роль **`Get-AzRoleAssignment`** може бути використана для **перерахунку всіх ролей** у підписці або дозволів на конкретний ресурс, вказуючи його, як у: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**. +Крім того, з достатніми правами роль **`Get-AzRoleAssignment`** може бути використана для **перерахунку всіх ролей** у підписці або прав на конкретний ресурс, вказуючи його, як у: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**. Також можливо отримати цю інформацію, запустивши **`az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** як у: - **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** -3. **Знайдіть детальні дозволи ролей, які прикріплені до вас**: +3. **Знайдіть детальні права ролей, які прикріплені до вас**: -Потім, щоб отримати детальні дозволи, ви можете виконати **`(Get-AzRoleDefinition -Id "").Actions`**. +Потім, щоб отримати детальні права, ви можете виконати **`(Get-AzRoleDefinition -Id "").Actions`**. Або викликати API безпосередньо з **`az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?api-version=2020-08-01-preview" | jq ".properties"`**. -У наступному розділі ви можете знайти **інформацію про найпоширеніші служби Azure та як їх перерахувати**: +У наступному розділі ви можете знайти **інформацію про найпоширеніші сервіси Azure та як їх перерахувати**: {{#ref}} az-services/ {{#endref}} -### Ескалація привілеїв, пост-експлуатація та збереження в службах Azure +### Privilege Escalation, Post-Exploitation & Persistence -Коли ви знаєте, як структуроване середовище Azure і які служби використовуються, ви можете почати шукати способи **ескалації привілеїв, бічного переміщення, виконання інших атак пост-експлуатації та підтримки збереження**. +Коли ви знаєте, як структуроване середовище Azure і які сервіси використовуються, ви можете почати шукати способи **ескалації привілеїв, бічного переміщення, виконання інших атак після експлуатації та підтримки стійкості**. -У наступному розділі ви можете знайти інформацію про те, як ескалувати привілеї в найпоширеніших службах Azure: +У наступному розділі ви можете знайти інформацію про те, як ескалувати привілеї в найпоширеніших сервісах Azure: {{#ref}} az-privilege-escalation/ {{#endref}} -У наступному ви можете знайти інформацію про те, як виконувати атаки пост-експлуатації в найпоширеніших службах Azure: +У наступному ви можете знайти інформацію про те, як виконувати атаки після експлуатації в найпоширеніших сервісах Azure: {{#ref}} az-post-exploitation/ {{#endref}} -У наступному ви можете знайти інформацію про те, як підтримувати збереження в найпоширеніших службах Azure: +У наступному ви можете знайти інформацію про те, як підтримувати стійкість у найпоширеніших сервісах Azure: {{#ref}} az-persistence/ diff --git a/src/pentesting-cloud/azure-security/az-persistence/README.md b/src/pentesting-cloud/azure-security/az-persistence/README.md index 636fcf57b..12e53ab29 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/README.md +++ b/src/pentesting-cloud/azure-security/az-persistence/README.md @@ -2,11 +2,11 @@ {{#include ../../../banners/hacktricks-training.md}} -### Illicit Consent Grant +### OAuth Application -За замовчуванням, будь-який користувач може зареєструвати додаток в Azure AD. Тому ви можете зареєструвати додаток (тільки для цільового орендаря), який потребує дозволів з високим впливом з адміністративним погодженням (схвалити його, якщо ви адміністратор) - наприклад, надсилання електронної пошти від імені користувача, управління ролями тощо. Це дозволить нам **виконувати фішингові атаки**, які будуть дуже **прибутковими** у разі успіху. +За замовчуванням будь-який користувач може зареєструвати додаток в Entra ID. Тому ви можете зареєструвати додаток (тільки для цільового орендаря), який потребує дозволів з високим впливом з адміністративним погодженням (схвалити його, якщо ви адміністратор) - наприклад, надсилання електронної пошти від імені користувача, управління ролями тощо. Це дозволить нам **виконувати фішингові атаки**, які будуть дуже **прибутковими** у разі успіху. -Більше того, ви також можете прийняти цей додаток як ваш користувач, щоб підтримувати доступ до нього. +Більше того, ви також можете прийняти цей додаток зі своїм користувачем як спосіб підтримувати доступ до нього. ### Applications and Service Principals @@ -30,17 +30,17 @@ Connect-AzAccount -ServicePrincipal -Tenant -CertificateThumbprint | Get-AzureADApplicationOwner |fl * > Секретний рядок, який додаток використовує для підтвердження своєї особи при запиті токена, є паролем додатка.\ > Отже, якщо ви знайдете цей **пароль**, ви зможете отримати доступ як **сервісний принципал** **всередині** **орендаря**.\ > Зверніть увагу, що цей пароль видимий лише під час генерації (ви можете змінити його, але не зможете отримати його знову).\ -> **Власник** **додатка** може **додати пароль** до нього (щоб він міг видавати себе за нього).\ -> Вхідні дані таких сервісних принципалів **не позначаються як ризиковані** і **не матимуть MFA.** +> **Власник** **додатка** може **додати пароль** до нього (щоб він міг його імітувати).\ +> Вхідні дані таких сервісних принципалів **не позначаються як ризикові** і **не матимуть MFA.** Можливо знайти список загальновживаних ID додатків, що належать Microsoft, за адресою [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) @@ -857,8 +857,8 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember {{#endtabs }} > [!WARNING] -> Якщо пристрій (VM) є **приєднаним до AzureAD**, користувачі з AzureAD зможуть **увійти в систему**.\ -> Більше того, якщо увійшовший користувач є **власником** пристрою, він буде **локальним адміністратором**. +> Якщо пристрій (VM) **приєднаний до AzureAD**, користувачі з AzureAD зможуть **увійти в систему**.\ +> Більше того, якщо увійшовший користувач є **Власником** пристрою, він буде **локальним адміністратором**. ### Адміністративні одиниці @@ -915,10 +915,10 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members Управління привілейованими ідентичностями (PIM) в Azure допомагає **запобігти надмірним привілеям**, які без потреби надаються користувачам. -Однією з основних функцій, які надає PIM, є те, що він дозволяє не призначати ролі принципалам, які постійно активні, а робити їх **придатними на певний період часу (наприклад, 6 місяців)**. Тоді, коли користувач хоче активувати цю роль, він повинен запитати її, вказуючи час, на який йому потрібен привілей (наприклад, 3 години). Потім **адміністратор повинен затвердити** запит.\ +Однією з основних функцій, які надає PIM, є те, що він дозволяє не призначати ролі принципам, які постійно активні, а робити їх **придатними на певний період часу (наприклад, 6 місяців)**. Тоді, коли користувач хоче активувати цю роль, він повинен запитати її, вказуючи час, на який йому потрібен привілей (наприклад, 3 години). Потім **адміністратор повинен затвердити** запит.\ Зверніть увагу, що користувач також зможе попросити **продовжити** час. -Більше того, **PIM надсилає електронні листи** щоразу, коли привілейована роль призначається комусь. +Більше того, **PIM надсилає електронні листи** щоразу, коли привілейована роль надається комусь.
@@ -930,10 +930,10 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members - Вимагати обґрунтування при активації - Вимагати інформацію про квиток при активації - Вимагати затвердження для активації -- Максимальний час для закінчення придатних призначень +- Максимальний час для закінчення дії придатних призначень - Багато інших налаштувань щодо того, коли і кому надсилати сповіщення, коли відбуваються певні дії з цією роллю -### Політики умовного доступу +### Політики умовного доступу Перевірте: @@ -941,16 +941,16 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} -### Захист ідентичності Entra +### Захист ідентичності Entra -Захист ідентичності Entra - це служба безпеки, яка дозволяє **виявляти, коли користувач або вхід занадто ризикований** для прийняття, дозволяючи **блокувати** користувача або спробу входу. +Захист ідентичності Entra - це сервіс безпеки, який дозволяє **виявляти, коли користувач або вхід занадто ризикований** для прийняття, дозволяючи **блокувати** користувача або спробу входу. -Вона дозволяє адміністратору налаштувати її для **блокування** спроб, коли ризик "Низький і вище", "Середній і вище" або "Високий". Хоча за замовчуванням вона повністю **вимкнена**: +Це дозволяє адміністратору налаштувати його для **блокування** спроб, коли ризик "Низький і вище", "Середній і вище" або "Високий". Хоча за замовчуванням він повністю **вимкнений**:
> [!TIP] -> Сьогодні рекомендується додавати ці обмеження через політики умовного доступу, де можна налаштувати ті ж самі параметри. +> Сьогодні рекомендується додавати ці обмеження через політики умовного доступу, де можна налаштувати ті ж самі опції. ### Захист паролів Entra