Predator 间谍软件挂钩 iOS SpringBoard 隐藏麦克风和摄像头活动
Source: Bleeping Computer
请提供您希望翻译的具体文本内容,我将按照要求保留源链接并进行简体中文翻译。
Overview

Intellexa 的 Predator 间谍软件可以隐藏 iOS 录音指示灯,同时悄悄将摄像头和麦克风的音视频流传输给其操作者。
该恶意软件 不 利用任何 iOS 漏洞,而是利用先前获取的内核级访问权限,劫持系统指示灯,从而掩盖其监控行为。
Apple 在 iOS 14 的状态栏中引入了录音指示灯,以在摄像头或麦克风被使用时提醒用户,分别显示绿色或橙色点。
US‑sanctioned surveillance firm Intellexa 开发了 Predator commercial spyware 并在利用 Apple and Chrome zero‑day flaws 以及通过 0‑click infection mechanisms 的攻击中投放。
虽然它能够抑制摄像头和麦克风活动指示灯的能力已为人所知,但其具体机制此前尚不明确。

Predator 如何隐藏录音指示
移动设备管理公司 Jamf 的研究人员分析了 Predator 样本,并记录了隐藏与隐私相关指示的过程。
Jamf 表示,Predator 通过在 SpringBoard 中使用单一钩子函数(HiddenDot::setupHook()),在传感器活动变化时(摄像头或麦克风激活)调用该方法,从而在 iOS 14 上隐藏所有录音指示。通过拦截该方法,Predator 阻止传感器活动更新到达 UI 层,导致绿色或橙色点永不亮起。
“目标方法
_handleNewDomainData:会在 iOS 检测到传感器活动变化时被调用——摄像头打开、麦克风激活等,” Jamf 研究人员解释道。
“通过钩住这个单一方法,Predator 在所有指示器显示系统收到更新之前拦截 所有 传感器状态更新。”
— Jamf 博客

该钩子通过将负责传感器更新的对象(SpringBoard 中的 SBSensorActivityDataProvider)设为 null 来工作。在 Objective‑C 中,对 null 对象的调用会被静默忽略,因此 SpringBoard 永远不会处理摄像头或麦克风的激活,也就不会出现指示灯。
由于 SBSensorActivityDataProvider 汇总了所有传感器活动,这一次性钩子即可同时禁用摄像头和麦克风指示。
Jamf 还发现了尝试直接钩住 SBRecordingIndicatorManager 的“死代码”。该代码从未执行,似乎是一个被放弃的开发路径。
对于 Predator 也支持的 VoIP 录音,负责的模块缺少指示灯抑制机制,因此仍依赖 HiddenDot 函数来实现隐蔽。
Jamf 进一步解释说,摄像头访问是通过一个独立模块实现的,该模块使用 ARM64 指令模式匹配和指针认证码(PAC)重定向来定位内部摄像头函数,以绕过摄像头权限检查。
由于状态栏上没有指示灯亮起,间谍软件的活动对普通用户来说完全隐藏。
Jamf 指出,技术分析揭示了恶意进程的以下迹象:
- SpringBoard 和
mediaserverd中出现异常的内存映射或异常端口 - 基于断点的钩子
mediaserverd将音频文件写入异常路径
BleepingComputer 已就 Jamf 的发现联系 Apple 进行评论;Apple 尚未回应。