关于 analyzing-ios-app-security-with-objection
使用 Objection 和 Frida 对 iOS 应用进行运行时安全评估的技能,面向授权渗透测试人员。涵盖应用数据、网络控制、身份验证和平台行为,无需访问源代码。
主要功能
- 01检查应用钥匙串和沙盒数据
- 02测试 SSL Pinning 与网络行为
- 03审查身份验证和授权
- 04检查越狱检测与二进制保护
- 05Hook 方法并监控应用行为
- 06评估 URL Scheme 和平台交互
适用场景
- 01在授权渗透测试中评估 iOS 应用
- 02检查应用存储和内存中的敏感数据
- 03测试 SSL Pinning 等客户端控制
- 04无源代码时观察运行时行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill analyzing-ios-app-security-with-objection安装后在 Claude Code 中输入/analyzing-ios-app-security-with-objection确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
使用 Objection 分析 iOS 应用安全性
适用场景
在以下情况下使用此技能:
- 在经授权的渗透测试期间,对 iOS 应用进行运行时安全评估
- 检查 iOS 钥匙串、文件系统和内存中是否暴露了敏感数据
- 在安全测试期间绕过客户端安全控制(SSL 固定、越狱检测)
- 无法访问源代码时,评估 iOS 应用的运行时行为
未经明确授权,切勿在生产设备上使用此技能——Objection 会修改应用的运行时行为,并可能触发安全监控。
先决条件
- Python 3.10+ 和 pip
- 已安装 Objection:
pip install objection - 已安装 Frida:
pip install frida-tools - 目标 iOS 设备(已越狱并运行 Frida 服务端,或未越狱但已重新打包 IPA)
- 对于未越狱设备:使用
objection patchipa将 Frida gadget 注入 IPA - 建议使用 macOS 进行 iOS 测试(Xcode、ideviceinstaller)
- 通过 USB 连接目标设备,或使用网络 Frida 服务端
工作流
步骤 1:准备测试环境
对于已越狱的设备:
# Install Frida server on device via Cydia/Sileo
# SSH to device and start Frida server
ssh root@<device_ip> "/usr/sbin/frida-server -D"
# Verify Frida connectivity
frida-ps -U # List processes on USB-connected device
对于未越狱的设备(经授权的测试):
# Patch IPA with Frida gadget
objection patchipa --source target.ipa --codesign-signature "Apple Development: [email protected]"
# Install patched IPA
ideviceinstaller -i target-patched.ipa
步骤 2:将 Objection 连接到目标应用
# Attach to running app by bundle ID
objection --gadget "com.target.app" explore
# Or spawn the app fresh
objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"
连接后,Objection 会提供一个交互式 REPL,用于探索运行时。
步骤 3:评估数据存储安全性(MASVS-STORAGE)
# Dump iOS Keychain items accessible to the app
ios keychain dump
# List files in app sandbox
ios plist cat Info.plist
env # Show app environment paths
# Inspect NSUserDefaults for sensitive data
ios nsuserdefaults get
# List SQLite databases
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"
# Check for sensitive data in pasteboard
ios pasteboard monitor
步骤 4:评估网络安全性(MASVS-NETWORK)
# Disable SSL/TLS certificate pinning
ios sslpinning disable
# Verify pinning is bypassed by observing traffic in Burp Suite proxy
# Monitor network-related class method calls
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
步骤 5:检查身份验证和授权(MASVS-AUTH)
# List all Objective-C classes
ios hooking list classes
# Search for authentication-related classes
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token
# Hook authentication methods to observe parameters
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return
# Monitor biometric authentication calls
ios hooking watch class LAContext
步骤 6:评估二进制保护措施(MASVS-RESILIENCE)
# Check jailbreak detection implementation
ios jailbreak disable
# Simulate jailbreak detection bypass
ios jailbreak simulate
# List loaded frameworks and libraries
memory list modules
# Search memory for sensitive strings
memory search "password" --string
memory search "api_key" --string
memory search "Bearer" --string
# Dump specific memory regions
memory dump all dump_output/
步骤 7:审查平台交互(MASVS-PLATFORM)
# List URL schemes registered by the app
ios info binary
ios bundles list_frameworks
# Hook URL scheme handlers
ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args
# Monitor clipboard access
ios pasteboard monitor
# Check for custom keyboard restrictions
ios hooking search classes UITextField
核心概念
| 术语 | 定义 |
|---|---|
| Objection | 基于 Frida 构建的移动端运行时探索工具包,提供用于常见安全测试任务的预构建脚本 |
| Frida Gadget | 注入应用进程的共享库,可在无需越狱的情况下启用 Frida 插桩 |
| 钥匙串 | iOS 安全凭据存储系统;Objection 可以转储目标应用钥匙串访问组中可访问的项目 |
| 绕过 SSL 固定 | 在运行时修改证书验证逻辑,以允许通过代理拦截 HTTPS 流量 |
| 方法 Hook | 在运行时拦截 Objective-C/Swift 方法调用,以观察参数、返回值并修改行为 |
工具与系统
- Objection:由 Frida 驱动的高级移动安全探索工具包,提供预构建命令
- Frida:动态插桩框架,可将 JavaScript 注入原生应用进程
- Frida-tools:Frida 的命令行工具,包括 frida-ps、frida-trace 和 frida-discover
- ideviceinstaller:用于通过 USB 安装和管理 iOS 应用的跨平台工具
- Burp Suite:绕过 SSL 固定后用于拦截流量的 HTTP 代理
常见问题
- 连接时应用崩溃:某些应用会检测 Frida。使用
--startup-command在应用生命周期早期 Hook 反 Frida 检查。 - 钥匙串访问范围:Objection 只能转储应用访问组内的钥匙串项目。系统钥匙串项目需要使用单独的越狱级工具。
- Swift 名称修饰:Swift 方法名在运行时会经过修饰。使用
ios hooking list classes配合 grep 查找反修饰后的名称。 - 更改不会持久化:Objection 所做的修改仅在运行时生效,应用重启后会重置。请立即记录发现。
评论
支持 Markdown