conducting-mobile-app-penetration-test
遵循 OWASP 移动应用安全测试指南(MASTG)对 iOS 和 Android 移动应用执行渗透测试,识别数据存储、网络通信、认证、密码学和平台专属安全控制中的漏洞。测试人员对应用二进制文件进行静态分析、运行时动态分析和 API 安全测试,以评估完整的移动攻击面。
Best use case
conducting-mobile-app-penetration-test is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
遵循 OWASP 移动应用安全测试指南(MASTG)对 iOS 和 Android 移动应用执行渗透测试,识别数据存储、网络通信、认证、密码学和平台专属安全控制中的漏洞。测试人员对应用二进制文件进行静态分析、运行时动态分析和 API 安全测试,以评估完整的移动攻击面。
Teams using conducting-mobile-app-penetration-test should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/conducting-mobile-app-penetration-test/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How conducting-mobile-app-penetration-test Compares
| Feature / Agent | conducting-mobile-app-penetration-test | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
遵循 OWASP 移动应用安全测试指南(MASTG)对 iOS 和 Android 移动应用执行渗透测试,识别数据存储、网络通信、认证、密码学和平台专属安全控制中的漏洞。测试人员对应用二进制文件进行静态分析、运行时动态分析和 API 安全测试,以评估完整的移动攻击面。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 执行移动应用渗透测试
## 使用场景
- 在发布前测试移动应用,识别安全漏洞和数据保护问题
- 针对 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 证书
## 工作流程
### 步骤一:静态分析
在不执行应用的情况下分析应用二进制文件:
**Android 静态分析:**
- 反编译 APK:`jadx -d output/ target.apk` 获取 Java/Kotlin 源代码
- 检查 `AndroidManifest.xml` 中的导出组件(Activity、Service、Receiver、Content Provider)、权限和可调试标志
- 搜索硬编码的密钥:`grep -rn "api_key\|password\|secret\|token\|aws_" output/`
- 识别不安全的数据存储模式:包含敏感数据的 SharedPreferences、未加密的 SQLite 数据库、外部存储中的文件
- 检查 WebView 漏洞:`setJavaScriptEnabled(true)`、`addJavascriptInterface()` 和加载不受信任的内容
- 运行 MobSF 自动化扫描:`python manage.py runserver` 并上传 APK 进行自动化静态分析
**iOS 静态分析:**
- 解压 IPA 并定位 Mach-O 二进制文件
- 使用 `otool -L <binary>` 列出链接的框架并识别第三方库
- 使用 Ghidra 或 Hopper 分析硬编码的 URL、API 端点和嵌入的凭据
- 检查 Info.plist 中允许不安全 HTTP 连接的 App Transport Security(ATS)例外情况
- 检查嵌入式权利中的过度能力
### 步骤二:网络安全测试
拦截并分析所有网络通信:
- 在测试设备上将 Burp Suite 配置为代理,并安装 Burp CA 证书
- 演练所有应用功能,同时 Burp 捕获 API 流量
- **SSL/TLS 验证**:验证应用是否正确验证服务器证书。如果应用通过代理连接失败,则可能实现了证书固定
- **证书固定绕过**:
- Android:使用 Frida 脚本:`frida -U -f com.target.app -l ssl-pinning-bypass.js --no-pause`
- iOS:使用 SSL Kill Switch 或 Objection:`objection -g "Target App" explore --startup-command "ios sslpinning disable"`
- **API 流量分析**:检查所有 API 调用:
- 未加密传输的敏感数据
- URL 参数中的认证令牌(在日志中可见)
- API 响应中超出 UI 显示的过量数据
- API 端点缺少或弱认证
- **WebSocket 和自定义协议**:检查可能绕过标准代理拦截的非 HTTP 通信渠道
### 步骤三:数据存储分析
测试不安全的本地数据存储:
**Android 数据存储:**
- 访问应用数据目录:`/data/data/com.target.app/`
- 检查存储凭据、令牌和 PII 的 SharedPreferences XML 文件
- 检查 SQLite 数据库:`sqlite3 /data/data/com.target.app/databases/*.db ".dump"`
- 检查应用日志中的敏感数据:`logcat -d | grep -i "password\|token\|key"`
- 验证应用数据是否从备份中排除:AndroidManifest.xml 中的 `android:allowBackup="false"`
- 检查剪贴板中的敏感数据泄露
**iOS 数据存储:**
- 检查钥匙串中存储的凭据:`objection -g "Target App" explore`,然后 `ios keychain dump`
- 检查 NSUserDefaults/plist 文件:`find /var/mobile/Containers/Data/Application/ -name "*.plist" -exec plutil -p {} \;`
- 检查 SQLite 数据库和 Core Data 存储中未加密的敏感数据
- 检查通过截图泄露数据(iOS 在应用后台化时捕获截图)
- 验证数据保护类:敏感文件应使用 NSFileProtectionComplete
### 步骤四:认证和会话管理
测试移动端专属的认证控制:
- **生物特征绕过**:测试是否可以通过 Frida 挂钩认证回调使其始终返回成功来绕过生物特征认证
- **令牌存储**:验证认证令牌是否存储在钥匙串(iOS)或 Android Keystore 中,而非 SharedPreferences 或文件中
- **会话超时**:验证会话是否在合理的空闲超时后过期,以及令牌在注销后是否在服务端失效
- **Root/越狱检测绕过**:测试应用是否检测 Root/越狱设备,以及是否可以用 Frida 或 Magisk Hide 绕过检测
- **深度链接滥用**:测试自定义 URL 方案或通用链接是否可用于绕过认证或访问受限功能
### 步骤五:运行时操控
测试应用对运行时攻击的抵抗力:
- **Frida 挂钩**:使用 Frida 在运行时挂钩并修改应用函数:
- 绕过 Root 检测:挂钩检测函数使其返回 false
- 修改认证检查的返回值
- 拦截加密函数,在加密前捕获明文数据
- 通过挂钩 SSL 验证绕过证书固定
- **方法交换**(iOS):使用 Frida 替换 Objective-C 方法实现
- **Intent 操控**(Android):向导出的组件发送精心构造的 intent:`adb shell am start -n com.target.app/.InternalActivity -e "user_id" "admin"`
- **篡改检测**:修改 APK/IPA(添加代码、修改资源)、重新签名并安装。验证应用是否检测到篡改
## 核心概念
| 术语 | 定义 |
|------|------------|
| **OWASP MASTG** | 移动应用安全测试指南;涵盖 iOS 和 Android 平台的综合移动应用安全测试手册 |
| **证书固定** | 限制应用信任的 TLS 证书的移动安全控制,防止通过代理拦截实施中间人攻击 |
| **Frida** | 动态检测工具包,允许将 JavaScript 注入正在运行的进程,以挂钩函数、修改行为和绕过安全控制 |
| **Root/越狱检测** | 应用层面的检查,用于检测设备是否已被修改以授予 Root 访问权限,通常会阻止在已入侵设备上使用应用 |
| **Android Keystore** | Android 上的硬件支持凭据存储,保护密钥和密钥免受提取,即使在 Root 设备上 |
| **App Transport Security(ATS)** | iOS 安全功能,默认强制执行 HTTPS 连接;ATS 例外可能表示不安全的网络通信 |
| **深度链接** | 打开移动应用内特定界面的 URL 方案,如果未正确验证,可能绕过正常导航和认证流程 |
## 工具与系统
- **Frida / Objection**:动态检测工具,用于挂钩函数、绕过安全控制和在运行时操控应用行为
- **MobSF(移动安全框架)**:针对 Android 和 iOS 应用的自动化静态和动态分析平台
- **jadx**:Android 反编译器,将 APK 字节码转换为可读的 Java 源代码,用于手动代码审查
- **Burp Suite Professional**:HTTP 代理,用于在绕过证书固定后拦截和修改移动应用 API 流量
## 常见场景
### 场景:移动银行应用安全评估
**背景**:一家银行正在为 iOS 和 Android 推出新的移动银行应用。该应用处理账户查看、资金转账、账单支付和支票存款。由于处理金融数据,需要符合 OWASP MASVS L2 合规要求。
**方法**:
1. Android APK 的静态分析揭示了 API 端点、一个硬编码的预生产服务器 URL 和配置文件中的 AWS API 密钥
2. 证书固定已实现,但被 Frida SSL 固定绕过脚本绕过
3. API 流量分析发现余额检查端点返回与用户关联的所有账号,而非仅请求的账号
4. 本地数据存储分析发现应用在未加密的 SQLite 数据库中缓存最近 10 笔交易
5. 生物特征认证绕过:Frida 挂钩生物特征回调使其始终返回成功,无需指纹即可授予访问权限
6. Root 检测已实现但被 Magisk Hide 模块绕过,允许应用在 Root 设备上以完整数据访问权限运行
**常见陷阱**:
- 仅在模拟器上测试,遗漏硬件专属安全功能(Android Keystore 硬件支持、iOS Secure Enclave)
- 未同时测试 iOS 和 Android 版本,因为它们可能有不同的实现和不同的漏洞
- 忽略后端 API 安全(因为"单独测试过了"),而移动应用可能以不同于 Web 应用的方式调用 API 端点
- 未能测试证书固定绕过,导致网络分析不完整
## 输出格式
```
## 发现:通过 Frida 检测绕过生物特征认证
**ID**: MOB-003
**严重性**: 高(CVSS 7.7)
**平台**: Android 和 iOS
**OWASP MASVS**: MASVS-AUTH-2(生物特征认证)
**描述**:
移动银行应用的生物特征认证可以使用 Frida 动态检测绕过。
认证回调函数接受来自生物特征 API 的布尔结果,
可以被挂钩并强制返回 true,无需提供有效的指纹或人脸扫描。
**概念验证(Android)**:
frida -U -f com.bank.mobileapp -l bypass-biometric.js --no-pause
// bypass-biometric.js
Java.perform(function() {
var BiometricCallback = Java.use("com.bank.mobileapp.auth.BiometricCallback");
BiometricCallback.onAuthenticationSucceeded.implementation = function(result) {
console.log("[*] 生物特征已绕过");
this.onAuthenticationSucceeded(result);
};
});
**影响**:
拥有已解锁设备物理访问权限的攻击者可以绕过生物特征认证,
访问受害者的银行账户、发起转账并查看金融数据,
而无需生物特征验证。
**修复建议**:
1. 使用与 Keystore 密钥绑定的 Android BiometricPrompt CryptoObject 实施服务端生物特征验证
2. 要求生物特征操作解密服务端质询,使客户端绕过无效
3. 添加运行时完整性检查以检测 Frida 和其他检测框架
4. 对高风险操作(超过阈值的转账)实施升级认证
```Related Skills
testing-websocket-api-security
测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。
testing-oauth2-implementation-flaws
测试 OAuth 2.0 和 OpenID Connect 实现中的安全缺陷,包括授权码拦截、重定向 URI 操控、OAuth 流程中的 CSRF、令牌泄露、权限范围(scope)提升以及 PKCE 绕过。测试人员对授权服务器、客户端应用及令牌处理进行评估,发现可导致账户接管或未授权访问的常见错误配置。适用于 OAuth 安全测试、OIDC 漏洞评估、OAuth2 重定向绕过或授权码流程测试相关请求。
testing-mobile-api-authentication
测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。
testing-jwt-token-security
在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。
testing-for-xxe-injection-vulnerabilities
在授权的渗透测试中发现和利用 XML 外部实体(XXE)注入漏洞,以读取服务器文件、执行 SSRF 并外泄数据。
testing-for-xss-vulnerabilities
通过向反射型、存储型和 DOM 型上下文注入 JavaScript 载荷,测试 Web 应用程序的跨站脚本(XSS)漏洞, 演示客户端代码执行、会话劫持和用户冒充。测试人员识别所有注入点和输出上下文,构造适合上下文的载荷, 并绕过净化和 CSP 保护。适用于 XSS 测试、跨站脚本评估、客户端注入测试或 JavaScript 注入漏洞测试等请求场景。
testing-for-xss-vulnerabilities-with-burpsuite
在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。
testing-for-xml-injection-vulnerabilities
测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。
testing-for-sensitive-data-exposure
在安全评估中识别敏感数据暴露漏洞,包括 API 密钥泄露、响应中的 PII、不安全存储以及未受保护的数据传输。
testing-for-open-redirect-vulnerabilities
通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。
testing-for-json-web-token-vulnerabilities
测试 JWT 实现中的关键漏洞,包括算法混淆、none 算法绕过、kid 参数注入和弱密钥利用,以实现认证绕过和权限提升。
testing-for-host-header-injection
测试 Web 应用程序的 HTTP Host 头部注入漏洞,以识别密码重置中毒、Web 缓存投毒、SSRF 以及虚拟主机路由操控风险。