L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Données et recherche · SKILL.md

performing-android-app-static-analysis-with-mobsf

performing-android-app-static-analysis-with-mobsf

使用移动安全框架(Mobile Security Framework,MobSF)对 Android 应用程序执行自动化静态分析, 在不运行程序的情况下识别硬编码密钥、不安全权限、存在漏洞的组件、弱加密算法 和代码层面的安全缺陷。适用于在部署前对 Android APK/AAB 文件进行安全评估、 渗透测试期间,或作为 CI/CD 安全门禁的一部分。当请求涉及 Android 静态分析、 MobSF 扫描、APK 安全评估或移动应用代码审查时触发。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: performing-android-app-static-analysis-with-mobsf description: > 使用移动安全框架(Mobile Security Framework,MobSF)对 Android 应用程序执行自动化静态分析, 在不运行程序的情况下识别硬编码密钥、不安全权限、存在漏洞的组件、弱加密算法 和代码层面的安全缺陷。适用于在部署前对 Android APK/AAB 文件进行安全评估、 渗透测试期间,或作为 CI/CD 安全门禁的一部分。当请求涉及 Android 静态分析、 MobSF 扫描、APK 安全评估或移动应用代码审查时触发。 domain: cybersecurity subdomain: mobile-security author: mahipal tags: [mobile-security, android, mobsf, static-analysis, owasp-mobile, penetration-testing] version: 1.0.0 license: Apache-2.0

使用 MobSF 执行 Android 应用静态分析

适用场景

在以下情况下使用本技能:

  • 在生产发布前对 Android APK 或 AAB 文件进行安全评估
  • 将自动化移动安全扫描集成到 CI/CD 流水线中
  • 在渗透测试过程中对 Android 应用进行初步分诊
  • 审查第三方 Android 应用的供应链安全风险

不适用于 替代人工代码审查或动态分析——MobSF 静态分析只能发现基于模式的漏洞,无法捕获运行时逻辑缺陷。

