ARTEX в дикой природе: Storm-0940 расширяет атаки на ИТ-вендоров и производителей ПО

Источник: wiz.io•

ARTEX в дикой природе: Storm-0940 расширяет атаки на ИТ-вендоров и производителей ПО

Wiz Research отслеживает деятельность злоумышленника, использующего ARTEX и пересекающегося со Storm-0940, в отношении нескольких целевых вендоров ПО. Узнайте, как этот ИИ-агент атаковал Okta, Entra и Cognito и какие следы он оставил в логах.

В течение октября 2026 года мы выявили злоумышленника, использовавшего инструментарий, связанный с ARTEX — автономным агентом для тестирования на проникновение на базе искусственного интеллекта — для атак на различные ИТ-компании и вендоров программного обеспечения. Активность была сосредоточена на поставщиках идентификационных данных (Okta, Entra, Cognito) и злоупотреблении интеграциями с Microsoft 365. Мы зафиксировали повторяющиеся попытки обнаружить обходы аутентификации, перечислить API и получить доступ к клиентским данным (целевых вендоров) в различных средах.

Наши наблюдения пересекаются с данными Microsoft о recent report on ​​Storm-0940, субъекте, связанном с китайским государством и имеющем отношение к недавним supply-chain attack involving stolen vendor credentials and downstream Microsoft 365 tenants.

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

В этом блоге мы опишем повторяющиеся шаблоны и методологии, которые агент ARTEX применял в различных средах и облачных провайдерах, с примерами из реальных атак.

Что такое ARTEX?

ARTEX — это опенсорсный автономный фреймворк для тестирования на проникновение. Китайский разработчик опубликовал его на GitHub в июле 2026 года, и в сентябре того же года он выиграл красный командный конкурс Baidu «Agent+». На практике оператор задает цель и задачу. Затем агент-планировщик выбирает следующий шаг, рабочие агенты запускают такие инструменты, как nmap, curl и Impacket, а каждый результат подпитывает общий граф активов и находок.

Злоумышленники подхватили его в течение нескольких недель. Артефакты ARTEX всплыли в атаках на южнокорейские банки в конце сентября и в атаках на японские компании в октябре. и Zscaler впоследствии связали его с двумя отдельными субъектами. Разработчик made the tool closed-source on October 8. К тому моменту у кода было более 12 000 форков.

Повторяющийся сценарий

В исследованных средах мы наблюдали последовательную и неизменную последовательность разведки и попыток атак:

  • Составление карты приложения: загрузка пакетов JavaScript, обнаженных карт исходного кода (source maps), конфигураций времени выполнения и документации Swagger/OpenAPI для обнаружения внутренних маршрутов API и функционала приложения.

Составление карты приложения: загрузка пакетов JavaScript, обнаженных карт исходного кода (source maps), конфигураций времени выполнения и документации Swagger/OpenAPI для обнаружения внутренних маршрутов API и функционала приложения.

  • Проверка аутентификации: многократный запуск процессов входа в систему, манипуляции с обратными вызовами OAuth и параметрами состояния (state), тестирование неподписанных JWT и зондирование конечных точек, специфичных для SSO и Microsoft 365.

Проверка аутентификации: многократный запуск процессов входа в систему, манипуляции с обратными вызовами OAuth и параметрами состояния (state), тестирование неподписанных JWT и зондирование конечных точек, специфичных для SSO и Microsoft 365.

  • Атака на поставщиков идентификационных данных и процессы входа: рассылка паролей (password-spraying) по корпоративным средам Okta и Entra ID, а также атаки на внутренние и проприетарные страницы входа в приложения.

Атака на поставщиков идентификационных данных и процессы входа: рассылка паролей (password-spraying) по корпоративным средам Okta и Entra ID, а также атаки на внутренние и проприетарные страницы входа в приложения.

  • Злоупотребление восстановлением учетных записей: многократный вызов конечных точек сброса пароля, восстановления имени пользователя, активации и токенов сброса.

Злоупотребление восстановлением учетных записей: многократный вызов конечных точек сброса пароля, восстановления имени пользователя, активации и токенов сброса.

  • Проверка изоляции тенантов: регистрация учетных записей с использованием одноразовых адресов электронной почты там, где это возможно, с последующей манипуляцией предсказуемыми идентификаторами для поиска нарушений контроля доступа и несанкционированного доступа к данным между тенантами.

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

  • Адаптация к защитным механизмам: смена IP-адресов при блокировке и постоянная ротация пользовательских агентов (user agents).

