Andorid安全测试思路及环境搭建
字数 3253 2025-08-07 08:22:12
Android安全测试全面指南:思路、工具与环境搭建
一、Android安全测试概述
随着移动应用的普及,Android安全测试已成为安全测试工作的重要组成部分。Android安全测试主要分为两大方向:
- 自动化检测:使用框架和平台如Drozer、MobSF等对APK进行自动化风险识别
- 手动测试:包括本地敏感数据检测、APK反编译与重编译、Frida Hook、抓包改包等
二、测试环境搭建
1. Android SDK安装
Android SDK是Android专属的软件开发工具包,包含adb、ddms等调试工具。
安装步骤:
- 从AndroidDevTools下载SDK Tools
- 下载platform-tools和tools文件,复制到SDK目录
- 配置全局环境变量
- 验证安装:执行
adb和ddms命令应能正常运行
2. 本地敏感数据检测工具
a) XML等文件敏感信息查看
- 使用ddms工具
- 路径:
/data/data/<应用包名>/ - 导出文件后用Sublime等工具查看
b) SQLite数据库存储检测
- 路径:
/data/data/<应用包名>/database/ - 导出.db文件后用SQLite工具查看
c) SharedPreferences存储检测
- 基于XML的key-value存储
- 路径:
/data/data/<应用包名>/shared_prefs/ - 用Sublime查看
d) 数字签名检测
- 使用jarsigner工具(位于JDK的bin目录)
- 命令:
jarsigner.exe -verify -verbose -certs <apk路径>
3. APK反编译与重编译工具
a) apktool
- 下载地址:Bitbucket
- 反编译命令:
java -jar apktool_2.5.0.jar d -f <apk名称> -o <输出目录> - 重编译命令:
java -jar apktool.jar b -f <目录> -o <apk名称> - 签名工具SignApk:GitHub
- 签名命令:
java -jar signapk.jar certificate.pem key.pk8 <待签名apk> <输出apk>
b) dex2jar
- 下载地址:SourceForge
- 反编译命令:
d2j-dex2jar.bat classes.dex - 多dex文件命令:
d2j-dex2jar.bat <apk文件>
c) jd-gui
- 用于查看反编译后的.jar文件
d) AndroidKiller
- 集成化工具,可配置不同版本apktool和签名文件
4. Drozer安全测试框架
- 下载地址:GitHub
- 依赖:Java环境、Python 2.7
- 安装步骤:
- PC端安装Drozer
- Android端安装Drozer Agent
- 端口转发:
adb forward tcp:31415 tcp:31415 - 启动Drozer:
drozer console connect
常用命令:
- 列出所有应用包:
run app.package.list - 查找特定应用:
run app.package.list -f <应用名> - 查看攻击面:
run app.package.attacksurface <包名>
组件安全检测:
-
Activity组件:
- 查看信息:
run app.activity.info -a <包名> - 启动Activity:
run app.activity.start --component <包名> <Activity>
- 查看信息:
-
Broadcast Receiver组件:
- 查看信息:
run app.broadcast.info -a <包名>
- 查看信息:
-
ContentProvider组件:
- 查找URI:
run scanner.provider.finduris -a <包名> - SQL注入检测:
run scanner.provider.injection -a <包名> - 目录遍历检测:
run scanner.provider.traversal -a <包名>
- 查找URI:
-
Service组件:
- 查看信息:
run app.service.info -a <包名>
- 查看信息:
5. MobSF安全测试框架
MobSF是开源的自动化移动应用安全测试框架,支持静态、动态和恶意软件分析。
Kali Linux安装步骤:
apt-get update
apt-get install -y apt-transport-https ca-certificates
apt-get install dirmngr
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
apt-get update
apt install docker-ce
service docker start
apt install docker-compose
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:latest
访问http://localhost:8008/上传APK进行分析。
注意:动态分析需在非Docker/虚拟机环境中部署,建议配合Genymotion模拟器使用。
6. Frida Hook框架
Frida是基于Python + JavaScript的Hook框架,支持多平台。
安装步骤:
- 安装Frida:
pip install frida - 查看版本:
frida --version - 下载对应版本server:GitHub Releases
- 推送server到Android:
adb push <frida-server> /data/local/tmp/frida-server - 设置权限:
chmod 777 /data/local/tmp/frida-server - 端口转发:
adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27043 - 启动server:
./frida-server - 验证:
frida-ps -U应显示Android进程列表
7. Fiddler抓包工具
Fiddler是客户端和服务器之间的代理工具。
配置步骤:
- 下载安装:Telerik
- 导出证书:Tools > Options > HTTPS > Actions > Export
- 在Android中安装证书:设置 > 安全 > 从SD卡安装证书
- 设置Android代理为PC IP和Fiddler监听端口(默认8888)
三、测试方法与思路
1. 本地存储数据检测
-
文件存储检测:
- 检查
/data/data/<包名>/目录 - 重点关注XML、JSON等配置文件
- 检查
-
SQLite数据库检测:
- 检查
/data/data/<包名>/database/目录 - 使用SQLite工具分析.db文件内容
- 检查
-
SharedPreferences检测:
- 检查
/data/data/<包名>/shared_prefs/目录 - 分析XML格式的键值对数据
- 检查
2. 组件安全测试
-
Activity组件:
- 检测导出组件的权限控制
- 尝试未授权访问敏感Activity
-
Broadcast Receiver:
- 检测广播接收器的导出状态
- 尝试发送伪造广播
-
ContentProvider:
- 检测URI访问控制
- 测试SQL注入和目录遍历漏洞
-
Service组件:
- 检测服务导出状态
- 尝试未授权绑定/启动服务
3. 代码分析与Hook
-
静态分析:
- 使用apktool反编译APK
- 使用dex2jar和jd-gui分析Java代码
- 搜索敏感关键词(password、token、key等)
-
动态分析:
- 使用Frida Hook关键函数
- 分析加密/解密逻辑
- 修改运行时数据
4. 网络通信测试
-
抓包分析:
- 使用Fiddler或Burp Suite拦截请求
- 分析HTTPS证书校验
- 测试接口参数篡改
-
协议安全:
- 检测敏感信息明文传输
- 检查加密算法强度
- 测试重放攻击
四、总结
Android安全测试是一个系统性的工作,需要结合自动化工具和手动分析:
- 环境准备:搭建完整的测试环境(SDK、反编译工具、Drozer、MobSF等)
- 静态分析:APK反编译、代码审计、配置文件检查
- 动态分析:组件测试、Hook调试、网络抓包
- 漏洞验证:对发现的问题进行验证和利用
建议安全测试人员深入理解Android系统机制,熟练掌握ARM汇编和Java代码分析技能,并持续关注新的安全威胁和测试技术。