Azure Pentesting
Reading time: 10 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Основна інформація
Дізнайтеся основи Azure та Entra ID на наступній сторінці:
Методологія Azure Pentester/Red Team
Для аудиту середовища AZURE дуже важливо знати: які послуги використовуються, що експонується, хто має доступ до чого, і як внутрішні служби Azure та зовнішні служби з'єднані.
З точки зору Red Team, перший крок для компрометації середовища Azure - це отримати foothold.
Зовнішня енумерація та початковий доступ
Перший крок - це, звичайно, перерахувати інформацію про орендаря, якого ви атакуєте, і спробувати отримати foothold.
На основі доменного імені можна дізнатися, чи використовує компанія Azure, отримати ідентифікатор орендаря, отримати інші дійсні домени в тому ж орендарі (якщо є) та отримати релевантну інформацію, таку як, чи увімкнено SSO, налаштування електронної пошти, дійсні електронні адреси користувачів...
Перевірте наступну сторінку, щоб дізнатися, як виконати зовнішню енумерацію:
Az - Unauthenticated Enum & Initial Entry
З цією інформацією найпоширеніші способи спробувати отримати foothold:
- OSINT: Перевірте наявність leaks у Github або будь-якій іншій відкритій платформі, яка може містити облікові дані або цікаву інформацію.
- Повторне використання паролів, leaks або 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 і macOSmsal_token_cache.json
містить облікові токени доступу та токени оновлення. Тільки в Linux і macOSservice_principal_entries.bin
і msal_token_cache.bin використовуються в Windows і зашифровані за допомогою DPAPImsal_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, які можуть призвести до foothold на наступній сторінці:
Az - Unauthenticated Enum & Initial Entry
note
Пам'ятайте, що зазвичай найгучнішою частиною енумерації є вхід, а не сама енумерація.
Інструменти Azure та Entra ID
Наступні інструменти будуть дуже корисні для повільної (щоб уникнути виявлення) або автоматичної (щоб заощадити час) енумерації як орендарів Entra ID, так і середовищ Azure:
Обхід політик доступу
.png)
У випадках, коли у вас є дійсні облікові дані, але ви не можете увійти, це деякі загальні захисти, які можуть бути на місці:
- IP whitelisting -- Вам потрібно зламати дійсний IP
- Гео обмеження -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або хоча б країни)
- Браузер -- Можливо, дозволено лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS). Дізнайтеся, яку ОС використовує жертва/компанія.
- Ви також можете спробувати зламати облікові дані Service Principal, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється
Після обходу ви можете повернутися до вашої початкової налаштування і все ще мати доступ.
Перевірте:
Az - Conditional Access Policies & MFA Bypass
Whoami
caution
Дізнайтеся, як встановити az cli, AzureAD та Az PowerShell у розділі Az - Entra ID.
Однією з перших речей, які вам потрібно знати, є хто ви (в якому середовищі ви знаходитесь):
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
Entra ID Enumeration & Privesc
За замовчуванням, будь-який користувач повинен мати достатньо прав для перерахунку таких речей, як користувачі, групи, ролі, служби... (перевірте default AzureAD permissions).
Тут ви можете знайти посібник:
Az - Entra ID (AzureAD) & Azure IAM
Перевірте Post-Exploitation tools, щоб знайти інструменти для ескалації привілеїв в Entra ID, такі як AzureHound:
Automated Post Exploitation Tools
Azure Enumeration
Якщо ви знаєте, хто ви, ви можете почати перераховувати Azure сервіси, до яких у вас є доступ.
Вам слід почати з визначення прав, які у вас є на ресурси. Для цього:
- Знайдіть ресурс, до якого у вас є доступ:
tip
Це не вимагає жодних спеціальних прав.
Команда 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"
- Знайдіть дозволи, які у вас є на ресурси, які ви можете бачити:
tip
Це не вимагає жодних спеціальних дозволів.
Спілкуючись з API https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01
, ви можете отримати дозволи, які у вас є на вказаний ресурс у resource_id
.
Отже, перевіряючи кожен з ресурсів, до яких у вас є доступ, ви можете отримати дозволи, які у вас є на них.
warning
Ви можете автоматизувати цю нумерацію, використовуючи інструмент Find_My_Az_Management_Permissions.
Перелічити дозволи з **`Microsoft.Authorization/roleAssignments/read`**
tip
Зверніть увагу, що вам потрібен дозвіл 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=2022-04-01" | 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=2022-04-01" | jq ".value"
- Інша опція - це отримати ролі, прикріплені до вас в azure. Це також вимагає дозволу
Microsoft.Authorization/roleAssignments/read
:
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>'
- Знайдіть детальні дозволи ролей, які до вас прикріплені:
Потім, щоб отримати детальний дозвіл, ви можете виконати (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=2022-04-01" | jq ".properties"
У наступному розділі ви можете знайти інформацію про найпоширеніші сервіси Azure та як їх перерахувати:
Підвищення привілеїв, пост-експлуатація та збереження
Коли ви дізнаєтеся, як структуроване середовище Azure і які сервіси використовуються, ви можете почати шукати способи підвищення привілеїв, горизонтального переміщення, виконання інших атак після експлуатації та підтримки збереження.
У наступному розділі ви можете знайти інформацію про те, як підвищити привілеї в найпоширеніших сервісах Azure:
У наступному ви можете знайти інформацію про те, як виконувати атаки після експлуатації в найпоширеніших сервісах Azure:
У наступному ви можете знайти інформацію про те, як підтримувати збереження в найпоширеніших сервісах Azure:
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.