Несмотря на многолетнюю борьбу, фишинг остаётся одним из наиболее эффективных инструментов злоумышленников и ключевым источником истинно положительных срабатываний в центрах управления информационной безопасностью (SOC). Атакующие постоянно ищут новые способы обмана пользователей, маскируя свои истинные намерения и наращивая возможности для противодействия обнаружению. Глобальная команда по операциям с угрозами (Global Threat Operations, GTO) компании LevelBlue постоянно отслеживает подобное поведение, анализируя эволюцию атак. Одно из последних расследований привело к обнаружению ранее невиданного, узкоспециализированного вектора атаки, способного привести к компрометации учётных записей пользователей. Этот метод злоупотребляет легитимным механизмом авторизации устройств Microsoft, известным как Device Code Flow, для кражи токенов доступа к корпоративным ресурсам, что открывает злоумышленникам путь для дальнейших атак изнутри организации.
Описание
Device Code Flow, или "поток кода устройства", представляет собой расширение протокола OAuth 2.0, описанное в RFC8628. Он был разработан для устройств с ограниченными возможностями ввода, таких как смарт-телевизоры или принтеры, которым необходимо получить доступ к защищённым ресурсам от имени пользователя. Процесс предполагает, что такое устройство запрашивает у сервера авторизации уникальный пользовательский код. Затем пользователь должен ввести этот код на другом, более функциональном устройстве (например, на компьютере или смартфоне) на специальной странице вроде microsoft.com/devicelogin, чтобы подтвердить свою личность и предоставить доступ. После успешной аутентификации устройство получает токены доступа. Эта легитимная и редко используемая в корпоративной среде процедура стала основой для изощрённой атаки.
Расследование началось с обнаружения подозрительной ссылки в электронном письме. Доменное имя было связано с платным сервисом транзакционных рассылок Mailchimp Mandrill, который злоумышленники использовали для обхода первичных почтовых фильтров. Ссылки Mandrill устроены таким образом, что конечный адрес назначения скрыт в параметре, закодированном в Base64. Расшифровка этого параметра позволила специалистам LevelBlue получить JSON-объект, содержащий финальный URL. Этот адрес вёл на фишинговый сайт, стилизованный под Adobe, который предлагал пользователям получить доступ к файлу "important_update.pdf" после прохождения процедуры аутентификации. Эксперты сообщили, что для этого использовался скомпрометированный конечный точкой перенаправления, принадлежащей одной некоммерческой организации, что позволяло атакующим генерировать валидные вредоносные ссылки.
На фишинговой странице был встроен JavaScript-код, который, после её загрузки, автоматически отправлял запрос на контролируемый злоумышленниками сервер. Тот, в свою очередь, взаимодействовал с платформой Microsoft Identity, инициируя процесс Device Code Flow. Сервер запрашивал у Microsoft код устройства, указывая в запросе идентификатор клиента (client_id), арендатора (tenant) и область разрешений (scope). Ключевая опасность заключается в том, что для успешной генерации кода не требуется никакой специфической информации о цели. В поле tenant можно указать "/common", что работает как для личных, так и для корпоративных учётных записей Microsoft. Выбор client_id также не является препятствием: атакующие могут использовать идентификаторы публичных клиентских приложений первого уровня от Microsoft, таких как Azure CLI или Microsoft Office, которые одинаковы во всех арендаторах и выглядят максимально легитимно для жертвы.
Полученный от Microsoft пользовательский код (user_code) затем отображался жертве на фишинговой странице. Скрипт предлагал пользователю скопировать код и нажать кнопку "Continue to Microsoft", после чего открывалось всплывающее окно или новая вкладка с официальной страницей microsoft.com/devicelogin. Ничего не подозревающий сотрудник, ожидая получить доступ к "важному документу", вводит код на настоящем сайте Microsoft и проходит обычную процедуру входа, возможно, с использованием многофакторной аутентификации. В этот момент он видит стандартный запрос на предоставление приложению (например, "Microsoft Office") определённых разрешений. Поскольку запрос исходит от доверенного имени, пользователь с высокой вероятностью даёт своё согласие.
Как только пользователь подтверждает доступ на сайте Microsoft, сервер атакующих, который непрерывно опрашивал конечную точку /token, получает долгожданные токены: access_token для немедленного доступа к ресурсам и, что критически важно, refresh_token для обновления сессии. Refresh token может быть действителен до 90 дней, что обеспечивает злоумышленникам устойчивый и скрытый доступ. С этого момента атакующий действует от имени скомпрометированного пользователя. В зависимости от уровня привилегий жертвы и запрошенных разрешений (scope), злоумышленник может читать и отправлять письма в Outlook, управлять группами пользователей через Microsoft Graph API, создавать каналы в Teams или редактировать страницы в SharePoint. После успешной кражи токенов фишинговый сайт перенаправляет пользователя на легитимный портал Adobe, чтобы избежать подозрений.
Эффективность этой техники высока, особенно против рядовых сотрудников. Она злоупотребляет абсолютно легитимным и редко встречающимся в бизнес-среде механизмом авторизации, что снижает бдительность. Весь процесс выглядит как стандартная процедура входа в сервисы Microsoft. Более того, существует и упрощённый вариант этой атаки, вообще не требующий фишингового сайта. Злоумышленники могут отправить целевое письмо, например, с приглашением на совещание в Teams, где в теле письма будет напрямую указан код устройства и ссылка на microsoft.com/devicelogin. Для пользователя это может выглядеть как стандартная процедура присоединения к защищённой встрече.
Для предотвращения подобных атак основная рекомендация - глобально заблокировать Device Code Flow с помощью политик условного доступа (Conditional Access Policies) в Microsoft Entra ID. Поскольку в большинстве организаций этот поток не используется в стандартных бизнес-процессах, его блокировка для всех пользователей и ресурсов является эффективной мерой. Если же его использование необходимо для каких-то специфических сценариев, следует создать исключения только для конкретных пользователей или приложений. Для обнаружения уже произошедших инцидентов специалисты по безопасности могут использовать KQL-запросы к журналам входа, фильтруя события по протоколу аутентификации "deviceCode", а также отслеживать переходы пользователей по известным URL, связанным с этим потоком. В случае подтверждённой компрометации необходимо немедленно отозвать все сеансы входа для затронутой учётной записи через Microsoft Entra ID или с помощью вызова Graph API. Эта атака наглядно демонстрирует, как злоумышленники превращают легитимные функции платформы в мощное оружие, что требует от защитников не только контроля за внешними угрозами, но и глубокого понимания и тонкой настройки внутренних механизмов безопасности.
Индикаторы компрометации
URLs
- https://adobe.safest.org/