From 0e7dce31c1f0657c6164c327d987c053d6b64bce Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 7 Feb 2025 00:05:12 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes --- src/pentesting-cloud/azure-security/README.md | 77 +++++++++++-------- ...-conditional-access-policies-mfa-bypass.md | 34 ++++---- 2 files changed, 68 insertions(+), 43 deletions(-) diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 1e94d34b9..7db2cf377 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -14,30 +14,30 @@ az-basic-information/ Для аудиту середовища AZURE дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні служби Azure та **зовнішні служби** з'єднані. -З точки зору Red Team, **перший крок для компрометації середовища Azure** - це отримати деяке **підтвердження**. +З точки зору Red Team, **перший крок до компрометації середовища Azure** - це отримати **переправу**. ### Зовнішня енумерація та початковий доступ -Перший крок - це, звичайно, перерахувати інформацію про орендаря, якого ви атакуєте, і спробувати отримати підтвердження. +Перший крок - це, звичайно, перерахувати інформацію про орендаря, якого ви атакуєте, і спробувати отримати переправу. На основі доменного імені можна дізнатися, **чи використовує компанія Azure**, отримати **ідентифікатор орендаря**, отримати інші **дійсні домени** в тому ж орендарі (якщо є) та отримати **релевантну інформацію**, таку як чи увімкнено SSO, налаштування електронної пошти, дійсні електронні адреси користувачів... -Перегляньте наступну сторінку, щоб дізнатися, як виконати **зовнішню енумерацію**: +Перевірте наступну сторінку, щоб дізнатися, як виконати **зовнішню енумерацію**: {{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}} -З цією інформацією найпоширеніші способи спробувати отримати підтвердження: +З цією інформацією найпоширеніші способи спробувати отримати переправу: - **OSINT**: Перевірте наявність **витоків** у Github або будь-якій іншій відкритій платформі, яка може містити **облікові дані** або цікаву інформацію. - **Повторне використання паролів**, витоки або [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) +- [**Звичайна фішингова атака**](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-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/) +- [**Server Side Request Forgery**](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) можуть знайти цю інформацію): - Всередині **`/.Azure`** @@ -55,7 +55,7 @@ az-unauthenticated-enum-and-initial-entry/ - У Windows це просто генерує ID токени. - Можна перевірити, чи використовувався Az PowerShell у Linux і macOS, перевіривши, чи існує `$HOME/.local/share/.IdentityService/` (хоча вміст файлів порожній і марний) -Знайдіть **інші неправильні налаштування служб Azure**, які можуть призвести до підтвердження, на наступній сторінці: +Знайдіть **інші неправильні налаштування служб Azure**, які можуть призвести до переправи, на наступній сторінці: {{#ref}} az-unauthenticated-enum-and-initial-entry/ @@ -85,7 +85,7 @@ az-enumeration-tools.md Після обходу ви можете повернутися до вашої початкової налаштування і все ще мати доступ. -Перегляньте: +Перевірте: {{#ref}} az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -143,14 +143,14 @@ Get-AzureADTenantDetail ### Entra ID Enumeration & Privesc -За замовчуванням будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби... (перевірте [стандартні дозволи AzureAD](az-basic-information/index.html#default-user-permissions)).\ +За замовчуванням, будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби... (перевірте [стандартні дозволи AzureAD](az-basic-information/index.html#default-user-permissions)).\ Тут ви можете знайти посібник: {{#ref}} az-services/az-azuread.md {{#endref}} -Перевірте **інструменти пост-експлуатації**, щоб знайти інструменти для ескалації привілеїв в Entra ID, такі як **AzureHound:** +Перевірте **інструменти після експлуатації**, щоб знайти інструменти для підвищення привілеїв в Entra ID, такі як **AzureHound:** {{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools @@ -167,36 +167,53 @@ az-enumeration-tools.md#automated-post-exploitation-tools Команда 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) або шукаючи "Усі ресурси" або виконуючи: +```bash +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`**. - -Також можливо отримати цю інформацію, запустивши **`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. **Знайдіть детальні права ролей, які прикріплені до вас**: - -Потім, щоб отримати детальні права, ви можете виконати **`(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"`**. +Крім того, з достатніми дозволами роль **`Get-AzRoleAssignment`** може бути використана для **перерахунку всіх ролей** у підписці або дозволу на конкретний ресурс, вказуючи його так: +```bash +Get-AzRoleAssignment -Scope /subscriptions//resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4 +``` +Також можливо отримати цю інформацію, запустивши: +```bash +az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value" +``` +як у: +```bash +az rest --method GET --uri "https://management.azure.com//subscriptions//resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value" +``` +Інший варіант - отримати ролі, прикріплені до вас в azure за допомогою: +```bash +az role assignment list --assignee "" --all --output table +``` +Або запустіть наступне (Якщо результати порожні, це може бути через те, що у вас немає дозволу на їх отримання): +```bash +az rest --method GET --uri 'https://management.azure.com/subscriptions//providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '' +``` +3. **Знайдіть детальні дозволи ролей, які до вас прикріплені**: +Тоді, щоб отримати детальний дозвіл, ви можете виконати **`(Get-AzRoleDefinition -Id "").Actions`**. +Або викликати API безпосередньо з +```bash +az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?api-version=2020-08-01-preview" | jq ".properties" +``` У наступному розділі ви можете знайти **інформацію про найпоширеніші сервіси Azure та як їх перерахувати**: {{#ref}} az-services/ {{#endref}} -### Privilege Escalation, Post-Exploitation & Persistence +### Підвищення привілеїв, пост-експлуатація та збереження -Коли ви знаєте, як структуроване середовище Azure і які сервіси використовуються, ви можете почати шукати способи **ескалації привілеїв, бічного переміщення, виконання інших атак після експлуатації та підтримки стійкості**. +Коли ви дізнаєтеся, як структуроване середовище Azure і які сервіси використовуються, ви можете почати шукати способи **підвищення привілеїв, бічного переміщення, виконання інших атак після експлуатації та підтримки збереження**. -У наступному розділі ви можете знайти інформацію про те, як ескалувати привілеї в найпоширеніших сервісах Azure: +У наступному розділі ви можете знайти інформацію про те, як підвищити привілеї в найпоширеніших сервісах Azure: {{#ref}} az-privilege-escalation/ @@ -208,7 +225,7 @@ az-privilege-escalation/ az-post-exploitation/ {{#endref}} -У наступному ви можете знайти інформацію про те, як підтримувати стійкість у найпоширеніших сервісах Azure: +У наступному ви можете знайти інформацію про те, як підтримувати збереження в найпоширеніших сервісах Azure: {{#ref}} az-persistence/ diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md index 1704cd1a1..08d320b12 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -5,31 +5,39 @@ ## Основна інформація Політики умовного доступу Azure - це правила, встановлені в Microsoft Azure для забезпечення контролю доступу до служб та додатків Azure на основі певних **умов**. Ці політики допомагають організаціям захистити свої ресурси, застосовуючи правильні контролі доступу за правильних обставин.\ -Політики умовного доступу в основному **визначають**, **Хто** може отримати доступ до **Чого** з **Де** і **Як**. +Політики умовного доступу в основному **визначають** **Хто** може отримати доступ до **Чого** з **Де** та **Як**. Ось кілька прикладів: -1. **Політика ризику входу**: Цю політику можна налаштувати так, щоб вимагати багатофакторну аутентифікацію (MFA), коли виявляється ризик входу. Наприклад, якщо поведінка користувача при вході є незвичною в порівнянні з їх звичайним патерном, наприклад, входом з іншої країни, система може запитати додаткову аутентифікацію. +1. **Політика ризику входу**: Цю політику можна налаштувати так, щоб вимагати багатофакторну аутентифікацію (MFA), коли виявляється ризик входу. Наприклад, якщо поведінка користувача під час входу є незвичною в порівнянні з їхнім звичайним патерном, наприклад, входом з іншої країни, система може запитати додаткову аутентифікацію. 2. **Політика відповідності пристроїв**: Ця політика може обмежити доступ до служб Azure лише для пристроїв, які відповідають стандартам безпеки організації. Наприклад, доступ може бути дозволений лише з пристроїв, які мають актуальне антивірусне програмне забезпечення або працюють на певній версії операційної системи. +## Перерахування +```bash +# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1) +az rest --method GET --uri 'https://graph.windows.net//policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}' + +# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID +az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies" +``` ## Обходи політик умовного доступу Можливо, що політика умовного доступу **перевіряє деяку інформацію, яку можна легко підробити, що дозволяє обійти політику**. І якщо, наприклад, політика налаштовує MFA, зловмисник зможе її обійти. -При налаштуванні політики умовного доступу потрібно вказати **користувачів**, на яких це вплине, та **цільові ресурси** (наприклад, всі хмарні додатки). +При налаштуванні політики умовного доступу потрібно вказати **користувачів**, на яких вона вплине, та **цільові ресурси** (наприклад, всі хмарні додатки). Також потрібно налаштувати **умови**, які **активують** політику: - **Мережа**: IP, діапазони IP та географічні локації -- Можна обійти, використовуючи VPN або проксі для підключення до країни або намагаючись увійти з дозволеної IP-адреси -- **Ризики Microsoft**: Ризик користувача, ризик входу, ризик зловмисника +- Можна обійти, використовуючи VPN або проксі для підключення до країни або зумівши увійти з дозволеної IP-адреси +- **Ризики Microsoft**: Ризик користувача, ризик входу, ризик зсередини - **Платформи пристроїв**: Будь-який пристрій або вибрати Android, iOS, Windows phone, Windows, macOS, Linux -- Якщо не вибрано “Будь-який пристрій”, але всі інші опції вибрані, можна обійти, використовуючи випадковий user-agent, не пов'язаний з цими платформами -- **Клієнтські програми**: Опції “Браузер”, “Мобільні програми та настільні клієнти”, “Клієнти Exchange ActiveSync” та “Інші клієнти” +- Якщо “Будь-який пристрій” не вибрано, але всі інші опції вибрані, можна обійти це, використовуючи випадковий user-agent, не пов'язаний з цими платформами +- **Клієнтські додатки**: Опції “Браузер”, “Мобільні додатки та настільні клієнти”, “Клієнти Exchange ActiveSync” та “Інші клієнти” - Щоб обійти вхід з не вибраною опцією - **Фільтр для пристроїв**: Можна створити правило, пов'язане з використаним пристроєм - **Потоки аутентифікації**: Опції “Потік коду пристрою” та “Передача аутентифікації” -- Це не вплине на зловмисника, якщо він намагається зловживати будь-якими з цих протоколів у фішинговій спробі отримати доступ до облікового запису жертви +- Це не вплине на зловмисника, якщо він не намагається зловживати будь-якими з цих протоколів у фішинговій спробі отримати доступ до облікового запису жертви Можливі **результати**: Блокування або надання доступу з потенційними умовами, такими як вимога MFA, відповідність пристрою… @@ -48,7 +56,7 @@ ### Локації: Країни, діапазони IP - Умова пристрою -Якщо це встановлено в умовній політиці, зловмисник може просто використовувати **VPN** в **дозволеній країні** або спробувати знайти спосіб отримати доступ з **дозволеної IP-адреси**, щоб обійти ці умови. +Якщо це налаштовано в умовній політиці, зловмисник може просто використовувати **VPN** в **дозволеній країні** або спробувати знайти спосіб отримати доступ з **дозволеної IP-адреси**, щоб обійти ці умови. ### Хмарні додатки @@ -123,7 +131,7 @@ Invoke-MFASweep -Username -Password ``` ### [ROPCI](https://github.com/wunderwuzzi23/ropci) -Цей інструмент допоміг виявити обходи MFA, а потім зловживати API в кількох виробничих AAD тенантах, де клієнти AAD вважали, що у них є примусове MFA, але аутентифікація на основі ROPC пройшла успішно. +Цей інструмент допоміг виявити обходи MFA, а потім зловживати API в кількох виробничих AAD тенантах, де клієнти AAD вважали, що у них є MFA, але аутентифікація на основі ROPC пройшла успішно. > [!TIP] > Вам потрібно мати дозволи для перегляду всіх додатків, щоб мати можливість згенерувати список додатків для брутфорсу. @@ -135,20 +143,20 @@ Invoke-MFASweep -Username -Password ``` ### [donkeytoken](https://github.com/silverhack/donkeytoken) -Donkey token - це набір функцій, які допомагають консультантам з безпеки, які потребують перевірки Політик умовного доступу, тестів для порталу Microsoft з увімкненим 2FA тощо. +Donkey token - це набір функцій, які допомагають консультантам з безпеки, які повинні перевіряти політики умовного доступу, тести для порталу Microsoft з увімкненим 2FA тощо.
git clone https://github.com/silverhack/donkeytoken.git
 Import-Module '.\donkeytoken' -Force
 
-**Тестуйте кожен портал**, чи можливо **увійти без MFA**: +**Перевірте кожен портал**, чи можливо **увійти без MFA**: ```bash $username = "conditional-access-app-user@azure.training.hacktricks.xyz" $password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential($username, $password) Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue ``` -Оскільки **Azure** **портал** **не обмежений**, можливо **зібрати токен з кінцевої точки порталу для доступу до будь-якої служби, виявленої** під час попереднього виконання. У цьому випадку було виявлено Sharepoint, і запитується токен для доступу до нього: +Оскільки **Azure** **портал** **не обмежений**, можливо **зібрати токен з кінцевої точки порталу для доступу до будь-якої служби, виявленої** попереднім виконанням. У цьому випадку було виявлено Sharepoint, і запитується токен для доступу до нього: ```bash $token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune Read-JWTtoken -token $token.access_token