SuperAPI AI 工具集

conducting-mobile-app-penetration-test

安全与审计

查看项目

更新于 10-15 13:43

技能介绍

本技能用于对 iOS 和 Android 移动应用执行渗透测试,遵循 OWASP 移动应用安全测试指南(MASTG),以识别安全漏洞与数据保护问题。

适用场景

  • 应用发布前测试,识别安全漏洞与数据保护问题
  • 依据 OWASP MASVS(移动应用安全验证标准)L1 与 L2 级别进行合规评估
  • 评估处理敏感数据的移动银行、医疗或政务应用的安全性
  • 测试与后端 API 交互的移动应用,评估移动生态系统的端到端安全
  • 评估移动应用对逆向工程、篡改与运行时操纵的抵抗能力

不适用于:未获得应用所有者书面授权的应用;分发被修改或重打包的应用;在公共应用商店的应用上测试(除非使用单独测试构建)。

前置条件

  • 目标应用的 IPA(iOS)与 APK(Android)文件,或可访问私有分发渠道下载
  • 已 Root 的 Android 设备或模拟器(Genymotion、Android Studio AVD),安装 Frida、Objection 与 Magisk
  • 已越狱的 iOS 设备或 Corellium 虚拟设备,安装 Frida、Objection 与 SSL Kill Switch
  • 静态分析工具:jadx(Android 反编译)、Hopper/Ghidra(iOS 二进制分析)、MobSF(自动化扫描)
  • Burp Suite Professional 配置为代理,用于拦截移动应用流量,并在测试设备上安装 CA 证书

法律声明:本技能仅用于获得授权的安全测试与教育目的。未经授权针对您不拥有或未获书面许可测试的系统使用属非法行为,可能违反计算机欺诈相关法律。

工作流程

步骤 1:静态分析

在不执行应用的情况下分析应用二进制:

Android 静态分析:

  • 反编译 APK:jadx -d output/ target.apk 获取 Java/Kotlin 源代码
  • 审查 AndroidManifest.xml 中的导出组件(activities、services、receivers、content providers)、权限与 debuggable 标志
  • 搜索硬编码密钥:grep -rn "api_key\|password\|secret\|token\|aws_" output/
  • 识别不安全的数据存储模式:含敏感数据的 SharedPreferences、未加密的 SQLite 数据库、外部存储中的文件
  • 检查 WebView 漏洞:setJavaScriptEnabled(true)、addJavascriptInterface() 与加载不可信内容
  • 运行 MobSF 自动化扫描,上传 APK 进行自动化静态分析

iOS 静态分析:

  • 解压 IPA 并定位 Mach-O 二进制
  • 使用 otool -L <binary> 列出链接的框架并识别第三方库
  • 使用 Ghidra 或 Hopper 分析硬编码 URL、API 端点与嵌入凭证
  • 检查 Info.plist 中允许不安全 HTTP 连接的 App Transport Security(ATS)例外
  • 审查嵌入的 entitlements 是否存在过度能力

步骤 2:网络安全测试

拦截并分析所有网络通信:

  • 在测试设备上配置 Burp Suite 代理并安装 Burp CA 证书
  • 在 Burp 捕获 API 流量时遍历所有应用功能
  • SSL/TLS 验证:验证应用是否正确校验服务器证书。若无法通过代理连接,可能实现了证书固定(pinning)
  • 证书固定绕过:
    • Android:使用 Frida 脚本 frida -U -f com.target.app -l ssl-pinning-bypass.js --no-pause
    • iOS:使用 SSL Kill Switch 或 Objection
  • API 流量分析:审查所有 API 调用中的未加密敏感数据、URL 参数中的认证令牌、API 响应中超出 UI 显示的过多数据、API 端点缺失或较弱的认证
  • WebSocket 与自定义协议:检查可能绕过标准代理拦截的非 HTTP 通信渠道

步骤 3:数据存储分析

测试不安全的本地数据存储:

