# Analyzing IOS App Security With Objection

> 使用基于 Frida 的工具包 Objection 对 iOS 应用程序进行运行时移动安全探测， 无需越狱即可与应用内部交互。适用于评估 iOS 应用安全态势、绕过客户端防护措施、 转储 Keychain 条目、检查文件系统存储以及评估运行时行为。当请求涉及 iOS 安全测试、 Objection 运行时分析、基于 Frida 的 iOS 评估或移动运行时探测时激活。

- Skill: `killvxk/analyzing-ios-app-security-with-objection` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/analyzing-ios-app-security-with-objection`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/analyzing-ios-app-security-with-objection/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/analyzing-ios-app-security-with-objection

---

# 使用 Objection 分析 iOS 应用安全

## 适用场景

以下情况使用本 skill：
- 在授权渗透测试（penetration test）期间对 iOS 应用程序执行运行时安全评估
- 检查 iOS Keychain、文件系统和内存中的敏感数据暴露情况
- 在安全测试期间绕过客户端安全控制（SSL pinning、越狱检测）
- 在无法访问源代码的情况下评估 iOS 应用的运行时行为

**不适用于**：在没有明确授权的情况下在生产设备上使用本 skill——Objection 会修改应用运行时行为，可能触发安全监控。

## 前置条件

- Python 3.10+ 及 pip
- 已安装 Objection：`pip install objection`
- 已安装 Frida：`pip install frida-tools`
- 目标 iOS 设备（已越狱并安装 Frida server，或已重新打包 IPA 的非越狱设备）
- 非越狱设备需使用 `objection patchipa` 向 IPA 注入 Frida gadget
- iOS 测试推荐使用 macOS（需要 Xcode、ideviceinstaller）
- USB 连接目标设备或网络 Frida server

## 工作流程

### 步骤 1：准备测试环境

**针对越狱设备：**
```bash
# 通过 Cydia/Sileo 在设备上安装 Frida server
# SSH 登录设备并启动 Frida server
ssh root@<device_ip> "/usr/sbin/frida-server -D"

# 验证 Frida 连接
frida-ps -U  # 列出 USB 连接设备上的进程
```

**针对非越狱设备（授权测试）：**
```bash
# 向 IPA 注入 Frida gadget
objection patchipa --source target.ipa --codesign-signature "Apple Development: test@example.com"

# 安装已打包的 IPA
ideviceinstaller -i target-patched.ipa
```

### 步骤 2：将 Objection 附加到目标应用

```bash
# 通过 bundle ID 附加到正在运行的应用
objection --gadget "com.target.app" explore

# 或启动新的应用进程
objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"
```

附加成功后，Objection 提供交互式 REPL 进行运行时探测。

### 步骤 3：评估数据存储安全（MASVS-STORAGE）

```bash
# 转储应用可访问的 iOS Keychain 条目
ios keychain dump

# 列出应用沙盒中的文件
ios plist cat Info.plist
env  # 显示应用环境路径

# 检查 NSUserDefaults 中的敏感数据
ios nsuserdefaults get

# 列出 SQLite 数据库
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"

# 检查粘贴板中的敏感数据
ios pasteboard monitor
```

### 步骤 4：评估网络安全（MASVS-NETWORK）

```bash
# 禁用 SSL/TLS 证书固定（certificate pinning）
ios sslpinning disable

# 通过 Burp Suite 代理观察流量，验证 pinning 是否已绕过
# 监控与网络相关的类方法调用
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
```

### 步骤 5：检查身份认证与授权（MASVS-AUTH）

```bash
# 列出所有 Objective-C 类
ios hooking list classes

# 搜索与认证相关的类
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token

# Hook 认证方法以观察参数
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return

# 监控生物认证调用
ios hooking watch class LAContext
```

### 步骤 6：评估二进制保护（MASVS-RESILIENCE）

```bash
# 检查越狱检测实现
ios jailbreak disable

# 模拟越狱检测绕过
ios jailbreak simulate

# 列出已加载的框架和库
memory list modules

# 在内存中搜索敏感字符串
memory search "password" --string
memory search "api_key" --string
memory search "Bearer" --string

# 转储特定内存区域
memory dump all dump_output/
```

### 步骤 7：检查平台交互（MASVS-PLATFORM）

```bash
# 列出应用注册的 URL scheme
ios info binary
ios bundles list_frameworks

# Hook URL scheme 处理程序
ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args

# 监控剪贴板访问
ios pasteboard monitor

# 检查自定义键盘限制
ios hooking search classes UITextField
```

## 核心概念

| 术语 | 定义 |
|------|-----------|
| **Objection** | 基于 Frida 构建的运行时移动探测工具包，提供用于常见安全测试任务的预置脚本 |
| **Frida Gadget** | 注入到应用进程中的共享库，无需越狱即可实现 Frida 插桩 |
| **Keychain** | iOS 安全凭据存储系统；Objection 可转储目标应用 keychain access group 可访问的条目 |
| **SSL Pinning 绕过** | 对证书验证逻辑进行运行时修改，允许代理拦截 HTTPS 流量 |
| **方法 Hook（Method Hooking）** | 在运行时拦截 Objective-C/Swift 方法调用，以观察参数、返回值并修改行为 |

## 工具与系统

- **Objection**：高级 Frida 驱动的移动安全探测工具包，提供预置命令
- **Frida**：动态插桩（Dynamic instrumentation）框架，向原生应用进程注入 JavaScript
- **Frida-tools**：Frida 的 CLI 工具，包括 frida-ps、frida-trace 和 frida-discover
- **ideviceinstaller**：通过 USB 安装/管理 iOS 应用的跨平台工具
- **Burp Suite**：SSL pinning 绕过后用于拦截流量的 HTTP 代理

## 常见陷阱

- **附加时应用崩溃**：某些应用实现了 Frida 检测。使用 `--startup-command` 在应用生命周期早期 hook 反 Frida 检测逻辑。
- **Keychain 访问范围**：Objection 只能转储应用 access group 内的 Keychain 条目。系统级 Keychain 条目需要单独的越狱级工具。
- **Swift 名称混淆（name mangling）**：Swift 方法名在运行时会被混淆。使用 `ios hooking list classes` 配合 grep 查找反混淆后的名称。
- **修改不持久**：所有 Objection 修改仅在运行时生效，应用重启后恢复原状。请立即记录发现的问题。

