界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
数据与研究 · 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 安全评估或移动应用代码审查时触发。

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

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 文件进行人工审查。
我的收藏