Шпионское ПО Predator научилось обходить индикаторы записи в iOS: технический анализ Jamf Threat Labs

information security

Исследователи из Jamf Threat Labs раскрыли ранее неизвестные технические механизмы, которые использует коммерческое шпионское ПО Predator для скрытого наблюдения через камеру и микрофон на устройствах Apple iPhone, обходя встроенные в iOS индикаторы приватности. Эксперты провели реверс-инжиниринг образцов вредоносного ПО и детально описали, как оно хирургически подавляет визуальные предупреждения для пользователя.

Описание

Контекст: индикаторы записи в iOS как защита приватности

Начиная с iOS 14, Apple внедрила в статусную строку цветовые индикаторы, предупреждающие о доступе приложений к аппаратным сенсорам. Зеленая точка означает, что используется камера или камера и микрофон одновременно, а оранжевая - что активен только микрофон. Эти индикаторы управляются процессом SpringBoard (контроллером домашнего экрана и интерфейса) и не могут быть отключены легитимными приложениями. Данная функция стала важным элементом защиты от несанкционированного наблюдения.

Эволюция методов скрытности: от NoReboot к Predator

Ранее, в 2022 году, был описан метод NoReboot, при котором вредоносное ПО имитировало полное выключение устройства, скрывая весь пользовательский интерфейс, но оставляя камеру и микрофон активными. Подход Predator, разрабатываемого альянсом Intellexa/Cytrox, принципиально иной и более скрытный. Вместо симуляции выключения шпионское ПО избирательно подавляет только индикаторы записи, в то время как устройство продолжает работать в обычном режиме. Пользователь не видит тревожных сигналов и не подозревает, что за ним ведется слежка.

Технический анализ: как работает модуль HiddenDot

Ключевой компонент Predator, известный как HiddenDot, использует изящную технику обхода. Он внедряет хук (перехват) в единственный метод "_handleNewDomainData:" класса "SBSensorActivityDataProvider" внутри процесса SpringBoard. Этот метод вызывается iOS при любом изменении состояния сенсоров. Перехватив его, Predator блокирует все обновления статуса до того, как они достигнут системы отображения индикаторов.

Сердцем механизма подавления стала эксплуатация фундаментальной особенности языка Objective-C: сообщения, отправленные нулевому указателю (nil), игнорируются без ошибок. В обратном вызове хука Predator устанавливает регистр "x0", который содержит указатель "self" (на сам объект), в значение NULL (ноль). Следовательно, вызов метода превращается в "[nil _handleNewDomainData:newData]". Операция завершается молча, не выполняя никакого кода, и SpringBoard никогда не узнает об активации камеры или микрофона. Важно отметить, что один хук эффективно подавляет оба индикатора - и зеленый, и оранжевый, что делает атаку более эффективной.

Обнаруженный "мертвый код" и развитие атаки

В процессе анализа исследователи обнаружили неиспользуемую функцию, содержащую альтернативный подход. Она напрямую перехватывала методы класса "SBRecordingIndicatorManager", отвечающего за управление видимостью индикаторов. Однако этот код никогда не вызывается. По всей видимости, это более ранняя, заброшенная разработка, которая требовала двух отдельных хуков и могла вызывать конфликты с системой отображения. Более элегантное финальное решение с перехватом данных в их источнике ("SBSensorActivityDataProvider") было признано предпочтительным.

Модульная архитектура и пробелы в скрытности

Исследование подчеркивает модульную архитектуру Predator. Например, модуль VoIP-записи, перехватывающий аудио из звонков, не имеет собственного механизма подавления индикатора микрофона. Он полагается на то, что модуль HiddenDot уже активирован и выполнил свою работу. Это указывает на операционный пробел: злоумышленникам необходимо вручную активировать подавление индикаторов перед началом записи разговоров, иначе оранжевая точка выдаст присутствие шпионского ПО.

Другой модуль, CameraEnabler, использует сложную технику для обхода проверок доступа к камере. Вместо перехвата известных символов он находит целевые внутренние функции iOS путем поиска шаблонов инструкций ARM64 в памяти, что повышает устойчивость к обновлениям операционной системы. Для обхода защиты PAC (Pointer Authentication Code) модуль использует предварительно подписанные адреса возврата.

Векторы обнаружения и выводы

Для внедрения своих хуков Predator использует инъекцию кода в системные процессы, такие как SpringBoard и "mediaserverd". Следовательно, потенциальное обнаружение может основываться на мониторинге неожиданных отображений памяти или регистрации портов исключений в этих процессах. Поведенческим индикатором компрометации может служить активное использование камеры или микрофона системными службами при отсутствии соответствующих точек в статусной строке.

Это исследование впервые детально документирует технику обхода индикаторов записи в iOS, используемую Predator. Оно демонстрирует высокий уровень изощренности коммерческих шпионских решений, которые постоянно адаптируются для противодействия встроенным механизмам защиты приватности. Анализ заполняет пробелы в существующих угрозах и предоставляет специалистам по кибербезопасности ценные данные для разработки методов обнаружения подобных скрытых атак.

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

Хукированные методы

  • SBSensorActivityDataProvider._handleNewDomainData: (SpringBoard)
  • Функция по смещению шаблона в CMCapture.framework (mediaserverd)
  • AudioConverterNew (mediaserverd)
  • AudioConverterConvertComplexBuffer+52 (mediaserverd)

Целевые процессы

  • SpringBoard
  • mediaserverd

Пути к фреймворкам

  • /System/Library/PrivateFrameworks/CMCapture.framework/CMCapture
  • /System/Library/PrivateFrameworks/AudioToolboxCore.framework/AudioToolboxCore
Комментарии: 0