Android 数据存储:

  • 访问应用数据目录:/data/data/com.target.app/
  • 检查 SharedPreferences XML 文件中的凭证、令牌与 PII
  • 检查 SQLite 数据库:sqlite3 /data/data/com.target.app/databases/*.db ".dump"
  • 检查应用日志中的敏感数据:logcat -d | grep -i "password\|token\|key"
  • 确认应用数据被排除在备份之外:AndroidManifest.xml 中 android:allowBackup="false"
  • 检查剪贴板是否泄露敏感数据

iOS 数据存储:

  • 检查 Keychain 中存储的凭证:使用 objection 的 ios keychain dump
  • 检查 NSUserDefaults/plist 文件
  • 检查 SQLite 数据库与 Core Data 存储中的未加密敏感数据
  • 检查通过截图泄露数据(iOS 在应用后台化时截图)
  • 验证数据保护等级:敏感文件应使用 NSFileProtectionComplete

步骤 4:认证与会话管理

测试移动特有的认证控制:

  • 生物识别绕过:通过 Frida hook 认证回调使其始终返回成功,测试生物识别是否可被绕过
  • 令牌存储:验证认证令牌存储在 Keychain(iOS)或 Android Keystore 中,而非 SharedPreferences 或文件中
  • 会话超时:验证会话在合理空闲超时后过期,且登出时令牌在服务端失效
  • Root/越狱检测绕过:测试应用是否检测 Root/越狱设备,以及检测能否用 Frida 或 Magisk Hide 绕过
  • 深度链接滥用:测试自定义 URL scheme 或 universal links 能否绕过认证或访问受限功能

步骤 5:运行时操纵

测试应用对运行时攻击的抵抗能力:

  • Frida hooking:使用 Frida 在运行时 hook 并修改应用函数,包括绕过 Root 检测、修改认证检查返回值、拦截加密函数获取明文数据、hook SSL 验证绕过证书固定
  • 方法 swizzling(iOS):使用 Frida 替换 Objective-C 方法实现
  • Intent 操纵(Android):向导出组件发送构造的 intent
  • 篡改检测:修改 APK/IPA(添加代码、更改资源)、重新签名并安装,验证应用是否检测到篡改

关键概念

  • OWASP MASTG:移动应用安全测试指南,覆盖 iOS 与 Android 的全面安全测试手册
  • 证书固定:限制应用信任哪些 TLS 证书的移动安全控制,防止通过代理拦截的中间人攻击
  • Frida:动态插桩工具包,可向运行进程注入 JavaScript 以 hook 函数、修改行为并绕过安全控制
  • Root/越狱检测:应用层检查,检测设备是否被修改以授予 root 访问,通常在受损设备上阻止应用使用
  • Android Keystore:Android 上硬件支持的凭证存储,即使在 Root 设备上也保护密钥与机密不被提取
  • App Transport Security(ATS):iOS 安全特性,默认强制 HTTPS 连接;ATS 例外可能表明不安全的网络通信
  • 深度链接:打开移动应用中特定屏幕的 URL scheme,若未正确校验可能绕过正常导航与认证流程

工具与系统

  • Frida / Objection:动态插桩工具,用于 hook 函数、绕过安全控制并在运行时操纵应用行为
  • MobSF(Mobile Security Framework):面向 Android 与 iOS 应用的自动化静态与动态分析平台
  • jadx:Android 反编译器,将 APK 字节码转换为可读 Java 源代码以供人工代码审查
  • Burp Suite Professional:HTTP 代理,在绕过证书固定后拦截并修改移动应用 API 流量

常见场景示例

场景:移动银行应用安全评估

背景:某银行推出新的 iOS 与 Android 移动银行应用,处理账户查看、转账、账单支付与支票存款。因涉及金融数据,需要 OWASP MASVS L2 合规。

方法:

  • Android APK 静态分析发现 API 端点、硬编码的预发布服务器 URL 与配置文件中的 AWS API 密钥
  • 实现了证书固定,但用 Frida SSL pinning bypass 脚本绕过
  • API 流量分析发现余额查询端点返回用户关联的所有账号,而不仅是所请求的账号
  • 本地数据存储分析发现应用将最近 10 笔交易缓存在未加密的 SQLite 数据库中
  • 生物识别认证绕过:Frida hook 生物识别回调始终返回成功,无需指纹即可访问
  • 存在 Root 检测,但用 Magisk Hide 模块绕过,使应用可在 Root 设备上运行并完全访问数据

常见陷阱:

  • 仅在模拟器上测试,遗漏硬件特有的安全特性(Android Keystore 硬件支持、iOS Secure Enclave)
  • 未同时测试 iOS 与 Android 版本,两者实现不同、漏洞可能不同
  • 因后端 API“已单独测试”而忽略其安全,但移动应用调用 API 端点的方式可能与 Web 应用不同
  • 未测试证书固定绕过,导致网络分析不完整

输出格式

发现结果按包含以下要素的格式呈现:ID、严重性(含 CVSS)、平台、OWASP MASVS 映射、描述、概念验证(PoC)、影响与修复建议。例如生物识别认证绕过发现(ID: MOB-003,严重性 High,CVSS 7.7,平台 Android 与 iOS,MASVS-AUTH-2),PoC 使用 Frida 脚本 hook 生物识别回调使其返回成功,修复建议包括服务端生物识别验证、绑定 Keystore 密钥、运行时完整性检查与高风险操作的分步认证。