arnold117/iOS-NOIR
安全面向未越狱 iPhone 的取证审计工具,按证据等级分析隐私、权限与遥测。
项目介绍
iOS-NOIR 受 Android 审计工具 Verlintas/NOIR 启发,通过 USB 连接未越狱的 iPhone,生成带证据分级的取证报告。它会读取 Apple 签名的 Entitlements、Info.plist 静态白名单、App Group 与 Keychain 共享、ATS 例外域名、HouseArrest 沙盒暴露、AFC 数据库暴露以及内核 .ips 诊断日志 (2)(10)。
核心框架是「五层持久身份链」:iCloud KVS 令牌、共享 Keychain、App Group 容器、硬编码的运营商一键登录网关,以及 HotspotHelper/BSSID 钩子 (13)。结论分为「实锤 / VERIFIED」「机制实锤 / CAPABILITY」「推断 / INFERRED」,区分静态配置、内核能力和跨应用推断 (11)。输出包括 JSON、域名列表和独立交互式双语 HTML 报告;radar 模式可实时监控 TCC、传感器与 IDFA 请求 (21)(23)。
适合隐私研究者、iOS 开发者和愿意动手的技术用户,用于获得可复现的设备证据而非泛泛结论。
快速使用
目前仅在 macOS 上测试通过(Apple 的 usbmuxd 原生可用);Windows 和 Linux 未测试,可能需要额外配置 iTunes 或 usbmuxd 驱动 (16)。
git clone https://github.com/arnold117/iOS-NOIR.git
cd iOS-NOIR
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
连接 iPhone,解锁屏幕并点「信任此电脑」(20)。然后运行审计并打开报告:
python ios_noir.py scan
python ios_noir.py scan --lang en --redact
open noir-out/ios-noir-report.html
scan 会把 JSON、域名列表和 HTML 报告写入 noir-out/;加 --redact 可生成适合分享的脱敏版本 (21)。实时探测权限与传感器:
python ios_noir.py radar --duration 30
运行前也可以先打开使用合成数据的样例报告查看效果。
防护措施
仓库提供了一个基于 Apple DNS 设置的 mobileconfig,无需常驻 VPN 即可在系统层加密 DNS 并拦截追踪器;另有适用于 Shadowrocket、Surge、Loon 或 Clash 的覆盖模块,可拦截运营商静默认证网关、指纹 SDK 和遥测域名 (25)(30)。
使用约束
- FairPlay 边界: 未越狱设备上的二进制受 FairPlay 加密,工具不会反编译 Mach-O;函数级分析需要解密后的 IPA 并配合其他工具 (31)。
- 能力不等于行为: 持有 entitlement 只说明内核能力已开放,实际触发频率由服务端策略决定 (31)。
- 静态 ATS 域名是开发者声明的例外,不是抓到的流量,也可能是遗留端点 (31)。
- README 中引用的磁盘写入数据来自作者本人的 iPhone,属于示例而非通用基准。
- 需要解锁并信任的 iPhone 才能访问设备;许可证为 MIT (32)。
HotRepo 点评
在 2026-11-07 的新项目榜记录中,iOS-NOIR 为 123 star、28 fork,在约一小时的窗口内新增 14 star,此前采样为 109 star。这只是一个新生仓库的短时爆发,不足以判断趋势,但说明初期关注度上升较快。项目的内容相当具体:在未越狱设备上逐应用审计 entitlement 与 plist,并明确区分已证实的能力与推断。目前主要未知项是 iOS 版本兼容范围,README 未说明测试过的系统版本。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。