前置条件

  • 通过 Docker 安装 MobSF v4.x(docker pull opensecurity/mobile-security-framework-mobsf)或本地部署
  • 目标 Android APK、AAB 或源码 ZIP 文件
  • Python 3.10+ 用于 MobSF REST API 集成
  • JADX 反编译器(已内置于 MobSF)用于恢复 Java/Kotlin 源代码
  • 可访问 MobSF Web 界面的网络连接(默认:http://localhost:8000)

工作流程

步骤 1:部署 MobSF 并获取 API 密钥

使用 Docker 启动 MobSF,确保隔离、可重现的扫描环境:

docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

从 http://localhost:8000/api_docs 的 MobSF Web 界面或启动控制台输出中获取 REST API 密钥。API 密钥用于程序化扫描。

步骤 2:上传 APK 进行静态分析

使用 MobSF REST API 上传目标 APK:

curl -F "file=@target_app.apk" http://localhost:8000/api/v1/upload \
  -H "Authorization: <API_KEY>"

响应中包含用于后续 API 调用的 hash 标识符。MobSF 会自动使用 JADX 反编译 APK,提取 AndroidManifest.xml 并对所有资源建立索引。

步骤 3:触发并获取静态扫描结果

启动静态扫描并获取结果:

# 触发扫描
curl -X POST http://localhost:8000/api/v1/scan \
  -H "Authorization: <API_KEY>" \
  -d "scan_type=apk&file_name=target_app.apk&hash=<FILE_HASH>"

# 获取 JSON 报告
curl -X POST http://localhost:8000/api/v1/report_json \
  -H "Authorization: <API_KEY>" \
  -d "hash=<FILE_HASH>"

步骤 4:分析关键发现

MobSF 静态分析覆盖以下映射到 OWASP Mobile Top 10 2024 的类别:

清单分析(M8 - 安全配置错误):

  • 无权限保护的导出 Activity、Service、Receiver 和 Content Provider
  • 遗留开启的 android:debuggable="true"
  • 启用 android:allowBackup="true" 允许通过 ADB 提取数据
  • 缺少用于证书固定的 android:networkSecurityConfig

代码分析(M1 - 凭据使用不当):

  • Java/Kotlin 源码中硬编码的 API 密钥、密码和令牌
  • 使用 SharedPreferences 以不安全方式存储敏感数据
  • 弱加密或已损坏的加密实现(ECB 模式、静态 IV、硬编码密钥)

网络安全(M5 - 通信不安全):

  • 缺少证书固定配置
  • 接受所有证书的自定义 TrustManager
  • 未配置例外域名而允许明文 HTTP 流量

二进制分析(M7 - 二进制保护不足):

  • 缺少 ProGuard/R8 混淆
  • 原生库漏洞(栈金丝雀、NX 位、PIE)
  • 缺少调试器检测

步骤 5:生成并导出报告

以多种格式导出发现结果用于干系人沟通:

# PDF 报告
curl -X POST http://localhost:8000/api/v1/download_pdf \
  -H "Authorization: <API_KEY>" \
  -d "hash=<FILE_HASH>" -o report.pdf

# JSON 格式用于程序化处理
curl -X POST http://localhost:8000/api/v1/report_json \
  -H "Authorization: <API_KEY>" \
  -d "hash=<FILE_HASH>" -o report.json

步骤 6:集成到 CI/CD 流水线

将 MobSF 扫描作为构建门禁添加:

# GitHub Actions 示例
- name: MobSF Static Analysis
  run: |
    UPLOAD=$(curl -s -F "file=@app/build/outputs/apk/release/app-release.apk" \
      http://mobsf:8000/api/v1/upload -H "Authorization: $MOBSF_API_KEY")
    HASH=$(echo $UPLOAD | jq -r '.hash')
    curl -s -X POST http://mobsf:8000/api/v1/scan \
      -H "Authorization: $MOBSF_API_KEY" \
      -d "scan_type=apk&file_name=app-release.apk&hash=$HASH"
    SCORE=$(curl -s -X POST http://mobsf:8000/api/v1/scorecard \
      -H "Authorization: $MOBSF_API_KEY" -d "hash=$HASH" | jq '.security_score')
    if [ "$SCORE" -lt 60 ]; then exit 1; fi

核心概念

术语定义
静态分析(Static Analysis)在不执行程序的情况下检查应用代码和资源;捕获结构性和基于模式的漏洞
APK 反编译(APK Decompilation)使用 JADX 或 apktool 等工具从已编译的 Dalvik 字节码中恢复 Java/Kotlin 源代码的过程
AndroidManifest.xml声明应用组件、权限和安全属性的配置文件;是清单分析的主要目标
证书固定(Certificate Pinning)将应用与特定服务器证书绑定的技术,用于防止通过流氓 CA 进行的中间人攻击
ProGuard/R8代码混淆和压缩工具,通过重命名类和删除未使用的代码使逆向工程更加困难

工具与系统

  • MobSF:支持 Android/iOS 应用静态和动态分析的自动化移动安全分析框架
  • JADX:Dex 转 Java 反编译器,用于从 Android APK 文件中恢复可读源代码
  • apktool:Android APK 文件逆向工程工具,可将资源解码为接近原始形式
  • Android Lint:Google 针对 Android 特定代码质量和安全问题的静态分析工具
  • Semgrep:基于模式的静态分析引擎,配备适用于移动端的规则包,用于自定义漏洞检测

常见陷阱

  • 忽视误报:MobSF 会标记变量名中含有 password 的模式,即使并未存储真实凭据。在报告前需人工分诊所有 HIGH 发现。
  • 遗漏混淆代码:对于使用 DexGuard 或自定义加壳的应用,静态分析的准确性会大幅下降。需结合动态分析进行补充。
  • MobSF 规则过时:安全规则随 Android API 级别不断演进。确保 MobSF 已更新,与目标应用的 targetSdkVersion 相匹配。
  • 跳过原生代码分析:MobSF 分析 Java/Kotlin,但对原生 C/C++ 库的覆盖有限。应使用 checksec 对 .so 文件进行人工审查。
Skills enregistrées