Исследования GReAT

Coruna: фреймворк из «Операции Триангуляция»

Введение

4 марта 2026 года компании Google и iVerify опубликовали отчеты о технически сложном наборе эксплойтов для компрометации устройств Apple iPhone. По данным Google, этот инструментарий впервые был замечен в целевых атаках, организованных клиентом неназванного поставщика шпионского ПО. Позднее набор использовался другими злоумышленниками в атаках типа watering hole в Украине, а также в финансово мотивированных кампаниях в Китае. Кроме того, исследователи обнаружили отладочную версию набора, анализ которой выявил внутренние имена эксплойтов и авторское название фреймворка — Coruna. В результате исследования выяснилось, что фреймворк эксплуатирует ряд ранее исправленных уязвимостей, в том числе CVE-2023-32434 и CVE-2023-38606. Эти две уязвимости заслуживают особого внимания, так как изначально они использовались в качестве уязвимостей нулевого дня в «Операции Триангуляция».

«Операция Триангуляция» — это сложная APT-кампания, направленная на мобильные устройства на базе iOS. Мы обнаружили ее в ходе мониторинга сетевого трафика в нашей собственной корпоративной сети Wi-Fi, когда заметили подозрительную активность, исходящую от iOS-смартфонов. В процессе расследования выяснилось, что в этой кампании был задействован сложный шпионский имплант и множество эксплойтов нулевого дня. Расследование заняло более полугода, в течение которого мы публиковали наши находки, связанные с этой атакой. Эксперты GReAT «Лаборатории Касперского» также представили результаты своего расследования на 37-й конференции Chaos Communication Congress (37C3).

Полное описание уязвимостей CVE-2023-32434 и CVE-2023-38606 уже давно стало достоянием общественности, благодаря чему сторонние исследователи смогли разработать собственные эксплойты, не имея доступа к исходному коду «Операции Триангуляция». Несмотря на это, мы решили провести тщательный анализ эксплойтов из состава фреймворка Coruna. Так как некоторые ссылки для распространения набора эксплойтов, упомянутые в отчете Google, оставались активными на момент его публикации, нам удалось собрать, расшифровать и изучить все компоненты Coruna.

В ходе анализа мы обнаружили, что эксплойт для уязвимостей ядра CVE-2023-32434 и CVE-2023-38606, входящий в состав Coruna, фактически является обновленной версией того же самого эксплойта, который применялся в «Операции Триангуляция». Ниже представлены высокоуровневые схемы обеих цепочек атак. Эксплойт, о котором идет речь, выделен красной рамкой.

Цепочка атаки «Операции Триангуляция» (упрощенная)

Цепочка атаки Coruna (упрощенная)

Цепочка атаки Coruna (упрощенная)

Более того, в составе Coruna мы нашли еще четыре дополнительных эксплойта уровня ядра, отсутствовавшие в «Операции Триангуляция» — причем два из них были разработаны уже после обнаружения этой кампании. Все упомянутые эксплойты построены на базе единого фреймворка и содержат общий код. Сходства в коде эксплойтов уровня ядра также прослеживаются и в других компонентах Coruna. Такие находки позволяют заключить, что этот набор эксплойтов был не составлен из разрозненных частей, а спроектирован единым образом. Мы предполагаем, что перед нами обновленная версия того же фреймворка, который — как минимум частично — применялся в «Операции Триангуляция».

Техническая информация

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

Safari

Эксплуатация начинается со стейджера, который собирает цифровой отпечаток браузера, после чего выбирает и запускает соответствующие эксплойты для удаленного выполнения кода (RCE) и обхода механизма проверки указателей (PAC) в зависимости от версии браузера. Он также содержит URL-адрес зашифрованного файла с данными обо всех доступных пакетах эксплойтов и других компонентов. Кроме того, в стейджер включен 256-битный ключ для расшифровки этого файла. Эти URL и ключ передаются вредоносной нагрузке, встроенной в эксплойты PAC.

Вредоносная нагрузка

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

Сначала загруженный файл расшифровывается с помощью потокового шифра ChaCha20. На выходе получается контейнер с магическим числом 0xBEDF00D, содержащий сжатые при помощи LZMA данные.

Формат файла для хранения сжатых данных, используемый набором эксплойтов

Смещение Поле
0x00 Магическое число (0xBEDF00D)
0x04 Размер распакованных данных
0x08 Сжатые данные LZMA

Распакованные данные представляют собой очередной контейнер с магическим числом 0xF00DBEEF. Этот формат используется набором эксплойтов для хранения и получения файлов по их идентификаторам.

Формат хранения файлов, используемый набором эксплойтов

Смещение Поле
0x00 Магическое число (0xF00DBEEF)
0x04 Количество записей
0x08 Запись[0].Идентификатор файла
0x0C Запись[0].Статус
0x10 Запись[0].Смещение файла
0x14 Запись[0].Размер файла

Описание всех возможных значений идентификаторов файлов представлено ниже. На этапе сбора вредоносной нагрузкой сведений обо всех доступных пакетах в этом контейнере находится только один объект с идентификатором 0x70000.

Это и есть файл с данными обо всех доступных пакетах, который начинается с магического значения 0x12345678. Набор эксплойтов использует этот формат для получения URL-адресов и ключей расшифровки для дополнительных загружаемых компонентов.

Формат хранения сведений о пакетах, используемый набором эксплойтов

