关于 performing-android-app-static-analysis-with-mobsf
面向安全团队的 Android 静态分析流程技能,使用 MobSF 检查 APK、AAB 或源代码压缩包。内容包括 API 扫描、常见漏洞类别审查、报告导出和 CI/CD 集成。
主要功能
- 01扫描 APK、AAB 和源代码 ZIP
- 02分析清单文件与应用代码
- 03检查网络及二进制安全
- 04导出 PDF 和 JSON 报告
- 05将扫描加入 CI/CD 流程
适用场景
- 01发布前评估 Android 应用
- 02渗透测试期间进行初步筛查
- 03审查第三方应用的供应链风险
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-android-app-static-analysis-with-mobsf安装后在 Claude Code 中输入/performing-android-app-static-analysis-with-mobsf确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
使用 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
从 MobSF Web 界面 http://localhost:8000/api_docs 或启动控制台输出中获取 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:触发并获取静态扫描结果
启动静态扫描并获取结果:
# Trigger scan
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>"
# Retrieve JSON report
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:
Manifest 分析(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 混淆
- 原生库漏洞(栈保护 canary、NX 位、PIE)
- 缺少调试器检测
步骤 5:生成并导出报告
以多种格式导出发现,便于与利益相关方沟通:
# PDF report
curl -X POST http://localhost:8000/api/v1/download_pdf \
-H "Authorization: <API_KEY>" \
-d "hash=<FILE_HASH>" -o report.pdf
# JSON for programmatic processing
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 example
- 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
关键概念
| 术语 | 定义 |
|---|---|
| 静态分析 | 在不执行程序的情况下检查应用代码和资源;可发现结构和基于模式的漏洞 |
| APK 反编译 | 使用 JADX 或 apktool 等工具,从编译后的 Dalvik 字节码中还原 Java/Kotlin 源码的过程 |
| AndroidManifest.xml | 声明应用组件、权限和安全属性的配置文件;是 Manifest 分析的主要目标 |
| 证书固定 | 将应用绑定到特定服务器证书的技术,用于防止通过恶意 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++ 库的覆盖有限。对于
.so文件,请使用checksec并进行人工审查。
评论
支持 Markdown