SuperAPI AI 工具集

analyzing-ios-app-security-with-objection

安全与审计

查看项目

更新于 10-15 10:24

技能介绍

用途

本技能用于在获得明确授权的 iOS 应用渗透测试中,对应用进行运行时安全评估。适用场景包括:在授权渗透测试期间执行 iOS 应用运行时安全评估;检查 iOS Keychain、文件系统和内存中的敏感数据暴露;在安全测试中绕过客户端安全控制(SSL pinning、越狱检测);在无法访问源码的情况下评估 iOS 应用的运行时行为。

注意:不得在未获得明确授权的生产设备上使用本技能——Objection 会修改应用运行时行为,可能触发安全监控。

前置条件

  • Python 3.10+ 及 pip
  • 安装 Objection:pip install objection
  • 安装 Frida:pip install frida-tools
  • 目标 iOS 设备(越狱设备带 Frida server,或非越狱设备使用重打包 IPA)
  • 针对非越狱设备:使用 objection patchipa 将 Frida gadget 注入 IPA
  • 推荐使用 macOS 进行 iOS 测试(Xcode、ideviceinstaller)
  • 通过 USB 连接目标设备或使用网络 Frida server

使用方式(工作流)

步骤 1:准备测试环境

越狱设备:

# 通过 Cydia/Sileo 在设备上安装 Frida server
# SSH 到设备并启动 Frida server
ssh root@<device_ip> "/usr/sbin/frida-server -D"

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

非越狱设备(授权测试):

# 使用 Frida gadget 修补 IPA
objection patchipa --source target.ipa --codesign-signature "Apple Development: test@example.com"

# 安装修补后的 IPA
ideviceinstaller -i target-patched.ipa

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

# 按 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)

# 导出应用可访问的 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)

# 禁用 SSL/TLS 证书绑定
ios sslpinning disable

# 通过在 Burp Suite 代理中观察流量验证绑定已绕过
# 监控网络相关的类方法调用
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection

步骤 5:检查认证与授权(MASVS-AUTH)

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

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

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

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

步骤 6:评估二进制防护(MASVS-RESILIENCE)

# 检查越狱检测实现
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)

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

# 挂钩 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 访问组内可访问的条目。
  • SSL Pinning Bypass:运行时修改证书验证逻辑,允许代理拦截 HTTPS 流量。
  • Method Hooking:在运行时拦截 Objective-C/Swift 方法调用,以观察参数、返回值并修改行为。

工具与系统

  • Objection:基于 Frida 的高级移动安全探索工具包,提供预置命令。
  • Frida:动态插桩框架,可将 JavaScript 注入原生应用进程。
  • Frida-tools:Frida 的 CLI 工具,包括 frida-ps、frida-trace 和 frida-discover。
  • ideviceinstaller:通过 USB 安装/管理 iOS 应用的跨平台工具。
  • Burp Suite:在绕过 SSL pinning 后用于拦截流量的 HTTP 代理。

常见陷阱

  • 附加时应用崩溃:部分应用实现了 Frida 检测。使用 --startup-command 在应用生命周期早期挂钩反 Frida 检测。
  • Keychain 访问范围:Objection 只能导出应用访问组内的 Keychain 条目。系统 Keychain 条目需要单独的越狱级工具。
  • Swift 名称修饰:Swift 方法名在运行时经过修饰。使用 ios hooking list classes 配合 grep 查找去修饰后的名称。
  • 更改非持久化:所有 Objection 修改仅在运行时有效,应用重启后重置。应立即记录发现结果。