关于 ios-pentest
ios-pentest 是一项技能,通过专项操作手册和方法指南组织 iOS 应用安全评估,面向检查应用二进制文件和已安装应用的测试人员。内容覆盖从侦察到报告的 OWASP MASTG 流程。
主要功能
- 01覆盖 iOS 评估各阶段的操作手册
- 02SSL 固定和越狱检测测试
- 03钥匙串及应用存储分析
- 04网络、身份验证和加密测试
- 05包含 iOS 证据的结构化发现项
适用场景
- 01评估 IPA 和已安装的 iOS 应用
- 02调查钥匙串或应用文件中的凭据
- 03测试 HTTPS、gRPC 或 WebSocket 流量
- 04检查 OWASP MASTG 和 MASVS 要求
MCP 相关
该技能提及使用 Mobile MCP 对 iOS 模拟器或设备进行 UI 自动化和截图采集,并提供 Mobile MCP 服务配置示例。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hardw00t/ ai-security-arsenal --skill ios-pentest安装后在 Claude Code 中输入/ios-pentest确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
checklists/owasp_mastg_ios.mdexamples/initial_setup.mdkeychain_dump.mdssl_bypass_run.mdmethodology/auth_testing.mdcrypto_testing.mddata_storage.mddynamic_analysis.mdnetwork_testing.mdrecon.mdstatic_analysis.mdpayloads/jailbreak_detection_paths.txturl_scheme_tests.txtreferences/bounty_patterns_2024_2026.mdfrida_ios_snippets.mdios_vulns.mdtroubleshooting.mdschemas/finding.jsonscripts/biometric_bypass.jscrypto_hooks.jsjailbreak_bypass.jskeychain_hooks.jsmethod_tracer.jsssl_pinning_bypass.jstemplates/finding_report.mdworkflows/auth_testing.mdcomplete_assessment.mdipa_decryption.mdjailbreak_detection_bypass.mdkeychain_extraction.md详细介绍
iOS 移动应用渗透测试
用于 iOS 应用安全评估的精简路由器。全面覆盖 OWASP MASTG(侦察 → 静态分析 → 动态分析 → 网络 → 存储 → 密码学 → 身份验证 → 报告)。详细操作手册位于 workflows/ 和 methodology/ 下;仅在需要时加载。
适用场景
- 对新的 iOS 应用进行安全评估(IPA + 已安装的应用)。
- 绕过 SSL pinning、越狱检测、生物识别、反调试机制。
- 提取并分类整理 keychain / NSUserDefaults / 文件 / SQLite。
- 拦截并篡改 HTTPS / gRPC / WebSocket 流量。
- OWASP MASTG / MASVS 合规性测试。
- 分析已解密或加密的 Mach-O 二进制文件。
触发短语
“渗透测试 iOS 应用”、“测试此 IPA”、“绕过 iPhone 的 SSL pinning”、“提取 keychain”、“MASTG iOS”、“绕过 iOS 越狱检测”、“分析 .ipa”、“测试 iPhone 应用”。
不适用场景
- Android APK 分析 → 使用
android-pentest。 - 对后端进行通用 Web API 测试 → 使用
web-pentest/api-pentest。 - iOS 源代码审查(你拥有代码仓库)→ 使用带有 iOS 语言包的
secure-code-review。 - macOS 桌面应用分析 → 使用
macos-pentest。
决策树
target acquired?
├── no binary yet → workflows/ipa_decryption.md
└── yes
├── need HTTPS visibility? → workflows/ssl_pinning_bypass.md
├── app exits on jailbroken device? → workflows/jailbreak_detection_bypass.md
├── hunting credentials/tokens? → workflows/keychain_extraction.md
├── testing login / biometric? → workflows/auth_testing.md
└── full engagement → workflows/complete_assessment.md
并行执行提示
可并发运行(I/O 相互独立,无共享状态):
class-dump -H App.app/App -o headers/otool -L App.app/App和otool -hv App.app/Appstrings -a App.app/App | grep ...plutil -p App.app/Info.plist- 在单独的 spawn 中运行 Objection 枚举。
必须按顺序运行(共享 Frida 会话 / spawn 状态):
- Frida
--no-pausespawn → 等待绕过脚本加载 → 操作应用 → 然后附加其他脚本。 - Objection
ios sslpinning disable→ 然后运行任何依赖流量的命令。 ideviceimagemounter→ 然后运行frida-ps -U。- 提取 keychain 前,必须在安装后至少启动过一次应用。
子 Agent 委派
如果可以清晰地隔离工作范围,请启动子 Agent:
- 静态二进制子 Agent — 提供已解密的
App.app/,让其并行运行class-dump+otool+strings+ 框架清单检查,并返回结构化摘要,列出感兴趣的类、硬编码机密和不安全的 API 用法。 - Keychain 提取子 Agent — 提供
<bundle_id>,让其运行objection ... keychain dump --json,按可访问性 / ACL 对每条记录分类,并按schemas/finding.json输出发现项。 - 可选:让网络捕获子 Agent 通过代理 API 驱动 Burp,同时由主 Agent 操作 UI。
不要将 Frida spawn 和插桩任务拆分给不同子 Agent — Frida 会话有状态,并绑定到单个进程。
推理预算
以下情况使用扩展思考:
- 解读反编译的 Objective-C / Swift(Hopper / Ghidra / IDA 输出)。
- 通用绕过失效时,设计自定义 Frida hook。
- 推理加密流程(密钥来源 → 密码算法 → 存储)。
- 多个细微问题相互叠加时,判断 MASVS 严重性。
以下情况跳过扩展思考:
- 运行
scripts/中现成的 Frida / Objection 脚本。 - 解析
ios keychain dump --json输出(按模式匹配)。 - 执行
otool/class-dump并收集输出。 - 下载文件、枚举设备、通过 SSH 拉取文件。
多模态钩子
Mobile MCP(@anthropic/mobile-mcp --ios)提供 iOS 模拟器 / 设备 UI 自动化:
- 越狱检测弹窗 — 在绕过前截取警告屏幕截图,再在绕过后截取警告消失的截图,保存为
evidence.screenshot。 - 生物识别提示 — 截取 Face ID / Touch ID 窗口,以证明验证门存在,然后确认绕过后进入受保护的屏幕。
- 应用切换器快照泄露 — 截取应用转入后台时显示敏感数据的快照缓存条目。
- WebView 身份验证流程 — 以可视化方式捕获登录重定向链,用于 SSO 发现项。
~/.claude/mcp.json:
{"mcpServers": {"mobile-mcp": {"command": "npx", "args": ["-y", "@anthropic/mobile-mcp", "--ios"]}}}
结构化输出
每个发现项都以符合 schemas/finding.json 的 JSON 格式输出。iOS 专属字段:affected.bundle_id、affected.ios_version、affected.device_udid、affected.jailbroken、mastg_id、evidence.frida_pid、evidence.keychain_dump、evidence.screenshot。
工作流索引
| 工作流 | 文件 |
|---|---|
| 完整评估操作手册 | workflows/complete_assessment.md |
| SSL 固定绕过 | workflows/ssl_pinning_bypass.md |
| 越狱检测绕过 | workflows/jailbreak_detection_bypass.md |
| 钥匙串提取与分类 | workflows/keychain_extraction.md |
| IPA 解密 / 获取 | workflows/ipa_decryption.md |
| 身份验证与生物识别测试 | workflows/auth_testing.md |
方法论索引
载荷索引
| 文件 | 用途 |
|---|---|
| payloads/jailbreak_detection_paths.txt | iOS 应用用于探测越狱的常见文件 / 方案 |
| payloads/url_scheme_tests.txt | URL 方案 / 深层链接测试向量 |
Frida 脚本索引(scripts/)
| 脚本 | 用途 |
|---|---|
ssl_pinning_bypass.js | 通用 SSL/TLS 固定绕过 |
jailbreak_bypass.js | 越狱检测绕过 |
biometric_bypass.js | Touch ID / Face ID 绕过 |
keychain_hooks.js | 钥匙串操作监控 |
crypto_hooks.js | 加密操作跟踪 |
method_tracer.js | 通用 Objective-C 方法跟踪器 |
参考资料索引
| 文件 | 用途 |
|---|---|
| references/ios_vulns.md | iOS 漏洞类别、严重性表、MASVS 映射 |
| references/troubleshooting.md | Frida / 固定 / 代理问题分类 |
| references/frida_ios_snippets.md | 可复用的 Frida 代码片段 |
| references/bounty_patterns_2024_2026.md | 2023 年之后的漏洞赏金 TTP(URL 方案 / Universal-Link 劫持、WebView 深层链接 XSS、钥匙串 IAM 令牌安全缺陷) |
| checklists/owasp_mastg_ios.md | 完整的 MASTG iOS 检查清单 |
| templates/finding_report.md | Markdown 漏洞发现报告模板 |
示例
| 文件 | 用途 |
|---|---|
| examples/initial_setup.md | 初次接触操作蓝图 |
| examples/ssl_bypass_run.md | 固定绕过操作蓝图 |
| examples/keychain_dump.md | 钥匙串转储与分类操作蓝图 |
工具
| 工具 | 用途 | 安装 |
|---|---|---|
| Frida / frida-tools | 动态插桩 | pip install frida-tools(≥ 16.6) |
| Objection | 移动端探索 REPL | pip install objection(≥ 1.11) |
| libimobiledevice | 设备通信 | brew install libimobiledevice |
| ios-deploy | 应用部署 | brew install ios-deploy |
| ideviceinstaller | 应用安装 / 列表 | brew install ideviceinstaller |
| class-dump | ObjC 头文件提取 | brew install class-dump |
| frida-ios-dump | FairPlay 解密 | github.com/AloneMonkey/frida-ios-dump |
| Burp Suite | HTTPS 拦截 | PortSwigger |
| Hopper / IDA / Ghidra | 二进制逆向工程 | Vendor / GitHub |
| Mobile MCP | UI 自动化 + 屏幕截图 | npx @anthropic/mobile-mcp --ios |
前置条件快速检查
每次操作前都要运行——如果实验环境损坏,立即终止。
idevice_id -l # at least one UDID listed
ideviceinfo | grep ProductVersion
frida-ps -U # frida-server reachable
objection -g <bundle_id> explore --startup-command 'ios info binary; exit'
越狱环境:OpenSSH + Frida(Sileo 源 build.frida.re)+ AppSync Unified + Filza。非越狱环境的备用方案:使用 objection patchipa 修补 IPA 以注入 Frida Gadget,或使用 ideviceimagemounter 挂载开发者磁盘映像。
上次验证
2026-04。Frida ≥ 16.6、Objection ≥ 1.11,目标为 iOS 15–17。对于 iOS 18+,越狱方案转向仅用户空间方案(Dopamine/palera1n rootless)——SSH 路径为 /var/jb/usr/bin/ssh,Frida 服务端位于 /var/jb/usr/sbin/frida-server。