关于 mobile-security
面向 Android 和 iOS 应用的端到端 VAPT 技能,按 OWASP MASVS 与 MASTG 流程开展静态、动态和隐私测试。它强调先分析应用包,再在必要时验证运行时控制,并将应用中恢复的后端接口纳入测试。
主要功能
- 01Android APK/AAB 与 iOS IPA 分析
- 02静态逆向与安全代码审查
- 03Frida 驱动的动态测试
- 04隐私与数据收集审查
- 05恢复接口并扩展至后端测试
适用场景
- 01检查应用包中的密钥、端点与加密逻辑
- 02验证 TLS 固定、越狱检测等运行时控制
- 03审查跟踪器、个人信息泄露及隐私声明
- 04从客户端恢复接口并测试服务端风险
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ transilienceai/ communitytools --skill mobile-security安装后在 Claude Code 中输入/mobile-security确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/android-dynamic-analysis.mdandroid-static-analysis.mdflutter-aot-reversing.mdios-dynamic-analysis.mdios-static-analysis.mdmasvs-class-map.mdmethodology.mdprivacy-testing.mdreference/scenarios/android/native-lib-host-extraction.mdreact-native-hermes.md详细介绍
移动安全
范围
针对 Android (APK/AAB) 和 iOS (IPA) 的端到端移动应用 VAPT,遵循 OWASP MASVS v2.x 控制组和 MASTG 测试流程。分为四个互补层级:
- 编译产物静态逆向工程——Dart AOT 快照、Unity IL2CPP、React Native/Hermes 字节码、原生 ARM64
.so/Mach-O、smali。无需设备即可恢复机密、端点和加密契约。 - SAST——清单 /
Info.plist、导出组件与 IPC 攻击面、WebView、本地存储、密码原语弱点、代码签名,以及自动化基线(MobSF/apkid/apkleaks)→ 然后进行人工深度分析。 - 动态分析(DAST)——Frida/objection 插桩、流量拦截、跨技术栈绕过 TLS 固定、运行时转储 Keychain/Keystore、探测 IPC,以及绕过 root/越狱/防篡改机制,以满足 MAS-L2 / MASA 范围要求。
- 隐私——数据收集清单、跟踪器/SDK 枚举、PII 泄露、声明与实际情况对比(Play Data Safety / Apple Privacy Manifest)。
先进行静态转储(更快,无需设备);只要某项控制只能在运行时验证(强制固定、由 Keystore 支持的密钥、对 root 的响应、IPC 防护),动态分析就是不可或缺的阶段。跨资产关联、评分和报告由配套技能负责——本技能生成带有 MASVS/MASTG 标签的发现项并移交。
覆盖范围约定
在覆盖模式的测试任务(pentest-engagement 移动模式)中,完成情况由代码强制验证,而非文字描述。两个攻击面均受门控,且都必须覆盖:
| 攻击面 | 文件 | 类别 |
|---|---|---|
| 应用包 | recon/inventory/mobile-surface.json | 15 个 MAS-* MASVS 类别 |
| 从应用包中恢复的后端 | <apex>-api/recon/inventory/surface.json | 常规 OWASP API/Web 类别 |
第二行历来是实质性风险所在。反编译后的应用包会提供完整的服务端契约,而该攻击面无法通过浏览器访问——因此所有人都会系统性地对其测试不足,包括应用自身的开发者。恢复端点清单并使用 API 类别对其进行测试并非可选项;若应用包中未提取出任何端点,则视为获取失败。
各类别详情:reference/masvs-class-map.md。在提交否定结论前,值得牢记两条规则:
proof_mode: runtime不能通过静态分析关闭。 固定和 root 检测是典型陷阱:静态分析可以证明某项控制是无效的(例如构建了CertificatePinner却从未关联,或没有任何 DEX 引用 RootBeer)——应将其作为正向发现上报。但静态分析无法证明该控制有效;这需要尝试绕过且未能成功,而绕过失败是有效且可报告的结果。proof_mode: static绝不能推迟到设备测试。 没有设备不能成为忽略清单、签名、打包依赖或产物中机密的理由。
适用场景
- 目标交付 Android APK/AAB 或 iOS IPA — 在进行任何运行时测试前,先提取并检查。
- 使用 Flutter(
lib/arm64-v8a/libapp.so/ iOSApp.framework)、Unity(libil2cpp.so+global-metadata.dat)或 React Native + Hermes(libhermes.so+index.android.bundle)构建 — 需要了解运行时的反编译器,而不只是 jadx。 - 原生 Android/iOS 应用 — 需要检查清单/IPC/存储/加密/签名攻击面(SAST),并在某项控制仅在运行时生效时进行动态确认。
- 应用使用 加密 API 信封(KEY/IV/SALT/SIGNATURE 标头),需要逆向分析加密协议,再向线上 API 重放请求。
- TLS 固定 / root / 越狱检测 阻止测试 — 动态绕过(或通过静态分析击破),并演示受保护的流程。
- 怀疑存在 IDOR / 批量赋值 / 业务逻辑 漏洞,这些漏洞在导出的客户端代码中更容易发现,再通过服务端确认。
- 需要执行 MASVS-PRIVACY 检查(跟踪器、过度收集、PII 泄露、声明与实际行为的差异)。
方法论
从 reference/methodology.md 开始 — 其中介绍了各阶段的主线(ACQUIRE → TRIAGE → STATIC → DYNAMIC → NETWORK → STORAGE → PLATFORM/IPC → BACKEND PIVOT → REPORT)、应用获取与证据完整性、MASVS→文件覆盖映射、发现项标记约定,以及客户端→API 跳转。该文档会引导你查看以下所有参考资料。请先完成预检(../coordination/reference/preflight-checklist.md)。
参考资料
通用
- reference/methodology.md — 总览:各阶段、获取方式(adb pull / bundletool / ipatool)、MASVS/MASTG 标记、后端跳转。
- reference/privacy-testing.md — 适用于两个平台的 MASVS-PRIVACY:跟踪器/SDK、PII 渠道、声明与实际行为的差异。
Android
- reference/android-static-analysis.md — SAST:MobSF/apkid/apkleaks 基线、清单与导出组件/IPC、ContentProvider SQLi/路径穿越、PendingIntent、深层链接、原生 WebView RCE、存储与 Keystore 检查、加密原语弱点检查、NSC、apksigner/Janus、SBOM。
- reference/android-dynamic-analysis.md — DAST:设备/Magisk/Zygisk 配置、启动 frida-server、objection 操作示例、拦截 + Android-7 用户 CA 变通方案、跨技术栈固定绕过(OkHttp/BoringSSL-Flutter/RN)、drozer IPC、运行时存储、RESILIENCE 主动绕过 + 重新打包/重签名。
iOS
- reference/ios-static-analysis.md — SAST:IPA 获取 + FairPlay 解密(cryptid)、Mach-O/ObjC/Swift 逆向工程、ATS、entitlements/provisioning、二进制加固、Keychain 可访问性 + Data Protection、URL schemes/Universal Links、WKWebView、剪贴板/快照、MobSF/SBOM。
- reference/ios-dynamic-analysis.md — DAST:越狱与非越狱(objection patchipa / frida-gadget)环境配置、在 iOS 上使用 objection/Frida、绕过 SSL Kill Switch / SecTrust 固定、转储 Keychain、绕过 LAContext 生物识别、击破越狱/反调试检测、方法跟踪。
特定框架的逆向工程
- reference/flutter-aot-reversing.md — 使用 blutter 进行 Flutter/Dart AOT 逆向;HTTP 加密信封模式(fast_rsa OAEP-SHA256 + AES-256-CBC)及应报告的弱点。
- reference/scenarios/android/react-native-hermes.md — RN+Hermes:检查 HBC 版本、使用 hermes-dec 反编译
index.android.bundle、BuildConfig 密钥快速路径、RN 特有的 MASVS 攻击面。 - reference/scenarios/android/native-lib-host-extraction.md — 在主机端通过 Bionic→glibc 转发器 +
strcmp/memcmp拦截器,对 Android.so使用dlopen(无需 Frida/模拟器)。 跨技能(复用的能力——交叉链接,不重复收录) - ../reverse-engineering/reference/scenarios/static-analysis/unity-il2cpp-recipe.md — 转储 Unity
libil2cpp.so和global-metadata.dat(Il2CppDumper/Il2CppInspector)。 - ../reverse-engineering/reference/scenarios/dynamic-analysis/frida-hooking.md — 两个动态分析文件都会用到的 Frida Hook 基础操作(spawn/attach、Interceptor、Stalker、
Java.perform、ObjC hooks)。 - ../reverse-engineering/reference/scenarios/obfuscation/packed-binaries.md — 对混淆 APK/
.so进行加壳/反分析脱壳。 - ../reverse-engineering/reference/scenarios/obfuscation/hash-dispatcher-chain.md — 使用 Z3 分析 native
.so中基于多项式哈希的分发器链。 - ../api-security/reference/scenarios/rest/owasp-bola-bopla.md · ../api-security/reference/scenarios/rest/mass-assignment.md — 从客户端恢复端点/IDOR 后转向 API 的分析路径。
确定性控制接线检测器
../../tools/apk_control_wiring.py— 对反编译后的 Android 树进行静态交叉引用,区分真正生效的控制和孤立控制:已随包分发但未接线的 RootBeer/SafetyNet/Play-Integrity(有引用,但结果不会拦截任何操作)、已构建但未附加到 OkHttpClient 的CertificatePinner、硬编码的 AES/DES 密钥字面量及其调用点,以及随包分发但从未加载的.so。在撰写修复结论前,于静态分析阶段运行此工具——仅搜索控制项是否存在的粗略复测,会错误地报告无效控制“已修复”(这是移动端复测中反复出现的关键问题)。
反模式
- 静态转储完成前就使用 Frida/模拟器——静态优先速度更快,也不需要设备。但不要因此将动态分析排除在范围之外:Pinning 强制执行、Keystore 绑定、Root 响应和 IPC 可达性都只能在运行时检查。
- 未尝试主动绕过,就报告控制项(Root/Pinning/篡改检测)存在——MAS-L2 / MASA 要求你攻破它,或证明无法攻破。
- 根据空的
network_security_config.xml得出“没有 Pinning”,或根据cryptid 1的 iOS 二进制文件得出“没有秘密”——应检查 JS/native Pinning 层,并先解密 IPA。 - 止步于客户端 IDOR——这是一个服务端假设;通过 API 安全分析路径确认。
- 仅凭库存在就报告 CVE——应确认确切版本以及可达的代码路径。