Шпионское ПО Predator перехватывает интерфейс SpringBoard в iOS для скрытия активности микрофона и камеры

Изображение: Jan Zinnbauer (unsplash)
Коммерческий инструмент слежки Predator, созданный компанией Intellexa, научился прятать сигналы активации камеры и микрофона в iOS, продолжая тайно передавать аудио и видео своим операторам. Исследование Jamf раскрывает, как именно вредонос внедряется в системный интерфейс и выключает визуальные предупреждения, которые Apple добавила для защиты пользователей.
В iOS 14 Apple внедрила простую и понятную систему оповещений. В строке состояния загорается зелёная точка при работе камеры и оранжевая при активации микрофона. Эти маркеры стали символом цифровой прозрачности. Пользователь видит, что устройство «слышит» или «смотрит». Predator решил сыграть против этого механизма.
Как установили специалисты Jamf, вредонос не ищет новые дыры в защите системы. Он опирается на ранее полученный контроль на уровне ядра. Такой уровень доступа позволяет вмешиваться в работу системных компонентов без лишнего шума. Вместо эксплуатации очередной уязвимости злоумышленник использует уже завоёванные позиции.
Аналитики Jamf обнаружили, что Predator внедряет перехватчик в SpringBoard — центральный интерфейс iOS, который отвечает за отображение рабочего стола и элементов статуса. Вредонос активирует функцию HiddenDot::setupHook(), которая вызывается каждый раз при изменении активности датчиков. Как поясняют исследователи Jamf, целевой метод _handleNewDomainData срабатывает при включении камеры или микрофона. Predator перехватывает этот вызов ещё до того, как информация попадёт в систему отображения.
Фактически программа обнуляет объект SBSensorActivityDataProvider в составе SpringBoard. В среде Objective-C обращение к нулевому объекту проходит без ошибок и уведомлений. В результате интерфейс просто «не замечает», что камера или микрофон активированы. Точка в строке состояния не появляется, пользователь остаётся в неведении.
Специалисты Jamf указывают, что SBSensorActivityDataProvider агрегирует данные обо всех сенсорах. Один хук перекрывает отображение сигналов сразу для двух источников — камеры и микрофона. Это решение выглядит лаконичным и технологически изящным, хотя его назначение крайне мрачно.
В ходе анализа эксперты нашли и следы альтернативного пути. В коде присутствуют фрагменты, связанные с SBRecordingIndicatorManager, который напрямую отвечает за отображение индикаторов записи. Этот участок не исполняется. По мнению исследователей Jamf, он мог относиться к ранней версии разработки, от которой отказались в пользу перехвата на более высоком уровне обработки данных сенсоров.
