该技术仅可读取已经主动对你开放位置共享权限的账号,并非任意窃取他人定位,不存在可被黑客滥用的系统漏洞。
一名安全研究员完成了苹果「查找(Find My People)」私有协议完整逆向工程,在完全没有苹果硬件的前提下,依靠一台 Linux 主机,成功获取并解密好友实时共享的位置信息。
整个项目的初衷十分简单:研究者想写一套自动化脚本,当好友到达指定地点时,自动在 Discord 推送提醒。原本以为只是简单调用公开 API,实际上手后才发现,苹果这套位置共享能力仅向自家硬件开放,公开 iCloud 网页接口并不支持读取好友位置,市面上也没有完整复现这套流程的开源项目,于是开启了为期一周的逆向分析工作。
研究者反编译苹果系统内部守护进程 fmfd、findmylocated、searchpartyd,结合 FindMy.py、pypush 等开源工具,一点点还原整套加密通信链路。这也是典型的 逆向工程 实践:从黑盒协议出发,借助现有工具与反编译结果逐步还原通信细节。
核心难点:在 Linux 上伪装成一台合法苹果设备
想要拿到位置,第一步并不是直接读取坐标,而是让苹果服务器把这台 Linux 电脑识别成一台正规的苹果终端。
1. 账号认证特殊限制
普通 iCloud 登录令牌无法调用查找好友接口。苹果每一项服务都有独立权限凭证。研究者使用苹果内部 GrandSlam 登录协议完成账号校验,拿到 IDS 服务委托令牌。IDS 是苹果底层设备身份与加密消息底层框架,iMessage、查找功能都建立在它之上。
2. 严苛的证书注册规则
想要生成合法设备身份,证书签名请求必须满足大量未公开硬性条件:2048 位 RSA 密钥、SHA‑1 签名,通用名称由账号配置 ID 做 SHA‑1 哈希生成,数据包还需要压缩为 gzip 包装的 XML 属性列表。任意一项格式不对,就会认证失败。
3. 服务注册不能直接注册查找功能
不能直接注册「查找好友」服务,需要先注册苹果 alloy 多路复用总服务,再挂载 6 个子服务,才能完成设备登记。
关键一步:向新「虚拟设备」下发位置密钥
设备注册完成之后,最大难题来了:如何让苹果把已经建立好的位置共享密钥下发给这台凭空生成的 Linux 虚拟设备?
不需要好友重新开启位置共享,不用修改原有共享关系
苹果原生设计中,用户新增一台苹果设备,服务器就会自动把已有共享关系的密钥下发给新设备。研究者通过发送 SubscribeAndFetch 请求,设置 distributeKeys 指令,触发苹果推送密钥流程。
密钥通过苹果推送 APNs 下发,包裹在 pair-ec 加密信封内,经过 ECDH 校验、签名验证,保证消息来源真实。
这里有一处技术细节:消息信封使用 P‑256 椭圆曲线,但位置共享密钥却是 P‑224 曲线,两套加密体系相互独立。
拿到这份专属共享密钥后,就可以向苹果 SearchParty 服务拉取加密位置报文。服务器返回加密后的定位数据,在本地完成 ECDH 密钥交换、AES‑GCM 解密,最终输出实时坐标、定位精度、时间戳,全程位置明文不会经过苹果服务器。
不是安全漏洞,是底层协议完整解密
很多人看到「读取位置」,第一反应是苹果出现高危漏洞,这里需要厘清事实:
- 只能读取已经主动分享给该 Apple 账号的位置,不能入侵、窃取任意陌生人定位;
- 好友设备必须保持在线,才可以完成密钥分发;
- 该过程属于协议逆向研究,不属于可被利用的系统漏洞,苹果无需发布补丁修复;
- 研究价值:完整公开了苹果查找功能密钥分发、轮换底层逻辑,为第三方兼容客户端开发者提供参考资料。

资讯来源: zerotistic.blog 技术博客、CyberSecurityNews
|