Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-26 10:44:57 +00:00
parent f34ce2b2d6
commit 83b77b4aa9
3 changed files with 97 additions and 31 deletions

View File

@@ -14,11 +14,11 @@ az-basic-information/
Для аудиту середовища AZURE дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні служби Azure та **зовнішні служби** з'єднані.
З точки зору Red Team, **перший крок до компрометації середовища Azure** - це отримати **foothold**.
З точки зору Red Team, **перший крок до компрометації середовища Azure** - це отримати **переправу**.
### Зовнішня енумерація та початковий доступ
Перший крок - це, звичайно, перерахувати інформацію про орендаря, якого ви атакуєте, і спробувати отримати foothold.
Перший крок - це, звичайно, перерахувати інформацію про орендаря, якого ви атакуєте, і спробувати отримати переправу.
На основі доменного імені можна дізнатися, **чи використовує компанія Azure**, отримати **ідентифікатор орендаря**, отримати інші **дійсні домени** в тому ж орендарі (якщо є) та отримати **релевантну інформацію**, таку як чи увімкнено SSO, налаштування електронної пошти, дійсні електронні адреси користувачів...
@@ -28,31 +28,38 @@ az-basic-information/
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
З цією інформацією найпоширеніші способи спробувати отримати foothold:
- **OSINT**: Перевірте наявність **leaks** у Github або будь-якій іншій відкритій платформі, яка може містити **облікові дані** або цікаву інформацію.
- Повторне використання **паролів**, leaks або [password spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
З цією інформацією найпоширеніші способи спробувати отримати переправу:
- **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) з доступом до метаданих
- Порушення з боку третіх осіб
- Вразливості в додатках, розміщених в 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/)
- Якщо ноутбук розробника зламано ([WinPEAS і LinPEAS](https://github.com/peass-ng/PEASS-ng) можуть знайти цю інформацію):
- **Інші неправильні налаштування служб Azure**
- Якщо комп'ютер розробника скомпрометовано ([WinPEAS і LinPEAS](https://github.com/peass-ng/PEASS-ng) можуть знайти цю інформацію):
- Всередині **`<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 запитів
- **`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/` (хоча вміст файлів порожній і марний)
- Можна перевірити, чи використовувався Az PowerShell у Linux і macOS, перевіривши, чи існує `$HOME/.local/share/.IdentityService/` (хоча вміст файлів порожній і марний)
Знайдіть **інші неправильні налаштування служб Azure**, які можуть призвести до переправи, на наступній сторінці:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> Пам'ятайте, що зазвичай **найгучнішою** частиною енумерації є **вхід**, а не сама енумерація.
@@ -71,10 +78,10 @@ az-enumeration-tools.md
У випадках, коли у вас є дійсні облікові дані, але ви не можете увійти, це деякі загальні захисти, які можуть бути на місці:
- **IP-білий список** -- Вам потрібно зламати дійсний IP
- **Гео обмеження** -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або хоча б з тієї ж країни)
- **Браузер** -- Можливо, дозволено лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS). Дізнайтеся, яку ОС використовує жертва/компанія.
- Ви також можете спробувати **зламати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється
- **IP-білий список** -- Вам потрібно скомпрометувати дійсний IP
- **Геообмеження** -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або хоча б з тієї ж країни)
- **Браузер** -- Можливо, лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS) дозволено. Дізнайтеся, яку ОС використовує жертва/компанія.
- Ви також можете спробувати **скомпрометувати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється
Після обходу ви можете повернутися до вашої початкової налаштування і все ще мати доступ.
@@ -83,7 +90,7 @@ az-enumeration-tools.md
> [!CAUTION]
> Дізнайтеся, **як встановити** az cli, AzureAD та Az PowerShell у розділі [**Az - Entra ID**](az-services/az-azuread.md).
Однією з перших речей, які вам потрібно знати, є **хто ви** (в якому середовищі ви знаходитесь):
Одне з перших, що вам потрібно знати, це **хто ви** (в якому середовищі ви знаходитесь):
{{#tabs }}
{{#tab name="az cli" }}
@@ -128,55 +135,74 @@ Get-AzureADTenantDetail
{{#endtabs }}
### Entra ID Enumeration & Privilege Escalation
### Перерахунок Entra ID та ескалація привілеїв
За замовчуванням, будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби... (перевірте [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
За замовчуванням будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби... (перевірте [стандартні дозволи AzureAD](az-basic-information/index.html#default-user-permissions)).\
Тут ви можете знайти посібник:
{{#ref}}
az-services/az-azuread.md
{{#endref}}
Перевірте **Post-Exploitation tools**, щоб знайти інструменти для ескалації привілеїв в Entra ID, такі як **AzureHound:**
Перевірте **інструменти пост-експлуатації**, щоб знайти інструменти для ескалації привілеїв в Entra ID, такі як **AzureHound:**
{{#ref}}
az-enumeration-tools.md#automated-post-exploitation-tools
{{#endref}}
### Enumerate Azure Services
### Перерахунок служб Azure
Якщо ви знаєте, хто ви, ви можете почати перераховувати **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/<subscription-id>/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/<subscription-id>/resources?api-version=2021-04-01"`
Крім того, з достатніми правами, роль **`Get-AzRoleAssignment`** може бути використана для **перерахунку всіх ролей** в підписці або прав на конкретний ресурс, вказуючи його, як у: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**
2. **Знайдіть дозволи, які у вас є на ресурси, до яких у вас є доступ, і знайдіть ролі, призначені вам**:
У наступному розділі ви можете знайти інформацію про найпоширеніші Azure сервіси та як їх перерахувати:
Зверніть увагу, що вам потрібен дозвіл **`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/<Scope>/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 "<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}}
### Privilege Escalation, Post-Exploitation & Persistence in Azure Services
### Ескалація привілеїв, пост-експлуатація та збереження в службах Azure
Якщо ви знаєте, як структуроване середовище Azure і які сервіси використовуються, ви можете почати шукати способи **ескалації привілеїв, бічного переміщення, виконання інших атак після експлуатації та підтримки стійкості**.
Коли ви знаєте, як структуроване середовище Azure і які служби використовуються, ви можете почати шукати способи **ескалації привілеїв, бічного переміщення, виконання інших атак пост-експлуатації та підтримки збереження**.
У наступному розділі ви можете знайти інформацію про те, як ескалувати привілеї в найпоширеніших Azure сервісах:
У наступному розділі ви можете знайти інформацію про те, як ескалувати привілеї в найпоширеніших службах Azure:
{{#ref}}
az-privilege-escalation/
{{#endref}}
У наступному ви можете знайти інформацію про те, як виконувати атаки після експлуатації в найпоширеніших Azure сервісах:
У наступному ви можете знайти інформацію про те, як виконувати атаки пост-експлуатації в найпоширеніших службах Azure:
{{#ref}}
az-post-exploitation/
{{#endref}}
У наступному ви можете знайти інформацію про те, як підтримувати стійкість у найпоширеніших Azure сервісах:
У наступному ви можете знайти інформацію про те, як підтримувати збереження в найпоширеніших службах Azure:
{{#ref}}
az-persistence/

View File

@@ -1 +0,0 @@
# Az - Підвищення Привілеїв

View File

@@ -0,0 +1,41 @@
# Az - Storage Unauth
{{#include ../../../banners/hacktricks-training.md}}
## Storage Unauth
Для отримання додаткової інформації про зберігання, перегляньте:
{{#ref}}
../az-services/az-storage.md
{{#endref}}
### Open Storage
Ви можете виявити відкриті сховища за допомогою інструменту, такого як [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1), який використовуватиме файл **`Microburst/Misc/permutations.txt`** для генерації перестановок (дуже простих), щоб спробувати **знайти відкриті облікові записи зберігання**.
```bash
Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]
# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json
```
Ви також можете використовувати метод з [**MicroBust**](https://github.com/NetSPI/MicroBurst) для досягнення цієї мети. Ця функція буде шукати базову доменну назву (та кілька пермутацій) у кількох **azure domains** (включаючи домени зберігання):
```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
```
### SAS URLs
_**Спільний доступ до підпису**_ (SAS) URL - це URL, який **надає доступ** до певної частини облікового запису зберігання (може бути повний контейнер, файл...) з певними дозволами (читання, запис...) на ресурси. Якщо ви знайдете один з витоків, ви зможете отримати доступ до чутливої інформації, вони виглядають так (це для доступу до контейнера, якщо б це було просто надання доступу до файлу, шлях URL також міститиме цей файл):
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
Використовуйте [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/), щоб отримати доступ до даних
{{#include ../../../banners/hacktricks-training.md}}