mcpField
M
mobile-security

mobile-security

github.com/transilienceai安全600179 次安装13 周前更新
代码仓库

关于 mobile-security

面向 Android 和 iOS 应用的端到端 VAPT 技能,按 OWASP MASVS 与 MASTG 流程开展静态、动态和隐私测试。它强调先分析应用包,再在必要时验证运行时控制,并将应用中恢复的后端接口纳入测试。

主要功能

  1. 01Android APK/AAB 与 iOS IPA 分析
  2. 02静态逆向与安全代码审查
  3. 03Frida 驱动的动态测试
  4. 04隐私与数据收集审查
  5. 05恢复接口并扩展至后端测试

适用场景

  1. 01检查应用包中的密钥、端点与加密逻辑
  2. 02验证 TLS 固定、越狱检测等运行时控制
  3. 03审查跟踪器、个人信息泄露及隐私声明
  4. 04从客户端恢复接口并测试服务端风险

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/transilienceai/communitytools --skill mobile-security

安装后在 Claude Code 中输入/mobile-security确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

reference/
android-dynamic-analysis.md
android-static-analysis.md
flutter-aot-reversing.md
ios-dynamic-analysis.md
ios-static-analysis.md
masvs-class-map.md
methodology.md
privacy-testing.md
reference/scenarios/android/
native-lib-host-extraction.md
react-native-hermes.md

详细介绍

移动安全

范围

针对 Android (APK/AAB) 和 iOS (IPA) 的端到端移动应用 VAPT,遵循 OWASP MASVS v2.x 控制组和 MASTG 测试流程。分为四个互补层级:

  1. 编译产物静态逆向工程——Dart AOT 快照、Unity IL2CPP、React Native/Hermes 字节码、原生 ARM64 .so/Mach-O、smali。无需设备即可恢复机密、端点和加密契约。
  2. SAST——清单 / Info.plist、导出组件与 IPC 攻击面、WebView、本地存储、密码原语弱点、代码签名,以及自动化基线(MobSF/apkid/apkleaks)→ 然后进行人工深度分析。
  3. 动态分析(DAST)——Frida/objection 插桩、流量拦截、跨技术栈绕过 TLS 固定、运行时转储 Keychain/Keystore、探测 IPC,以及绕过 root/越狱/防篡改机制,以满足 MAS-L2 / MASA 范围要求。
  4. 隐私——数据收集清单、跟踪器/SDK 枚举、PII 泄露、声明与实际情况对比(Play Data Safety / Apple Privacy Manifest)。

先进行静态转储(更快,无需设备);只要某项控制只能在运行时验证(强制固定、由 Keystore 支持的密钥、对 root 的响应、IPC 防护),动态分析就是不可或缺的阶段。跨资产关联、评分和报告由配套技能负责——本技能生成带有 MASVS/MASTG 标签的发现项并移交。

覆盖范围约定

在覆盖模式的测试任务(pentest-engagement 移动模式)中,完成情况由代码强制验证,而非文字描述。两个攻击面均受门控,且都必须覆盖:

攻击面文件类别
应用包recon/inventory/mobile-surface.json15 个 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 / iOS App.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 生物识别、击破越狱/反调试检测、方法跟踪。

特定框架的逆向工程

确定性控制接线检测器

  • ../../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——应确认确切版本以及可达的代码路径。

评论

支持 Markdown