Android应用安全测试指南(新手篇)

admin 2025年4月13日23:14:23评论14 views字数 3908阅读13分1秒阅读模式

【适合新手】Android应用安全测试入门指南

在移动应用安全领域,Android平台因其开放性而成为安全研究人员的重点关注对象。本文将从手动静态分析、自动化静态分析和动态调试分析三个方面,阐述新手如何对Android应用进行安全测试。

Android应用安全测试指南(新手篇)

Android应用安全测试指南(新手篇)

1. 手动静态分析

手动静态分析是Android安全测试的基础,不需要运行应用程序,就能发现一些潜在的安全问题。

1.1 获取APK文件

首先,我们需要获取目标应用的APK文件。有两种主要方法:

从设备中提取:

adb shell pm list packages
adb shell pm path com.target.app
adb pull /data/app/com.target.app/base.apk

或使用APK下载器:

  • • APKCombo(推荐)
  • • APK Mirror
  • • Evozi APK Downloader

1.2 反编译APK

APK反编译可以查看应用的内部结构和代码逻辑:

使用JADX(推荐):

jadx -d output_folder --deobf target.apk

JADX能同时提供资源文件和反编译的Java源代码,是比较全面的反编译工具。

使用APKTool:

apktool d target.apk

APKTool将.dex文件反编译为.smali格式,便于修改后重打包。

使用DEX2JAR:

d2j-dex2jar target.apk

生成的jar文件,可使用JD-GUI查看。

1.3 检查证书

应用证书可能会暴露一些开发环境信息或安全问题:

openssl pkcs7 -inform DER -in META-INF/*.RSA -noout -print_certs -text

需要关注的方向:

  • • 使用Android Debug证书(公开的私钥)
  • • 证书已过期
  • • 使用未知CA或自签名证书
  • • 缺少中间CA证书
  • • 未启用证书锁定(cert-pinning)
  • • 允许明文流量:cleartextTrafficPermitted="true"

1.4 分析Android清单文件

清单文件是Android APK的配置中心,其内容包含权限、组件和安全设置:

aapt dump target.apk AndroidManifest.xml > manifest.txt

重点关注:

  • • SDK版本要求:<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="28"/>
  • • 权限声明:<uses-permission android:name="..."/>
  • • 导出组件:android:exported="true"
  • • 备份设置:android:allowBackup="true"
  • • 调试选项:android:debuggable="true"

存在的风险:

  • • 过度申请权限
  • • 组件导出且未适当保护
  • • 允许应用备份
  • • 启用调试模式

1.5 源代码分析

定位源码中可能潜在的安全问题:

# 查找API端点
grep -Ei 'api|http|https|URI|URL' -R .

# 检查不安全的文件权限
grep -Ei 'MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE' -R .

# 查找数据库操作
grep -Ei 'SQLiteDatabase|realm|getDefaultInstance|query' -R .

# 查找敏感信息
grep -Ei 'username|password|secret|token|login|auth' -R .

# 查找日志记录
grep -Ei 'Log.v|Log.d|Log.i|Log.e|System.out.print' -R .

可以关注的安全问题:

  • • 明文凭据(包括Base64编码或弱加密)
  • • 不安全的文件读写模式
  • • 使用HTTP而非HTTPS
  • • 敏感信息写入日志
  • • 硬编码的密钥或凭据

2. 自动化静态分析

自动化静态分析工具可以提高安全测试效率,快速扫描潜在的安全问题。

2.1 推荐工具

MobSF(Mobile Security Framework)
开源的自动化移动应用安全测试框架,支持Android、iOS和Windows应用。

# 安装并运行MobSF
git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.git
cd Mobile-Security-Framework-MobSF
./setup.sh
./run.sh

访问http://localhost:8000上传APK文件进行分析。

QARK(Quick Android Review Kit)
LinkedIn开发的工具,专注于识别Android应用的安全漏洞。

pip install qark
qark --apk path/to/app.apk

AndroBugs Framework
针对Android应用的漏洞扫描系统。

git clone https://github.com/AndroBugs/AndroBugs_Framework.git
cd AndroBugs_Framework
python androbugs.py -f path/to/app.apk

2.2 自动分析的优势

  • • 快速识别常见漏洞
  • • 生成详细的分析报告
  • • 减少人工分析的工作量
  • • 可作为CI/CD流程的一部分

3. 动态调试分析

动态分析通过运行应用并观察其行为,发现静态分析难以识别的安全问题。

3.1 前期准备

设置代理拦截
Burp Suite是推荐的代理工具:

# 在Android设备上设置代理
设置 -> 网络和互联网 -> Wi-Fi -> 长按连接的网络 -> 修改网络 -> 显示高级选项 -> 代理设置

安装Drozer
Drozer是一个强大的Android安全评估工具:

# 主机端
pip install drozer

# Android设备上安装agent.apk
adb forward tcp:31415 tcp:31415
drozer console connect

3.2 应用安装与使用

adb install target.apk

进行全程流量拦截,模拟正常用户行为:

  • • 注册/登录
  • • 浏览应用功能
  • • 上传/下载文件
  • • 尝试边界情况

3.3 绕过安全检测

SSL锁定绕过
可使用Frida注入代码绕过证书验证:

// frida脚本示例
Java.perform(function() {
    var SSLContext = Java.use("javax.net.ssl.SSLContext");
    SSLContext.init.implementation = function(km, tm, sr) {
        return this.init.call(this, km, null, sr);
    };
});

模拟器检测绕过
修改APK中的检测代码:

# 查找模拟器检测代码
grep -Ei "isEmulator|build.fingerprint|qemu.hw.mainkeys" -R .

# 修改代码后重打包
apktool b modified_app_dir

3.4 本地存储分析

检查应用存储的数据:

# 查看SQLite数据库
adb shell
cd /data/data/com.target.app/databases/
sqlite3 app_database.db
.tables
SELECT * FROM users;

# 查看SharedPreferences
cd /data/data/com.target.app/shared_prefs/
cat *.xml

此处需要关注的安全问题:

  • • 明文存储的凭据
  • • 硬编码的加密密钥
  • • 敏感文件权限设置不当
  • • 敏感数据存储在外部存储

3.5 攻击面分析

使用Drozer探索应用组件:

# 分析攻击面
run app.package.attacksurface com.target.app

# 检查导出的活动
run app.activity.info -a com.target.app
run app.activity.start --component com.target.app com.target.app.SecretActivity

# 分析内容提供者
run app.provider.info -a com.target.app
run scanner.provider.finduris -a com.target.app
run scanner.provider.injection -a com.target.app

# 测试SQL注入
run app.provider.query content://com.target.app.provider/data --projection "* FROM sqlite_master;--"

3.6 日志分析

检查应用日志中的敏感信息:

# 实时查看应用日志
adb logcat | grep "$(adb shell ps | grep com.target.app | awk '{print $2}')"

总结

Android应用的安全测试是一个多层次的过程,需要结合静态分析和动态分析才能全面评估应用的安全状况。以上所属的入门指南介绍的方法和工具可以帮助安全研究人员和开发者发现Android应用中简单的安全问题,从而修复Android APP的问题,提高应用的安全性。而实际测试中,不同的Android应用还有很多不一样的攻防对抗点,需要具体问题具体分析。

安全测试的最终目的是帮助提升应用安全性,而非用于非法活动。在进行任何测试前,务必获得适当的授权。

参考:https://nightowl131.github.io/AAPG

原文始发于微信公众号(哆啦安全):Android应用安全测试指南(新手篇)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月13日23:14:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android应用安全测试指南(新手篇)http://cn-sec.com/archives/3951901.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息