使用 Objection 与 Frida 进行 iOS 应用运行时安全测试:从环境搭建到 MASVS 全面评估
2026/9/10 8:20:16 网站建设 项目流程

使用 Objection 与 Frida 进行 iOS 应用运行时安全测试:从环境搭建到 MASVS 全面评估

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

导读:本指南以 Anthropic-Cybersecurity-Skills 仓库中的 analyzing-ios-app-security-with-objection 技能文档为核心,系统讲解如何借助 Objection(基于 Frida 的运行时移动探索工具包)在授权渗透测试中对 iOS 应用执行运行时安全评估——包括 Keychain 与文件系统敏感数据检查、SSL Pinning 绕过、Jailbreak 检测绕过、认证逻辑 Hook 与二进制防护分析。读者完成后将掌握一套从设备准备、REPL 交互到报告输出的完整可复现评估流程,并能结合仓库提供的自动化脚本将常见检查批量执行。

该技能定位于移动安全(mobile-security)子域,其 frontmatter 声明覆盖 MITRE ATT&CK 的 T1635、T1414、T1417.001、T1409 等移动端技术,并映射 NIST CSF、NIST AI RMF 与 ATLAS 框架(详见 SKILL.md 头部元数据)。本文所有命令与步骤均以该技能文档及其 API 参考、标准映射、工作流 为事实依据。

何时使用本技能

在以下场景中启用该技能:

  • 授权渗透测试中对 iOS 应用执行运行时安全评估(非源码审计,而是黑盒/灰盒视角的运行时观察);
  • 检查 iOS Keychain、文件系统与内存中的敏感数据暴露;
  • 绕过客户端安全控制(SSL 证书固定、Jailbreak 检测)以验证其有效性;
  • 在无法获得源码的情况下评估应用运行时行为。

技能文档同时给出了明确的红线:切勿在未经明确授权的生产设备上使用——Objection 会修改应用运行时行为,可能触发安全监控告警。这一点在评估范围界定(ROE)阶段就必须书面确认。

前置条件

依据 SKILL.md,测试环境需要:

组件要求
Python3.10+ 且已安装 pip
Objectionpip install objection
Frida 工具链pip install frida-tools
目标设备已越狱(运行 frida-server)或未越狱(重打包 IPA 注入 Frida Gadget)
未越狱方案objection patchipa将 Frida Gadget 注入 IPA
主机环境推荐 macOS(Xcode、ideviceinstaller)
连接方式USB 连接目标设备,或网络 Frida server

注意:pip install objectionpip install frida-tools两条命令缺一不可——Objection 是高层工具,而 Frida 是其底层动态插桩引擎,frida-psfrida-trace等 CLI 来自 frida-tools 包。

七步运行时评估工作流

技能文档给出了一套从环境准备到平台交互的完整评估流水线,以下逐步展开并结合仓库参考资料补充参数细节。

第一步:准备测试环境

越狱设备方案:通过 Cydia/Sileo 在设备端安装 Frida server,SSH 到设备后启动守护进程,并在主机端验证连通性:

# 在设备端启动 Frida server(通过 SSH) ssh root@<device_ip> "/usr/sbin/frida-server -D" # 列出 USB 连接设备上的进程,验证 Frida 连通 frida-ps -U

未越狱设备方案(须授权):使用 Objection 将 Frida Gadget 注入 IPA 并重签名安装:

# 将 Frida Gadget 注入 IPA(需提供开发者签名) objection patchipa --source target.ipa --codesign-signature "Apple Development: test@example.com" # 安装打过补丁的 IPA ideviceinstaller -i target-patched.ipa

这一步的决策逻辑可参考 workflows.md 中的决策矩阵:

设备状态是否有 IPA采用方案
已越狱不需要直接 Frida server + Objection attach
未越狱objection patchipa重打包
未越狱向客户索取 IPA 或走设备管理流程
模拟器N/A受限,可考虑 Corellium 等平台上的 Frida

第二步:将 Objection 附加到目标应用

# 按 bundle ID 附加到已运行的应用 objection --gadget "com.target.app" explore # 或全新启动(spawn)应用,并附带启动命令 objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"

