Облачные технологии давно стали основой для бизнеса, но вместе с удобством они принесли и новые риски. Злоумышленники всё чаще нацеливаются не на отдельные устройства, а на учётные записи и системы управления доступом. Один из последних примеров - кампания группы Storm-2949, которая продемонстрировала, как целенаправленная компрометация личности может перерасти в полномасштабный захват облачной среды. Атака затронула приложения Microsoft 365, файловые хранилища и производственные ресурсы в облаке Azure.
Описание
Всё началось с социальной инженерии. Злоумышленники воспользовались функцией самостоятельного сброса пароля SSPR (Self-Service Password Reset) в Microsoft Entra ID. Они инициировали процедуру сброса от имени целевого пользователя, а затем связались с ним, притворившись сотрудником технической поддержки. Жертву убедили подтвердить запросы многофакторной аутентификации (MFA), якобы для срочной проверки учётной записи. Как только пользователь одобрял эти запросы, атакующие получали возможность сменить пароль и удалить старые способы аутентификации - номера телефонов, адреса электронной почты и привязку к Microsoft Authenticator. После этого они регистрировали собственное устройство в качестве нового метода MFA, полностью блокируя доступ законного владельца.
Storm-2949 повторили эту схему для нескольких сотрудников организации, включая IT-персонал и руководителей. Такой выбор жертв указывает на тщательное планирование и, вероятно, организованную фишинговую кампанию. После захвата учётных записей атакующие приступили к разведке каталога. Они использовали Microsoft Graph API с помощью собственного скрипта на Python, чтобы перечислить пользователей и приложения в арендаторе. Особый интерес вызывали учётные записи с привилегиями и доступом к ценным данным. Также была предпринята попытка закрепиться в системе - злоумышленники хотели добавить учётные данные к сервисному субъекту (service principal), чтобы сохранить доступ независимо от скомпрометированных пользователей. Однако эта попытка не удалась из-за недостатка прав.
Тем не менее, группа не остановилась. Используя ту же технику с SSPR, они захватили ещё три облачные учётные записи. После этого началась эксфильтрация данных из облачных хранилищ Microsoft 365. Storm-2949 нацелились на OneDrive и SharePoint, скачивая тысячи файлов за один раз через веб-интерфейс. Особое внимание уделялось документам, касающимся конфигурации VPN и процедур удалённого доступа. По оценке экспертов, это было сделано для поиска путей перемещения в локальную сеть организации.
Дальнейшие действия перешли в плоскость Azure. Скомпрометированные учётные записи обладали привилегированными ролями в системе управления доступом Azure RBAC (Azure Role-Based Access Control). Это дало атакующим доступ к нескольким подпискам. Основной целью стала производственная среда - веб-приложения Azure App Service, хранилища Azure Key Vault, учётные записи хранения и базы данных SQL. В отчёте Microsoft Threat Intelligence подробно описывается, как группа пыталась получить доступ к целевому веб-приложению, но столкнулась с ограничениями шлюза и сети. Тогда они переключились на вспомогательные веб-приложения той же экосистемы - например, обрабатывающие аутентификацию или внутренние API. Используя привилегированные разрешения, злоумышленники вызывали операцию microsoft.Web/sites/publishxml/action, которая извлекает профиль публикации приложения. Этот профиль содержит учётные данные для развёртывания через FTP, Web Deploy или консоль управления Kudu. Kudu - это встроенный административный интерфейс Azure App Services, позволяющий просматривать файловую систему, переменные окружения и выполнять команды в контексте приложения.
Хотя несколько вспомогательных приложений были скомпрометированы, главное производственное приложение оставалось недоступным. Атакующие поняли, что эти второстепенные сервисы не содержат искомых данных. Тогда они переключились на хранилище Key Vault. Одна из скомпрометированных учётных записей имела роль владельца (Owner) над определённым Key Vault. Всего за четыре минуты злоумышленники изменили конфигурацию доступа и извлекли десятки секретов, включая строки подключения к базам данных, учётные данные и многое другое. Среди этих секретов нашлись и те, что открывали доступ к главному производственному веб-приложению. После аутентификации атакующие сменили пароль приложения и начали извлекать из него данные.
Параллельно Storm-2949 расширили доступ к другим облачным ресурсам. Для доступа к серверу Azure SQL они изменили правила брандмауэра с помощью операции microsoft.sql/servers/firewallrules/write, а затем подключились к базе данных, используя учётные данные из Key Vault. После эксфильтрации данных с SQL-сервера они удалили изменённые правила - типичный приём для сокрытия следов. Аналогично были скомпрометированы учётные записи хранения Azure Storage. Атакующие изменили настройки сетевого доступа, открыв доступ только с нескольких своих IP-адресов, и использовали операцию microsoft.Storage/storageAccounts/listkeys/action для получения ключей и токенов SAS (Shared Access Signature). С помощью собственного Python-скрипта, использующего Azure SDK, они в течение нескольких дней программно скачивали большие объёмы данных.
Отдельной составляющей атаки стала компрометация виртуальных машин Azure. Злоумышленники развернули расширение VMAccess (предназначенное для восстановления доступа администратора) и создали новую локальную учётную запись администратора на целевой ВМ. Через функцию Run Command они пытались извлечь токены из метаданных Azure Instance Metadata Service, чтобы аутентифицироваться и получить секреты из Key Vault, но безуспешно - управляемому удостоверению не хватало прав. Однако сам факт показывает, как атакующие использовали гостевой уровень выполнения для расширения доступа.
Для сохранения удалённого управления и снижения видимости в системе Storm-2949 установили инструмент удалённого мониторинга ScreenConnect. Перед этим они отключили часть защитных механизмов Microsoft Defender - реального времени и мониторинга поведения. Установка маскировалась под доверенное обновление, а служба переименовывалась так, чтобы напоминать легитимные компоненты Windows. Затем были очищены журналы событий, временные файлы и история команд.
Через ScreenConnect атакующие запускали команды на нескольких устройствах: собирали информацию об операционной системе, перечисляли учётные записи и группы домена. Также велась охота за сертификатами в формате .pfx, содержащими закрытые ключи, и поиск паролей в общих файловых ресурсах. Однако, как отмечают специалисты, активность на конечных точках не принесла основной ценности - ключевые данные были украдены из облачных сервисов.
Эта атака - яркий пример того, как компрометация личности и использование легитимных функций облачных платформ позволяют обходить традиционные средства защиты. Storm-2949 не применяли вредоносное ПО или методы, характерные для локальных сетей. Вместо этого они действовали как обычные администраторы, используя штатные инструменты Azure. Для организаций, активно мигрирующих в облако, такой сценарий становится всё более реальной угрозой. Поведенческий мониторинг, охватывающий конечные точки, облачные среды и идентификационные данные, способен выявить аномалии, которые ускользают от сигнатурных методов. Как показал случай, корреляция событий из разных источников - ключ к своевременному обнаружению и реагированию.
Индикаторы компрометации
IPv4
- 176.123.4.44
- 185.241.208.243
- 91.208.197.87