Адаптация к защитным механизмам: смена IP-адресов при блокировке и постоянная ротация пользовательских агентов (user agents).

Как это выглядело в логах

Мы проанализировали эти паттерны атак с помощью логов доступа HTTP, собранных через Wiz Agentless Workload Detection, а также логов провайдеров идентификационных данных, таких как события AWS Cognito, активность входа в Entra и логи аутентификации Okta.

Таргетинг внутренних приложений

Первым шагом агента во всех наблюдаемых случаях атаки всегда было чтение самого приложения. Подобные запросы появлялись через несколько минут после первого контакта:

Вскоре после этого он начал вызывать внутренние маршруты API по их именам. Единственное место, где эти имена маршрутов появляются — это карты исходного кода, которые он только что скачал.

Восстановление учетных записей подверглось такому же обращению. Агент проверил, какие имена пользователей существуют, а затем начал бомбардировать конечные точки сброса:

Там, где он мог зарегистрироваться, он это делал, используя одноразовый почтовый ящик бесплатного сервиса временной электронной почты. Затем он немедленно пытался посмотреть чужие данные:

Перед каждым запуском фаззинга он проверял, как выглядит базовый ответ «не найдено» (not found):

Таргетинг провайдеров идентификационных данных OAuth

При зондировании потоков Microsoft OAuth агент напрямую манипулировал конечной точкой обратного вызова, внедряя сфабрикованные коды авторизации и некорректные параметры состояния, одновременно пытаясь обойти аутентификацию с помощью неподписанных JWT:

Второй токен просто декодируется в {"alg":"none"} и {"email":"test@test.com"}. Агент забросал этот пейлоад более чем на 60 вариациях маршрутов SSO всего за две минуты.

В AWS Cognito мы наблюдали шаблоны, зеркально отражающие злоупотребления функциями восстановления учетных записей, замеченные в проприетарных приложениях. Эта активность отразилась в таких событиях, как InitiateAuth, ForgotPassword и ResendConfirmationCode. Эти запросы исходили из того же набора пользовательских агентов, что и в предыдущих атаках, включая безобидно выглядящие программные клиенты вроде boto и python-urllib.

Агент также пытался напрямую создавать новые учетные записи, вызывая API AWS Cognito SignUp и перебирая при этом пул пользовательских агентов.

Рассылка паролей (Password Spraying)

Мы также отследили масштабную кампанию по рассылке паролей на многих из наблюдаемых целей. Эта активность не зависела от IDP, затрагивая как Entra, так и Okta, и демонстрировала несколько уникальных характеристик, управляемых искусственным интеллектом.

Атаки были направлены на сотни пользователей и осуществлялись высокоскоординированными залпами. Каждый залп характеризовался:

  • Выделенные пользовательские агенты: каждому залпу присваивалась уникальная строка пользовательского агента, отличная от тех, что использовались в предыдущих волнах.

Выделенные пользовательские агенты: каждому залпу присваивалась уникальная строка пользовательского агента, отличная от тех, что использовались в предыдущих волнах.

  • Точное время: медианный интервал между попытками аутентификации составлял строго одну секунду.

Точное время: медианный интервал между попытками аутентификации составлял строго одну секунду.

  • Непрерывное выполнение: отдельные залпы длились от 20 до 60 минут.

Непрерывное выполнение: отдельные залпы длились от 20 до 60 минут.

  • Таргетинг на основе ролей: агент был сосредоточен в основном на учетных записях, принадлежащих инженерам-программистам.

Таргетинг на основе ролей: агент был сосредоточен в основном на учетных записях, принадлежащих инженерам-программистам.

  • Повторные попытки: некоторые отдельные пользователи подвергались более чем десятку попыток входа в систему.

Повторные попытки: некоторые отдельные пользователи подвергались более чем десятку попыток входа в систему.

Неумолимый по замыслу

Активность была непрерывной и в высокой степени автоматизированной. Некоторые сеансы длились 24–30 часов, а при блокировке IP-адресов новые адреса появлялись в течение нескольких минут.

В ходе одного из сеансов агент перебирал дюжину вариаций одной и той же конечной точки SSO (/sso, /sso/, /sso/login, /sso/jwt, /jwt/sso…), каждую с тем же поддельным токеном и без него, со скоростью около одного запроса в секунду. Когда страница входа начинала ограничивать частоту запросов, агент просто переключался на другую конечную точку на том же хосте и продолжал работу.

