# Azure Pentesting {{#include ../../banners/hacktricks-training.md}} ## Основна інформація Дізнайтеся основи Azure та Entra ID на наступній сторінці: {{#ref}} az-basic-information/ {{#endref}} ## Методологія Azure Pentester/Red Team Для аудиту середовища AZURE дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні служби 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) - [Фішинг за допомогою коду пристрою](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) - **Зламані** третіми сторонами - Вразливості в Azure-Hosted Applications - [**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`** - **`azureProfile.json`** містить інформацію про користувачів, які входили в систему раніше - **`clouds.config` містить** інформацію про підписки - **`service_principal_entries.json`** містить облікові дані додатків (ідентифікатор орендаря, клієнти та секрет). Тільки в Linux і macOS - **`msal_token_cache.json`** містить токени доступу та токени оновлення. Тільки в Linux і macOS - **`service_principal_entries.bin`** та msal_token_cache.bin використовуються в Windows і зашифровані за допомогою DPAPI - **`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"` - У Windows це просто генерує ID токени. - Можна перевірити, чи використовувався Az PowerShell у Linux і macOS, перевіривши, чи існує `$HOME/.local/share/.IdentityService/` (хоча вміст файлів порожній і марний) Знайдіть **інші неправильні налаштування служб Azure**, які можуть призвести до переправи, на наступній сторінці: {{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}} > [!NOTE] > Пам'ятайте, що зазвичай **найгучнішою** частиною енумерації є **вхід**, а не сама енумерація. ### Інструменти Azure та Entra ID Наступні інструменти будуть дуже корисні для повільної (щоб уникнути виявлення) або автоматичної (щоб заощадити час) енумерації як орендарів Entra ID, так і середовищ Azure: {{#ref}} az-enumeration-tools.md {{#endref}} ### Обхід політик доступу
У випадках, коли у вас є дійсні облікові дані, але ви не можете увійти, це деякі загальні захисти, які можуть бути на місці: - **IP-білий список** -- Вам потрібно зламати дійсний IP - **Геообмеження** -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або хоча б з тієї ж країни) - **Браузер** -- Можливо, дозволено лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS). Дізнайтеся, яку ОС використовує жертва/компанія. - Ви також можете спробувати **зламати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється Після обходу ви можете повернутися до вашої початкової налаштування і все ще мати доступ. Перевірте: {{#ref}} az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} ### Whoami > [!CAUTION] > Дізнайтеся, **як встановити** az cli, AzureAD та Az PowerShell у розділі [**Az - Entra ID**](az-services/az-azuread.md). Одне з перших, що вам потрібно знати, це **хто ви** (в якому середовищі ви знаходитесь): {{#tabs }} {{#tab name="az cli" }} ```bash az account list az account tenant list # Current tenant info az account subscription list # Current subscription info az ad signed-in-user show # Current signed-in user az ad signed-in-user list-owned-objects # Get owned objects by current user az account management-group list #Not allowed by default ``` {{#endtab }} {{#tab name="Az" }} ```bash # Get the information about the current context (Account, Tenant, Subscription etc.) Get-AzContext # List all available contexts Get-AzContext -ListAvailable # Enumerate subscriptions accessible by the current user Get-AzSubscription #Get Resource group Get-AzResourceGroup ``` {{#endtab }} {{#tab name="Mg" }} ```bash #Get the current session Get-MgContext ``` {{#endtab }} {{#tab name="AzureAD" }} ```bash #Get the current session state Get-AzureADCurrentSessionInfo #Get details of the current tenant Get-AzureADTenantDetail ``` {{#endtab }} {{#endtabs }} ### Entra ID Enumeration & Privesc За замовчуванням, будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби... (перевірте [стандартні дозволи AzureAD](az-basic-information/index.html#default-user-permissions)).\ Тут ви можете знайти посібник: {{#ref}} az-services/az-azuread.md {{#endref}} Перевірте **інструменти після експлуатації**, щоб знайти інструменти для підвищення привілеїв в Entra ID, такі як **AzureHound:** {{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}} ### Azure Enumeration Коли ви знаєте, хто ви, ви можете почати перераховувати **сервіси Azure, до яких у вас є доступ**. Вам слід почати з визначення **прав, які у вас є** на ресурси. Для цього: 1. **Знайдіть ресурс, до якого у вас є доступ**: Команда Az PowerShell **`Get-AzResource`** дозволяє вам **дізнатися про ресурси, які ваш поточний користувач може бачити**. Крім того, ви можете отримати ту ж інформацію в **веб-консолі**, перейшовши за [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. **Знайдіть дозволи, які у вас є на ресурси, до яких ви маєте доступ, і знайдіть ролі, призначені вам**: Зверніть увагу, що вам потрібен дозвіл **`Microsoft.Authorization/roleAssignments/read`** для виконання цієї дії. Крім того, з достатніми дозволами роль **`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}} ### Підвищення привілеїв, пост-експлуатація та збереження Коли ви дізнаєтеся, як структуроване середовище Azure і які сервіси використовуються, ви можете почати шукати способи **підвищення привілеїв, бічного переміщення, виконання інших атак після експлуатації та підтримки збереження**. У наступному розділі ви можете знайти інформацію про те, як підвищити привілеї в найпоширеніших сервісах Azure: {{#ref}} az-privilege-escalation/ {{#endref}} У наступному ви можете знайти інформацію про те, як виконувати атаки після експлуатації в найпоширеніших сервісах Azure: {{#ref}} az-post-exploitation/ {{#endref}} У наступному ви можете знайти інформацію про те, як підтримувати збереження в найпоширеніших сервісах Azure: {{#ref}} az-persistence/ {{#endref}} {{#include ../../banners/hacktricks-training.md}}