Смещение Поле
0x00 Магическое число (0x12345678)
0x04 Флаги
0x08 Путь к директории
0x108 Количество записей
0x10C Запись[0].Идентификатор пакета
0x110 Запись[0].Ключ ChaCha20
0x130 Запись[0].Имя файла

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

  • 0xF2 — эксплойт для ARM64;
  • 0xF3 — эксплойт для ARM64E;
  • 0xA2 — загрузчик Mach-O для ARM64;
  • 0xA3 — загрузчик Mach-O для ARM64E;
  • 2 — имплант для ARM64;
  • 0xE2 — имплант для ARM64E.

Код вредоносной нагрузки также поддерживает дополнительные типы пакетов, например 0xF1 — эксплойт для устаревших устройств ARM, не поддерживающих 64-битную архитектуру. Примечательно, что сами файлы этих эксплойтов отсутствуют.

Остальные байты идентификатора пакета указывают на поддерживаемую версию прошивки и поколение процессора.

Некоторые обнаруженные идентификаторы пакетов (с уникальным содержимым)

Идентификатор пакета Описание
0xF3300000 Эксплойт ядра (iOS < 14.0 beta 7) и другие компоненты
0xF3400000 Эксплойт ядра (iOS < 14.7) и другие компоненты
0xF3700000 Эксплойт ядра (iOS < 16.5 beta 4) и другие компоненты
0xF3800000 Эксплойт ядра (iOS < 16.6 beta 5) и другие компоненты
0xF3900000 Эксплойт ядра (iOS < 17.2) и другие компоненты
0xA3030000 Загрузчик Mach-O (iOS 16.X) (A13 — A16)
0xA3050000 Загрузчик Mach-O (iOS 16.0 — 16.4)

Файлы внутри этих пакетов также представлены в зашифрованных и сжатых контейнерах 0xF00DBEEF, однако в данном случае сжатие не является обязательным: его наличие определяется вторым битом в поле флагов. Разные пакеты содержат разные наборы файлов. Описание всех возможных идентификаторов файлов приведено в таблице ниже.

Обнаруженные идентификаторы файлов

Идентификатор файла Описание
0x10000 Имплант
0x50000 Загрузчик Mach-O (используется по умолчанию)
0x70000 Список дополнительных компонентов
0x70005 Конфигурация модуля запуска
0x80000 Модуль запуска в пакетах 0xF2/0xF3 либо загрузчик Mach-O в пакетах 0xA2/0xA3
0x90000 Эксплойт уровня ядра
0x90001 Эксплойт уровня ядра (для загрузчика Mach-O)
0xA0000 Утилита очистки логов
0xA0001 Компонент загрузчика Mach-O
0xA0002 Компонент загрузчика Mach-O
0xF0000 Стейджер RPC

После загрузки необходимых компонентов вредоносная нагрузка инициирует выполнение эксплойтов уровня ядра, загрузчиков Mach-O и модуля запуска вредоносного ПО. Подходящий загрузчик Mach-O выбирается на основе версии прошивки, модели процессора и наличия разрешения iokit-open-service.

Эксплойты уровня ядра

Мы проанализировали все пять эксплойтов уровня ядра из этого набора и установили, что один из них является обновленной версией эксплойта, обнаруженного в «Операции Триангуляция». В нем зафиксировано множество точечных изменений, наиболее значимыми из которых являются следующие.

  • Код учитывает большее количество значений из строк версии XNU, что повысило точность определения версии.
  • Добавлена проверка для iOS 17.2. Мы предполагаем, что это была самая актуальная версия системы на момент разработки эксплойта (выпущена в декабре 2023 года).
  • Добавлены проверки для более новых процессоров Apple: A17, M3, M3 Pro и M3 Max (выпущены осенью 2023 года).
  • Добавлена проверка для iOS 16.5 beta 4. В этой версии появилось исправление эксплойта, выпущенное Apple после нашего обращения.

Зачем эксплойт проверяет наличие iOS 17.2 и более новых процессоров, если целевые уязвимости были исправлены еще в версии iOS 16.5 beta 4? Ответ кроется в структуре других эксплойтов. Все они основаны на едином исходном коде — разница лишь в эксплуатируемых уязвимостях. Следовательно, эти проверки были внедрены для обеспечения совместимости с более новыми эксплойтами и появились в старой версии в результате рекомпиляции.

Модуль запуска

Модуль запуска управляет всеми операциями на этапе пост-эксплуатации. Он задействует эксплойт уровня ядра и предоставляемый им интерфейс. Поскольку в процессе работы эксплойт создает специальные объекты ядра, через которые можно считывать память ядра и записывать в нее, модуль запуска повторно использует эти объекты без повторной инициализации всего цикла эксплуатации уязвимостей. Модуль запуска очищает артефакты эксплойтов, извлекает имя процесса для инъекции из файла конфигурации с магическим числом 0xDEADD00F, внедряет стейджер в целевой процесс, использует его для самозапуска, а затем активирует имплант.

Выводы

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

Coruna: фреймворк из «Операции Триангуляция»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

Продолжение операции «Форумный тролль»: российских политологов атакуют при помощи отчетов о плагиате

Эксперты GReAT «Лаборатории Касперского» обнаружили новую волну кибератак APT-группы «Форумный тролль», нацеленную на российских ученых-политологов, доставляющую на устройства фреймворк Tuoni.