iOS渗透技巧
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/ios-pentesting-tricks-mooz。
技能介绍
测试场景的两难选择
iOS 应用渗透测试常面临一个核心决策:是否对设备越狱?越狱环境能提供完整的文件系统访问、运行时钩子和 SSL pinning 绕过能力,但会改变设备安全模型;非越狱环境更贴近真实用户场景,却受限于沙盒边界和签名机制。本技能的价值在于把这种环境差异转化为可执行的测试路径——针对不同能力项明确越狱与非越狱的适用性,避免测试者在设备准备阶段就选错方向。
关键能力拆解
- 钥匙串提取:识别四类保护级(
kSecAttrAccessibleWhenUnlocked、kSecAttrAccessibleAfterFirstUnlock等)的实际可访问性,定位存储在 genp、inet、cert 等条目中的令牌与证书。 - URL Scheme 与 Universal Links 滥用:通过注册重复 scheme 劫持 OAuth 回调,或利用 AASA 文件配置错误(通配符路径、缺失文件、错误域名)迫使系统回退到易受攻击的 URL scheme。
- 运行时操作:使用 Frida 挂钩 Objective-C 类枚举和方法交换,在越狱设备上执行完整钩子,或在非越狱侧载应用中通过重签名应用实现有限操作。
- 二进制防护检查:验证 PIE、ARC、Stack Canary 和加密状态,逆向工程前判断是否需先解密 IPA。
- 数据存储审计:扫描 NSUserDefaults、Core Data、Cookies、缓存目录等位置的敏感信息,包括截图和键盘缓存中的意外泄露。
适用边界与风险点
越狱环境虽能提供深度访问,但会引入测试者自身设备配置的变量;非越狱测试依赖重签名和 Frida gadget,可能遗漏运行时保护。ATS(App Transport Security)例外配置需逐一验证风险等级,例如 NSAllowsArbitraryLoads 为 true 时允许全量 HTTP,但仅对特定域名开放 HTTP 的例外(NSExceptionAllowsInsecureHTTPLoads)可能被视为可接受的业务妥协。最终测试结论必须标注环境约束——越狱结果不能直接外推到非越狱用户群体,反之亦然。
使用场景
- 安全工程师在越狱设备上测试App SSL pinning绕过方案,评估中间人攻击风险
- 移动渗透测试员审计钥匙串保护级配置,提取存储在Keychain中的API令牌
- 移动应用开发者检查App的AASA文件配置,验证Universal Links是否存在被劫持风险
- 逆向工程师解密IPA二进制文件后,验证PIE和Stack Canary等防护标志是否启用
适合人员
- 移动应用安全工程师,需要在测试阶段发现并修复数据传输和存储漏洞
- 渗透测试人员,负责对iOS客户端进行系统化安全评估并输出风险报告
- 逆向工程师,在分析iOS应用二进制时快速判断防护机制和数据存储位置
- 移动开发工程师,想在发布前自查ATS配置和敏感数据存储是否符合安全基线