Исследователи обнаружили шпионское ПО, умеющее скрывать от владельца iPhone факт слежки

Оно отключает цветные точки-индикаторы в строке состояния

3 мин.
Исследователи обнаружили шпионское ПО, умеющее скрывать от владельца iPhone факт слежки

В iPhone давно встроена простая защита: когда приложение включает камеру — на экране загорается зелёная точка, когда слушает через микрофон — оранжевая. Отключить их нельзя. Точнее, нельзя было, пока не появился Predator.

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

Откуда взялись эти точки

Apple ввела оранжевую и зелёную точки в iOS 14 в 2020 году. Ими управляет системный процесс SpringBoard — тот самый, который отвечает за домашний экран и весь интерфейс iPhone. Обычное приложение физически не может их отключить: это сделано намеренно, чтобы пользователь всегда знал, когда за ним наблюдают.

Авторы исследования — специалисты Нир Аврам и Ху Кэ — сразу оговариваются: они не нашли новую дыру в iOS. Они объясняют, как ведёт себя уже установленный шпион на уже взломанном смартфоне. Попасть на устройство Predator может только через так называемые эксплойты нулевого дня — секретные уязвимости, о которых Apple сама ещё не знает. Их покупают или разрабатывают специально. Стоит это огромных денег, поэтому такое оружие применяют государственные структуры и спецслужбы, а не обычные мошенники.

Чем Predator отличается от других шпионов

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

Внутри Predator есть модуль с говорящим названием HiddenDot. Именно его задача не дать SpringBoard нарисовать точку на экране.

Работает это так. Каждый раз, когда iOS хочет показать индикатор — например, потому что микрофон только что включился, — она вызывает внутреннюю функцию с длинным техническим названием SBSensorActivityDataProvider._handleNewDomainData:. Это сигнал: «эй, SpringBoard, обнови иконку в строке состояния». HiddenDot перехватывает именно этот момент.

Трюк элегантный. В языке программирования Objective-C, на котором написана iOS, есть особенность: если отправить команду нулевому объекту (то есть объекту, которого не существует) система просто проигнорирует её и не выдаст никакой ошибки. HiddenDot в нужный момент подменяет адрес получателя на ноль. SpringBoard пытается обновить индикатор, но команда уходит в никуда. Точка не появляется.

Самое важное: этот один-единственный перехват гасит сразу оба индикатора — и зелёный (камера), и оранжевый (микрофон). Дело в том, что функция SBSensorActivityDataProvider собирает данные обо всех датчиках в одном месте, до того как они попадают в интерфейс. Одна ловушка — и пользователь полностью слеп.

Попутно исследователи нашли в коде «мёртвую» функцию — CSWatcherSpawner::TestHooker(). Она написана, но нигде не используется. В ней — другой способ скрыть индикаторы, через прямые хуки на менеджер записи. Судя по всему, разработчики Predator попробовали этот подход, а потом отказались в пользу более изощрённого решения.

Запись звонков: слепое пятно шпиона

Отдельный модуль Predator записывает VoIP-звонки — разговоры в WhatsApp, Telegram и подобных приложениях. Он перехватывает аудиопоток на системном уровне, определяет качество звука (поддерживаются частоты дискретизации 16, 24, 32, 44,1 и 48 кГц), конвертирует его в компактный формат и сохраняет в файл.

Но у этого модуля есть изъян: он не умеет убирать оранжевую точку самостоятельно. Предполагается, что оператор шпиона заранее активирует HiddenDot вручную — иначе индикатор микрофона всё-таки появится на экране во время записи.

Модуль CameraEnabler: взлом без имён

Ещё один компонент — CameraEnabler — отвечает за скрытый доступ к камере. Он использует обход системы защиты PAC (Pointer Authentication Codes) — механизма Apple, который следит за тем, чтобы программы не подменяли адреса в памяти.

Вместо того чтобы искать функцию по имени (Apple может переименовать её в следующем обновлении), CameraEnabler сканирует память в поисках характерного набора команд — своеобразного «отпечатка» нужного кода рядом с функцией FigVideoCaptureSourceCreateWithSourceInfo во фреймворке CMCapture. Это делает шпиона устойчивым к обновлениям iOS: даже если Apple что-то переименует или переместит, Predator всё равно найдёт нужное место.

Как понять, что телефон заражён

Специалисты Jamf выделяют несколько признаков, на которые стоит обратить внимание при профессиональной (!) проверке устройства:

  • В системных процессах SpringBoard и mediaserverd появляются нехарактерные области памяти — следы внедрённого кода
  • Несистемный код регистрирует обработчики исключений и использует вызов thread_set_state для подмены содержимого регистров процессора
  • Процесс mediaserverd обращается к нестандартным путям через функцию ExtAudioFileWrite — туда, куда система в норме не пишет
  • Камера или микрофон работают, но соответствующий индикатор в строке состояния не появляется

Самостоятельно проверить телефон на все эти признаки невозможно — нужны специальные инструменты и экспертиза. Однако общая рекомендация проста: регулярно обновляйте iOS, поскольку Apple закрывает уязвимости, через которые Predator вообще попадает на устройство. Без первоначального взлома весь арсенал шпиона бесполезен.

Мы в Telegram, на Дзен, в Google News и YouTube



ePN