附加成功后 Objection 会进入交互式 REPL,后续所有检查命令都在该 REPL 内执行。--startup-command的典型价值在于:某些应用在启动早期就执行 Frida 检测,通过启动命令可在生命周期早期挂钩反 Frida 逻辑。

第三步:数据存储安全评估(MASVS-STORAGE)

这是运行时评估中信息量最大的一环,覆盖 Keychain、NSUserDefaults、SQLite 与剪贴板:

# 转储应用可访问的 Keychain 条目 ios keychain dump ios keychain dump --json # 结构化输出,便于后续自动化解析 # 查看应用沙箱环境路径与 Info.plist env ios plist cat Info.plist # 检查 NSUserDefaults 中的敏感数据 ios nsuserdefaults get # 打开并查询 SQLite 数据库 sqlite connect app_data.db sqlite execute query "SELECT * FROM credentials" # 监控剪贴板敏感数据 ios pasteboard monitor

api-reference.md 补充了同属存储检查的ios cookies get(列出 HTTP Cookie),并将其纳入 agent.py 的OWASP_MOBILE_CHECKSM2_Insecure_Data_Storage检查组合(keychain dump + cookies get + nsuserdefaults get)。iOS 应用沙箱的典型路径及内容映射可参考 api-reference.md:

路径内容
/Documents用户生成数据
/Library/Caches缓存数据
/Library/PreferencesPlist 设置
/tmp临时文件
/Library/CookiesCookie 存储

第四步:网络安全评估(MASVS-NETWORK)

# 禁用 SSL/TLS 证书固定 ios sslpinning disable ios sslpinning disable --quiet # 静默模式 # 挂钩网络相关类,监控方法调用 ios hooking watch class NSURLSession ios hooking watch class NSURLConnection

禁用 pinning 后,将设备代理指向 Burp Suite,即可解密并审查 HTTPS 流量,重点观察 API 端点、认证流程与传输中的敏感数据。--quiet参数适用于希望在输出中减少冗余日志的自动化场景。

