移动应用渗透测试实战指南:基于 Anthropic Cybersecurity Skills 的 OWASP MASTG 移动端安全评估
【免费下载链接】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
本指南以 conducting-mobile-app-penetration-test 技能文档为核心,系统讲解如何对 iOS 与 Android 移动应用开展遵循 OWASP Mobile Application Security Testing Guide(MASTG)的全流程渗透测试,覆盖静态分析、网络通信安全、本地数据存储、认证与会话管理、运行时动态操纵五大环节,并结合仓库内配套脚本与 API 参考(scripts/agent.py、references/api-reference.md)展示自动化取证与验证方法。读完本文,你将掌握一套可复制、可运行、可产出规范报告的移动应用安全评估方案,并理解各步骤背后的工具链原理与常见坑点。
适用场景(When to Use)
该技能面向以下典型需求激活:
- 移动应用发布前安全测试,提前暴露数据保护与身份验证缺陷;
- 依据 OWASP MASVS(Mobile Application Security Verification Standard)L1/L2 级别开展合规评估;
- 评估处理敏感数据的移动银行、医疗或政务应用的安全性;
- 测试与后端 API 交互的移动应用,评估移动生态端到端安全;
- 评估移动应用对逆向工程、篡改和运行时操纵的抵抗能力。
法律红线:未经应用所有者书面授权,禁止对该技能列出的任何目标开展测试;禁止分发修改或重新打包的应用;禁止绕过正式测试渠道直接对公共应用商店中的应用进行测试。该技能仅用于授权安全测试和教育目的,未经授权使用可能违反计算机欺诈相关法律。
前置条件(Prerequisites)
开始测试前需准备以下环境:
- 目标应用安装包:iOS 的 IPA 文件与 Android 的 APK 文件,或可访问私有分发渠道进行下载;
- Android 侧:已 Root 的实体设备或模拟器(Genymotion、Android Studio AVD),并安装 Frida、Objection 与 Magisk;
- iOS 侧:已越狱设备或 Corellium 虚拟设备,并安装 Frida、Objection 与 SSL Kill Switch;
- 静态分析工具:jadx(Android 反编译)、Hopper/Ghidra(iOS 二进制分析)、MobSF(自动化扫描);
- Burp Suite Professional 配置为代理以拦截移动应用流量,并在测试设备上安装其 CA 证书。
工作流(Workflow)
完整的测试流程分为五个步骤:静态分析 → 网络安全测试 → 数据存储分析 → 认证与会话管理 → 运行时操纵。
Step 1:静态分析(Static Analysis)
在不执行二进制的情况下分析应用代码与配置,是快速建立攻击面的第一步。
Android 静态分析:
- 使用 jadx 反编译 APK 获取 Java/Kotlin 源码:
jadx -d output/ target.apk - 审查
AndroidManifest.xml:重点检查导出的组件(Activity、Service、Receiver、Content Provider)、权限声明以及debuggable标志位; - 搜索硬编码密钥与凭证:
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)例外;
- 审查内嵌的 entitlements,确认是否存在过度授权。
Step 2:网络安全测试(Network Security Testing)
拦截并分析所有网络通信,是验证传输层安全的关键环节:
- 在测试设备上配置 Burp Suite 为代理并安装 Burp CA 证书;
- 在 Burp 抓包的同时完整走一遍应用所有功能,收集 API 流量;
- SSL/TLS 校验验证:确认应用是否正确校验服务器证书。若应用通过代理连接失败,很可能实现了证书固定(Certificate Pinning);
- 证书固定绕过:
- 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"
- Android:使用 Frida 脚本:
- API 流量分析:逐一审查所有 API 调用,重点检查:
- 未加密传输的敏感数据;
- URL 参数中的认证令牌(会暴露在日志中);
- API 响应中超出 UI 展示范围的过量数据;
- API 端点缺失或弱认证;
- WebSocket 与自定义协议:检查是否存在可绕过标准代理拦截的非 HTTP 通信通道。
Step 3:数据存储分析(Data Storage Analysis)
测试本地数据存储是否安全:
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 -g "Target App" explore # 进入 REPL 后执行 ios keychain dump - 检查 NSUserDefaults/plist 文件:
find /var/mobile/Containers/Data/Application/ -name "*.plist" -exec plutil -p {} \; - 检查 SQLite 数据库和 Core Data 存储中是否有未加密的敏感数据;
- 检查应用退到后台时 iOS 自动截屏是否导致数据泄露;
- 验证数据保护级别:敏感文件应使用
NSFileProtectionComplete。
Step 4:认证与会话管理(Authentication and Session Management)
测试移动端特有的认证控制:
- 生物识别绕过:使用 Frida 挂钩认证回调并强制其始终返回成功,测试生物识别认证是否可被绕过;
- 令牌存储:验证认证令牌存储在 iOS Keychain 或 Android Keystore 中,而非 SharedPreferences 或普通文件;
- 会话超时:验证会话在合理的空闲超时后过期,且登出时令牌在服务端失效;
- Root/越狱检测绕过:测试应用是否检测 Root/越狱设备,并验证检测逻辑能否被 Frida 或 Magisk Hide 绕过;
- Deep Link 滥用:测试自定义 URL Scheme 或 Universal Links 是否可绕过认证或访问受限功能。
Step 5:运行时操纵(Runtime Manipulation)
测试应用对运行时攻击的抵抗能力:
- 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(添加代码、更改资源)、重新签名并安装,验证应用是否检测到篡改。
关键概念(Key Concepts)
| 术语 | 定义 |
|---|---|
| OWASP MASTG | 移动应用安全测试指南(Mobile Application Security Testing Guide),覆盖 iOS 与 Android 双平台的应用安全测试综合手册 |
| 证书固定(Certificate Pinning) | 限制应用信任的 TLS 证书集合的安全控制,可防止通过代理拦截实施的中间人攻击 |
| Frida | 动态插桩工具包,允许向运行中的进程注入 JavaScript,以挂钩函数、修改行为并绕过安全控制 |
| Root/越狱检测 | 应用内检测设备是否被修改获得 Root 权限的检查机制,通常在受损设备上阻止应用使用 |
| Android Keystore | Android 上基于硬件的凭证存储,即使在 Root 设备上也能保护加密密钥和机密不被提取 |
| App Transport Security(ATS) | iOS 默认强制 HTTPS 连接的安全特性;ATS 例外可能意味着不安全的网络通信 |
| Deep Links | 打开移动应用内特定页面的 URL Scheme,若校验不严可能绕过正常导航和认证流程 |
工具与系统(Tools & Systems)
- Frida / Objection:动态插桩工具,用于挂钩函数、绕过安全控制并操纵应用运行时行为;
- 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 Key;
- 应用实现了证书固定,但通过 Frida SSL 固定绕过脚本成功绕过;
- API 流量分析发现,余额查询端点返回了与该用户关联的所有账户号码,而不仅是请求的账户;
- 本地数据存储分析发现,应用将最近 10 笔交易缓存在未加密的 SQLite 数据库中;
- 生物识别认证绕过:Frida 挂钩生物识别回调使其始终返回成功,无需指纹即可获得访问权限;
- Root 检测存在,但被 Magisk Hide 模块绕过,使应用能在 Root 设备上运行并完全访问数据。
常见坑点(Pitfalls):
- 仅在模拟器上测试,遗漏了硬件级安全特性(Android Keystore 硬件支撑、iOS Secure Enclave);
- 未同时测试 iOS 和 Android 两个版本——两者可能实现不同、漏洞不同;
- 因为"已单独测试"而忽略后端 API 安全——移动应用调用 API 的方式可能与 Web 应用不同;
- 未测试证书固定绕过,导致网络分析不完整。
源码级支撑:自动化测试代理(scripts/agent.py)
仓库为该技能配套了可运行的 Python 自动化代理,将上述手工流程的关键环节固化为可重复执行的功能函数(详见 references/api-reference.md)。从源码结构看,它围绕"发现 → 验证 → 出报告"组织测试任务:
decompile_apk(apk_path, output_dir):调用apktool d -o -f反编译 APK 的 smali 代码与资源,作为静态分析入口;extract_strings_from_apk(apk_path):对 APK 二进制执行strings,按api_key、password、secret、token、http://、aws_access、private_key等模式统计敏感字符串数量,对应 SKILL.md 中手工 grep 硬编码凭证的步骤;check_android_manifest(manifest_path):扫描android:debuggable="true"、android:allowBackup="true"、android:exported="true"、android:usesCleartextTraffic="true"等危险配置,并在缺少android:networkSecurityConfig时告警"可能信任用户安装的 CA"——这与 Step 3 中allowBackup="false"的核查点完全对应;test_certificate_pinning(target_url):通过代理环境下的请求探测(requests.get(..., verify=False))判断证书固定是否生效——若代理开启时仍返回 200,说明未强制证书固定;check_insecure_storage_adb():通过adb shell run-as检查 shared_prefs、databases 与外部存储/sdcard/Android/data/<pkg>/,其中外部存储发现判为 High 严重级;test_api_endpoints(base_url, endpoints, auth_token):对比带认证令牌与不带认证令牌的响应(默认探测/api/v1/user/profile、/api/v1/users、/api/v1/settings、/api/v1/admin),若两者均返回 200 则标记auth_bypass=True且严重级为 Critical——对应 Step 2 中"API 端点缺失或弱认证"的检查;check_root_detection(package_name):通过pm dump检索rootbeer、rootdetect、safetynet、integrity、tamper等 Root 检测库特征;generate_report(...):汇总上述发现,输出 JSON 报告。
CLI 使用方式(仅限授权测试与实验环境):
python agent.py --apk target.apk --manifest AndroidManifest.xml \ --api-url https://api.target.com --auth-token <jwt> --output report.json依赖要求:requests>=2.28(API 与证书固定测试)、apktool>=2.7(子进程调用反编译)、adb(Android 设备交互)。该脚本与 OWASP MASTG 类别的对应关系为:check_insecure_storage_adb→ MASVS-STORAGE 不安全数据存储,extract_strings_from_apk→ 硬编码凭证,test_certificate_pinning→ 证书固定,check_android_manifest→ 明文流量,test_api_endpoints→ API 授权,check_root_detection→ Root 检测。
输出格式(Output Format)
每次测试应产出标准化漏洞报告。以下为仓库定义的可直接套用的报告模板:
## Finding: Biometric Authentication Bypass via Frida Instrumentation **ID**: MOB-003 **Severity**: High (CVSS 7.7) **Platform**: Android and iOS **OWASP MASVS**: MASVS-AUTH-2 (Biometric Authentication) **Description**: The mobile banking app's biometric authentication can be bypassed using Frida dynamic instrumentation. The authentication callback function accepts a boolean result from the biometric API, which can be hooked and forced to return true without presenting a valid fingerprint or face scan. **Proof of Concept (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("[*] Biometric bypassed"); this.onAuthenticationSucceeded(result); }; }); **Impact**: An attacker with physical access to an unlocked device can bypass biometric authentication and access the victim's bank accounts, initiate transfers, and view financial data without biometric verification. **Remediation**: 1. Implement server-side biometric verification using Android BiometricPrompt CryptoObject tied to a Keystore key 2. Require the biometric operation to decrypt a server-side challenge, making client-side bypass ineffective 3. Add runtime integrity checks to detect Frida and other instrumentation frameworks 4. Implement step-up authentication for high-risk operations (transfers > threshold)报告应遵循类似结构:为每个发现提供唯一 ID、CVSS 严重级评分、受影响平台、对应的 OWASP MASVS 编号、现象描述、可复现的 PoC、攻击影响以及可落地的修复建议。同时可结合 脚本 自动生成的mobile_pentest_report.json(含sensitive_strings、manifest_findings、storage_findings、api_security、certificate_pinning字段)作为手工报告的补充证据链。
框架映射
该技能已在 YAML frontmatter 中完成多框架映射(见 SKILL.md),便于与组织安全流程对齐:MITRE ATT&CK 覆盖 T1426(系统信息发现)、T1409(凭据获取)、T1521.003(加密信道·对称加密)、T1633(敏感信息收集)、T1417(输入捕获)、T1422(应用层协议)等移动端技术;NIST CSF 2.0 对应 ID.RA-01、ID.RA-06、GV.OV-02、DE.AE-07;MITRE ATLAS 映射 AML.T0070、AML.T0066、AML.T0082;NIST AI RMF 对应 MEASURE-2.7、MAP-5.1、MANAGE-2.4。这意味着该技能不仅可用于渗透测试执行,还能直接支撑威胁建模、风险识别与安全态势评估流程。
【免费下载链接】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),仅供参考