Files
hacktricks-cloud/src/pentesting-cloud/azure-security/README.md

15 KiB
Raw Blame History

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
  • Купити облікові дані у співробітника
  • Звичайна фішингова атака (облікові дані або Oauth App)
  • Фішинг за допомогою коду пристрою
  • Зламані третіми сторонами
  • Вразливості в Azure-Hosted Applications
  • Server Side Request Forgery з доступом до метаданих
  • Перехоплення піддоменів, як у https://godiego.co/posts/STO-Azure/
  • Інші неправильні налаштування служб Azure
  • Якщо комп'ютер розробника зламано (WinPEAS і LinPEAS можуть знайти цю інформацію):
  • Всередині <HOME>/.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\<username>\AppData\Local\Microsoft\IdentityCache\* є кілька .bin файлів з токенами доступу, ID токенами та інформацією про облікові записи, зашифрованими за допомогою DPAPI користувача.
  • Можна знайти більше токенів доступу у файлах .tbres всередині C:\Users\<username>\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.

Одне з перших, що вам потрібно знати, це хто ви (в якому середовищі ви знаходитесь):

{{#tabs }} {{#tab name="az cli" }}

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" }}

# 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" }}

#Get the current session
Get-MgContext

{{#endtab }}

{{#tab name="AzureAD" }}

#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail

{{#endtab }} {{#endtabs }}

Entra ID Enumeration & Privesc

За замовчуванням, будь-який користувач повинен мати достатньо прав для перерахунку таких речей, як користувачі, групи, ролі, служби... (перевірте стандартні дозволи AzureAD).
Тут ви можете знайти посібник:

{{#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 або шукаючи "Усі ресурси" або виконуючи:

az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
  1. Знайдіть дозволи, які у вас є на ресурси, до яких ви маєте доступ, і знайдіть ролі, призначені вам:

Зверніть увагу, що вам потрібен дозвіл Microsoft.Authorization/roleAssignments/read для виконання цієї дії.

Крім того, з достатніми дозволами роль Get-AzRoleAssignment може бути використана для перерахунку всіх ролей у підписці або дозволу на конкретний ресурс, вказуючи його так:

Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4

Також можливо отримати цю інформацію, запустивши:

az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"

як у:

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"

Інший варіант - отримати ролі, прикріплені до вас в azure за допомогою:

az role assignment list --assignee "<email>" --all --output table

Або запустіть наступне (Якщо результати порожні, це може бути через те, що у вас немає дозволу на їх отримання):

az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
  1. Знайдіть детальні дозволи ролей, які до вас прикріплені:

Тоді, щоб отримати детальний дозвіл, ви можете виконати (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions.

Або викликати API безпосередньо з

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?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}}