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

This commit is contained in:
Translator
2025-01-25 14:38:51 +00:00
parent c41c319ff5
commit f34ce2b2d6
5 changed files with 327 additions and 235 deletions

View File

@@ -4,80 +4,86 @@
## Основна інформація
Дізнайтеся основи Azure та Entra ID на наступній сторінці:
{{#ref}}
az-basic-information/
{{#endref}}
## Методологія Azure Pentester/Red Team
Щоб провести аудит середовища AZURE, дуже важливо знати: які **послуги використовуються**, що **виставлено на показ**, хто має **доступ** до чого, і як внутрішні служби Azure та **зовнішні служби** з'єднані.
Для аудиту середовища AZURE дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні служби Azure та **зовнішні служби** з'єднані.
З точки зору Red Team, **перший крок для компрометації середовища Azure** - це отримати деякі **облікові дані** для Azure AD. Ось кілька ідей, як це зробити:
З точки зору Red Team, **перший крок до компрометації середовища Azure** - це отримати **foothold**.
- **Витоки** в github (або подібних) - OSINT
- **Соціальна** інженерія
- Повторне використання **паролів** (витоки паролів)
- Вразливості в Azure-Hosted Applications
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) з доступом до метаданих
- **Читання локальних файлів**
- `/home/USERNAME/.azure`
- `C:\Users\USERNAME\.azure`
- Файл **`accessTokens.json`** в `az cli` до 2.30 - січень 2022 - зберігав **токени доступу у відкритому тексті**
- Файл **`azureProfile.json`** містить **інформацію** про увійшого користувача.
- **`az logout`** видаляє токен.
- Старі версії **`Az PowerShell`** зберігали **токени доступу** у **відкритому** тексті в **`TokenCache.dat`**. Він також зберігає **ServicePrincipalSecret** у **відкритому** тексті в **`AzureRmContext.json`**. Команда **`Save-AzContext`** може бути використана для **зберігання** **токенів**.\
Використовуйте `Disconnect-AzAccount`, щоб видалити їх.
- 3-ті сторони **зламані**
- **Внутрішній** співробітник
- [**Звичайна фішинг**](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 **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
### Зовнішня енумерація та початковий доступ
Навіть якщо ви **не зламали жодного користувача** всередині Azure-орендаря, який ви атакуєте, ви можете **зібрати деяку інформацію** з нього:
Перший крок - це, звичайно, перерахувати інформацію про орендаря, якого ви атакуєте, і спробувати отримати foothold.
На основі доменного імені можна дізнатися, **чи використовує компанія Azure**, отримати **ідентифікатор орендаря**, отримати інші **дійсні домени** в тому ж орендарі (якщо є) та отримати **релевантну інформацію**, таку як чи увімкнено SSO, налаштування електронної пошти, дійсні електронні адреси користувачів...
Перегляньте наступну сторінку, щоб дізнатися, як виконати **зовнішню енумерацію**:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> Після того, як ви змогли отримати облікові дані, вам потрібно знати, **кому належать ці облікові дані**, і **до чого вони мають доступ**, тому вам потрібно виконати деяку базову енумерацію:
## Базова енумерація
З цією інформацією найпоширеніші способи спробувати отримати foothold:
- **OSINT**: Перевірте наявність **leaks** у Github або будь-якій іншій відкритій платформі, яка може містити **облікові дані** або цікаву інформацію.
- Повторне використання **паролів**, leaks або [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
- [**Серверний запит підробки**](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) можуть знайти цю інформацію):
- Всередині **`<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/` (хоча вміст файлів порожній і марний)
> [!NOTE]
> Пам'ятайте, що **найгучніша** частина енумерації - це **вхід**, а не сама енумерація.
> Пам'ятайте, що зазвичай **найгучнішою** частиною енумерації є **вхід**, а не сама енумерація.
### SSRF
### Інструменти Azure та Entra ID
Якщо ви знайшли SSRF на машині всередині Azure, перевірте цю сторінку на трюки:
Наступні інструменти будуть дуже корисні для повільної (щоб уникнути виявлення) або автоматичної (щоб заощадити час) енумерації як орендарів Entra ID, так і середовищ Azure:
{{#ref}}
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
az-enumeration-tools.md
{{#endref}}
### Обхід умов входу
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
У випадках, коли у вас є деякі дійсні облікові дані, але ви не можете увійти, ось кілька загальних захистів, які можуть бути на місці:
У випадках, коли у вас є дійсні облікові дані, але ви не можете увійти, це деякі загальні захисти, які можуть бути на місці:
- **IP-білий список** -- Вам потрібно зламати дійсний IP
- **Гео обмеження** -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або країни принаймні)
- **Браузер** -- Можливо, лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS) дозволений. Дізнайтеся, яку ОС використовує жертва/компанія.
- Ви також можете спробувати **зламати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється.
- **Гео обмеження** -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або хоча б з тієї ж країни)
- **Браузер** -- Можливо, дозволено лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS). Дізнайтеся, яку ОС використовує жертва/компанія.
- Ви також можете спробувати **зламати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється
Після обходу ви можете повернутися до вашої початкової налаштування і все ще мати доступ.
### Захоплення піддомену
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
### Whoami
> [!CAUTION]
> Дізнайтеся, **як встановити** az cli, AzureAD та Az PowerShell у розділі [**Az - Entra ID**](az-services/az-azuread.md).
Одне з перших, що вам потрібно знати, це **хто ви** (в якому середовищі ви знаходитесь):
Однією з перших речей, які вам потрібно знати, є **хто ви** (в якому середовищі ви знаходитесь):
{{#tabs }}
{{#tab name="az cli" }}
@@ -91,16 +97,7 @@ az account management-group list #Not allowed by default
```
{{#endtab }}
{{#tab name="AzureAD" }}
```bash
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
{{#tab name="Az" }}
```bash
# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
@@ -110,43 +107,79 @@ Get-AzContext -ListAvailable
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup
# Enumerate all resources visible to the current user
Get-AzResource
# Enumerate all Azure RBAC role assignments
Get-AzRoleAssignment # For all users
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
```
{{#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 }}
> [!CAUTION]
> Одна з найважливіших команд для перерахунку Azure - це **`Get-AzResource`** з Az PowerShell, оскільки вона дозволяє вам **дізнатися, які ресурси ваш поточний користувач може бачити**.
>
> Ви можете отримати ту ж інформацію в **веб-консолі**, перейшовши за посиланням [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) або шукаючи "Усі ресурси".
### Entra ID Enumeration
### Entra ID Enumeration & Privilege Escalation
За замовчуванням будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби-принципали... (перевірте [стандартні дозволи AzureAD](az-basic-information/index.html#default-user-permissions)).\
За замовчуванням, будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби... (перевірте [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
Тут ви можете знайти посібник:
{{#ref}}
az-services/az-azuread.md
{{#endref}}
> [!NOTE]
> Тепер, коли ви **маєте деяку інформацію про свої облікові дані** (і якщо ви команда червоного кольору, сподіваємося, ви **не були виявлені**). Час з'ясувати, які сервіси використовуються в середовищі.\
> У наступному розділі ви можете перевірити кілька способів **перерахувати деякі загальні сервіси.**
Перевірте **Post-Exploitation tools**, щоб знайти інструменти для ескалації привілеїв в Entra ID, такі як **AzureHound:**
## App Service SCM
{{#ref}}
az-enumeration-tools.md#automated-post-exploitation-tools
{{#endref}}
Консоль Kudu для входу в 'контейнер' App Service.
## Webshell
### Enumerate Azure Services
Використовуйте portal.azure.com і виберіть оболонку, або використовуйте shell.azure.com для bash або powershell. 'Диск' цієї оболонки зберігається як файл зображення в обліковому записі зберігання.
Якщо ви знаєте, хто ви, ви можете почати перераховувати **Azure сервіси, до яких у вас є доступ**.
## Azure DevOps
Команда Az PowerShell **`Get-AzResource`** дозволяє вам **дізнатися про ресурси, які ваш поточний користувач може бачити**.
Azure DevOps відокремлений від Azure. Він має репозиторії, конвеєри (yaml або реліз), дошки, вікі та інше. Групи змінних використовуються для зберігання значень змінних і секретів.
Більше того, ви можете отримати ту ж інформацію в **веб-консолі**, перейшовши за [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`**
У наступному розділі ви можете знайти інформацію про найпоширеніші Azure сервіси та як їх перерахувати:
{{#ref}}
az-services/
{{#endref}}
### Privilege Escalation, Post-Exploitation & Persistence in Azure Services
Якщо ви знаєте, як структуроване середовище Azure і які сервіси використовуються, ви можете почати шукати способи **ескалації привілеїв, бічного переміщення, виконання інших атак після експлуатації та підтримки стійкості**.
У наступному розділі ви можете знайти інформацію про те, як ескалувати привілеї в найпоширеніших Azure сервісах:
{{#ref}}
az-privilege-escalation/
{{#endref}}
У наступному ви можете знайти інформацію про те, як виконувати атаки після експлуатації в найпоширеніших Azure сервісах:
{{#ref}}
az-post-exploitation/
{{#endref}}
У наступному ви можете знайти інформацію про те, як підтримувати стійкість у найпоширеніших Azure сервісах:
{{#ref}}
az-persistence/
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}