Мы зафиксировали более 15 различных строк user-agent у пострадавших:

  • Клиенты на базе Python и curl;

Клиенты на базе Python и curl;

  • Усеченные строки Chrome и headless-браузеры с кажущимися случайными номерами версий.

Усеченные строки Chrome и headless-браузеры с кажущимися случайными версиями.

  • Более специфичные, самоописывающиеся идентификаторы, такие как ReconProbe/1.0.

Более специфичные, самоописывающиеся идентификаторы, такие как ReconProbe/1.0.

Это разнообразие в сочетании с неизменными паттернами атак и индикаторами, связанными с ARTEX, помогло нам связать эту активность в различных организациях.

Хотя большинство этих попыток потерпели неудачу, истинная угроза кроется в методологии. Если злоумышленник-человек ограничен во времени и подвержен усталости, то автономный агент не сдается. Он просто продолжает перебор, пока не найдет хотя бы одно слабое место.

Ярко выраженная агентная атака

Ни одна из наблюдавшихся отдельных техник не является новой. Тем не менее, в совокупности они раскрывают агента, стоящего за этой атакой. Есть несколько четких признаков:

  • Шаги выполнялись автоматически: когда регистрация была открытой, агент регистрировался с помощью одноразового почтового ящика, подтверждал учетную запись и немедленно запрашивал данные другой компании.

Шаги выполнялись автоматически: когда регистрация была открытой, агент регистрировался с помощью одноразового почтового ящика, подтверждал учетную запись и немедленно запрашивал данные другой компании.

  • Каждый автоматический шаг использовал результат предыдущего: внутренние маршруты API вызываются по имени через несколько минут после извлечения исходных карт (source maps)

Каждый автоматический шаг использовал результат предыдущего: внутренние маршруты API вызываются по имени через несколько минут после извлечения исходных карт (source maps)

  • Адаптация происходила автоматически: когда страница входа начинала ограничивать частоту запросов, агент переходил на другую конечную точку на том же хосте. Когда IP-адрес блокировался, новый появлялся в течение нескольких минут.

Адаптация происходила автоматически: когда страница входа начинала ограничивать частоту запросов, агент переходил на другую конечную точку на том же хосте. Когда IP-адрес блокировался, новый появлялся в течение нескольких минут.

  • Не все атаки были логичными: злоумышленник-человек такого уровня квалификации вряд ли станет тратить время на тестирование общих полезных нагрузок на тщательно проверяемых потоках Microsoft OAuth.

Не все атаки были логичными: злоумышленник-человек такого уровня квалификации вряд ли станет тратить время на тестирование общих полезных нагрузок на тщательно проверяемых потоках Microsoft OAuth.

Опережая атаки на базе ИИ

Поскольку ИИ делает разведку и попытки эксплойтов более быстрыми и масштабируемыми, защитникам необходимо сократить разрыв между обнаружением уязвимости и ее устранением. Узнайте больше о том, как подготовиться с помощью фреймворка Wiz AI Threat Readiness Framework.

Кроме того, инструмент Wiz AI Red Agent непрерывно и автономно проводит наступательные тесты, помогая снизить риски со скоростью ИИ и уравнять шансы.

Клиенты Wiz могут ознакомиться с оповещением нашего Центра разведки угроз: ARTEX: Agentic AI Campaign Enables Cloud and Supply Chain Compromise

Существующие правила обнаружения также могут эффективно выявлять эту активность, например:

  • Numerous Failed Login Attempts To Multiple Users Followed By A Successful Login To Admin User

Numerous Failed Login Attempts To Multiple Users Followed By A Successful Login To Admin User

  • Potential Password Spray Attack From Single IP

Potential Password Spray Attack From Single IP

  • Okta Users Password Spray

Okta Users Password Spray

Неустанное поведение также создает предсказуемые паттерны, которые могут обнаруживаться с помощью таких правил, как «Unusual Mass Access Denied Activity» (Необычная массовая активность с отказом в доступе).

Индикаторы компрометации

Примечание: многие из предоставленных пользовательских агентов (user agents) не являются уникальными для этого субъекта и, как ожидается, будут давать много ложноположительных срабатываний при самостоятельной охоте за угрозами.

О чём эта статья

Ещё в разделе «Кибербезопасность»

Все →

Ещё от Wiz