第五步:认证与授权检查(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 # 监控生物识别认证调用(Face ID / Touch ID) ios hooking watch class LAContext

LAContext是 iOS 本地认证框架的核心类,挂钩它可以观察生物识别校验结果是否可被绕过(例如直接篡改evaluatePolicy:localizedReason:reply:的回调结果)。

第六步:二进制防护评估(MASVS-RESILIENCE)

# 检查并绕过 Jailbreak 检测 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/

jailbreak_bypass 示例脚本 展示了底层思路:拦截NSFileManager - fileExistsAtPath:,当路径命中越狱特征(/Applications/Cydia.app/usr/sbin/sshd/etc/apt)时把返回值替换为0,从而骗过基于文件存在性的检测。

第七步:平台交互评估(MASVS-PLATFORM)

# 查看二进制信息与已注册框架 ios info binary ios bundles list_frameworks # 挂钩 URL Scheme 处理器(深链安全) ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args # 监控剪贴板访问(自 iOS 14 起有系统级粘贴提示,此处为应用内行为观测) ios pasteboard monitor # 检索 UITextField 相关类,检查自定义键盘/输入限制 ios hooking search classes UITextField

URL Scheme 处理器的挂钩对应 OWASP MASTG 的 MASTG-TEST-0060,用于验证深链是否可被任意参数注入。

关键概念速查

SKILL.md 给出了五个核心术语的定义,它们是理解整个工作流的基础:

术语定义
Objection基于 Frida 的运行时移动探索工具包,内置了常见安全测试任务的预制脚本
Frida Gadget注入应用进程的共享库,使未越狱设备也能进行 Frida 插桩
KeychainiOS 安全凭据存储系统;Objection 可转储目标应用访问组内的条目
SSL Pinning Bypass运行时修改证书校验逻辑,允许代理拦截 HTTPS 流量
Method Hooking在运行时拦截 Objective-C/Swift 方法调用,观察参数、返回值并修改行为

关于 Keychain 的访问范围需要强调:Objection 只能转储应用 keychain access group 内的条目,系统级 Keychain 条目需要越狱级工具处理——这是 常见陷阱 中明确指出的边界。

工具链全景

工具作用
Objection高层 Frida 移动安全探索工具,提供预制命令
Frida动态插桩框架,向原生应用进程注入 JavaScript
Frida-tools提供frida-psfrida-tracefrida-discover等 CLI 工具
ideviceinstaller通过 USB 安装/管理 iOS 应用的跨平台工具
Burp SuiteSSL Pinning 绕过后用于拦截流量的 HTTP 代理

Frida CLI 底层命令

当预制命令无法满足需求时,可直接降级使用 Frida CLI(见 api-reference.md):

frida -U -n AppName # 按进程名附加 frida -U -f com.app.id # 启动(spawn)并附加 frida -U -n AppName -l script.js # 加载自定义脚本 frida-ps -U # 列出运行进程 frida-ls-devices # 列出连接的设备

自定义 Frida 脚本的典型骨架——用ObjC.choose遍历类实例并挂钩方法:

ObjC.choose(ObjC.classes.ClassName, { onMatch: function(instance) { Interceptor.attach(instance['- methodName:'].implementation, { onEnter: function(args) { console.log('arg1:', ObjC.Object(args[2])); } }); }, onComplete: function() {} });

深入源码:自动化评估脚本如何实现

技能目录下提供两个可直接复用的 Python 脚本,将上述手工流程封装为可批量执行的自动化工具,展示了 Objection 命令驱动评估的工程化落地方式。

agent.py:OWASP Mobile Top 10 检查器

agent.py 的核心设计是:

  • run_objection(command, app_id)通过subprocess执行objection -g <app_id> explore -c <command>,并做超时与缺失依赖(pip install objection)的错误兜底;
  • run_frida(script_code, app_id)执行frida -U -n <app_id> -e <script>运行单行脚本;
  • OWASP_MOBILE_CHECKS字典将 OWASP Mobile Top 10 分类与具体检查命令绑定,例如 M2(不安全数据存储)绑定ios keychain dumpios cookies getios nsuserdefaults get,M3(不安全通信)绑定ios sslpinning disable
  • run_owasp_assessment(app_id)遍历所有分类,逐条执行检查并记录命令输出预览(前 200 字符)与退出码;
  • FRIDA_SCRIPTS内置了 SSL Pinning Bypass、Jailbreak Bypass、Keychain 查询三个可复用的脚本片段。

运行方式:python agent.py com.example.app,无参数时输出可用检查清单。

process.py:可配置的批量评估与 JSON 报告

process.py 面向更正式的评估交付物,其亮点在于:

  • ObjectionAssessor类将每个检查封装为独立方法,且每个 finding 都附带category(如MASVS-STORAGE)、owasp_mobile(如M9)与severity(HIGH/MEDIUM/INFO/PASS)字段,直接服务于后续报告;
  • check_frida_connectivity()先通过frida-ps -U验证设备连通性,失败即退出——防止在错误目标上产生误导性结果;
  • check_nsuserdefaults()内置敏感词模式列表(passwordtokensecretkeyauthsessioncredentialapi_key等),自动从 NSUserDefaults 输出中标记敏感条目;
  • search_sensitive_memory()passwordBearereyJ(JWT 前缀)、api_keysecret等模式执行memory search,统计命中次数;
  • generate_report()汇总严重度分布,输出结构化 JSON,可直接作为正式报告的机器可读底稿。

命令行接口:

python process.py --bundle-id com.target.app [--device-id UDID] [--output report.json] [--checks keychain nsuserdefaults ssl jailbreak memory]

支持通过--serial <UDID>/-D <UDID>在多设备场景下精确指定目标(见 process.py 中的命令构造逻辑)。

评估结果与框架映射

OWASP Mobile Top 10 (2024) 映射

api-reference.md 给出了完整的检查对应关系:

ID类别对应 Objection 检查
M1Improper Credential Usageios keychain dump
M2Inadequate Supply Chain Security二进制分析
M3Insecure Authentication挂钩认证类
M4Insufficient Input/Output Validation挂钩输入方法
M5Insecure Communicationios sslpinning disable
M6Inadequate Privacy Controlsios nsuserdefaults get
M7Insufficient Binary Protections检查 PIE、ARC、栈 canary
M8Security Misconfigurationios plist cat Info.plist
M9Insecure Data Storage文件系统 + Keychain 审查
M10Insufficient Cryptography挂钩加密类

OWASP MASVS v2.0 控制映射

standards.md 将 Objection 命令映射到 MASVS 六大类别:

MASVS 类别Objection 命令评估点
MASVS-STORAGEios keychain dumpios nsuserdefaults getsqlite connectKeychain/NSUserDefaults/数据库中的敏感数据
MASVS-CRYPTOmemory search、挂钩加密框架调用密钥存储、算法选择
MASVS-AUTH挂钩 LAContext 与认证类生物识别绕过、会话管理
MASVS-NETWORKios sslpinning disable、挂钩 NSURLSession证书固定、明文流量
MASVS-PLATFORM挂钩 URL Scheme 处理器、剪贴板监控深链安全、剪贴板暴露
MASVS-CODEmemory list modules、二进制检查调试符号、框架分析
MASVS-RESILIENCEios jailbreak disable、Frida 检测挂钩防篡改、防调试

OWASP MASTG 测试用例对应

测试 ID描述Objection 方案
MASTG-TEST-0053本地存储敏感数据ios keychain dump+ 文件系统检查
MASTG-TEST-0057备份敏感数据检查备份排除属性
MASTG-TEST-0060自定义 URL Scheme挂钩application:openURL:options:
MASTG-TEST-0063日志敏感数据挂钩 NSLog 调用
MASTG-TEST-0066ATS 强制执行检查 Info.plist ATS 配置

Apple 平台安全要求核对

要求评估方法
Keychain 访问控制通过 keychain dump 验证kSecAttrAccessible
App Transport Security检查 Info.plist 中的NSAllowsArbitraryLoads例外
Data Protection API验证敏感文件的文件保护属性
Secure Enclave 使用挂钩 SecKey 操作,检查受生物识别保护的密钥

常见陷阱与规避

技能文档在 Common Pitfalls 中明确了四个高频问题:

  1. 附加时应用崩溃:部分应用实现了 Frida 检测。对策是使用--startup-command在应用生命周期早期挂钩反 Frida 检查逻辑。
  2. Keychain 访问范围限制:Objection 只能转储应用访问组内的条目,系统级 Keychain 条目需越狱级工具处理。
  3. Swift 名称修饰(name mangling):Swift 方法名在运行时是修饰后的形态,需用ios hooking list classes配合 grep 查找去修饰(demangled)名称。
  4. 修改不持久:所有 Objection 修改均为运行时生效,应用重启即复位。发现需立即记录,否则重启后必须重做整个会话。

评估报告输出规范

技能目录提供了标准化的 报告模板,建议最终交付包含以下板块:

  • Engagement Information:应用名、Bundle ID、iOS 版本、设备型号、越狱状态、评估日期、分析师、Objection 版本;
  • Executive Summary:运行时分析发现的高层叙述;
  • Keychain Analysis:Service / Account / Data Type / Protection Class / Risk 表格;
  • Data Storage Assessment:NSUserDefaults、SQLite 数据库、文件系统三个子表;
  • Network Security:SSL Pinning 是否存在、绕过是否成功、ATS 配置严格与否;
  • Binary Protection Assessment:Jailbreak 检测、Frida 检测、调试检测、代码混淆状态;
  • Memory Analysis:密码 / 认证令牌 / API Key / JWT 的搜索命中与风险;
  • Recommendations:按 Critical / High / Medium 分级列出修复建议。

同时建议结合 workflows.md 的完整评估流程(环境搭建 → 设备准备 → 附加 Objection → 运行时分析 → 记录发现 → 生成报告)与第二条 SSL Pinning 绕过流程(配置 Burp → 设置设备代理 → 附加 Objection → 禁用 pinning → 抓取流量 → 分析 API 端点)来组织测试节奏。

结语

本技能将零散的手工 Frida 插桩抽象为一套命令化的、可复现的 iOS 运行时安全评估方法论。评估者既可按照七步工作流逐项执行,也可直接复用仓库中的 agent.py 与 process.py 将检查自动化,并依托 api-reference.md、standards.md 与 template.md 完成从 OWASP Mobile Top 10 / MASVS 映射到正式报告输出的完整闭环。需要强调的是,所有运行时修改都不持久、且会改变应用行为,评估务必在授权范围内进行,并养成“发现即记录”的工作习惯。

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询